@@ -14,7 +14,7 @@ import { exportSVGToPNG, exportToCSV } from "@/services/utils/export"
1414import { capitalizeAndReplaceUnderscore } from " @/services/utils"
1515
1616/** API */
17- import { fetchSeries , fetchSeriesCumulative } from " @/services/api/stats"
17+ import { fetchSeries , fetchSeriesCumulative , fetchTVS } from " @/services/api/stats"
1818
1919/** UI */
2020import Button from " @/components/ui/Button.vue"
@@ -97,7 +97,7 @@ useHead({
9797const periods = ref (STATS_PERIODS )
9898const selectedPeriod = ref (periods .value [2 ])
9999
100- const selectedTimeframe = ref (STATS_TIMEFRAMES .find (tf => tf .timeframe === selectedPeriod .value .timeframe ))
100+ const selectedTimeframe = ref (STATS_TIMEFRAMES .find (tf => tf .timeframe === ( series . value . name === " tvs " ? " day " : selectedPeriod .value .timeframe ) ))
101101const timeframes = computed (() => {
102102 let res = []
103103
@@ -109,6 +109,10 @@ const timeframes = computed(() => {
109109 }
110110 }
111111
112+ if (series .value .name === " tvs" ) {
113+ res = res .filter (tf => tf .timeframe === " day" || tf .timeframe === " month" )
114+ }
115+
112116 return res
113117})
114118const timeframesStyles = computed (() => {
@@ -163,7 +167,22 @@ const handleChangeChartView = () => {
163167const isLoading = ref (false )
164168const fetchData = async (from , to ) => {
165169 let data = []
166- if (series .value .aggregate !== ' cumulative' ) {
170+ if (series .value .name === " tvs" ) {
171+ data = (await fetchTVS ({
172+ period: selectedTimeframe .value .timeframe ,
173+ from: from
174+ ? from
175+ : loadPrevData .value
176+ ? parseInt (DateTime .fromSeconds (filters .from ).minus ({
177+ hours: filters .timeframe === " hour" ? filters .periodValue : 0 ,
178+ days: filters .timeframe === " day" ? filters .periodValue : 0 ,
179+ weeks: filters .timeframe === " week" ? filters .periodValue : 0 ,
180+ months: filters .timeframe === " month" ? filters .periodValue : 0 ,
181+ }).ts / 1_000 )
182+ : filters .from ,
183+ to: to ? to : filters .to
184+ }))
185+ } else if (series .value .aggregate !== ' cumulative' ) {
167186 data = (await fetchSeries ({
168187 table: series .value .name ,
169188 period: selectedTimeframe .value .timeframe ,
@@ -177,9 +196,9 @@ const fetchData = async (from, to) => {
177196 }).ts / 1_000 )
178197 : filters .from ,
179198 to: to ? to : filters .to
180- })). reverse ()
199+ }))
181200 } else {
182- data = await fetchSeriesCumulative ({
201+ data = ( await fetchSeriesCumulative ({
183202 name: series .value .name ,
184203 period: selectedTimeframe .value .timeframe ,
185204 from: loadPrevData .value ? parseInt (DateTime .fromSeconds (filters .from ).minus ({
@@ -188,7 +207,7 @@ const fetchData = async (from, to) => {
188207 weeks: filters .timeframe === " week" ? filters .periodValue : 0 ,
189208 }).ts / 1_000 ) : filters .from ,
190209 to: filters .to
191- })
210+ })). reverse ()
192211 }
193212
194213 return data
@@ -198,7 +217,6 @@ const getData = async () => {
198217
199218 let data = await fetchData ()
200219 if (data .length ) {
201- data .reverse ()
202220 if (loadPrevData .value ) {
203221 if (selectedTimeframe .value .timeframe !== filters .timeframe ) {
204222 if (data .length % 2 > 0 ) {
@@ -279,15 +297,25 @@ const handleUpdateDate = async (event) => {
279297 let to = event .to
280298
281299 let daysDiff = Math .round (DateTime .fromSeconds (to).diff (DateTime .fromSeconds (from), ' days' ).days )
282- if (daysDiff < 7 ) {
283- filters .timeframe = ' hour'
284- filters .periodValue = Math .round (DateTime .fromSeconds (to).diff (DateTime .fromSeconds (from), ' hours' ).hours )
285- } else if (daysDiff < 50 ) {
286- filters .timeframe = ' day'
287- filters .periodValue = daysDiff
300+ if (series .value .name === " tvs" ) {
301+ if (daysDiff < 50 ) {
302+ filters .timeframe = ' day'
303+ filters .periodValue = daysDiff
304+ } else {
305+ filters .timeframe = ' month'
306+ filters .periodValue = Math .ceil (daysDiff / 30 )
307+ }
288308 } else {
289- filters .timeframe = ' week'
290- filters .periodValue = Math .ceil (daysDiff / 7 )
309+ if (daysDiff < 7 ) {
310+ filters .timeframe = ' hour'
311+ filters .periodValue = Math .round (DateTime .fromSeconds (to).diff (DateTime .fromSeconds (from), ' hours' ).hours )
312+ } else if (daysDiff < 50 ) {
313+ filters .timeframe = ' day'
314+ filters .periodValue = daysDiff
315+ } else {
316+ filters .timeframe = ' week'
317+ filters .periodValue = Math .ceil (daysDiff / 7 )
318+ }
291319 }
292320
293321 if (filters .timeframe === ' hour' ) {
0 commit comments