factor out origins colors
This commit is contained in:
parent
504f215c5a
commit
d42e21bae7
3 changed files with 19 additions and 68 deletions
|
|
@ -13,6 +13,7 @@ import {
|
||||||
} from 'chart.js'
|
} from 'chart.js'
|
||||||
import { Line } from 'vue-chartjs'
|
import { Line } from 'vue-chartjs'
|
||||||
import 'chartjs-adapter-date-fns'
|
import 'chartjs-adapter-date-fns'
|
||||||
|
import { originColors } from '@/services/colors.js'
|
||||||
|
|
||||||
ChartJS.register(
|
ChartJS.register(
|
||||||
Title,
|
Title,
|
||||||
|
|
@ -33,11 +34,6 @@ const props = defineProps({
|
||||||
},
|
},
|
||||||
})
|
})
|
||||||
|
|
||||||
const originColors = {
|
|
||||||
surugaya: '#2d3081',
|
|
||||||
mandarake: '#924646',
|
|
||||||
}
|
|
||||||
|
|
||||||
const chartData = ref({
|
const chartData = ref({
|
||||||
datasets: [],
|
datasets: [],
|
||||||
})
|
})
|
||||||
|
|
|
||||||
4
src/services/colors.js
Normal file
4
src/services/colors.js
Normal file
|
|
@ -0,0 +1,4 @@
|
||||||
|
export const originColors = {
|
||||||
|
surugaya: '#2d3081',
|
||||||
|
mandarake: '#924646',
|
||||||
|
};
|
||||||
|
|
@ -1,69 +1,20 @@
|
||||||
<script setup>
|
<script setup>
|
||||||
import { onMounted, ref } from 'vue'
|
import ScrollToTopButton from '@/components/ScrollToTopButton.vue'
|
||||||
import { useZeroPrices } from '@/api/zeroPrices.js'
|
import TargetZeroesTab from '@/views/ZeroPricesView/TargetZeroesTab.vue'
|
||||||
import ZeroPriceCard from '@/views/ZeroPricesView/ZeroPriceCard.vue'
|
import PeriodSelectTab from '@/views/ZeroPricesView/PeriodSelectTab.vue'
|
||||||
import ZeroPricesToolbar from '@/views/ZeroPricesView/ZeroPricesToolbar.vue'
|
|
||||||
|
|
||||||
const { getZeroPrices } = useZeroPrices()
|
|
||||||
|
|
||||||
const zeroPrices = ref([])
|
|
||||||
const toDelete = ref([])
|
|
||||||
|
|
||||||
const handleToggle = ({ id, merch_uuid, checked }) => {
|
|
||||||
if (checked) {
|
|
||||||
toDelete.value.push({ id, merch_uuid });
|
|
||||||
} else {
|
|
||||||
toDelete.value = toDelete.value.filter(item => item.id !== id);
|
|
||||||
}
|
|
||||||
}
|
|
||||||
|
|
||||||
const handleSelectAll = () => {
|
|
||||||
toDelete.value = zeroPrices.value.map(item => ({
|
|
||||||
id: item.id,
|
|
||||||
merch_uuid: item.merch_uuid
|
|
||||||
}))
|
|
||||||
}
|
|
||||||
|
|
||||||
const fetchZeroPrices = async () => {
|
|
||||||
try {
|
|
||||||
const response = await getZeroPrices()
|
|
||||||
zeroPrices.value = Array.isArray(response.data) ? response.data : []
|
|
||||||
} catch (error) {
|
|
||||||
console.error(error)
|
|
||||||
}
|
|
||||||
}
|
|
||||||
|
|
||||||
const handleDeleted = () => {
|
|
||||||
toDelete.value = []
|
|
||||||
fetchZeroPrices()
|
|
||||||
}
|
|
||||||
|
|
||||||
onMounted(() => {
|
|
||||||
fetchZeroPrices()
|
|
||||||
})
|
|
||||||
</script>
|
</script>
|
||||||
|
|
||||||
<template>
|
<template>
|
||||||
<div v-if="zeroPrices.length === 0">
|
<n-tabs type="line" animated>
|
||||||
<n-h2 class="text-center">Zero prices</n-h2>
|
<n-tab-pane name="Target zeroes" tab="Target zeroes">
|
||||||
<n-h3 class="text-center">No data</n-h3>
|
<TargetZeroesTab />
|
||||||
</div>
|
</n-tab-pane>
|
||||||
<div v-else>
|
<n-tab-pane name="Period select" tab="Period select">
|
||||||
<div class="sticky-search-container">
|
<PeriodSelectTab />
|
||||||
<ZeroPricesToolbar
|
</n-tab-pane>
|
||||||
:selected="toDelete"
|
</n-tabs>
|
||||||
@deleted="handleDeleted"
|
<ScrollToTopButton />
|
||||||
@selectAll="handleSelectAll"
|
|
||||||
/>
|
|
||||||
</div>
|
|
||||||
<div v-for="item in zeroPrices" :key="item.created_at">
|
|
||||||
<ZeroPriceCard
|
|
||||||
:zero-price="item"
|
|
||||||
@toggle="handleToggle"
|
|
||||||
:checked="toDelete.some(t => t.id === item.id)"
|
|
||||||
/>
|
|
||||||
</div>
|
|
||||||
</div>
|
|
||||||
</template>
|
</template>
|
||||||
|
|
||||||
<style scoped></style>
|
<style scoped>
|
||||||
|
</style>
|
||||||
|
|
|
||||||
Loading…
Add table
Add a link
Reference in a new issue