{"version":3,"file":"ensureCompleteData-DcPAp9X5.cjs","names":[],"sources":["../src/Utils/ensureCompleteData.ts"],"sourcesContent":["import { parse } from 'date-fns/parse';\r\nimport orderBy from 'lodash.orderby';\r\n\r\nimport type {\r\n  BarGraphDataType,\r\n  BulletChartDataType,\r\n  ButterflyChartDataType,\r\n  DumbbellChartDataType,\r\n  GroupedBarGraphDataType,\r\n  ScatterPlotDataType,\r\n} from '@/Types';\r\n\r\nexport function ensureCompleteDataForBarChart(data: BarGraphDataType[], dateFormat: string) {\r\n  // Extract unique labels and dates\r\n  const labels = Array.from(new Set(data.map((d) => d.label)));\r\n  const dates = Array.from(new Set(data.map((d) => d.date))).filter((d) => d !== undefined);\r\n  if (dates.length === 0) return data;\r\n\r\n  // Create a set of existing label-date combinations\r\n  const existingCombinations = new Set(\r\n    // biome-ignore lint/suspicious/noExplicitAny: undefined data type\r\n    data.map((d: any) => `${d.label}-${d.date}`),\r\n  );\r\n\r\n  // biome-ignore lint/suspicious/noExplicitAny: undefined data type\r\n  const colors = data.reduce((acc: any, curr: any) => {\r\n    if (!acc[curr.label]) {\r\n      acc[curr.label] = curr.color;\r\n    }\r\n    return acc;\r\n  }, {});\r\n\r\n  // Add missing label-date combinations with size as undefined\r\n  const completeData = [...data];\r\n\r\n  labels.forEach((label) => {\r\n    dates.forEach((date) => {\r\n      if (!existingCombinations.has(`${label}-${date}`)) {\r\n        completeData.push({\r\n          label,\r\n          color: colors[label], // Keep the same color for the label\r\n          size: undefined,\r\n          date,\r\n        });\r\n      }\r\n    });\r\n  });\r\n\r\n  return orderBy(\r\n    completeData,\r\n    [(d) => parse(`${d.date}`, dateFormat || 'yyyy', new Date())],\r\n    ['asc'],\r\n  );\r\n}\r\n\r\nexport function ensureCompleteDataForStackedBarChart(\r\n  data: GroupedBarGraphDataType[],\r\n  dateFormat: string,\r\n) {\r\n  // Extract unique labels and dates\r\n  const labels = Array.from(new Set(data.map((d) => d.label)));\r\n  const dates = Array.from(new Set(data.map((d) => d.date))).filter((d) => d !== undefined);\r\n  if (dates.length === 0) return data;\r\n  // Create a set of existing label-date combinations\r\n  const existingCombinations = new Set(\r\n    // biome-ignore lint/suspicious/noExplicitAny: undefined data type\r\n    data.map((d: any) => `${d.label}-${d.date}`),\r\n  );\r\n\r\n  // Add missing label-date combinations with size as undefined\r\n  const completeData = [...data];\r\n\r\n  labels.forEach((label) => {\r\n    dates.forEach((date) => {\r\n      if (!existingCombinations.has(`${label}-${date}`)) {\r\n        completeData.push({\r\n          label,\r\n          size: data[0].size.map((_d) => null),\r\n          date,\r\n        });\r\n      }\r\n    });\r\n  });\r\n\r\n  return orderBy(\r\n    completeData,\r\n    [(d) => parse(`${d.date}`, dateFormat || 'yyyy', new Date())],\r\n    ['asc'],\r\n  );\r\n}\r\n\r\nexport function ensureCompleteDataForButterFlyChart(\r\n  data: ButterflyChartDataType[],\r\n  dateFormat: string,\r\n) {\r\n  // Extract unique labels and dates\r\n  const labels = Array.from(new Set(data.map((d) => d.label)));\r\n  const dates = Array.from(new Set(data.map((d) => d.date))).filter((d) => d !== undefined);\r\n  if (dates.length === 0) return data;\r\n\r\n  // Create a set of existing label-date combinations\r\n  const existingCombinations = new Set(\r\n    // biome-ignore lint/suspicious/noExplicitAny: undefined data type\r\n    data.map((d: any) => `${d.label}-${d.date}`),\r\n  );\r\n\r\n  // Add missing label-date combinations with size as undefined\r\n  const completeData = [...data];\r\n\r\n  labels.forEach((label) => {\r\n    dates.forEach((date) => {\r\n      if (!existingCombinations.has(`${label}-${date}`)) {\r\n        completeData.push({\r\n          label,\r\n          leftBar: undefined,\r\n          rightBar: undefined,\r\n          date,\r\n        });\r\n      }\r\n    });\r\n  });\r\n\r\n  return orderBy(\r\n    completeData,\r\n    [(d) => parse(`${d.date}`, dateFormat || 'yyyy', new Date())],\r\n    ['asc'],\r\n  );\r\n}\r\n\r\nexport function ensureCompleteDataForScatterPlot(data: ScatterPlotDataType[], dateFormat: string) {\r\n  // Extract unique labels and dates\r\n  const labels = Array.from(new Set(data.map((d) => d.label)));\r\n  const dates = Array.from(new Set(data.map((d) => d.date))).filter((d) => d !== undefined);\r\n  if (dates.length === 0) return data;\r\n\r\n  // Create a set of existing label-date combinations\r\n  const existingCombinations = new Set(\r\n    // biome-ignore lint/suspicious/noExplicitAny: undefined data type\r\n    data.map((d: any) => `${d.label}-${d.date}`),\r\n  );\r\n\r\n  // biome-ignore lint/suspicious/noExplicitAny: undefined data type\r\n  const colors = data.reduce((acc: any, curr: any) => {\r\n    if (!acc[curr.label]) {\r\n      acc[curr.label] = curr.color;\r\n    }\r\n    return acc;\r\n  }, {});\r\n\r\n  // Add missing label-date combinations with size as undefined\r\n  const completeData = [...data];\r\n\r\n  labels.forEach((label) => {\r\n    dates.forEach((date) => {\r\n      if (!existingCombinations.has(`${label}-${date}`)) {\r\n        completeData.push({\r\n          label,\r\n          color: colors[label], // Keep the same color for the label\r\n          x: undefined,\r\n          y: undefined,\r\n          radius: undefined,\r\n          date,\r\n        });\r\n      }\r\n    });\r\n  });\r\n\r\n  return orderBy(\r\n    completeData,\r\n    [(d) => parse(`${d.date}`, dateFormat || 'yyyy', new Date())],\r\n    ['asc'],\r\n  );\r\n}\r\n\r\nexport function ensureCompleteDataForDumbbellChart(\r\n  data: DumbbellChartDataType[],\r\n  dateFormat: string,\r\n) {\r\n  // Extract unique labels and dates\r\n  const labels = Array.from(new Set(data.map((d) => d.label)));\r\n  const dates = Array.from(new Set(data.map((d) => d.date))).filter((d) => d !== undefined);\r\n  if (dates.length === 0) return data;\r\n\r\n  // Create a set of existing label-date combinations\r\n  const existingCombinations = new Set(\r\n    // biome-ignore lint/suspicious/noExplicitAny: undefined data type\r\n    data.map((d: any) => `${d.label}-${d.date}`),\r\n  );\r\n\r\n  // Add missing label-date combinations with size as undefined\r\n  const completeData = [...data];\r\n\r\n  labels.forEach((label) => {\r\n    dates.forEach((date) => {\r\n      if (!existingCombinations.has(`${label}-${date}`)) {\r\n        completeData.push({\r\n          label,\r\n          x: data[0].x.map((_d) => null),\r\n          date,\r\n        });\r\n      }\r\n    });\r\n  });\r\n\r\n  return orderBy(\r\n    completeData,\r\n    [(d) => parse(`${d.date}`, dateFormat || 'yyyy', new Date())],\r\n    ['asc'],\r\n  );\r\n}\r\n\r\nexport function ensureCompleteDataForBulletChart(data: BulletChartDataType[], dateFormat: string) {\r\n  // Extract unique labels and dates\r\n  const labels = Array.from(new Set(data.map((d) => d.label)));\r\n  const dates = Array.from(new Set(data.map((d) => d.date))).filter((d) => d !== undefined);\r\n  if (dates.length === 0) return data;\r\n\r\n  // Create a set of existing label-date combinations\r\n  const existingCombinations = new Set(\r\n    // biome-ignore lint/suspicious/noExplicitAny: undefined data type\r\n    data.map((d: any) => `${d.label}-${d.date}`),\r\n  );\r\n\r\n  // Add missing label-date combinations with size as undefined\r\n  const completeData = [...data];\r\n\r\n  labels.forEach((label) => {\r\n    dates.forEach((date) => {\r\n      if (!existingCombinations.has(`${label}-${date}`)) {\r\n        completeData.push({\r\n          label,\r\n          size: null,\r\n          target: null,\r\n          qualitativeRange: null,\r\n          date,\r\n        });\r\n      }\r\n    });\r\n  });\r\n\r\n  return orderBy(\r\n    completeData,\r\n    [(d) => parse(`${d.date}`, dateFormat || 'yyyy', new Date())],\r\n    ['asc'],\r\n  );\r\n}\r\n"],"mappings":"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"}