@@ -28,7 +28,7 @@ const props = defineProps({
2828})
2929
3030/** Chart settings */
31- const selectedPeriodIdx = ref (1 )
31+ const selectedPeriodIdx = ref (2 )
3232const periods = ref ([
3333 {
3434 title: " Last 24 hours" ,
@@ -45,6 +45,11 @@ const periods = ref([
4545 value: 30 ,
4646 timeframe: " day" ,
4747 },
48+ {
49+ title: " Last 12 months" ,
50+ value: 12 ,
51+ timeframe: " month" ,
52+ },
4853])
4954const selectedPeriod = computed (() => periods .value [selectedPeriodIdx .value ])
5055const chartView = ref (" line" )
@@ -442,67 +447,75 @@ const buildBarChart = (chartEl, data, onEnter, onLeave, metric) => {
442447 chartEl .append (svg .node ())
443448}
444449
445- const getSizeSeries = async () => {
446- sizeSeries .value = []
447-
448- const sizeSeriesRawData = await fetchNamespaceSeries ({
450+ const fetchData = async (metric , from ) => {
451+ const data = await fetchNamespaceSeries ({
449452 id: props .id ,
450- name: " size " ,
453+ name: metric ,
451454 timeframe: selectedPeriod .value .timeframe ,
452- from: parseInt (
455+ from: from ? from : parseInt (
453456 DateTime .now ().minus ({
454457 days: selectedPeriod .value .timeframe === " day" ? selectedPeriod .value .value : 0 ,
455458 hours: selectedPeriod .value .timeframe === " hour" ? selectedPeriod .value .value : 0 ,
459+ months: selectedPeriod .value .timeframe === " month" ? selectedPeriod .value .value : 0 ,
456460 }).ts / 1_000 ,
457461 ),
458462 })
459463
464+ return data
465+ }
466+ const getSizeSeries = async () => {
467+ sizeSeries .value = []
468+
469+ const sizeSeriesRawData = await fetchData (" size" )
470+
460471 const sizeSeriesMap = {}
461472 sizeSeriesRawData .forEach ((item ) => {
462- sizeSeriesMap[DateTime .fromISO (item .time ).toFormat (selectedPeriod .value .timeframe === " day" ? " y-LL-dd" : " y-LL-dd-HH" )] =
463- item .value
473+ sizeSeriesMap[DateTime .fromISO (item .time ).toFormat ([" day" , " month" ].includes (selectedPeriod .value .timeframe ) ? " y-LL-dd" : " y-LL-dd-HH" )] = item .value
464474 })
465475
466476 for (let i = 1 ; i < selectedPeriod .value .value + 1 ; i++ ) {
467- const dt = DateTime .now ().minus ({
468- days: selectedPeriod .value .timeframe === " day" ? selectedPeriod .value .value - i : 0 ,
469- hours: selectedPeriod .value .timeframe === " hour" ? selectedPeriod .value .value - i : 0 ,
470- })
477+ let dt
478+ if (selectedPeriod .value .timeframe === " month" ) {
479+ dt = DateTime .now ().startOf (' month' ).minus ({
480+ months: selectedPeriod .value .timeframe === " month" ? selectedPeriod .value .value - i : 0 ,
481+ })
482+ } else {
483+ dt = DateTime .now ().minus ({
484+ days: selectedPeriod .value .timeframe === " day" ? selectedPeriod .value .value - i : 0 ,
485+ hours: selectedPeriod .value .timeframe === " hour" ? selectedPeriod .value .value - i : 0 ,
486+ })
487+ }
471488 sizeSeries .value .push ({
472489 date: dt .toJSDate (),
473- value: parseInt (sizeSeriesMap[dt .toFormat (selectedPeriod .value .timeframe === " day " ? " y-LL-dd" : " y-LL-dd-HH" )]) || 0 ,
490+ value: parseInt (sizeSeriesMap[dt .toFormat ([ " day " , " month " ]. includes ( selectedPeriod .value .timeframe ) ? " y-LL-dd" : " y-LL-dd-HH" )]) || 0 ,
474491 })
475- }
476- }
492+ }}
477493
478494const getPfbSeries = async () => {
479495 pfbSeries .value = []
480496
481- const pfbSeriesRawData = await fetchNamespaceSeries ({
482- id: props .id ,
483- name: " pfb_count" ,
484- timeframe: selectedPeriod .value .timeframe ,
485- from: parseInt (
486- DateTime .now ().minus ({
487- days: selectedPeriod .value .timeframe === " day" ? selectedPeriod .value .value : 0 ,
488- hours: selectedPeriod .value .timeframe === " hour" ? selectedPeriod .value .value : 0 ,
489- }).ts / 1_000 ,
490- ),
491- })
497+ const pfbSeriesRawData = await fetchData (" pfb_count" )
492498
493499 const pfbSeriesMap = {}
494500 pfbSeriesRawData .forEach ((item ) => {
495- pfbSeriesMap[DateTime .fromISO (item .time ).toFormat (selectedPeriod .value .timeframe === " day " ? " y-LL-dd" : " y-LL-dd-HH" )] = item .value
501+ pfbSeriesMap[DateTime .fromISO (item .time ).toFormat ([ " day " , " month " ]. includes ( selectedPeriod .value .timeframe ) ? " y-LL-dd" : " y-LL-dd-HH" )] = item .value
496502 })
497503
498504 for (let i = 1 ; i < selectedPeriod .value .value + 1 ; i++ ) {
499- const dt = DateTime .now ().minus ({
500- days: selectedPeriod .value .timeframe === " day" ? selectedPeriod .value .value - i : 0 ,
501- hours: selectedPeriod .value .timeframe === " hour" ? selectedPeriod .value .value - i : 0 ,
502- })
505+ let dt
506+ if (selectedPeriod .value .timeframe === " month" ) {
507+ dt = DateTime .now ().startOf (' month' ).minus ({
508+ months: selectedPeriod .value .timeframe === " month" ? selectedPeriod .value .value - i : 0 ,
509+ })
510+ } else {
511+ dt = DateTime .now ().minus ({
512+ days: selectedPeriod .value .timeframe === " day" ? selectedPeriod .value .value - i : 0 ,
513+ hours: selectedPeriod .value .timeframe === " hour" ? selectedPeriod .value .value - i : 0 ,
514+ })
515+ }
503516 pfbSeries .value .push ({
504517 date: dt .toJSDate (),
505- value: parseInt (pfbSeriesMap[dt .toFormat (selectedPeriod .value .timeframe === " day " ? " y-LL-dd" : " y-LL-dd-HH" )]) || 0 ,
518+ value: parseInt (pfbSeriesMap[dt .toFormat ([ " day " , " month " ]. includes ( selectedPeriod .value .timeframe ) ? " y-LL-dd" : " y-LL-dd-HH" )]) || 0 ,
506519 })
507520 }
508521}
@@ -572,8 +585,8 @@ const debouncedRedraw = useDebounceFn((e) => {
572585onBeforeMount (() => {
573586 isLoading .value = true
574587 const settings = JSON .parse (localStorage .getItem (" settings" ))
575- chartView .value = settings? .chart ? .view || " line "
576- loadLastValue .value = settings? .chart ? .loadLastValue
588+ chartView .value = settings? .chart ? .view || " bar "
589+ loadLastValue .value = settings? .chart ? .view ? settings . chart . loadLastValue : true
577590})
578591
579592onMounted (async () => {
0 commit comments