2024-04-05 17:35:14 +07:00
|
|
|
<script setup lang="ts">
|
2024-04-22 14:19:35 +07:00
|
|
|
const props = withDefaults(
|
|
|
|
|
defineProps<{
|
|
|
|
|
branch: {
|
2024-10-07 16:58:45 +07:00
|
|
|
hidden?: boolean;
|
2024-07-03 14:12:51 +07:00
|
|
|
icon: string;
|
2024-04-22 14:19:35 +07:00
|
|
|
count: number;
|
|
|
|
|
label: string;
|
2024-07-05 16:29:06 +07:00
|
|
|
color:
|
|
|
|
|
| 'pink'
|
|
|
|
|
| 'purple'
|
|
|
|
|
| 'green'
|
|
|
|
|
| 'orange'
|
|
|
|
|
| 'cyan'
|
|
|
|
|
| 'yellow'
|
|
|
|
|
| 'red'
|
2024-09-06 11:35:08 +07:00
|
|
|
| 'magenta'
|
2024-09-19 13:31:28 +07:00
|
|
|
| 'blue'
|
|
|
|
|
| 'lime'
|
|
|
|
|
| 'light-purple';
|
2024-04-22 14:19:35 +07:00
|
|
|
}[];
|
|
|
|
|
dark?: boolean;
|
2024-09-19 13:31:28 +07:00
|
|
|
textSize?: string;
|
2024-04-23 14:43:00 +07:00
|
|
|
labelI18n?: boolean;
|
2024-04-22 14:19:35 +07:00
|
|
|
}>(),
|
|
|
|
|
{
|
2024-04-23 14:43:00 +07:00
|
|
|
labelI18n: false,
|
2024-09-19 13:31:28 +07:00
|
|
|
textSize: '12px',
|
2024-04-22 14:19:35 +07:00
|
|
|
},
|
|
|
|
|
);
|
2024-04-05 17:35:14 +07:00
|
|
|
</script>
|
|
|
|
|
|
|
|
|
|
<template>
|
2024-07-04 14:27:35 +07:00
|
|
|
<div class="row no-wrap" style="gap: var(--size-4)" :class="{ dark }">
|
2024-07-04 13:16:19 +07:00
|
|
|
<div
|
2024-10-07 16:58:45 +07:00
|
|
|
v-for="v in branch.filter((v) => !v.hidden)"
|
2024-07-04 14:44:52 +07:00
|
|
|
class="no-padding stat-card"
|
2024-04-23 14:20:08 +07:00
|
|
|
:class="{ [`stat-card__${v.color}`]: true }"
|
2024-07-04 11:00:03 +07:00
|
|
|
:key="v.label"
|
2024-04-05 17:35:14 +07:00
|
|
|
>
|
2024-07-04 13:16:19 +07:00
|
|
|
<div class="stat-card__content row items-center q-pa-sm">
|
2024-07-03 14:12:51 +07:00
|
|
|
<div class="col-4 text-center">
|
|
|
|
|
<q-avatar
|
|
|
|
|
size="lg"
|
2024-07-04 14:27:35 +07:00
|
|
|
style="background-color: hsla(0 0% 100% /0.2)"
|
2024-07-03 14:12:51 +07:00
|
|
|
text-color="white"
|
|
|
|
|
:icon="v.icon"
|
|
|
|
|
/>
|
|
|
|
|
</div>
|
|
|
|
|
<div class="col-6 justify-center column">
|
2024-09-19 13:31:28 +07:00
|
|
|
<div
|
|
|
|
|
class="col-6 ellipsis text-bold text-caption"
|
|
|
|
|
style="width: 100%"
|
|
|
|
|
>
|
|
|
|
|
<span :style="`font-size: ${textSize}`">
|
|
|
|
|
{{ labelI18n ? $t(v.label) : v.label }}
|
|
|
|
|
</span>
|
2024-07-03 14:12:51 +07:00
|
|
|
<q-tooltip
|
|
|
|
|
anchor="top middle"
|
|
|
|
|
self="bottom middle"
|
|
|
|
|
:offset="[10, 10]"
|
|
|
|
|
>
|
|
|
|
|
{{ labelI18n ? $t(v.label) : v.label }}
|
|
|
|
|
</q-tooltip>
|
|
|
|
|
</div>
|
|
|
|
|
|
|
|
|
|
<div class="col-6">{{ v.count }}</div>
|
2024-04-22 14:19:35 +07:00
|
|
|
</div>
|
2024-04-05 17:35:14 +07:00
|
|
|
</div>
|
2024-07-04 13:16:19 +07:00
|
|
|
</div>
|
2024-04-05 17:35:14 +07:00
|
|
|
</div>
|
|
|
|
|
</template>
|
|
|
|
|
|
|
|
|
|
<style scoped>
|
2024-04-23 14:20:08 +07:00
|
|
|
.stat-card {
|
2024-07-04 13:16:19 +07:00
|
|
|
border-radius: var(--radius-2);
|
|
|
|
|
overflow: hidden;
|
2024-07-04 14:44:52 +07:00
|
|
|
box-shadow: var(--shadow-2);
|
2024-04-23 14:20:08 +07:00
|
|
|
}
|
|
|
|
|
|
|
|
|
|
.stat-card__content {
|
2024-04-05 17:35:14 +07:00
|
|
|
z-index: 2;
|
2024-07-03 14:12:51 +07:00
|
|
|
color: hsla(var(--gray-0-hsl) / 1);
|
|
|
|
|
background: hsla(var(--_color) / 1);
|
2024-04-05 17:35:14 +07:00
|
|
|
height: 100%;
|
2024-07-03 14:16:33 +07:00
|
|
|
min-width: 200px;
|
2024-04-05 17:35:14 +07:00
|
|
|
}
|
|
|
|
|
|
2024-04-23 14:20:08 +07:00
|
|
|
.stat-card__purple {
|
2024-07-03 14:12:51 +07:00
|
|
|
--_color: var(--violet-11-hsl);
|
2024-04-05 17:35:14 +07:00
|
|
|
}
|
|
|
|
|
|
2024-04-23 14:20:08 +07:00
|
|
|
.stat-card__pink {
|
2024-07-03 14:12:51 +07:00
|
|
|
--_color: var(--pink-6-hsl);
|
2024-04-05 17:35:14 +07:00
|
|
|
}
|
2024-04-11 09:43:09 +07:00
|
|
|
|
2024-04-23 14:20:08 +07:00
|
|
|
.stat-card__green {
|
2024-07-03 14:12:51 +07:00
|
|
|
--_color: var(--teal-10-hsl);
|
2024-04-23 13:03:12 +07:00
|
|
|
}
|
|
|
|
|
|
2024-07-05 16:29:06 +07:00
|
|
|
.stat-card__cyan {
|
|
|
|
|
--_color: var(--cyan-7-hsl);
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
.stat-card__red {
|
|
|
|
|
--_color: var(--red-6-hsl);
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
.stat-card__yellow {
|
|
|
|
|
--_color: var(--orange-4-hsl);
|
|
|
|
|
}
|
|
|
|
|
|
2024-06-12 15:34:09 +07:00
|
|
|
.stat-card__orange {
|
2024-07-03 14:12:51 +07:00
|
|
|
--_color: var(--orange-5-hsl);
|
2024-06-12 15:34:09 +07:00
|
|
|
}
|
|
|
|
|
|
2024-07-05 16:29:06 +07:00
|
|
|
.stat-card__magenta {
|
|
|
|
|
--_color: var(--pink-8-hsl);
|
|
|
|
|
}
|
|
|
|
|
|
2024-09-19 13:31:28 +07:00
|
|
|
.stat-card__lime {
|
|
|
|
|
--_color: var(--jungle-8-hsl);
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
.stat-card__light-purple {
|
|
|
|
|
--_color: var(--purple-7-hsl);
|
|
|
|
|
}
|
|
|
|
|
|
2024-09-06 11:35:08 +07:00
|
|
|
.stat-card__blue {
|
|
|
|
|
--_color: var(--blue-6-hsl);
|
|
|
|
|
}
|
|
|
|
|
|
2024-04-23 14:20:08 +07:00
|
|
|
.dark .stat-card__purple {
|
2024-07-03 14:12:51 +07:00
|
|
|
--_color: var(--violet-10-hsl);
|
2024-04-11 09:43:09 +07:00
|
|
|
}
|
2024-04-23 13:03:12 +07:00
|
|
|
|
2024-04-23 14:20:08 +07:00
|
|
|
.dark .stat-card__green {
|
2024-07-03 14:12:51 +07:00
|
|
|
--_color: var(--teal-8-hsl);
|
2024-04-23 13:03:12 +07:00
|
|
|
}
|
2024-06-12 15:34:09 +07:00
|
|
|
|
|
|
|
|
.dark .stat-card__orange {
|
2024-07-04 15:22:59 +07:00
|
|
|
--_color: var(--orange-6-hsl);
|
2024-06-12 15:34:09 +07:00
|
|
|
}
|
2024-07-05 16:29:06 +07:00
|
|
|
|
|
|
|
|
.dark .stat-card__magenta {
|
|
|
|
|
--_color: var(--pink-7-hsl);
|
|
|
|
|
}
|
2024-09-06 11:35:08 +07:00
|
|
|
|
|
|
|
|
.dark .stat-card__blue {
|
|
|
|
|
--_color: var(--blue-10-hsl);
|
|
|
|
|
}
|
2024-04-05 17:35:14 +07:00
|
|
|
</style>
|