224224 >
225225 </Table >
226226
227+ <div class =" w-full" >
228+ <p class =" text-sm font-semibold text-lightPrimary dark:text-darkPrimary mb-2" >TreeMapChart (value + delta)</p >
229+ <TreeMapChart
230+ :data =" treemapData"
231+ :series =" treemapSeries"
232+ :options =" treemapOptions"
233+ />
234+ </div >
235+
227236 <Spinner class =" w-10 h-10" />
228237 </div >
229238
@@ -336,6 +345,7 @@ import { Toggle } from '@/afcl';
336345import { Modal } from ' @/afcl' ;
337346import { IconSearchOutline } from ' @iconify-prerendered/vue-flowbite'
338347import { DatePicker } from ' @/afcl' ;
348+ import { TreeMapChart } from ' @/afcl' ;
339349import CustomRangePicker from " @/components/CustomRangePicker.vue" ;
340350import Toast from ' @/components/Toast.vue' ;
341351import { useAdminforth } from ' @/adminforth' ;
@@ -358,6 +368,55 @@ const selected = ref(null)
358368const selected2 = ref ([])
359369const valueStart = ref ()
360370
371+ const deltaToColor = (delta : number ) => {
372+ if (delta < - 10 ) return ' #B91C1C' // bright red
373+ if (delta < 0 ) return ' #EF4444' // red
374+ if (delta <= 10 ) return ' #22C55E' // green
375+ return ' #15803D' // very green
376+ }
377+
378+ const formatDelta = (delta : number ) => (delta > 0 ? ` +${delta }% ` : ` ${delta }% ` )
379+
380+ const treemapData = [
381+ { x: ' New Delhi' , value: 218 , delta: 12 },
382+ { x: ' Kolkata' , value: 149 , delta: - 4 },
383+ { x: ' Mumbai' , value: 184 , delta: - 14 },
384+ { x: ' Ahmedabad' , value: 55 , delta: 6 },
385+ { x: ' Bangalore' , value: 84 , delta: 9 },
386+ { x: ' Pune' , value: 31 , delta: - 2 },
387+ ].map ((item ) => ({
388+ ... item ,
389+ fillColor: deltaToColor (item .delta ),
390+ }))
391+
392+ const treemapSeries = [
393+ { name: ' Value' , fieldName: ' value' },
394+ ]
395+
396+ const treemapOptions: any = {
397+ chart: { height: 350 },
398+ dataLabels: {
399+ formatter : (text : string , { seriesIndex , dataPointIndex , w }: any ) => {
400+ const point = w ?.config ?.series ?.[seriesIndex ]?.data ?.[dataPointIndex ]
401+ return ` ${text } ${formatDelta (point .delta )} `
402+ },
403+ },
404+ plotOptions: {
405+ treemap: {
406+ distributed: false ,
407+ enableShades: false ,
408+ },
409+ },
410+ tooltip: {
411+ y: {
412+ formatter : (value : any , { seriesIndex , dataPointIndex , w }: any ) => {
413+ const point = w ?.config ?.series ?.[seriesIndex ]?.data ?.[dataPointIndex ]
414+ return ` ${point .value } (${formatDelta (point .delta )}) `
415+ },
416+ },
417+ },
418+ }
419+
361420
362421watch (valueStart , (newVal ) => {
363422 console .log (' New start value:' , newVal );
0 commit comments