diff --git a/front_end/package.json b/front_end/package.json index ab1873f..db0075b 100644 --- a/front_end/package.json +++ b/front_end/package.json @@ -38,6 +38,7 @@ "pinia": "^2.1.7", "pinia-plugin-persistedstate": "^3.2.1", "primeicons": "^7.0.0", + "tinycolor2": "^1.6.0", "uuid": "^9.0.0", "validator": "^13.12.0", "vue": "^3.5.12", diff --git a/front_end/src/components/common/BaseIconSetting.vue b/front_end/src/components/common/BaseIconSetting.vue new file mode 100644 index 0000000..6adcd60 --- /dev/null +++ b/front_end/src/components/common/BaseIconSetting.vue @@ -0,0 +1,8 @@ + + + + diff --git a/front_end/src/components/visualization/ActivityCalendarAbstract/Cell.vue b/front_end/src/components/visualization/ActivityCalendarAbstract/Cell.vue index 0f8ef5e..990f6de 100644 --- a/front_end/src/components/visualization/ActivityCalendarAbstract/Cell.vue +++ b/front_end/src/components/visualization/ActivityCalendarAbstract/Cell.vue @@ -37,13 +37,13 @@ import { ElText } from 'element-plus'; import BaseCardSmall from '@/components/common/BaseCardSmall.vue'; const prop = defineProps({ - date: { type: Date, required: true }, - videos: { type: Array, default: [] }, + date: { type: Date, required: true }, + videos: { type: Array, default: [] }, // 该日期的录像 bmax: { type: Number, default: 5, }, imax: { type: Number, default: 5, }, - emax: { type: Number, default: 5, }, - xOffset: { type: Number, default: 0 }, - yOffset: { type: Number, default: 0 }, + emax: { type: Number, default: 5, }, // 三个最大值,用于计算颜色 + xOffset: { type: Number, default: 0 }, // 横坐标,单位为格 + yOffset: { type: Number, default: 0 }, // 纵坐标,单位为格 }) const count = ref({ b: 0, i: 0, e: 0, }); @@ -51,7 +51,7 @@ const red = ref(0); const green = ref(0); const blue = ref(0); -watch(() => prop.videos, () => { +function refresh() { count.value.b = 0; count.value.i = 0; count.value.e = 0; @@ -61,7 +61,9 @@ watch(() => prop.videos, () => { red.value = 255 * count.value.b / prop.bmax; green.value = 255 * count.value.i / prop.imax; blue.value = 255 * count.value.e / prop.emax; -}, { immediate: true }); +} + +watch(() => prop.videos, refresh, { immediate: true }); const size = computed(() => activityCalendarConfig.value.cellSize + 'px'); const borderRadius = computed(() => activityCalendarConfig.value.cornerRadius + '%'); diff --git a/front_end/src/components/visualization/BBBvSummary/App.vue b/front_end/src/components/visualization/BBBvSummary/App.vue new file mode 100644 index 0000000..cef76d8 --- /dev/null +++ b/front_end/src/components/visualization/BBBvSummary/App.vue @@ -0,0 +1,43 @@ + + + \ No newline at end of file diff --git a/front_end/src/components/visualization/BBBvSummary/Cell.vue b/front_end/src/components/visualization/BBBvSummary/Cell.vue new file mode 100644 index 0000000..6a5cc60 --- /dev/null +++ b/front_end/src/components/visualization/BBBvSummary/Cell.vue @@ -0,0 +1,92 @@ + + + + + \ No newline at end of file diff --git a/front_end/src/components/visualization/BBBvSummary/Header.vue b/front_end/src/components/visualization/BBBvSummary/Header.vue new file mode 100644 index 0000000..4ebc577 --- /dev/null +++ b/front_end/src/components/visualization/BBBvSummary/Header.vue @@ -0,0 +1,19 @@ + + + \ No newline at end of file diff --git a/front_end/src/components/visualization/BBBvSummary/Setting.vue b/front_end/src/components/visualization/BBBvSummary/Setting.vue new file mode 100644 index 0000000..d2e630d --- /dev/null +++ b/front_end/src/components/visualization/BBBvSummary/Setting.vue @@ -0,0 +1,10 @@ + + + \ No newline at end of file diff --git a/front_end/src/components/visualization/BBBvSummary/YLabel.vue b/front_end/src/components/visualization/BBBvSummary/YLabel.vue new file mode 100644 index 0000000..aaff684 --- /dev/null +++ b/front_end/src/components/visualization/BBBvSummary/YLabel.vue @@ -0,0 +1,17 @@ + + + \ No newline at end of file diff --git a/front_end/src/components/widgets/IconSetting.vue b/front_end/src/components/widgets/IconSetting.vue index 666886f..ef1cfd8 100644 --- a/front_end/src/components/widgets/IconSetting.vue +++ b/front_end/src/components/widgets/IconSetting.vue @@ -1,9 +1,7 @@