@hisptz/dhis2-analytics 2.1.37 → 2.2.0

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (66) hide show
  1. package/dist/components/Map/DHIS2Map.js +3 -1
  2. package/dist/components/Map/DHIS2Map.js.map +1 -1
  3. package/dist/components/Map/components/MapControls/components/TimelineControl/index.js +236 -0
  4. package/dist/components/Map/components/MapControls/components/TimelineControl/index.js.map +1 -0
  5. package/dist/components/Map/components/MapControls/index.js +17 -12
  6. package/dist/components/Map/components/MapControls/index.js.map +1 -1
  7. package/dist/components/Map/components/MapProvider/components/MapLayerProvider/hooks/index.js +62 -55
  8. package/dist/components/Map/components/MapProvider/components/MapLayerProvider/hooks/index.js.map +1 -1
  9. package/dist/components/Map/components/MapProvider/components/MapLayerProvider/index.js +14 -2
  10. package/dist/components/Map/components/MapProvider/components/MapLayerProvider/index.js.map +1 -1
  11. package/dist/components/Map/components/MapProvider/components/MapPeriodFilterProvider/index.js +19 -0
  12. package/dist/components/Map/components/MapProvider/components/MapPeriodFilterProvider/index.js.map +1 -0
  13. package/dist/components/Map/components/MapProvider/hooks/index.js +4 -0
  14. package/dist/components/Map/components/MapProvider/hooks/index.js.map +1 -1
  15. package/dist/components/Map/components/MapProvider/index.js +22 -5
  16. package/dist/components/Map/components/MapProvider/index.js.map +1 -1
  17. package/dist/components/Map/index.js +21 -0
  18. package/dist/components/Map/state/index.js +9 -0
  19. package/dist/components/Map/state/index.js.map +1 -1
  20. package/dist/components/Map/utils/helpers.js +74 -0
  21. package/dist/components/Map/utils/helpers.js.map +1 -1
  22. package/dist/esm/components/Map/DHIS2Map.js +3 -1
  23. package/dist/esm/components/Map/DHIS2Map.js.map +1 -1
  24. package/dist/esm/components/Map/components/MapControls/components/TimelineControl/index.js +234 -0
  25. package/dist/esm/components/Map/components/MapControls/components/TimelineControl/index.js.map +1 -0
  26. package/dist/esm/components/Map/components/MapControls/index.js +17 -12
  27. package/dist/esm/components/Map/components/MapControls/index.js.map +1 -1
  28. package/dist/esm/components/Map/components/MapProvider/components/MapLayerProvider/hooks/index.js +66 -59
  29. package/dist/esm/components/Map/components/MapProvider/components/MapLayerProvider/hooks/index.js.map +1 -1
  30. package/dist/esm/components/Map/components/MapProvider/components/MapLayerProvider/index.js +15 -3
  31. package/dist/esm/components/Map/components/MapProvider/components/MapLayerProvider/index.js.map +1 -1
  32. package/dist/esm/components/Map/components/MapProvider/components/MapPeriodFilterProvider/index.js +17 -0
  33. package/dist/esm/components/Map/components/MapProvider/components/MapPeriodFilterProvider/index.js.map +1 -0
  34. package/dist/esm/components/Map/components/MapProvider/hooks/index.js +5 -2
  35. package/dist/esm/components/Map/components/MapProvider/hooks/index.js.map +1 -1
  36. package/dist/esm/components/Map/components/MapProvider/index.js +22 -5
  37. package/dist/esm/components/Map/components/MapProvider/index.js.map +1 -1
  38. package/dist/esm/components/Map/index.js +3 -0
  39. package/dist/esm/components/Map/state/index.js +9 -1
  40. package/dist/esm/components/Map/state/index.js.map +1 -1
  41. package/dist/esm/components/Map/utils/helpers.js +72 -1
  42. package/dist/esm/components/Map/utils/helpers.js.map +1 -1
  43. package/dist/types/components/Map/DHIS2Map.d.ts.map +1 -1
  44. package/dist/types/components/Map/components/MapArea/interfaces/index.d.ts +5 -2
  45. package/dist/types/components/Map/components/MapArea/interfaces/index.d.ts.map +1 -1
  46. package/dist/types/components/Map/components/MapControls/components/TimelineControl/index.d.ts +26 -0
  47. package/dist/types/components/Map/components/MapControls/components/TimelineControl/index.d.ts.map +1 -0
  48. package/dist/types/components/Map/components/MapControls/index.d.ts +3 -4
  49. package/dist/types/components/Map/components/MapControls/index.d.ts.map +1 -1
  50. package/dist/types/components/Map/components/MapProvider/components/MapLayerProvider/hooks/index.d.ts.map +1 -1
  51. package/dist/types/components/Map/components/MapProvider/components/MapLayerProvider/index.d.ts.map +1 -1
  52. package/dist/types/components/Map/components/MapProvider/components/MapPeriodFilterProvider/index.d.ts +8 -0
  53. package/dist/types/components/Map/components/MapProvider/components/MapPeriodFilterProvider/index.d.ts.map +1 -0
  54. package/dist/types/components/Map/components/MapProvider/hooks/index.d.ts +1 -0
  55. package/dist/types/components/Map/components/MapProvider/hooks/index.d.ts.map +1 -1
  56. package/dist/types/components/Map/components/MapProvider/index.d.ts +2 -2
  57. package/dist/types/components/Map/components/MapProvider/index.d.ts.map +1 -1
  58. package/dist/types/components/Map/index.d.ts +3 -0
  59. package/dist/types/components/Map/index.d.ts.map +1 -1
  60. package/dist/types/components/Map/interfaces/index.d.ts +2 -0
  61. package/dist/types/components/Map/interfaces/index.d.ts.map +1 -1
  62. package/dist/types/components/Map/state/index.d.ts +8 -0
  63. package/dist/types/components/Map/state/index.d.ts.map +1 -1
  64. package/dist/types/components/Map/utils/helpers.d.ts +7 -0
  65. package/dist/types/components/Map/utils/helpers.d.ts.map +1 -1
  66. package/package.json +10 -5
@@ -1 +1 @@
1
- {"version":3,"sources":["../../../../../../../../../src/components/Map/components/MapProvider/components/MapLayerProvider/hooks/index.tsx"],"names":["pe","ou","row","ouGroup"],"mappings":"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","file":"index.js","sourcesContent":["import {\n\tcompact,\n\tdifferenceBy,\n\tfind,\n\thead,\n\tisEmpty,\n\tlast,\n\tsortBy,\n} from \"lodash\";\nimport { useMapOrganisationUnit, useMapPeriods } from \"../../../hooks\";\nimport { useCallback, useMemo, useState } from \"react\";\nimport {\n\tgenerateLegends,\n\tgetOrgUnitsSelection,\n\tsanitizeDate,\n\tsanitizeOrgUnits,\n\ttoGeoJson,\n} from \"../../../../../utils\";\nimport { useDataEngine } from \"@dhis2/app-runtime\";\nimport {\n\tCustomGoogleEngineLayer,\n\tCustomPointLayer,\n\tCustomThematicLayer,\n\tEarthEngineLayerConfig,\n\tThematicLayerConfig,\n} from \"../../../../MapLayer/interfaces\";\nimport {\n\ttype MapAnalyticsOptions,\n\tMapOrgUnit,\n\tPointOrgUnit,\n} from \"../../../../../interfaces/index.js\";\nimport { asyncify, map } from \"async-es\";\nimport { LegendSet } from \"@hisptz/dhis2-utils\";\nimport {\n\tdefaultClasses,\n\tdefaultColorScaleName,\n} from \"../../../../../utils/colors.js\";\nimport { useGoogleEngineToken } from \"../../../../MapLayer/components/GoogleEngineLayer/hooks/index.js\";\nimport { useBoundaryData } from \"../../../../MapLayer/components/BoundaryLayer/hooks/useBoundaryData.js\";\nimport { EarthEngine } from \"../../../../MapLayer/components/GoogleEngineLayer/services/engine.js\";\nimport { EARTH_ENGINE_LAYERS } from \"../../../../MapLayer/components/GoogleEngineLayer/constants/index.js\";\nimport { EarthEngineOptions } from \"../../../../MapLayer/components/GoogleEngineLayer/interfaces/index.js\";\n\nconst analyticsQuery = {\n\tanalytics: {\n\t\tresource: \"analytics\",\n\t\tparams: ({ ou, pe, dx, startDate, endDate, analyticsOptions }: any) => {\n\t\t\tconst peDimension = !isEmpty(pe)\n\t\t\t\t? `pe:${pe?.join(\";\")}`\n\t\t\t\t: undefined;\n\t\t\tconst ouDimension = !isEmpty(ou)\n\t\t\t\t? `ou:${ou?.join(\";\")}`\n\t\t\t\t: undefined;\n\t\t\tconst dxDimension = !isEmpty(dx)\n\t\t\t\t? `dx:${dx?.join(\";\")}`\n\t\t\t\t: undefined;\n\n\t\t\treturn {\n\t\t\t\tdimension: compact([dxDimension, peDimension, ouDimension]),\n\t\t\t\tstartDate,\n\t\t\t\tendDate,\n\t\t\t\tdisplayProperty: \"NAME\",\n\t\t\t\t...(analyticsOptions ?? {}),\n\t\t\t};\n\t\t},\n\t},\n};\nconst query = {\n\tlayer: {\n\t\tresource: \"geoFeatures\",\n\t\tparams: ({ ous }: any) => ({\n\t\t\tou: `ou:${ous.join(\";\")}`,\n\t\t}),\n\t},\n\tanalytics: {\n\t\tresource: \"analytics\",\n\t\tparams: ({ ous }: any) => ({\n\t\t\tdimension: [\n\t\t\t\t`ou:${ous.join(\";\")}`,\n\t\t\t\t`pe:${new Date().getFullYear()}`,\n\t\t\t],\n\t\t\tskipData: true,\n\t\t\thierarchyMeta: true,\n\t\t}),\n\t},\n};\nconst groupSetQuery = {\n\tgroupSet: {\n\t\tresource: \"organisationUnitGroupSets\",\n\t\tid: ({ groupSet }: any) => groupSet,\n\t\tparams: {\n\t\t\tfields: [\n\t\t\t\t\"organisationUnitGroups[name,color,symbol,organisationUnits[id]]\",\n\t\t\t],\n\t\t},\n\t},\n};\nconst legendSetsQuery = {\n\tlegendSets: {\n\t\tresource: \"legendSets\",\n\t\tid: ({ id }: any) => id,\n\t\tparams: {\n\t\t\tfields: [\n\t\t\t\t\"id\",\n\t\t\t\t\"displayName\",\n\t\t\t\t\"legends[id,code,name,startValue,endValue,color]\",\n\t\t\t],\n\t\t},\n\t},\n};\n\nexport function useThematicLayers({\n\tanalyticsOptions,\n}: {\n\tanalyticsOptions?: MapAnalyticsOptions;\n}): any {\n\tconst engine = useDataEngine();\n\tconst [loading, setLoading] = useState(false);\n\tconst { orgUnits, orgUnitSelection } = useMapOrganisationUnit();\n\tconst { periods, range } = useMapPeriods() ?? {};\n\tconst ou = useMemo(\n\t\t() => getOrgUnitsSelection(orgUnitSelection),\n\t\t[orgUnitSelection],\n\t);\n\tconst pe = useMemo(() => periods?.map((pe: any) => pe.id), [periods]);\n\n\tconst { startDate, endDate } = useMemo(() => {\n\t\tif (!range) {\n\t\t\treturn {\n\t\t\t\tstartDate: undefined,\n\t\t\t\tendDate: undefined,\n\t\t\t};\n\t\t}\n\t\treturn {\n\t\t\tstartDate: sanitizeDate(range.start.toDateString()),\n\t\t\tendDate: sanitizeDate(range.end.toDateString()),\n\t\t};\n\t}, [range]);\n\tconst sanitizeData = (data: any, layer: ThematicLayerConfig) => {\n\t\tif (data) {\n\t\t\tconst { analytics } = data as any;\n\t\t\tconst rows = analytics?.rows;\n\t\t\tconst ouIndex = analytics.headers.findIndex(\n\t\t\t\t(header: any) => header.name === \"ou\",\n\t\t\t);\n\t\t\tconst dxIndex = analytics.headers.findIndex(\n\t\t\t\t(header: any) => header.name === \"dx\",\n\t\t\t);\n\t\t\tconst valueIndex = analytics.headers.findIndex(\n\t\t\t\t(header: any) => header.name === \"value\",\n\t\t\t);\n\n\t\t\tif (!isEmpty(rows)) {\n\t\t\t\treturn sortBy(\n\t\t\t\t\torgUnits?.map((ou: MapOrgUnit) => {\n\t\t\t\t\t\tconst row = rows.find(\n\t\t\t\t\t\t\t(row: any) =>\n\t\t\t\t\t\t\t\trow[ouIndex] === ou.id &&\n\t\t\t\t\t\t\t\trow[dxIndex] === layer.dataItem.id,\n\t\t\t\t\t\t);\n\t\t\t\t\t\treturn {\n\t\t\t\t\t\t\torgUnit: ou,\n\t\t\t\t\t\t\tdata: row ? parseFloat(row[valueIndex]) : undefined,\n\t\t\t\t\t\t\tdataItem: {\n\t\t\t\t\t\t\t\t...layer.dataItem,\n\t\t\t\t\t\t\t},\n\t\t\t\t\t\t};\n\t\t\t\t\t}),\n\t\t\t\t\t[\"data\"],\n\t\t\t\t);\n\t\t\t}\n\t\t\treturn [];\n\t\t}\n\t\treturn [];\n\t};\n\n\tconst sanitizeLegends = async (\n\t\tlayers: CustomThematicLayer[],\n\t): Promise<CustomThematicLayer[]> => {\n\t\treturn (await map(\n\t\t\tlayers,\n\t\t\tasyncify(async (layer: CustomThematicLayer) => {\n\t\t\t\ttry {\n\t\t\t\t\tconst legends = [];\n\t\t\t\t\tif (layer.dataItem.legendSet) {\n\t\t\t\t\t\tconst legendSetData = await engine.query(\n\t\t\t\t\t\t\tlegendSetsQuery,\n\t\t\t\t\t\t\t{\n\t\t\t\t\t\t\t\tvariables: {\n\t\t\t\t\t\t\t\t\tid: layer.dataItem.legendSet,\n\t\t\t\t\t\t\t\t},\n\t\t\t\t\t\t\t},\n\t\t\t\t\t\t);\n\t\t\t\t\t\tconst legendSet: LegendSet =\n\t\t\t\t\t\t\tlegendSetData?.legendSets as LegendSet;\n\t\t\t\t\t\tif (legendSet) {\n\t\t\t\t\t\t\tlegends.push(...legendSet.legends);\n\t\t\t\t\t\t}\n\t\t\t\t\t} else {\n\t\t\t\t\t\tconst { scale, colorClass } = layer.dataItem\n\t\t\t\t\t\t\t.legendConfig ?? {\n\t\t\t\t\t\t\tscale: defaultClasses,\n\t\t\t\t\t\t\tcolorClass: defaultColorScaleName,\n\t\t\t\t\t\t};\n\t\t\t\t\t\tconst sortedData = sortBy(\n\t\t\t\t\t\t\tlayer.data.filter((datum) => !!datum.data),\n\t\t\t\t\t\t\t\"data\",\n\t\t\t\t\t\t);\n\t\t\t\t\t\tconst autoLegends = generateLegends(\n\t\t\t\t\t\t\tlast(sortedData)?.data ?? 0,\n\t\t\t\t\t\t\thead(sortedData)?.data ?? 0,\n\t\t\t\t\t\t\t{\n\t\t\t\t\t\t\t\tclassesCount: scale,\n\t\t\t\t\t\t\t\tcolorClass,\n\t\t\t\t\t\t\t},\n\t\t\t\t\t\t);\n\t\t\t\t\t\tlegends.push(...autoLegends);\n\t\t\t\t\t}\n\t\t\t\t\treturn {\n\t\t\t\t\t\t...layer,\n\t\t\t\t\t\tlegends,\n\t\t\t\t\t};\n\t\t\t\t} catch (e) {\n\t\t\t\t\treturn layer;\n\t\t\t\t}\n\t\t\t}),\n\t\t)) as CustomThematicLayer[];\n\t};\n\n\tconst sanitizeLayers = async (\n\t\tlayers: ThematicLayerConfig[],\n\t): Promise<CustomThematicLayer[]> => {\n\t\ttry {\n\t\t\tsetLoading(true);\n\t\t\tconst layersWithoutData = layers?.filter((layer) => !layer.data);\n\t\t\tconst layersWithData = differenceBy(\n\t\t\t\tlayers,\n\t\t\t\tlayersWithoutData,\n\t\t\t\t\"id\",\n\t\t\t);\n\t\t\tconst dx = layersWithoutData.map((layer) => layer.dataItem.id);\n\t\t\tlet sanitizedLayersWithData: any = [];\n\n\t\t\tif (!isEmpty(dx)) {\n\t\t\t\tconst data = await engine.query(analyticsQuery, {\n\t\t\t\t\tvariables: {\n\t\t\t\t\t\tdx,\n\t\t\t\t\t\tou,\n\t\t\t\t\t\tpe,\n\t\t\t\t\t\tstartDate,\n\t\t\t\t\t\tendDate,\n\t\t\t\t\t\tanalyticsOptions,\n\t\t\t\t\t},\n\t\t\t\t});\n\t\t\t\tsanitizedLayersWithData = layersWithoutData.map((layer) => ({\n\t\t\t\t\t...layer,\n\t\t\t\t\tname:\n\t\t\t\t\t\tlayer?.name ?? layer?.dataItem?.displayName ?? layer.id,\n\t\t\t\t\tdata: sanitizeData(data, layer),\n\t\t\t\t}));\n\t\t\t}\n\t\t\tconst sanitizedLayersWithOrgUnits = layersWithData.map((layer) => ({\n\t\t\t\t...layer,\n\t\t\t\tdata: layer.data?.map((datum) => ({\n\t\t\t\t\t...datum,\n\t\t\t\t\torgUnit: find(orgUnits, [\n\t\t\t\t\t\t\"id\",\n\t\t\t\t\t\tdatum.orgUnit,\n\t\t\t\t\t]) as MapOrgUnit,\n\t\t\t\t\tdataItem: layer.dataItem,\n\t\t\t\t\tname:\n\t\t\t\t\t\tlayer?.name ?? layer?.dataItem?.displayName ?? layer.id,\n\t\t\t\t})),\n\t\t\t}));\n\t\t\tsetLoading(false);\n\t\t\treturn await sanitizeLegends([\n\t\t\t\t...sanitizedLayersWithData,\n\t\t\t\t...sanitizedLayersWithOrgUnits,\n\t\t\t]);\n\t\t} catch (e: any) {\n\t\t\tconsole.error(`Error getting thematic layers`, e.details);\n\t\t\tsetLoading(false);\n\t\t\treturn [];\n\t\t}\n\t};\n\n\treturn {\n\t\tsanitizeLayers,\n\t\tloading,\n\t};\n}\n\nexport function usePointLayer() {\n\tconst engine = useDataEngine();\n\tconst { orgUnitSelection } = useMapOrganisationUnit();\n\tconst [loading, setLoading] = useState(false);\n\n\tconst sanitizePointData = useCallback(\n\t\t(orgUnitData: any, groupSetData: any): PointOrgUnit[] => {\n\t\t\tconst { analytics, layer } = (orgUnitData as any) ?? {};\n\t\t\tconst rawOrgUnits = sanitizeOrgUnits(analytics?.metaData);\n\t\t\tconst geoJSONObjects = toGeoJson(\n\t\t\t\tlayer?.filter((bound: any) => bound.co),\n\t\t\t);\n\t\t\treturn compact(\n\t\t\t\trawOrgUnits.map((orgUnit: any) => {\n\t\t\t\t\tconst geoJSONObject: any = geoJSONObjects?.find(\n\t\t\t\t\t\t(geoJSON: any) => geoJSON.properties.id === orgUnit.id,\n\t\t\t\t\t);\n\t\t\t\t\tconst orgUnitGroups: any =\n\t\t\t\t\t\t(groupSetData?.groupSet as any)\n\t\t\t\t\t\t\t?.organisationUnitGroups ?? [];\n\t\t\t\t\tconst ouGroup = find(\n\t\t\t\t\t\torgUnitGroups,\n\t\t\t\t\t\t(ouGroup) =>\n\t\t\t\t\t\t\t!!find(ouGroup?.organisationUnits ?? [], [\n\t\t\t\t\t\t\t\t\"id\",\n\t\t\t\t\t\t\t\torgUnit.id,\n\t\t\t\t\t\t\t]),\n\t\t\t\t\t);\n\n\t\t\t\t\tif (\n\t\t\t\t\t\t!geoJSONObject ||\n\t\t\t\t\t\tgeoJSONObject.properties.type !== \"Point\"\n\t\t\t\t\t) {\n\t\t\t\t\t\treturn;\n\t\t\t\t\t}\n\t\t\t\t\treturn {\n\t\t\t\t\t\t...orgUnit,\n\t\t\t\t\t\tgeoJSON: geoJSONObject,\n\t\t\t\t\t\tlevel: geoJSONObject.properties.level,\n\t\t\t\t\t\ticon: {\n\t\t\t\t\t\t\ttype: \"groupIcon\",\n\t\t\t\t\t\t\ticon: ouGroup?.symbol,\n\t\t\t\t\t\t},\n\t\t\t\t\t};\n\t\t\t\t}),\n\t\t\t);\n\t\t},\n\t\t[],\n\t);\n\n\tconst sanitizeLayer = useCallback(\n\t\tasync (\n\t\t\tlayer: CustomPointLayer,\n\t\t): Promise<CustomPointLayer | undefined> => {\n\t\t\ttry {\n\t\t\t\tif (!layer.level && !layer.group) {\n\t\t\t\t\treturn;\n\t\t\t\t}\n\t\t\t\tsetLoading(true);\n\t\t\t\tconst level = layer.level ? `LEVEL-${layer.level}` : undefined;\n\t\t\t\tconst group = layer.group\n\t\t\t\t\t? `OU_GROUP-${layer.group}`\n\t\t\t\t\t: undefined;\n\t\t\t\tconst ous = [\n\t\t\t\t\t...getOrgUnitsSelection(orgUnitSelection),\n\t\t\t\t\tlevel,\n\t\t\t\t\tgroup,\n\t\t\t\t];\n\n\t\t\t\tconst pointData = await engine.query(query, {\n\t\t\t\t\tvariables: {\n\t\t\t\t\t\tous,\n\t\t\t\t\t},\n\t\t\t\t});\n\t\t\t\tconst groupSetData = await engine.query(groupSetQuery, {\n\t\t\t\t\tvariables: {\n\t\t\t\t\t\tgroupSet: layer.style?.groupSet,\n\t\t\t\t\t},\n\t\t\t\t});\n\t\t\t\tconst sanitizedOrgUnitData = sanitizePointData(\n\t\t\t\t\tpointData,\n\t\t\t\t\tgroupSetData,\n\t\t\t\t);\n\n\t\t\t\tconst orgUnitGroups =\n\t\t\t\t\t(groupSetData?.groupSet as any)?.organisationUnitGroups ??\n\t\t\t\t\t[];\n\n\t\t\t\tconst sanitizedOrgUnitGroups = orgUnitGroups.map(\n\t\t\t\t\t(ouGroup: any) => ({\n\t\t\t\t\t\t...ouGroup,\n\t\t\t\t\t\torganisationUnits: undefined,\n\t\t\t\t\t}),\n\t\t\t\t);\n\t\t\t\tsetLoading(false);\n\t\t\t\treturn {\n\t\t\t\t\t...layer,\n\t\t\t\t\tpoints: sanitizedOrgUnitData,\n\t\t\t\t\tstyle: {\n\t\t\t\t\t\t...layer.style,\n\t\t\t\t\t\torgUnitGroups: sanitizedOrgUnitGroups,\n\t\t\t\t\t},\n\t\t\t\t};\n\t\t\t} catch (e: any) {\n\t\t\t\tsetLoading(false);\n\t\t\t\tconsole.error(`Error getting point layer`, e.details);\n\t\t\t\treturn;\n\t\t\t}\n\t\t},\n\t\t[],\n\t);\n\n\treturn {\n\t\tloading,\n\t\tsanitizeLayer,\n\t};\n}\n\nexport function useGoogleEngineLayers() {\n\tconst { refresh } = useGoogleEngineToken();\n\tconst orgUnits = useBoundaryData();\n\n\tasync function getImageUrl(\n\t\tearthEngine: EarthEngine,\n\t\t{ filters }: EarthEngineLayerConfig,\n\t): Promise<string | undefined> {\n\t\tif (earthEngine.initialized) {\n\t\t\ttry {\n\t\t\t\tearthEngine.setOrgUnits(orgUnits ?? []);\n\t\t\t\tconst period = filters?.period;\n\t\t\t\tif (period) {\n\t\t\t\t\tearthEngine.setPeriod(period);\n\t\t\t\t}\n\t\t\t\treturn earthEngine.url();\n\t\t\t} catch (e) {\n\t\t\t\tconsole.error(e);\n\t\t\t}\n\t\t}\n\t}\n\n\tconst sanitizeLayers = useCallback(\n\t\tasync (\n\t\t\tlayers: EarthEngineLayerConfig[],\n\t\t): Promise<CustomGoogleEngineLayer[]> => {\n\t\t\tif (isEmpty(layers)) {\n\t\t\t\treturn [];\n\t\t\t}\n\t\t\ttry {\n\t\t\t\tconst { token } = await refresh();\n\t\t\t\tif (!token) {\n\t\t\t\t\tconsole.error(\n\t\t\t\t\t\t`Google token not available in this instance`,\n\t\t\t\t\t);\n\t\t\t\t\treturn [];\n\t\t\t\t}\n\t\t\t\tawait EarthEngine.setToken(token, refresh);\n\t\t\t\treturn map(\n\t\t\t\t\tlayers,\n\t\t\t\t\tasyncify(async (layer: EarthEngineLayerConfig) => {\n\t\t\t\t\t\ttry {\n\t\t\t\t\t\t\tconst defaultOptions: any =\n\t\t\t\t\t\t\t\tfind(EARTH_ENGINE_LAYERS, [\"id\", layer.type]) ??\n\t\t\t\t\t\t\t\t{};\n\t\t\t\t\t\t\tconst options: EarthEngineOptions = {\n\t\t\t\t\t\t\t\t...defaultOptions,\n\t\t\t\t\t\t\t\taggregations:\n\t\t\t\t\t\t\t\t\tlayer.aggregations ??\n\t\t\t\t\t\t\t\t\tdefaultOptions?.aggregations,\n\t\t\t\t\t\t\t\tparams: layer.params ?? defaultOptions?.params,\n\t\t\t\t\t\t\t};\n\t\t\t\t\t\t\tconst updatedLayer = {\n\t\t\t\t\t\t\t\t...layer,\n\t\t\t\t\t\t\t\toptions,\n\t\t\t\t\t\t\t};\n\t\t\t\t\t\t\tconst earthEngine = new EarthEngine({ options });\n\t\t\t\t\t\t\tconst url = await getImageUrl(\n\t\t\t\t\t\t\t\tearthEngine,\n\t\t\t\t\t\t\t\tupdatedLayer,\n\t\t\t\t\t\t\t);\n\t\t\t\t\t\t\treturn {\n\t\t\t\t\t\t\t\t...updatedLayer,\n\t\t\t\t\t\t\t\tengine: earthEngine,\n\t\t\t\t\t\t\t\turl,\n\t\t\t\t\t\t\t};\n\t\t\t\t\t\t} catch (e) {\n\t\t\t\t\t\t\tconsole.error(e);\n\t\t\t\t\t\t\treturn;\n\t\t\t\t\t\t}\n\t\t\t\t\t}),\n\t\t\t\t);\n\t\t\t} catch (e: any) {\n\t\t\t\tconsole.log(e);\n\t\t\t\tconsole.error(`Error getting thematic layers`, e.details);\n\t\t\t\treturn [];\n\t\t\t}\n\t\t},\n\t\t[refresh],\n\t);\n\n\treturn {\n\t\tsanitizeLayers,\n\t};\n}\n"]}
1
+ {"version":3,"sources":["../../../../../../../../../src/components/Map/components/MapProvider/components/MapLayerProvider/hooks/index.tsx"],"names":["pe","ouGroup"],"mappings":"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","file":"index.js","sourcesContent":["import {\n\tcompact,\n\tdifferenceBy,\n\tfind,\n\thead,\n\tisEmpty,\n\tlast,\n\tsortBy,\n} from \"lodash\";\nimport { useMapOrganisationUnit, useMapPeriodFilter, useMapPeriods } from \"../../../hooks\";\nimport { useCallback, useMemo, useRef, useState } from \"react\";\nimport { generateLegends, getOrgUnitsSelection, sanitizeOrgUnits, toGeoJson } from \"../../../../../utils\";\nimport { useDataEngine } from \"@dhis2/app-runtime\";\nimport {\n\tCustomGoogleEngineLayer,\n\tCustomPointLayer,\n\tCustomThematicLayer,\n\tEarthEngineLayerConfig,\n\tThematicLayerConfig,\n} from \"../../../../MapLayer/interfaces\";\nimport {\n\ttype MapAnalyticsOptions,\n\tMapOrgUnit,\n\tPointOrgUnit,\n} from \"../../../../../interfaces/index.js\";\nimport { asyncify, map } from \"async-es\";\nimport { LegendSet } from \"@hisptz/dhis2-utils\";\nimport { computeTimelinePeriods } from \"../../../../../utils/helpers.js\";\nimport {\n\tdefaultClasses,\n\tdefaultColorScaleName,\n} from \"../../../../../utils/colors.js\";\nimport { useGoogleEngineToken } from \"../../../../MapLayer/components/GoogleEngineLayer/hooks/index.js\";\nimport { useBoundaryData } from \"../../../../MapLayer/components/BoundaryLayer/hooks/useBoundaryData.js\";\nimport { EarthEngine } from \"../../../../MapLayer/components/GoogleEngineLayer/services/engine.js\";\nimport { EARTH_ENGINE_LAYERS } from \"../../../../MapLayer/components/GoogleEngineLayer/constants/index.js\";\nimport { EarthEngineOptions } from \"../../../../MapLayer/components/GoogleEngineLayer/interfaces/index.js\";\n\nconst analyticsQuery = {\n\tanalytics: {\n\t\tresource: \"analytics\",\n\t\tparams: ({ ou, pe, dx, startDate, endDate, analyticsOptions }: any) => {\n\t\t\tconst usingDateRange = !isEmpty(startDate) && !isEmpty(endDate);\n\t\t\tconst peDimension = !usingDateRange && !isEmpty(pe)\n\t\t\t\t? `pe:${pe?.join(\";\")}`\n\t\t\t\t: undefined;\n\t\t\tconst ouDimension = !isEmpty(ou)\n\t\t\t\t? `ou:${ou?.join(\";\")}`\n\t\t\t\t: undefined;\n\t\t\tconst dxDimension = !isEmpty(dx)\n\t\t\t\t? `dx:${dx?.join(\";\")}`\n\t\t\t\t: undefined;\n\n\t\t\treturn {\n\t\t\t\tdimension: compact([dxDimension, peDimension, ouDimension]),\n\t\t\t\t...(usingDateRange ? { startDate, endDate } : {}),\n\t\t\t\tdisplayProperty: \"NAME\",\n\t\t\t\t...(analyticsOptions ?? {}),\n\t\t\t};\n\t\t},\n\t},\n};\nconst query = {\n\tlayer: {\n\t\tresource: \"geoFeatures\",\n\t\tparams: ({ ous }: any) => ({\n\t\t\tou: `ou:${ous.join(\";\")}`,\n\t\t}),\n\t},\n\tanalytics: {\n\t\tresource: \"analytics\",\n\t\tparams: ({ ous }: any) => ({\n\t\t\tdimension: [\n\t\t\t\t`ou:${ous.join(\";\")}`,\n\t\t\t\t`pe:${new Date().getFullYear()}`,\n\t\t\t],\n\t\t\tskipData: true,\n\t\t\thierarchyMeta: true,\n\t\t}),\n\t},\n};\nconst groupSetQuery = {\n\tgroupSet: {\n\t\tresource: \"organisationUnitGroupSets\",\n\t\tid: ({ groupSet }: any) => groupSet,\n\t\tparams: {\n\t\t\tfields: [\n\t\t\t\t\"organisationUnitGroups[name,color,symbol,organisationUnits[id]]\",\n\t\t\t],\n\t\t},\n\t},\n};\nconst legendSetsQuery = {\n\tlegendSets: {\n\t\tresource: \"legendSets\",\n\t\tid: ({ id }: any) => id,\n\t\tparams: {\n\t\t\tfields: [\n\t\t\t\t\"id\",\n\t\t\t\t\"displayName\",\n\t\t\t\t\"legends[id,code,name,startValue,endValue,color]\",\n\t\t\t],\n\t\t},\n\t},\n};\n\nexport function useThematicLayers({\n\tanalyticsOptions,\n}: {\n\tanalyticsOptions?: MapAnalyticsOptions;\n}): any {\n\tconst engine = useDataEngine();\n\tconst [loading, setLoading] = useState(false);\n\tconst { orgUnits, orgUnitSelection } = useMapOrganisationUnit();\n\tconst { periods, range } = useMapPeriods() ?? {};\n\tconst { activePeriod, periodType } = useMapPeriodFilter();\n\tconst ou = useMemo(\n\t\t() => getOrgUnitsSelection(orgUnitSelection),\n\t\t[orgUnitSelection],\n\t);\n \n\tconst timelinePeriods = useMemo(() => {\n\t\tif (!range || !periodType) return null;\n\t\treturn computeTimelinePeriods(range, periodType);\n\t}, [range, periodType]);\n\n\tconst pe = useMemo(() => {\n\t\tif (timelinePeriods) return timelinePeriods;\n\t\treturn periods?.map((pe: any) => pe.id);\n\t}, [periods, timelinePeriods]);\n\n\tconst toISODate = (date: Date): string =>\n\t\tdate.toISOString().slice(0, 10);\n \n\tconst { startDate, endDate } = useMemo(() => {\n\t\tif (timelinePeriods || !range) {\n\t\t\treturn { startDate: undefined, endDate: undefined };\n\t\t}\n\t\treturn {\n\t\t\tstartDate: toISODate(range.start),\n\t\t\tendDate: toISODate(range.end),\n\t\t};\n\t}, [range, timelinePeriods]);\n\n \tconst analyticsDataRef = useRef<any>(null);\n \tconst legendSetsRef = useRef<Map<string, any>>(new Map());\n\n\tconst sanitizeData = (data: any, layer: ThematicLayerConfig, currentPeriod?: string | null) => {\n\t\tif (data) {\n\t\t\tconst { analytics } = data as any;\n\t\t\tconst rows = analytics?.rows;\n\t\t\tconst ouIndex = analytics.headers.findIndex(\n\t\t\t\t(header: any) => header.name === \"ou\",\n\t\t\t);\n\t\t\tconst dxIndex = analytics.headers.findIndex(\n\t\t\t\t(header: any) => header.name === \"dx\",\n\t\t\t);\n\t\t\tconst valueIndex = analytics.headers.findIndex(\n\t\t\t\t(header: any) => header.name === \"value\",\n\t\t\t);\n\t\t\tconst peIndex = analytics.headers.findIndex(\n\t\t\t\t(header: any) => header.name === \"pe\",\n\t\t\t);\n\n\t\t\tif (!isEmpty(rows)) {\n\t\t\t\treturn sortBy(\n\t\t\t\t\torgUnits?.map((orgUnit: MapOrgUnit) => {\n\t\t\t\t\t\tconst matchingRows = rows.filter(\n\t\t\t\t\t\t\t(row: any) =>\n\t\t\t\t\t\t\t\trow[ouIndex] === orgUnit.id &&\n\t\t\t\t\t\t\t\trow[dxIndex] === layer.dataItem.id &&\n\t\t\t\t\t\t\t\t(currentPeriod && peIndex >= 0 ? row[peIndex] === currentPeriod : true),\n\t\t\t\t\t\t);\n\t\t\t\t\t\tconst values = matchingRows\n\t\t\t\t\t\t\t.map((row: any) => parseFloat(row[valueIndex]))\n\t\t\t\t\t\t\t.filter((v: number) => !isNaN(v));\n\t\t\t\t\t\treturn {\n\t\t\t\t\t\t\torgUnit,\n\t\t\t\t\t\t\tdata: values.length > 0\n\t\t\t\t\t\t\t\t? values.reduce((sum: number, v: number) => sum + v, 0) / values.length\n\t\t\t\t\t\t\t\t: undefined,\n\t\t\t\t\t\t\tdataItem: { ...layer.dataItem },\n\t\t\t\t\t\t};\n\t\t\t\t\t}),\n\t\t\t\t\t[\"data\"],\n\t\t\t\t);\n\t\t\t}\n\t\t\treturn [];\n\t\t}\n\t\treturn [];\n\t};\n\n\tconst sanitizeLegends = async (\n\t\tlayers: CustomThematicLayer[],\n\t): Promise<CustomThematicLayer[]> => {\n\t\treturn (await map(\n\t\t\tlayers,\n\t\t\tasyncify(async (layer: CustomThematicLayer) => {\n\t\t\t\ttry {\n\t\t\t\t\tconst legends = [];\n\t\t\t\t\tif (layer.dataItem.legendSet) {\n \t\t\t\t\t\tlet legendSet = legendSetsRef.current.get(layer.dataItem.legendSet);\n\t\t\t\t\t\tif (!legendSet) {\n\t\t\t\t\t\t\tconst legendSetData = await engine.query(\n\t\t\t\t\t\t\t\tlegendSetsQuery,\n\t\t\t\t\t\t\t\t{ variables: { id: layer.dataItem.legendSet } },\n\t\t\t\t\t\t\t);\n\t\t\t\t\t\t\tlegendSet = legendSetData?.legendSets as LegendSet;\n\t\t\t\t\t\t\tif (legendSet) {\n\t\t\t\t\t\t\t\tlegendSetsRef.current.set(layer.dataItem.legendSet, legendSet);\n\t\t\t\t\t\t\t}\n\t\t\t\t\t\t}\n\t\t\t\t\t\tif (legendSet) {\n\t\t\t\t\t\t\tlegends.push(...legendSet.legends);\n\t\t\t\t\t\t}\n\t\t\t\t\t} else {\n\t\t\t\t\t\tconst { scale, colorClass } = layer.dataItem\n\t\t\t\t\t\t\t.legendConfig ?? {\n\t\t\t\t\t\t\tscale: defaultClasses,\n\t\t\t\t\t\t\tcolorClass: defaultColorScaleName,\n\t\t\t\t\t\t};\n\t\t\t\t\t\tconst sortedData = sortBy(\n\t\t\t\t\t\t\tlayer.data.filter((datum) => !!datum.data),\n\t\t\t\t\t\t\t\"data\",\n\t\t\t\t\t\t);\n\t\t\t\t\t\tconst autoLegends = generateLegends(\n\t\t\t\t\t\t\tlast(sortedData)?.data ?? 0,\n\t\t\t\t\t\t\thead(sortedData)?.data ?? 0,\n\t\t\t\t\t\t\t{ classesCount: scale, colorClass },\n\t\t\t\t\t\t);\n\t\t\t\t\t\tlegends.push(...autoLegends);\n\t\t\t\t\t}\n\t\t\t\t\treturn { ...layer, legends };\n\t\t\t\t} catch (e) {\n\t\t\t\t\treturn layer;\n\t\t\t\t}\n\t\t\t}),\n\t\t)) as CustomThematicLayer[];\n\t};\n\n\tconst sanitizeLayers = async (\n\t\tlayers: ThematicLayerConfig[],\n\t): Promise<CustomThematicLayer[]> => {\n\t\ttry {\n\t\t\tsetLoading(true);\n\t\t\tconst layersWithoutData = layers?.filter((layer) => !layer.data);\n\t\t\tconst layersWithData = differenceBy(layers, layersWithoutData, \"id\");\n\t\t\tconst dx = layersWithoutData.map((layer) => layer.dataItem.id);\n\t\t\tlet sanitizedLayersWithData: any = [];\n\n\t\t\tif (!isEmpty(dx)) {\n\t\t\t\tconst data = await engine.query(analyticsQuery, {\n\t\t\t\t\tvariables: { dx, ou, pe, startDate, endDate, analyticsOptions },\n\t\t\t\t});\n \t\t\t\tanalyticsDataRef.current = data;\n\t\t\t\tsanitizedLayersWithData = layersWithoutData.map((layer) => ({\n\t\t\t\t\t...layer,\n\t\t\t\t\tname: layer?.name ?? layer?.dataItem?.displayName ?? layer.id,\n\t\t\t\t\tdata: sanitizeData(data, layer, activePeriod),\n\t\t\t\t}));\n\t\t\t}\n\t\t\tconst sanitizedLayersWithOrgUnits = layersWithData.map((layer) => ({\n\t\t\t\t...layer,\n\t\t\t\tdata: layer.data?.map((datum) => ({\n\t\t\t\t\t...datum,\n\t\t\t\t\torgUnit: find(orgUnits, [\"id\", datum.orgUnit]) as MapOrgUnit,\n\t\t\t\t\tdataItem: layer.dataItem,\n\t\t\t\t\tname: layer?.name ?? layer?.dataItem?.displayName ?? layer.id,\n\t\t\t\t})),\n\t\t\t}));\n\t\t\tsetLoading(false);\n\t\t\treturn await sanitizeLegends([\n\t\t\t\t...sanitizedLayersWithData,\n\t\t\t\t...sanitizedLayersWithOrgUnits,\n\t\t\t]);\n\t\t} catch (e: any) {\n\t\t\tconsole.error(`Error getting thematic layers`, e.details);\n\t\t\tsetLoading(false);\n\t\t\treturn [];\n\t\t}\n\t};\n\n \tconst refilterLayers = useCallback(\n\t\tasync (layers: ThematicLayerConfig[]): Promise<CustomThematicLayer[]> => {\n\t\t\tif (!analyticsDataRef.current) return [];\n\t\t\tconst processed = layers\n\t\t\t\t.filter((layer) => !layer.data)\n\t\t\t\t.map((layer) => ({\n\t\t\t\t\t...layer,\n\t\t\t\t\tname: layer?.name ?? layer?.dataItem?.displayName ?? layer.id,\n\t\t\t\t\tdata: sanitizeData(analyticsDataRef.current, layer, activePeriod),\n\t\t\t\t}));\n\t\t\treturn sanitizeLegends(processed);\n\t\t},\n\t\t[activePeriod, orgUnits],\n\t);\n\n\treturn {\n\t\tsanitizeLayers,\n\t\trefilterLayers,\n\t\tloading,\n\t};\n}\n\nexport function usePointLayer() {\n\tconst engine = useDataEngine();\n\tconst { orgUnitSelection } = useMapOrganisationUnit();\n\tconst [loading, setLoading] = useState(false);\n\n\tconst sanitizePointData = useCallback(\n\t\t(orgUnitData: any, groupSetData: any): PointOrgUnit[] => {\n\t\t\tconst { analytics, layer } = (orgUnitData as any) ?? {};\n\t\t\tconst rawOrgUnits = sanitizeOrgUnits(analytics?.metaData);\n\t\t\tconst geoJSONObjects = toGeoJson(\n\t\t\t\tlayer?.filter((bound: any) => bound.co),\n\t\t\t);\n\t\t\treturn compact(\n\t\t\t\trawOrgUnits.map((orgUnit: any) => {\n\t\t\t\t\tconst geoJSONObject: any = geoJSONObjects?.find(\n\t\t\t\t\t\t(geoJSON: any) => geoJSON.properties.id === orgUnit.id,\n\t\t\t\t\t);\n\t\t\t\t\tconst orgUnitGroups: any =\n\t\t\t\t\t\t(groupSetData?.groupSet as any)\n\t\t\t\t\t\t\t?.organisationUnitGroups ?? [];\n\t\t\t\t\tconst ouGroup = find(\n\t\t\t\t\t\torgUnitGroups,\n\t\t\t\t\t\t(ouGroup) =>\n\t\t\t\t\t\t\t!!find(ouGroup?.organisationUnits ?? [], [\n\t\t\t\t\t\t\t\t\"id\",\n\t\t\t\t\t\t\t\torgUnit.id,\n\t\t\t\t\t\t\t]),\n\t\t\t\t\t);\n\n\t\t\t\t\tif (\n\t\t\t\t\t\t!geoJSONObject ||\n\t\t\t\t\t\tgeoJSONObject.properties.type !== \"Point\"\n\t\t\t\t\t) {\n\t\t\t\t\t\treturn;\n\t\t\t\t\t}\n\t\t\t\t\treturn {\n\t\t\t\t\t\t...orgUnit,\n\t\t\t\t\t\tgeoJSON: geoJSONObject,\n\t\t\t\t\t\tlevel: geoJSONObject.properties.level,\n\t\t\t\t\t\ticon: {\n\t\t\t\t\t\t\ttype: \"groupIcon\",\n\t\t\t\t\t\t\ticon: ouGroup?.symbol,\n\t\t\t\t\t\t},\n\t\t\t\t\t};\n\t\t\t\t}),\n\t\t\t);\n\t\t},\n\t\t[],\n\t);\n\n\tconst sanitizeLayer = useCallback(\n\t\tasync (\n\t\t\tlayer: CustomPointLayer,\n\t\t): Promise<CustomPointLayer | undefined> => {\n\t\t\ttry {\n\t\t\t\tif (!layer.level && !layer.group) {\n\t\t\t\t\treturn;\n\t\t\t\t}\n\t\t\t\tsetLoading(true);\n\t\t\t\tconst level = layer.level ? `LEVEL-${layer.level}` : undefined;\n\t\t\t\tconst group = layer.group\n\t\t\t\t\t? `OU_GROUP-${layer.group}`\n\t\t\t\t\t: undefined;\n\t\t\t\tconst ous = [\n\t\t\t\t\t...getOrgUnitsSelection(orgUnitSelection),\n\t\t\t\t\tlevel,\n\t\t\t\t\tgroup,\n\t\t\t\t];\n\n\t\t\t\tconst pointData = await engine.query(query, {\n\t\t\t\t\tvariables: {\n\t\t\t\t\t\tous,\n\t\t\t\t\t},\n\t\t\t\t});\n\t\t\t\tconst groupSetData = await engine.query(groupSetQuery, {\n\t\t\t\t\tvariables: {\n\t\t\t\t\t\tgroupSet: layer.style?.groupSet,\n\t\t\t\t\t},\n\t\t\t\t});\n\t\t\t\tconst sanitizedOrgUnitData = sanitizePointData(\n\t\t\t\t\tpointData,\n\t\t\t\t\tgroupSetData,\n\t\t\t\t);\n\n\t\t\t\tconst orgUnitGroups =\n\t\t\t\t\t(groupSetData?.groupSet as any)?.organisationUnitGroups ??\n\t\t\t\t\t[];\n\n\t\t\t\tconst sanitizedOrgUnitGroups = orgUnitGroups.map(\n\t\t\t\t\t(ouGroup: any) => ({\n\t\t\t\t\t\t...ouGroup,\n\t\t\t\t\t\torganisationUnits: undefined,\n\t\t\t\t\t}),\n\t\t\t\t);\n\t\t\t\tsetLoading(false);\n\t\t\t\treturn {\n\t\t\t\t\t...layer,\n\t\t\t\t\tpoints: sanitizedOrgUnitData,\n\t\t\t\t\tstyle: {\n\t\t\t\t\t\t...layer.style,\n\t\t\t\t\t\torgUnitGroups: sanitizedOrgUnitGroups,\n\t\t\t\t\t},\n\t\t\t\t};\n\t\t\t} catch (e: any) {\n\t\t\t\tsetLoading(false);\n\t\t\t\tconsole.error(`Error getting point layer`, e.details);\n\t\t\t\treturn;\n\t\t\t}\n\t\t},\n\t\t[],\n\t);\n\n\treturn {\n\t\tloading,\n\t\tsanitizeLayer,\n\t};\n}\n\nexport function useGoogleEngineLayers() {\n\tconst { refresh } = useGoogleEngineToken();\n\tconst orgUnits = useBoundaryData();\n\n\tasync function getImageUrl(\n\t\tearthEngine: EarthEngine,\n\t\t{ filters }: EarthEngineLayerConfig,\n\t): Promise<string | undefined> {\n\t\tif (earthEngine.initialized) {\n\t\t\ttry {\n\t\t\t\tearthEngine.setOrgUnits(orgUnits ?? []);\n\t\t\t\tconst period = filters?.period;\n\t\t\t\tif (period) {\n\t\t\t\t\tearthEngine.setPeriod(period);\n\t\t\t\t}\n\t\t\t\treturn earthEngine.url();\n\t\t\t} catch (e) {\n\t\t\t\tconsole.error(e);\n\t\t\t}\n\t\t}\n\t}\n\n\tconst sanitizeLayers = useCallback(\n\t\tasync (\n\t\t\tlayers: EarthEngineLayerConfig[],\n\t\t): Promise<CustomGoogleEngineLayer[]> => {\n\t\t\tif (isEmpty(layers)) {\n\t\t\t\treturn [];\n\t\t\t}\n\t\t\ttry {\n\t\t\t\tconst { token } = await refresh();\n\t\t\t\tif (!token) {\n\t\t\t\t\tconsole.error(\n\t\t\t\t\t\t`Google token not available in this instance`,\n\t\t\t\t\t);\n\t\t\t\t\treturn [];\n\t\t\t\t}\n\t\t\t\tawait EarthEngine.setToken(token, refresh);\n\t\t\t\treturn map(\n\t\t\t\t\tlayers,\n\t\t\t\t\tasyncify(async (layer: EarthEngineLayerConfig) => {\n\t\t\t\t\t\ttry {\n\t\t\t\t\t\t\tconst defaultOptions: any =\n\t\t\t\t\t\t\t\tfind(EARTH_ENGINE_LAYERS, [\"id\", layer.type]) ??\n\t\t\t\t\t\t\t\t{};\n\t\t\t\t\t\t\tconst options: EarthEngineOptions = {\n\t\t\t\t\t\t\t\t...defaultOptions,\n\t\t\t\t\t\t\t\taggregations:\n\t\t\t\t\t\t\t\t\tlayer.aggregations ??\n\t\t\t\t\t\t\t\t\tdefaultOptions?.aggregations,\n\t\t\t\t\t\t\t\tparams: layer.params ?? defaultOptions?.params,\n\t\t\t\t\t\t\t};\n\t\t\t\t\t\t\tconst updatedLayer = {\n\t\t\t\t\t\t\t\t...layer,\n\t\t\t\t\t\t\t\toptions,\n\t\t\t\t\t\t\t};\n\t\t\t\t\t\t\tconst earthEngine = new EarthEngine({ options });\n\t\t\t\t\t\t\tconst url = await getImageUrl(\n\t\t\t\t\t\t\t\tearthEngine,\n\t\t\t\t\t\t\t\tupdatedLayer,\n\t\t\t\t\t\t\t);\n\t\t\t\t\t\t\treturn {\n\t\t\t\t\t\t\t\t...updatedLayer,\n\t\t\t\t\t\t\t\tengine: earthEngine,\n\t\t\t\t\t\t\t\turl,\n\t\t\t\t\t\t\t};\n\t\t\t\t\t\t} catch (e) {\n\t\t\t\t\t\t\tconsole.error(e);\n\t\t\t\t\t\t\treturn;\n\t\t\t\t\t\t}\n\t\t\t\t\t}),\n\t\t\t\t);\n\t\t\t} catch (e: any) {\n\t\t\t\tconsole.log(e);\n\t\t\t\tconsole.error(`Error getting thematic layers`, e.details);\n\t\t\t\treturn [];\n\t\t\t}\n\t\t},\n\t\t[refresh],\n\t);\n\n\treturn {\n\t\tsanitizeLayers,\n\t};\n}\n"]}
@@ -5,7 +5,7 @@ import { set, find, head, compact } from 'lodash';
5
5
  import { useState, useCallback, useEffect } from 'react';
6
6
  import { useMapEvents } from 'react-leaflet';
7
7
  import { MapLayersContext } from '../../../../state';
8
- import { useMapPeriods, useMapOrganisationUnit } from '../../hooks';
8
+ import { useMapPeriods, useMapOrganisationUnit, useMapPeriodFilter } from '../../hooks';
9
9
  import { useThematicLayers, usePointLayer, useGoogleEngineLayers } from './hooks';
10
10
 
11
11
  function MapLayersProvider({
@@ -15,8 +15,9 @@ function MapLayersProvider({
15
15
  }) {
16
16
  const period = useMapPeriods();
17
17
  const orgUnit = useMapOrganisationUnit();
18
+ const { activePeriod, periodType } = useMapPeriodFilter();
18
19
  const [updatedLayers, setUpdatedLayers] = useState([]);
19
- const { sanitizeLayers: sanitizeThematicLayers, error } = useThematicLayers(
20
+ const { sanitizeLayers: sanitizeThematicLayers, refilterLayers: refilterThematicLayers, error } = useThematicLayers(
20
21
  {
21
22
  analyticsOptions
22
23
  }
@@ -82,7 +83,18 @@ function MapLayersProvider({
82
83
  );
83
84
  useEffect(() => {
84
85
  sanitizeLayers().catch(console.error);
85
- }, [period, orgUnit]);
86
+ }, [period, orgUnit, periodType]);
87
+ useEffect(() => {
88
+ if (activePeriod === null) return;
89
+ const { thematicLayers } = layers;
90
+ if (!thematicLayers?.length) return;
91
+ refilterThematicLayers([...thematicLayers]).then((updated) => {
92
+ setUpdatedLayers((prev) => [
93
+ ...prev.filter((l) => !updated.find((u) => u.id === l.id)),
94
+ ...updated
95
+ ]);
96
+ }).catch(console.error);
97
+ }, [activePeriod]);
86
98
  const setupLayerListeners = (type, event) => {
87
99
  const name = event.name;
88
100
  const layerConfig = find(updatedLayers, (layer) => {
@@ -1 +1 @@
1
- {"version":3,"sources":["../../../../../../../../src/components/Map/components/MapProvider/components/MapLayerProvider/index.tsx"],"names":["updatedLayers"],"mappings":"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","file":"index.js","sourcesContent":["import i18n from \"@dhis2/d2-i18n\";\nimport { Center, CircularLoader } from \"@dhis2/ui\";\nimport { LayersControlEvent } from \"leaflet\";\nimport { compact, find, head, set } from \"lodash\";\nimport { type ReactNode, useCallback, useEffect, useState } from \"react\";\nimport { useMapEvents } from \"react-leaflet\";\nimport { MapLayersContext } from \"../../../../state\";\nimport { MapLayerConfig } from \"../../../MapArea/interfaces\";\nimport {\n\tCustomBoundaryLayer,\n\tCustomGoogleEngineLayer,\n\tCustomMapLayer,\n\tCustomPointLayer,\n\tCustomThematicLayer,\n\tThematicLayerConfig,\n} from \"../../../MapLayer/interfaces\";\nimport { useMapOrganisationUnit, useMapPeriods } from \"../../hooks\";\nimport {\n\tuseGoogleEngineLayers,\n\tusePointLayer,\n\tuseThematicLayers,\n} from \"./hooks\";\nimport type { MapAnalyticsOptions } from \"../../../../interfaces\";\n\nexport function MapLayersProvider({\n\tlayers,\n\tchildren,\n\tanalyticsOptions,\n}: {\n\tlayers: MapLayerConfig;\n\tchildren: ReactNode;\n\tanalyticsOptions?: MapAnalyticsOptions;\n}) {\n\tconst period = useMapPeriods();\n\tconst orgUnit = useMapOrganisationUnit();\n\tconst [updatedLayers, setUpdatedLayers] = useState<\n\t\tArray<\n\t\t\t| CustomThematicLayer\n\t\t\t| CustomBoundaryLayer\n\t\t\t| CustomPointLayer\n\t\t\t| CustomGoogleEngineLayer\n\t\t>\n\t>([]);\n\tconst { sanitizeLayers: sanitizeThematicLayers, error } = useThematicLayers(\n\t\t{\n\t\t\tanalyticsOptions,\n\t\t},\n\t);\n\tconst { sanitizeLayer: sanitizePointLayer } = usePointLayer();\n\tconst { sanitizeLayers: sanitizeEarthEngineLayers } =\n\t\tuseGoogleEngineLayers();\n\tconst [loading, setLoading] = useState(false);\n\n\tuseMapEvents({\n\t\toverlayremove: (event) => {\n\t\t\tsetupLayerListeners(\"remove\", event);\n\t\t},\n\t\toverlayadd: (event) => {\n\t\t\tsetupLayerListeners(\"add\", event);\n\t\t},\n\t});\n\n\tconst sanitizeLayers = async () => {\n\t\tsetLoading(true);\n\t\ttry {\n\t\t\tconst {\n\t\t\t\tboundaryLayers,\n\t\t\t\tthematicLayers,\n\t\t\t\tpointLayers,\n\t\t\t\tearthEngineLayers,\n\t\t\t} = layers;\n\t\t\tconst sanitizedThematicLayers = await sanitizeThematicLayers([\n\t\t\t\t...(thematicLayers ?? []),\n\t\t\t] as ThematicLayerConfig[]);\n\n\t\t\tconst sanitizedBoundaryLayers = (boundaryLayers ??\n\t\t\t\t[]) as CustomBoundaryLayer[];\n\t\t\tconst sanitizedPointLayer = head(pointLayers ?? [])\n\t\t\t\t? await sanitizePointLayer(\n\t\t\t\t\t\thead(pointLayers) as CustomPointLayer,\n\t\t\t\t\t)\n\t\t\t\t: undefined;\n\t\t\tconst sanitizedEarthEngineLayers = await sanitizeEarthEngineLayers([\n\t\t\t\t...(earthEngineLayers ?? []),\n\t\t\t] as unknown as CustomGoogleEngineLayer[]);\n\t\t\tsetUpdatedLayers(\n\t\t\t\tcompact([\n\t\t\t\t\t...(sanitizedBoundaryLayers ?? []),\n\t\t\t\t\t...(sanitizedThematicLayers ?? []),\n\t\t\t\t\tsanitizedPointLayer,\n\t\t\t\t\t...(sanitizedEarthEngineLayers ?? []),\n\t\t\t\t]),\n\t\t\t);\n\t\t} catch (e: any) {\n\t\t\tconsole.error(`Error sanitizing layers`, e.toString());\n\t\t}\n\t\tsetLoading(false);\n\t};\n\n\tconst updateLayer = useCallback(\n\t\t(id: string, updatedLayer: CustomMapLayer) => {\n\t\t\tsetUpdatedLayers((prevLayers) => {\n\t\t\t\tconst updatedLayers = [...prevLayers];\n\t\t\t\tconst layerIndex = updatedLayers.findIndex(\n\t\t\t\t\t(layer) => layer.id === updatedLayer.id,\n\t\t\t\t);\n\t\t\t\tif (layerIndex < 0) {\n\t\t\t\t\treturn prevLayers;\n\t\t\t\t}\n\t\t\t\tset(updatedLayers, layerIndex, updatedLayer);\n\t\t\t\treturn updatedLayers;\n\t\t\t});\n\t\t},\n\t\t[],\n\t);\n\n\tuseEffect(() => {\n\t\tsanitizeLayers().catch(console.error);\n\t}, [period, orgUnit]);\n\n\tconst setupLayerListeners = (\n\t\ttype: \"add\" | \"remove\",\n\t\tevent: LayersControlEvent,\n\t) => {\n\t\tconst name = event.name;\n\n\t\tconst layerConfig = find(updatedLayers, (layer: any) => {\n\t\t\tconst nameFromConfig =\n\t\t\t\tlayer?.name ?? layer?.dataItem?.displayname ?? layer?.label;\n\t\t\treturn nameFromConfig === name;\n\t\t});\n\n\t\tif (layerConfig) {\n\t\t\tupdateLayer(layerConfig.id, {\n\t\t\t\t...layerConfig,\n\t\t\t\tenabled: type === \"add\",\n\t\t\t});\n\t\t}\n\t};\n\n\tif (loading) {\n\t\treturn (\n\t\t\t<div style={{ height: \"100%\", width: \"100%\" }}>\n\t\t\t\t<Center>\n\t\t\t\t\t<CircularLoader small />\n\t\t\t\t</Center>\n\t\t\t</div>\n\t\t);\n\t}\n\tif (error) {\n\t\treturn (\n\t\t\t<div style={{ height: \"100%\", width: \"100%\" }}>\n\t\t\t\t<Center>\n\t\t\t\t\t<h4>\n\t\t\t\t\t\t{i18n.t(\"Error\")}: {error.message}\n\t\t\t\t\t</h4>\n\t\t\t\t</Center>\n\t\t\t</div>\n\t\t);\n\t}\n\treturn (\n\t\t<MapLayersContext.Provider\n\t\t\tvalue={{ layers: updatedLayers, updateLayer }}\n\t\t>\n\t\t\t{children}\n\t\t</MapLayersContext.Provider>\n\t);\n}\n"]}
1
+ {"version":3,"sources":["../../../../../../../../src/components/Map/components/MapProvider/components/MapLayerProvider/index.tsx"],"names":["updatedLayers"],"mappings":"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","file":"index.js","sourcesContent":["import i18n from \"@dhis2/d2-i18n\";\nimport { Center, CircularLoader } from \"@dhis2/ui\";\nimport { LayersControlEvent } from \"leaflet\";\nimport { compact, find, head, set } from \"lodash\";\nimport { type ReactNode, useCallback, useEffect, useState } from \"react\";\nimport { useMapEvents } from \"react-leaflet\";\nimport { MapLayersContext } from \"../../../../state\";\nimport { MapLayerConfig } from \"../../../MapArea/interfaces\";\nimport {\n\tCustomBoundaryLayer,\n\tCustomGoogleEngineLayer,\n\tCustomMapLayer,\n\tCustomPointLayer,\n\tCustomThematicLayer,\n\tThematicLayerConfig,\n} from \"../../../MapLayer/interfaces\";\nimport { useMapOrganisationUnit, useMapPeriodFilter, useMapPeriods } from \"../../hooks\";\nimport {\n\tuseGoogleEngineLayers,\n\tusePointLayer,\n\tuseThematicLayers,\n} from \"./hooks\";\nimport type { MapAnalyticsOptions } from \"../../../../interfaces\";\n\nexport function MapLayersProvider({\n\tlayers,\n\tchildren,\n\tanalyticsOptions,\n}: {\n\tlayers: MapLayerConfig;\n\tchildren: ReactNode;\n\tanalyticsOptions?: MapAnalyticsOptions;\n}) {\n\tconst period = useMapPeriods();\n\tconst orgUnit = useMapOrganisationUnit();\n\tconst { activePeriod, periodType } = useMapPeriodFilter();\n\tconst [updatedLayers, setUpdatedLayers] = useState<\n\t\tArray<\n\t\t\t| CustomThematicLayer\n\t\t\t| CustomBoundaryLayer\n\t\t\t| CustomPointLayer\n\t\t\t| CustomGoogleEngineLayer\n\t\t>\n\t>([]);\n\tconst { sanitizeLayers: sanitizeThematicLayers, refilterLayers: refilterThematicLayers, error } = useThematicLayers(\n\t\t{\n\t\t\tanalyticsOptions,\n\t\t},\n\t);\n\tconst { sanitizeLayer: sanitizePointLayer } = usePointLayer();\n\tconst { sanitizeLayers: sanitizeEarthEngineLayers } =\n\t\tuseGoogleEngineLayers();\n\tconst [loading, setLoading] = useState(false);\n\n\tuseMapEvents({\n\t\toverlayremove: (event) => {\n\t\t\tsetupLayerListeners(\"remove\", event);\n\t\t},\n\t\toverlayadd: (event) => {\n\t\t\tsetupLayerListeners(\"add\", event);\n\t\t},\n\t});\n\n\tconst sanitizeLayers = async () => {\n\t\tsetLoading(true);\n\t\ttry {\n\t\t\tconst {\n\t\t\t\tboundaryLayers,\n\t\t\t\tthematicLayers,\n\t\t\t\tpointLayers,\n\t\t\t\tearthEngineLayers,\n\t\t\t} = layers;\n\t\t\tconst sanitizedThematicLayers = await sanitizeThematicLayers([\n\t\t\t\t...(thematicLayers ?? []),\n\t\t\t] as ThematicLayerConfig[]);\n\n\t\t\tconst sanitizedBoundaryLayers = (boundaryLayers ??\n\t\t\t\t[]) as CustomBoundaryLayer[];\n\t\t\tconst sanitizedPointLayer = head(pointLayers ?? [])\n\t\t\t\t? await sanitizePointLayer(\n\t\t\t\t\t\thead(pointLayers) as CustomPointLayer,\n\t\t\t\t\t)\n\t\t\t\t: undefined;\n\t\t\tconst sanitizedEarthEngineLayers = await sanitizeEarthEngineLayers([\n\t\t\t\t...(earthEngineLayers ?? []),\n\t\t\t] as unknown as CustomGoogleEngineLayer[]);\n\t\t\tsetUpdatedLayers(\n\t\t\t\tcompact([\n\t\t\t\t\t...(sanitizedBoundaryLayers ?? []),\n\t\t\t\t\t...(sanitizedThematicLayers ?? []),\n\t\t\t\t\tsanitizedPointLayer,\n\t\t\t\t\t...(sanitizedEarthEngineLayers ?? []),\n\t\t\t\t]),\n\t\t\t);\n\t\t} catch (e: any) {\n\t\t\tconsole.error(`Error sanitizing layers`, e.toString());\n\t\t}\n\t\tsetLoading(false);\n\t};\n\n\tconst updateLayer = useCallback(\n\t\t(id: string, updatedLayer: CustomMapLayer) => {\n\t\t\tsetUpdatedLayers((prevLayers) => {\n\t\t\t\tconst updatedLayers = [...prevLayers];\n\t\t\t\tconst layerIndex = updatedLayers.findIndex(\n\t\t\t\t\t(layer) => layer.id === updatedLayer.id,\n\t\t\t\t);\n\t\t\t\tif (layerIndex < 0) {\n\t\t\t\t\treturn prevLayers;\n\t\t\t\t}\n\t\t\t\tset(updatedLayers, layerIndex, updatedLayer);\n\t\t\t\treturn updatedLayers;\n\t\t\t});\n\t\t},\n\t\t[],\n\t);\n\n\tuseEffect(() => {\n\t\tsanitizeLayers().catch(console.error);\n\t}, [period, orgUnit, periodType]);\n\n\tuseEffect(() => {\n\t\tif (activePeriod === null) return;\n\t\tconst { thematicLayers } = layers;\n\t\tif (!thematicLayers?.length) return;\n\t\trefilterThematicLayers([...(thematicLayers as ThematicLayerConfig[])])\n\t\t\t.then((updated: CustomThematicLayer[]) => {\n\t\t\t\tsetUpdatedLayers((prev) => [\n\t\t\t\t\t...prev.filter((l) => !updated.find((u) => u.id === l.id)),\n\t\t\t\t\t...updated,\n\t\t\t\t]);\n\t\t\t})\n\t\t\t.catch(console.error);\n\t}, [activePeriod]);\n\n\tconst setupLayerListeners = (\n\t\ttype: \"add\" | \"remove\",\n\t\tevent: LayersControlEvent,\n\t) => {\n\t\tconst name = event.name;\n\n\t\tconst layerConfig = find(updatedLayers, (layer: any) => {\n\t\t\tconst nameFromConfig =\n\t\t\t\tlayer?.name ?? layer?.dataItem?.displayname ?? layer?.label;\n\t\t\treturn nameFromConfig === name;\n\t\t});\n\n\t\tif (layerConfig) {\n\t\t\tupdateLayer(layerConfig.id, {\n\t\t\t\t...layerConfig,\n\t\t\t\tenabled: type === \"add\",\n\t\t\t});\n\t\t}\n\t};\n\n\tif (loading) {\n\t\treturn (\n\t\t\t<div style={{ height: \"100%\", width: \"100%\" }}>\n\t\t\t\t<Center>\n\t\t\t\t\t<CircularLoader small />\n\t\t\t\t</Center>\n\t\t\t</div>\n\t\t);\n\t}\n\tif (error) {\n\t\treturn (\n\t\t\t<div style={{ height: \"100%\", width: \"100%\" }}>\n\t\t\t\t<Center>\n\t\t\t\t\t<h4>\n\t\t\t\t\t\t{i18n.t(\"Error\")}: {error.message}\n\t\t\t\t\t</h4>\n\t\t\t\t</Center>\n\t\t\t</div>\n\t\t);\n\t}\n\treturn (\n\t\t<MapLayersContext.Provider\n\t\t\tvalue={{ layers: updatedLayers, updateLayer }}\n\t\t>\n\t\t\t{children}\n\t\t</MapLayersContext.Provider>\n\t);\n}\n"]}
@@ -0,0 +1,17 @@
1
+ import { jsx } from 'react/jsx-runtime';
2
+ import { useState } from 'react';
3
+ import { MapPeriodFilterContext } from '../../../../state/index.js';
4
+
5
+ function MapPeriodFilterProvider({
6
+ children,
7
+ initialActivePeriod = null,
8
+ initialPeriodType = null
9
+ }) {
10
+ const [activePeriod, setActivePeriod] = useState(initialActivePeriod);
11
+ const [periodType, setPeriodType] = useState(initialPeriodType);
12
+ return /* @__PURE__ */ jsx(MapPeriodFilterContext.Provider, { value: { activePeriod, setActivePeriod, periodType, setPeriodType }, children });
13
+ }
14
+
15
+ export { MapPeriodFilterProvider };
16
+ //# sourceMappingURL=index.js.map
17
+ //# sourceMappingURL=index.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"sources":["../../../../../../../../src/components/Map/components/MapProvider/components/MapPeriodFilterProvider/index.tsx"],"names":[],"mappings":";;;;AAIO,SAAS,uBAAA,CAAwB;AAAA,EACvC,QAAA;AAAA,EACA,mBAAA,GAAsB,IAAA;AAAA,EACtB,iBAAA,GAAoB;AACrB,CAAA,EAIG;AACF,EAAA,MAAM,CAAC,YAAA,EAAc,eAAe,CAAA,GAAI,SAAwB,mBAAmB,CAAA;AACnF,EAAA,MAAM,CAAC,UAAA,EAAY,aAAa,CAAA,GAAI,SAAiC,iBAAiB,CAAA;AAEtF,EAAA,uBACC,GAAA,CAAC,sBAAA,CAAuB,QAAA,EAAvB,EAAgC,KAAA,EAAO,EAAE,YAAA,EAAc,eAAA,EAAiB,UAAA,EAAY,aAAA,EAAc,EACjG,QAAA,EACF,CAAA;AAEF","file":"index.js","sourcesContent":["import { useState, type ReactNode } from \"react\";\nimport { MapPeriodFilterContext } from \"../../../../state/index.js\";\nimport type { DHIS2PeriodType } from \"../../../../utils/helpers.js\";\n\nexport function MapPeriodFilterProvider({\n\tchildren,\n\tinitialActivePeriod = null,\n\tinitialPeriodType = null,\n}: {\n\tchildren: ReactNode;\n\tinitialActivePeriod?: string | null;\n\tinitialPeriodType?: DHIS2PeriodType | null;\n}) {\n\tconst [activePeriod, setActivePeriod] = useState<string | null>(initialActivePeriod);\n\tconst [periodType, setPeriodType] = useState<DHIS2PeriodType | null>(initialPeriodType);\n\n\treturn (\n\t\t<MapPeriodFilterContext.Provider value={{ activePeriod, setActivePeriod, periodType, setPeriodType }}>\n\t\t\t{children}\n\t\t</MapPeriodFilterContext.Provider>\n\t);\n}\n"]}
@@ -1,5 +1,5 @@
1
1
  import { useContext } from 'react';
2
- import { MapOrgUnitContext, MapPeriodContext, MapLayersContext } from '../../../state/index.js';
2
+ import { MapOrgUnitContext, MapPeriodContext, MapLayersContext, MapPeriodFilterContext } from '../../../state/index.js';
3
3
 
4
4
  function useMapOrganisationUnit() {
5
5
  return useContext(MapOrgUnitContext);
@@ -10,7 +10,10 @@ function useMapPeriods() {
10
10
  function useMapLayers() {
11
11
  return useContext(MapLayersContext);
12
12
  }
13
+ function useMapPeriodFilter() {
14
+ return useContext(MapPeriodFilterContext);
15
+ }
13
16
 
14
- export { useMapLayers, useMapOrganisationUnit, useMapPeriods };
17
+ export { useMapLayers, useMapOrganisationUnit, useMapPeriodFilter, useMapPeriods };
15
18
  //# sourceMappingURL=index.js.map
16
19
  //# sourceMappingURL=index.js.map
@@ -1 +1 @@
1
- {"version":3,"sources":["../../../../../../../src/components/Map/components/MapProvider/hooks/index.ts"],"names":[],"mappings":";;;AAOO,SAAS,sBAAA,GAAyB;AACxC,EAAA,OAAO,WAAW,iBAAiB,CAAA;AACpC;AAEO,SAAS,aAAA,GAAgB;AAC/B,EAAA,OAAO,WAAW,gBAAgB,CAAA;AACnC;AAEO,SAAS,YAAA,GAAe;AAC9B,EAAA,OAAO,WAAW,gBAAgB,CAAA;AACnC","file":"index.js","sourcesContent":["import { useContext } from \"react\";\nimport {\n\tMapLayersContext,\n\tMapOrgUnitContext,\n\tMapPeriodContext,\n} from \"../../../state/index.js\";\n\nexport function useMapOrganisationUnit() {\n\treturn useContext(MapOrgUnitContext);\n}\n\nexport function useMapPeriods() {\n\treturn useContext(MapPeriodContext);\n}\n\nexport function useMapLayers() {\n\treturn useContext(MapLayersContext);\n}\n"]}
1
+ {"version":3,"sources":["../../../../../../../src/components/Map/components/MapProvider/hooks/index.ts"],"names":[],"mappings":";;;AAQO,SAAS,sBAAA,GAAyB;AACxC,EAAA,OAAO,WAAW,iBAAiB,CAAA;AACpC;AAEO,SAAS,aAAA,GAAgB;AAC/B,EAAA,OAAO,WAAW,gBAAgB,CAAA;AACnC;AAEO,SAAS,YAAA,GAAe;AAC9B,EAAA,OAAO,WAAW,gBAAgB,CAAA;AACnC;AAEO,SAAS,kBAAA,GAAqB;AACpC,EAAA,OAAO,WAAW,sBAAsB,CAAA;AACzC","file":"index.js","sourcesContent":["import { useContext } from \"react\";\nimport {\n\tMapLayersContext,\n\tMapOrgUnitContext,\n\tMapPeriodContext,\n\tMapPeriodFilterContext,\n} from \"../../../state/index.js\";\n\nexport function useMapOrganisationUnit() {\n\treturn useContext(MapOrgUnitContext);\n}\n\nexport function useMapPeriods() {\n\treturn useContext(MapPeriodContext);\n}\n\nexport function useMapLayers() {\n\treturn useContext(MapLayersContext);\n}\n\nexport function useMapPeriodFilter() {\n\treturn useContext(MapPeriodFilterContext);\n}\n"]}
@@ -4,9 +4,11 @@ import i18n from '@dhis2/d2-i18n';
4
4
  import { Center, CircularLoader } from '@dhis2/ui';
5
5
  import { isEmpty, compact } from 'lodash';
6
6
  import { useState, useEffect } from 'react';
7
+ import { PeriodUtility } from '@hisptz/dhis2-utils';
8
+ import { inferPeriodType } from '../../utils/helpers.js';
7
9
  import { MapOrgUnitContext, MapPeriodContext } from '../../state';
8
10
  import { getOrgUnitsSelection, sanitizeOrgUnits, toGeoJson } from '../../utils';
9
- import { PeriodUtility } from '@hisptz/dhis2-utils';
11
+ import { MapPeriodFilterProvider } from './components/MapPeriodFilterProvider/index.js';
10
12
 
11
13
  const boundaryQuery = {
12
14
  boundaries: {
@@ -30,10 +32,13 @@ const boundaryQuery = {
30
32
  function MapProvider({
31
33
  children,
32
34
  orgUnitSelection,
33
- periodSelection
35
+ periodSelection,
36
+ renderingStrategy = "SINGLE"
34
37
  }) {
35
38
  const [orgUnits, setOrgUnits] = useState([]);
36
39
  const [periods, setPeriods] = useState([]);
40
+ const [detectedPeriodType, setDetectedPeriodType] = useState(null);
41
+ const [initialActivePeriod, setInitialActivePeriod] = useState(null);
37
42
  const { refetch, loading, error } = useDataQuery(boundaryQuery, {
38
43
  lazy: true
39
44
  });
@@ -66,15 +71,20 @@ function MapProvider({
66
71
  };
67
72
  })
68
73
  );
69
- const periodIds = analytics?.metaData?.dimensions?.pe ?? periodSelection?.periods;
74
+ const periodIds = analytics?.metaData?.dimensions?.pe ?? periodSelection?.periods ?? [];
70
75
  const periods2 = periodIds.map(
71
76
  (pe) => PeriodUtility.getPeriodById(pe)
72
77
  );
73
78
  setPeriods(periods2);
74
79
  setOrgUnits(orgUnits2);
80
+ const inferred = periodIds.length > 0 ? inferPeriodType(periodIds[0]) : null;
81
+ setDetectedPeriodType(inferred);
82
+ if (renderingStrategy === "TIMELINE" && periodIds.length > 0) {
83
+ setInitialActivePeriod(periodIds[0]);
84
+ }
75
85
  }
76
86
  getOrgUnits().catch((error2) => console.log(error2));
77
- }, [orgUnitSelection, refetch, periodSelection?.periods]);
87
+ }, [orgUnitSelection, refetch, periodSelection?.periods, renderingStrategy]);
78
88
  if (loading) {
79
89
  return /* @__PURE__ */ jsx("div", { style: { height: "100%", width: "100%" }, children: /* @__PURE__ */ jsx(Center, { children: /* @__PURE__ */ jsx(CircularLoader, { small: true }) }) });
80
90
  }
@@ -90,7 +100,14 @@ function MapProvider({
90
100
  MapPeriodContext.Provider,
91
101
  {
92
102
  value: { ...periodSelection, periods },
93
- children
103
+ children: /* @__PURE__ */ jsx(
104
+ MapPeriodFilterProvider,
105
+ {
106
+ initialActivePeriod,
107
+ initialPeriodType: detectedPeriodType,
108
+ children
109
+ }
110
+ )
94
111
  }
95
112
  ) });
96
113
  }
@@ -1 +1 @@
1
- {"version":3,"sources":["../../../../../../src/components/Map/components/MapProvider/index.tsx"],"names":["orgUnits","periods","error"],"mappings":"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","file":"index.js","sourcesContent":["import { useDataQuery } from \"@dhis2/app-runtime\";\nimport i18n from \"@dhis2/d2-i18n\";\nimport { Center, CircularLoader } from \"@dhis2/ui\";\nimport { compact, isEmpty } from \"lodash\";\nimport { useEffect, useState } from \"react\";\nimport { MapOrgUnit, MapProviderProps } from \"../../interfaces\";\nimport { MapOrgUnitContext, MapPeriodContext } from \"../../state\";\nimport { getOrgUnitsSelection, sanitizeOrgUnits, toGeoJson } from \"../../utils\";\nimport { BasePeriod, PeriodUtility } from \"@hisptz/dhis2-utils\";\n\nconst boundaryQuery = {\n\tboundaries: {\n\t\tresource: \"geoFeatures\",\n\t\tparams: ({ orgUnitIds }: any) => ({\n\t\t\tou: `ou:${orgUnitIds?.join(\";\")}`,\n\t\t}),\n\t},\n\tanalytics: {\n\t\tresource: \"analytics\",\n\t\tparams: ({ orgUnitIds, periodIds }: any) => ({\n\t\t\tdimension: [\n\t\t\t\t`ou:${orgUnitIds.join(\";\")}`,\n\t\t\t\t`pe:${periodIds?.join(\";\")}`,\n\t\t\t],\n\t\t\tskipData: true,\n\t\t\thierarchyMeta: true,\n\t\t}),\n\t},\n};\n\nexport function MapProvider({\n\tchildren,\n\torgUnitSelection,\n\tperiodSelection,\n}: MapProviderProps) {\n\tconst [orgUnits, setOrgUnits] = useState<MapOrgUnit[]>([]);\n\tconst [periods, setPeriods] = useState<BasePeriod[]>([]);\n\tconst { refetch, loading, error } = useDataQuery(boundaryQuery, {\n\t\tlazy: true,\n\t});\n\n\tuseEffect(() => {\n\t\tasync function getOrgUnits() {\n\t\t\tconst rawOrgUnitIds = getOrgUnitsSelection(orgUnitSelection);\n\t\t\tconst data = await refetch({\n\t\t\t\torgUnitIds: rawOrgUnitIds,\n\t\t\t\tperiodIds: !isEmpty(periodSelection?.periods)\n\t\t\t\t\t? periodSelection?.periods\n\t\t\t\t\t: [\"THIS_YEAR\"], // Just a placeholder so as the analytics query doesn't fail, when the period is empty, it means that this isn't a DHIS2 map plot\n\t\t\t});\n\t\t\tconst { analytics, boundaries } = (data as any) ?? {};\n\t\t\tconst rawOrgUnits = sanitizeOrgUnits(analytics?.metaData);\n\t\t\tconst geoJSONObjects = toGeoJson(\n\t\t\t\tboundaries?.filter((bound: any) => bound.co),\n\t\t\t);\n\t\t\tconst orgUnits: MapOrgUnit[] = compact(\n\t\t\t\trawOrgUnits.map((orgUnit: any) => {\n\t\t\t\t\tconst geoJSONObject: any = geoJSONObjects?.find(\n\t\t\t\t\t\t(geoJSON: any) => geoJSON.properties.id === orgUnit.id,\n\t\t\t\t\t);\n\n\t\t\t\t\tif (!geoJSONObject) {\n\t\t\t\t\t\treturn;\n\t\t\t\t\t}\n\t\t\t\t\treturn {\n\t\t\t\t\t\t...orgUnit,\n\t\t\t\t\t\tgeoJSON: geoJSONObject,\n\t\t\t\t\t\tbounds: [],\n\t\t\t\t\t\tlevel: geoJSONObject.properties.level,\n\t\t\t\t\t};\n\t\t\t\t}),\n\t\t\t);\n\t\t\tconst periodIds =\n\t\t\t\tanalytics?.metaData?.dimensions?.pe ?? periodSelection?.periods;\n\t\t\tconst periods = periodIds.map((pe: string) =>\n\t\t\t\tPeriodUtility.getPeriodById(pe),\n\t\t\t);\n\t\t\tsetPeriods(periods);\n\t\t\tsetOrgUnits(orgUnits);\n\t\t}\n\t\tgetOrgUnits().catch((error) => console.log(error));\n\t}, [orgUnitSelection, refetch, periodSelection?.periods]);\n\n\tif (loading) {\n\t\treturn (\n\t\t\t<div style={{ height: \"100%\", width: \"100%\" }}>\n\t\t\t\t<Center>\n\t\t\t\t\t<CircularLoader small />\n\t\t\t\t</Center>\n\t\t\t</div>\n\t\t);\n\t}\n\n\tif (error) {\n\t\treturn (\n\t\t\t<div style={{ height: \"100%\", width: \"100%\" }}>\n\t\t\t\t<Center>\n\t\t\t\t\t<h4>\n\t\t\t\t\t\t{i18n.t(\"Error\")}: {error.message}\n\t\t\t\t\t</h4>\n\t\t\t\t</Center>\n\t\t\t</div>\n\t\t);\n\t}\n\n\tif (!isEmpty(orgUnits)) {\n\t\treturn (\n\t\t\t<MapOrgUnitContext.Provider value={{ orgUnitSelection, orgUnits }}>\n\t\t\t\t<MapPeriodContext.Provider\n\t\t\t\t\tvalue={{ ...periodSelection, periods }}\n\t\t\t\t>\n\t\t\t\t\t{children}\n\t\t\t\t</MapPeriodContext.Provider>\n\t\t\t</MapOrgUnitContext.Provider>\n\t\t);\n\t}\n\n\treturn null;\n}\n"]}
1
+ {"version":3,"sources":["../../../../../../src/components/Map/components/MapProvider/index.tsx"],"names":["orgUnits","periods","error"],"mappings":"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","file":"index.js","sourcesContent":["import { useDataQuery } from \"@dhis2/app-runtime\";\nimport i18n from \"@dhis2/d2-i18n\";\nimport { Center, CircularLoader } from \"@dhis2/ui\";\nimport { compact, isEmpty } from \"lodash\";\nimport { useEffect, useState } from \"react\";\nimport type { BasePeriod} from \"@hisptz/dhis2-utils\";\nimport { PeriodUtility } from \"@hisptz/dhis2-utils\";\nimport { inferPeriodType } from \"../../utils/helpers.js\";\nimport type { DHIS2PeriodType } from \"../../utils/helpers.js\";\nimport type { MapOrgUnit, MapProviderProps } from \"../../interfaces\";\nimport { MapOrgUnitContext, MapPeriodContext } from \"../../state\";\nimport { getOrgUnitsSelection, sanitizeOrgUnits, toGeoJson } from \"../../utils\";\nimport { MapPeriodFilterProvider } from \"./components/MapPeriodFilterProvider/index.js\";\n\nconst boundaryQuery = {\n\tboundaries: {\n\t\tresource: \"geoFeatures\",\n\t\tparams: ({ orgUnitIds }: any) => ({\n\t\t\tou: `ou:${orgUnitIds?.join(\";\")}`,\n\t\t}),\n\t},\n\tanalytics: {\n\t\tresource: \"analytics\",\n\t\tparams: ({ orgUnitIds, periodIds }: any) => ({\n\t\t\tdimension: [\n\t\t\t\t`ou:${orgUnitIds.join(\";\")}`,\n\t\t\t\t`pe:${periodIds?.join(\";\")}`,\n\t\t\t],\n\t\t\tskipData: true,\n\t\t\thierarchyMeta: true,\n\t\t}),\n\t},\n};\n\nexport function MapProvider({\n\tchildren,\n\torgUnitSelection,\n\tperiodSelection,\n\trenderingStrategy = \"SINGLE\",\n}: MapProviderProps) {\n\tconst [orgUnits, setOrgUnits] = useState<MapOrgUnit[]>([]);\n\tconst [periods, setPeriods] = useState<BasePeriod[]>([]);\n\tconst [detectedPeriodType, setDetectedPeriodType] = useState<DHIS2PeriodType | null>(null);\n\tconst [initialActivePeriod, setInitialActivePeriod] = useState<string | null>(null);\n\tconst { refetch, loading, error } = useDataQuery(boundaryQuery, {\n\t\tlazy: true,\n\t});\n\n\tuseEffect(() => {\n\t\tasync function getOrgUnits() {\n\t\t\tconst rawOrgUnitIds = getOrgUnitsSelection(orgUnitSelection);\n\t\t\tconst data = await refetch({\n\t\t\t\torgUnitIds: rawOrgUnitIds,\n\t\t\t\tperiodIds: !isEmpty(periodSelection?.periods)\n\t\t\t\t\t? periodSelection?.periods\n\t\t\t\t\t: [\"THIS_YEAR\"], // Just a placeholder so as the analytics query doesn't fail, when the period is empty, it means that this isn't a DHIS2 map plot\n\t\t\t});\n\t\t\tconst { analytics, boundaries } = (data as any) ?? {};\n\t\t\tconst rawOrgUnits = sanitizeOrgUnits(analytics?.metaData);\n\t\t\tconst geoJSONObjects = toGeoJson(\n\t\t\t\tboundaries?.filter((bound: any) => bound.co),\n\t\t\t);\n\t\t\tconst orgUnits: MapOrgUnit[] = compact(\n\t\t\t\trawOrgUnits.map((orgUnit: any) => {\n\t\t\t\t\tconst geoJSONObject: any = geoJSONObjects?.find(\n\t\t\t\t\t\t(geoJSON: any) => geoJSON.properties.id === orgUnit.id,\n\t\t\t\t\t);\n\n\t\t\t\t\tif (!geoJSONObject) {\n\t\t\t\t\t\treturn;\n\t\t\t\t\t}\n\t\t\t\t\treturn {\n\t\t\t\t\t\t...orgUnit,\n\t\t\t\t\t\tgeoJSON: geoJSONObject,\n\t\t\t\t\t\tbounds: [],\n\t\t\t\t\t\tlevel: geoJSONObject.properties.level,\n\t\t\t\t\t};\n\t\t\t\t}),\n\t\t\t);\n\t\t\tconst periodIds: string[] =\n\t\t\t\tanalytics?.metaData?.dimensions?.pe ?? periodSelection?.periods ?? [];\n\t\t\tconst periods = periodIds.map((pe: string) =>\n\t\t\t\tPeriodUtility.getPeriodById(pe),\n\t\t\t);\n\t\t\tsetPeriods(periods);\n\t\t\tsetOrgUnits(orgUnits);\n\t\t\tconst inferred = periodIds.length > 0 ? inferPeriodType(periodIds[0]) : null;\n\t\t\tsetDetectedPeriodType(inferred);\n\t\t\tif (renderingStrategy === \"TIMELINE\" && periodIds.length > 0) {\n\t\t\t\tsetInitialActivePeriod(periodIds[0]);\n\t\t\t}\n\t\t}\n\t\tgetOrgUnits().catch((error) => console.log(error));\n\t}, [orgUnitSelection, refetch, periodSelection?.periods, renderingStrategy]);\n\n\tif (loading) {\n\t\treturn (\n\t\t\t<div style={{ height: \"100%\", width: \"100%\" }}>\n\t\t\t\t<Center>\n\t\t\t\t\t<CircularLoader small />\n\t\t\t\t</Center>\n\t\t\t</div>\n\t\t);\n\t}\n\n\tif (error) {\n\t\treturn (\n\t\t\t<div style={{ height: \"100%\", width: \"100%\" }}>\n\t\t\t\t<Center>\n\t\t\t\t\t<h4>\n\t\t\t\t\t\t{i18n.t(\"Error\")}: {error.message}\n\t\t\t\t\t</h4>\n\t\t\t\t</Center>\n\t\t\t</div>\n\t\t);\n\t}\n\n\tif (!isEmpty(orgUnits)) {\n\t\treturn (\n\t\t\t<MapOrgUnitContext.Provider value={{ orgUnitSelection, orgUnits }}>\n\t\t\t\t<MapPeriodContext.Provider\n\t\t\t\t\tvalue={{ ...periodSelection, periods }}\n\t\t\t\t>\n\t\t\t\t\t<MapPeriodFilterProvider\n\t\t\t\t\t\tinitialActivePeriod={initialActivePeriod}\n\t\t\t\t\t\tinitialPeriodType={detectedPeriodType}\n\t\t\t\t\t>\n\t\t\t\t\t\t{children}\n\t\t\t\t\t</MapPeriodFilterProvider>\n\t\t\t\t</MapPeriodContext.Provider>\n\t\t\t</MapOrgUnitContext.Provider>\n\t\t);\n\t}\n\n\treturn null;\n}\n"]}
@@ -7,5 +7,8 @@ export * from './constants/colors.js';
7
7
  export * from './components/MapArea/interfaces';
8
8
  export * from './components/MapLayer/interfaces';
9
9
  export * from './utils';
10
+ export * from './components/MapProvider/hooks/index.js';
11
+ export * from './components/MapControls/components/TimelineControl/index.js';
12
+ export * from './state/index.js';
10
13
  //# sourceMappingURL=index.js.map
11
14
  //# sourceMappingURL=index.js.map
@@ -12,7 +12,15 @@ const MapLayersContext = createContext({
12
12
  updateLayer: () => {
13
13
  }
14
14
  });
15
+ const MapPeriodFilterContext = createContext({
16
+ activePeriod: null,
17
+ setActivePeriod: () => {
18
+ },
19
+ periodType: null,
20
+ setPeriodType: () => {
21
+ }
22
+ });
15
23
 
16
- export { MapLayersContext, MapOrgUnitContext, MapPeriodContext };
24
+ export { MapLayersContext, MapOrgUnitContext, MapPeriodContext, MapPeriodFilterContext };
17
25
  //# sourceMappingURL=index.js.map
18
26
  //# sourceMappingURL=index.js.map
@@ -1 +1 @@
1
- {"version":3,"sources":["../../../../../src/components/Map/state/index.tsx"],"names":[],"mappings":";;AAMO,MAAM,oBAAoB,aAAA,CAG9B;AAAA,EACF,gBAAA,EAAkB,EAAE,QAAA,EAAU,EAAC,EAAE;AAAA,EACjC,UAAU;AACX,CAAC;AAEM,MAAM,mBAAmB,aAAA,CAM9B;AAAA,EACD,SAAS;AACV,CAAC;AAEM,MAAM,mBAAmB,aAAA,CAG7B;AAAA,EACF,QAAQ,EAAC;AAAA,EACT,aAAa,MAAM;AAAA,EAAC;AACrB,CAAC","file":"index.js","sourcesContent":["import type { OrgUnitSelection } from \"@hisptz/dhis2-utils\";\nimport { BasePeriod } from \"@hisptz/dhis2-utils\";\nimport { createContext } from \"react\";\nimport { CustomMapLayer } from \"../components/MapLayer/interfaces\";\nimport { MapOrgUnit } from \"../interfaces\";\n\nexport const MapOrgUnitContext = createContext<{\n\torgUnitSelection: OrgUnitSelection;\n\torgUnits?: MapOrgUnit[];\n}>({\n\torgUnitSelection: { orgUnits: [] },\n\torgUnits: [],\n});\n\nexport const MapPeriodContext = createContext<\n\t| {\n\t\t\tperiods?: BasePeriod[];\n\t\t\trange?: { start: Date; end: Date };\n\t }\n\t| undefined\n>({\n\tperiods: [],\n});\n\nexport const MapLayersContext = createContext<{\n\tlayers: CustomMapLayer[];\n\tupdateLayer: (id: string, updatedLayer: CustomMapLayer) => void;\n}>({\n\tlayers: [],\n\tupdateLayer: () => {},\n});\n"]}
1
+ {"version":3,"sources":["../../../../../src/components/Map/state/index.tsx"],"names":[],"mappings":";;AAcO,MAAM,oBAAoB,aAAA,CAG9B;AAAA,EACF,gBAAA,EAAkB,EAAE,QAAA,EAAU,EAAC,EAAE;AAAA,EACjC,UAAU;AACX,CAAC;AAEM,MAAM,mBAAmB,aAAA,CAM9B;AAAA,EACD,SAAS;AACV,CAAC;AAEM,MAAM,mBAAmB,aAAA,CAG7B;AAAA,EACF,QAAQ,EAAC;AAAA,EACT,aAAa,MAAM;AAAA,EAAC;AACrB,CAAC;AAEM,MAAM,yBAAyB,aAAA,CAAoC;AAAA,EACzE,YAAA,EAAc,IAAA;AAAA,EACd,iBAAiB,MAAM;AAAA,EAAC,CAAA;AAAA,EACxB,UAAA,EAAY,IAAA;AAAA,EACZ,eAAe,MAAM;AAAA,EAAC;AACvB,CAAC","file":"index.js","sourcesContent":["import type { OrgUnitSelection } from \"@hisptz/dhis2-utils\";\nimport { BasePeriod } from \"@hisptz/dhis2-utils\";\nimport { createContext } from \"react\";\nimport { CustomMapLayer } from \"../components/MapLayer/interfaces\";\nimport { MapOrgUnit } from \"../interfaces\";\nimport type { DHIS2PeriodType } from \"../utils/helpers.js\";\n\nexport interface MapPeriodFilterState {\n \tactivePeriod: string | null;\n\tsetActivePeriod: (periodId: string) => void;\n \tperiodType: DHIS2PeriodType | null;\n\tsetPeriodType: (type: DHIS2PeriodType) => void;\n}\n\nexport const MapOrgUnitContext = createContext<{\n\torgUnitSelection: OrgUnitSelection;\n\torgUnits?: MapOrgUnit[];\n}>({\n\torgUnitSelection: { orgUnits: [] },\n\torgUnits: [],\n});\n\nexport const MapPeriodContext = createContext<\n\t| {\n\t\t\tperiods?: BasePeriod[];\n\t\t\trange?: { start: Date; end: Date };\n\t }\n\t| undefined\n>({\n\tperiods: [],\n});\n\nexport const MapLayersContext = createContext<{\n\tlayers: CustomMapLayer[];\n\tupdateLayer: (id: string, updatedLayer: CustomMapLayer) => void;\n}>({\n\tlayers: [],\n\tupdateLayer: () => {},\n});\n\nexport const MapPeriodFilterContext = createContext<MapPeriodFilterState>({\n\tactivePeriod: null,\n\tsetActivePeriod: () => {},\n\tperiodType: null,\n\tsetPeriodType: () => {},\n});\n"]}
@@ -1,5 +1,76 @@
1
1
  import L from 'leaflet';
2
2
 
3
+ function dateToDHIS2PeriodId(date, periodType) {
4
+ const year = date.getFullYear();
5
+ const month = date.getMonth() + 1;
6
+ const day = date.getDate();
7
+ switch (periodType) {
8
+ case "Daily":
9
+ return `${year}${String(month).padStart(2, "0")}${String(day).padStart(2, "0")}`;
10
+ case "Weekly": {
11
+ const d = new Date(Date.UTC(year, month - 1, day));
12
+ d.setUTCDate(d.getUTCDate() + 4 - (d.getUTCDay() || 7));
13
+ const yearStart = new Date(Date.UTC(d.getUTCFullYear(), 0, 1));
14
+ const weekNum = Math.ceil(((d.getTime() - yearStart.getTime()) / 864e5 + 1) / 7);
15
+ return `${d.getUTCFullYear()}W${weekNum}`;
16
+ }
17
+ case "Monthly":
18
+ return `${year}${String(month).padStart(2, "0")}`;
19
+ case "BiMonthly":
20
+ return `${year}${String(Math.ceil(month / 2)).padStart(2, "0")}B`;
21
+ case "Quarterly":
22
+ return `${year}Q${Math.ceil(month / 3)}`;
23
+ case "SixMonthly":
24
+ return `${year}S${month <= 6 ? 1 : 2}`;
25
+ case "Yearly":
26
+ default:
27
+ return `${year}`;
28
+ }
29
+ }
30
+ function advancePeriod(date, periodType) {
31
+ switch (periodType) {
32
+ case "Daily":
33
+ date.setDate(date.getDate() + 1);
34
+ break;
35
+ case "Weekly":
36
+ date.setDate(date.getDate() + 7);
37
+ break;
38
+ case "Monthly":
39
+ date.setMonth(date.getMonth() + 1);
40
+ break;
41
+ case "BiMonthly":
42
+ date.setMonth(date.getMonth() + 2);
43
+ break;
44
+ case "Quarterly":
45
+ date.setMonth(date.getMonth() + 3);
46
+ break;
47
+ case "SixMonthly":
48
+ date.setMonth(date.getMonth() + 6);
49
+ break;
50
+ case "Yearly":
51
+ date.setFullYear(date.getFullYear() + 1);
52
+ break;
53
+ }
54
+ }
55
+ function inferPeriodType(periodId) {
56
+ if (/^\d{8}$/.test(periodId)) return "Daily";
57
+ if (/^\d{4}W\d+$/.test(periodId)) return "Weekly";
58
+ if (/^\d{6}$/.test(periodId)) return "Monthly";
59
+ if (/^\d{6}B$/.test(periodId)) return "BiMonthly";
60
+ if (/^\d{4}Q\d$/.test(periodId)) return "Quarterly";
61
+ if (/^\d{4}S\d$/.test(periodId)) return "SixMonthly";
62
+ if (/^\d{4}$/.test(periodId)) return "Yearly";
63
+ return null;
64
+ }
65
+ function computeTimelinePeriods(range, periodType) {
66
+ const result = [];
67
+ const current = new Date(range.start);
68
+ while (current <= range.end) {
69
+ result.push(dateToDHIS2PeriodId(current, periodType));
70
+ advancePeriod(current, periodType);
71
+ }
72
+ return [...new Set(result)];
73
+ }
3
74
  const getLongestTextLength = (array, key) => array.reduce(
4
75
  (text, curr) => curr[key] && String(curr[key]).length > text.length ? String(curr[key]) : text,
5
76
  ""
@@ -13,6 +84,6 @@ function getIcon(url) {
13
84
  });
14
85
  }
15
86
 
16
- export { getIcon, getIconUrl, getLongestTextLength };
87
+ export { computeTimelinePeriods, dateToDHIS2PeriodId, getIcon, getIconUrl, getLongestTextLength, inferPeriodType };
17
88
  //# sourceMappingURL=helpers.js.map
18
89
  //# sourceMappingURL=helpers.js.map
@@ -1 +1 @@
1
- {"version":3,"sources":["../../../../../src/components/Map/utils/helpers.ts"],"names":[],"mappings":";;AAGO,MAAM,oBAAA,GAAuB,CAAC,KAAA,EAAmB,GAAA,KACvD,KAAA,CAAM,MAAA;AAAA,EACL,CAAC,IAAA,EAAM,IAAA,KACN,KAAK,GAAG,CAAA,IAAK,OAAO,IAAA,CAAK,GAAG,CAAC,CAAA,CAAE,SAAS,IAAA,CAAK,MAAA,GAC1C,OAAO,IAAA,CAAK,GAAG,CAAC,CAAA,GAChB,IAAA;AAAA,EACJ;AACD,CAAA,CAAE;AAEI,SAAS,UAAA,CAAW,IAAA,EAAc,EAAE,OAAA,EAAQ,EAAwB;AACzE,EAAA,OAAO,CAAA,EAAG,OAAO,CAAA,qBAAA,EAAwB,IAAA,IAAQ,QAAQ,CAAA,CAAA;AAC3D;AAEO,SAAS,QAAQ,GAAA,EAAiC;AACvD,EAAA,OAAO,IAAI,EAAE,IAAA,CAAK;AAAA,IAChB,OAAA,EAAS;AAAA,GACV,CAAA;AACH","file":"helpers.js","sourcesContent":["// Get the longest text length from an object property in an array\nimport L from \"leaflet\";\n\nexport const getLongestTextLength = (array: Array<any>, key: string | number) =>\n\tarray.reduce(\n\t\t(text, curr) =>\n\t\t\tcurr[key] && String(curr[key]).length > text.length\n\t\t\t\t? String(curr[key])\n\t\t\t\t: text,\n\t\t\"\",\n\t).length;\n\nexport function getIconUrl(icon: string, { baseUrl }: { baseUrl: string }) {\n return `${baseUrl}/images/orgunitgroup/${icon ?? \"01.png\"}`;\n}\n\nexport function getIcon(url: string): L.Icon | undefined {\n return new L.Icon({\n iconUrl: url,\n });\n}\n"]}
1
+ {"version":3,"sources":["../../../../../src/components/Map/utils/helpers.ts"],"names":[],"mappings":";;AAYO,SAAS,mBAAA,CAAoB,MAAY,UAAA,EAAqC;AACpF,EAAA,MAAM,IAAA,GAAO,KAAK,WAAA,EAAY;AAC9B,EAAA,MAAM,KAAA,GAAQ,IAAA,CAAK,QAAA,EAAS,GAAI,CAAA;AAChC,EAAA,MAAM,GAAA,GAAM,KAAK,OAAA,EAAQ;AACzB,EAAA,QAAQ,UAAA;AAAY,IACnB,KAAK,OAAA;AACJ,MAAA,OAAO,GAAG,IAAI,CAAA,EAAG,MAAA,CAAO,KAAK,EAAE,QAAA,CAAS,CAAA,EAAG,GAAG,CAAC,GAAG,MAAA,CAAO,GAAG,EAAE,QAAA,CAAS,CAAA,EAAG,GAAG,CAAC,CAAA,CAAA;AAAA,IAC/E,KAAK,QAAA,EAAU;AACd,MAAA,MAAM,CAAA,GAAI,IAAI,IAAA,CAAK,IAAA,CAAK,IAAI,IAAA,EAAM,KAAA,GAAQ,CAAA,EAAG,GAAG,CAAC,CAAA;AACjD,MAAA,CAAA,CAAE,UAAA,CAAW,EAAE,UAAA,EAAW,GAAI,KAAK,CAAA,CAAE,SAAA,MAAe,CAAA,CAAE,CAAA;AACtD,MAAA,MAAM,SAAA,GAAY,IAAI,IAAA,CAAK,IAAA,CAAK,GAAA,CAAI,EAAE,cAAA,EAAe,EAAG,CAAA,EAAG,CAAC,CAAC,CAAA;AAC7D,MAAA,MAAM,OAAA,GAAU,IAAA,CAAK,IAAA,CAAA,CAAA,CAAQ,CAAA,CAAE,OAAA,EAAQ,GAAI,SAAA,CAAU,OAAA,EAAQ,IAAK,KAAA,GAAY,CAAA,IAAK,CAAC,CAAA;AACpF,MAAA,OAAO,CAAA,EAAG,CAAA,CAAE,cAAA,EAAgB,IAAI,OAAO,CAAA,CAAA;AAAA,IACxC;AAAA,IACA,KAAK,SAAA;AACJ,MAAA,OAAO,CAAA,EAAG,IAAI,CAAA,EAAG,MAAA,CAAO,KAAK,CAAA,CAAE,QAAA,CAAS,CAAA,EAAG,GAAG,CAAC,CAAA,CAAA;AAAA,IAChD,KAAK,WAAA;AACJ,MAAA,OAAO,CAAA,EAAG,IAAI,CAAA,EAAG,MAAA,CAAO,IAAA,CAAK,IAAA,CAAK,KAAA,GAAQ,CAAC,CAAC,CAAA,CAAE,QAAA,CAAS,CAAA,EAAG,GAAG,CAAC,CAAA,CAAA,CAAA;AAAA,IAC/D,KAAK,WAAA;AACJ,MAAA,OAAO,GAAG,IAAI,CAAA,CAAA,EAAI,KAAK,IAAA,CAAK,KAAA,GAAQ,CAAC,CAAC,CAAA,CAAA;AAAA,IACvC,KAAK,YAAA;AACJ,MAAA,OAAO,GAAG,IAAI,CAAA,CAAA,EAAI,KAAA,IAAS,CAAA,GAAI,IAAI,CAAC,CAAA,CAAA;AAAA,IACrC,KAAK,QAAA;AAAA,IACL;AACC,MAAA,OAAO,GAAG,IAAI,CAAA,CAAA;AAAA;AAEjB;AAEA,SAAS,aAAA,CAAc,MAAY,UAAA,EAA6B;AAC/D,EAAA,QAAQ,UAAA;AAAY,IACnB,KAAK,OAAA;AAAS,MAAA,IAAA,CAAK,OAAA,CAAQ,IAAA,CAAK,OAAA,EAAQ,GAAI,CAAC,CAAA;AAAG,MAAA;AAAA,IAChD,KAAK,QAAA;AAAU,MAAA,IAAA,CAAK,OAAA,CAAQ,IAAA,CAAK,OAAA,EAAQ,GAAI,CAAC,CAAA;AAAG,MAAA;AAAA,IACjD,KAAK,SAAA;AAAW,MAAA,IAAA,CAAK,QAAA,CAAS,IAAA,CAAK,QAAA,EAAS,GAAI,CAAC,CAAA;AAAG,MAAA;AAAA,IACpD,KAAK,WAAA;AAAa,MAAA,IAAA,CAAK,QAAA,CAAS,IAAA,CAAK,QAAA,EAAS,GAAI,CAAC,CAAA;AAAG,MAAA;AAAA,IACtD,KAAK,WAAA;AAAa,MAAA,IAAA,CAAK,QAAA,CAAS,IAAA,CAAK,QAAA,EAAS,GAAI,CAAC,CAAA;AAAG,MAAA;AAAA,IACtD,KAAK,YAAA;AAAc,MAAA,IAAA,CAAK,QAAA,CAAS,IAAA,CAAK,QAAA,EAAS,GAAI,CAAC,CAAA;AAAG,MAAA;AAAA,IACvD,KAAK,QAAA;AAAU,MAAA,IAAA,CAAK,WAAA,CAAY,IAAA,CAAK,WAAA,EAAY,GAAI,CAAC,CAAA;AAAG,MAAA;AAAA;AAE3D;AAEO,SAAS,gBAAgB,QAAA,EAA0C;AACzE,EAAA,IAAI,SAAA,CAAU,IAAA,CAAK,QAAQ,CAAA,EAAG,OAAO,OAAA;AACrC,EAAA,IAAI,aAAA,CAAc,IAAA,CAAK,QAAQ,CAAA,EAAG,OAAO,QAAA;AACzC,EAAA,IAAI,SAAA,CAAU,IAAA,CAAK,QAAQ,CAAA,EAAG,OAAO,SAAA;AACrC,EAAA,IAAI,UAAA,CAAW,IAAA,CAAK,QAAQ,CAAA,EAAG,OAAO,WAAA;AACtC,EAAA,IAAI,YAAA,CAAa,IAAA,CAAK,QAAQ,CAAA,EAAG,OAAO,WAAA;AACxC,EAAA,IAAI,YAAA,CAAa,IAAA,CAAK,QAAQ,CAAA,EAAG,OAAO,YAAA;AACxC,EAAA,IAAI,SAAA,CAAU,IAAA,CAAK,QAAQ,CAAA,EAAG,OAAO,QAAA;AACrC,EAAA,OAAO,IAAA;AACR;AAEO,SAAS,sBAAA,CACf,OACA,UAAA,EACW;AACX,EAAA,MAAM,SAAmB,EAAC;AAC1B,EAAA,MAAM,OAAA,GAAU,IAAI,IAAA,CAAK,KAAA,CAAM,KAAK,CAAA;AACpC,EAAA,OAAO,OAAA,IAAW,MAAM,GAAA,EAAK;AAC5B,IAAA,MAAA,CAAO,IAAA,CAAK,mBAAA,CAAoB,OAAA,EAAS,UAAU,CAAC,CAAA;AACpD,IAAA,aAAA,CAAc,SAAS,UAAU,CAAA;AAAA,EAClC;AACA,EAAA,OAAO,CAAC,GAAG,IAAI,GAAA,CAAI,MAAM,CAAC,CAAA;AAC3B;AAEO,MAAM,oBAAA,GAAuB,CAAC,KAAA,EAAmB,GAAA,KACvD,KAAA,CAAM,MAAA;AAAA,EACL,CAAC,IAAA,EAAM,IAAA,KACN,KAAK,GAAG,CAAA,IAAK,OAAO,IAAA,CAAK,GAAG,CAAC,CAAA,CAAE,SAAS,IAAA,CAAK,MAAA,GAC1C,OAAO,IAAA,CAAK,GAAG,CAAC,CAAA,GAChB,IAAA;AAAA,EACJ;AACD,CAAA,CAAE;AAEI,SAAS,UAAA,CAAW,IAAA,EAAc,EAAE,OAAA,EAAQ,EAAwB;AACzE,EAAA,OAAO,CAAA,EAAG,OAAO,CAAA,qBAAA,EAAwB,IAAA,IAAQ,QAAQ,CAAA,CAAA;AAC3D;AAEO,SAAS,QAAQ,GAAA,EAAiC;AACvD,EAAA,OAAO,IAAI,EAAE,IAAA,CAAK;AAAA,IAChB,OAAA,EAAS;AAAA,GACV,CAAA;AACH","file":"helpers.js","sourcesContent":["// Get the longest text length from an object property in an array\nimport L from \"leaflet\";\n\nexport type DHIS2PeriodType =\n\t| \"Daily\"\n\t| \"Weekly\"\n\t| \"Monthly\"\n\t| \"BiMonthly\"\n\t| \"Quarterly\"\n\t| \"SixMonthly\"\n\t| \"Yearly\";\n\nexport function dateToDHIS2PeriodId(date: Date, periodType: DHIS2PeriodType): string {\n\tconst year = date.getFullYear();\n\tconst month = date.getMonth() + 1;\n\tconst day = date.getDate();\n\tswitch (periodType) {\n\t\tcase \"Daily\":\n\t\t\treturn `${year}${String(month).padStart(2, \"0\")}${String(day).padStart(2, \"0\")}`;\n\t\tcase \"Weekly\": {\n\t\t\tconst d = new Date(Date.UTC(year, month - 1, day));\n\t\t\td.setUTCDate(d.getUTCDate() + 4 - (d.getUTCDay() || 7));\n\t\t\tconst yearStart = new Date(Date.UTC(d.getUTCFullYear(), 0, 1));\n\t\t\tconst weekNum = Math.ceil((((d.getTime() - yearStart.getTime()) / 86400000) + 1) / 7);\n\t\t\treturn `${d.getUTCFullYear()}W${weekNum}`;\n\t\t}\n\t\tcase \"Monthly\":\n\t\t\treturn `${year}${String(month).padStart(2, \"0\")}`;\n\t\tcase \"BiMonthly\":\n\t\t\treturn `${year}${String(Math.ceil(month / 2)).padStart(2, \"0\")}B`;\n\t\tcase \"Quarterly\":\n\t\t\treturn `${year}Q${Math.ceil(month / 3)}`;\n\t\tcase \"SixMonthly\":\n\t\t\treturn `${year}S${month <= 6 ? 1 : 2}`;\n\t\tcase \"Yearly\":\n\t\tdefault:\n\t\t\treturn `${year}`;\n\t}\n}\n\nfunction advancePeriod(date: Date, periodType: DHIS2PeriodType) {\n\tswitch (periodType) {\n\t\tcase \"Daily\": date.setDate(date.getDate() + 1); break;\n\t\tcase \"Weekly\": date.setDate(date.getDate() + 7); break;\n\t\tcase \"Monthly\": date.setMonth(date.getMonth() + 1); break;\n\t\tcase \"BiMonthly\": date.setMonth(date.getMonth() + 2); break;\n\t\tcase \"Quarterly\": date.setMonth(date.getMonth() + 3); break;\n\t\tcase \"SixMonthly\": date.setMonth(date.getMonth() + 6); break;\n\t\tcase \"Yearly\": date.setFullYear(date.getFullYear() + 1); break;\n\t}\n}\n\nexport function inferPeriodType(periodId: string): DHIS2PeriodType | null {\n\tif (/^\\d{8}$/.test(periodId)) return \"Daily\";\n\tif (/^\\d{4}W\\d+$/.test(periodId)) return \"Weekly\";\n\tif (/^\\d{6}$/.test(periodId)) return \"Monthly\";\n\tif (/^\\d{6}B$/.test(periodId)) return \"BiMonthly\";\n\tif (/^\\d{4}Q\\d$/.test(periodId)) return \"Quarterly\";\n\tif (/^\\d{4}S\\d$/.test(periodId)) return \"SixMonthly\";\n\tif (/^\\d{4}$/.test(periodId)) return \"Yearly\";\n\treturn null;\n}\n\nexport function computeTimelinePeriods(\n\trange: { start: Date; end: Date },\n\tperiodType: DHIS2PeriodType,\n): string[] {\n\tconst result: string[] = [];\n\tconst current = new Date(range.start);\n\twhile (current <= range.end) {\n\t\tresult.push(dateToDHIS2PeriodId(current, periodType));\n\t\tadvancePeriod(current, periodType);\n\t}\n\treturn [...new Set(result)];\n}\n\nexport const getLongestTextLength = (array: Array<any>, key: string | number) =>\n\tarray.reduce(\n\t\t(text, curr) =>\n\t\t\tcurr[key] && String(curr[key]).length > text.length\n\t\t\t\t? String(curr[key])\n\t\t\t\t: text,\n\t\t\"\",\n\t).length;\n\nexport function getIconUrl(icon: string, { baseUrl }: { baseUrl: string }) {\n return `${baseUrl}/images/orgunitgroup/${icon ?? \"01.png\"}`;\n}\n\nexport function getIcon(url: string): L.Icon | undefined {\n return new L.Icon({\n iconUrl: url,\n });\n}\n"]}
@@ -1 +1 @@
1
- {"version":3,"file":"DHIS2Map.d.ts","sourceRoot":"","sources":["../../../../src/components/Map/DHIS2Map.tsx"],"names":[],"mappings":"AAMA,OAAO,EAAE,QAAQ,EAAE,MAAM,cAAc,CAAC;AACxC,OAAO,0BAA0B,CAAC;AAClC,OAAO,KAAK,EAAE,EAAE,EAAE,MAAM,OAAO,CAAC;AA6DhC,eAAO,MAAM,QAAQ,EAAE,EAAE,CAAC,QAAQ,CAAgB,CAAC;AAEnD;;KAEK;AACL,eAAO,MAAM,GAAG,cAAW,CAAC"}
1
+ {"version":3,"file":"DHIS2Map.d.ts","sourceRoot":"","sources":["../../../../src/components/Map/DHIS2Map.tsx"],"names":[],"mappings":"AAMA,OAAO,EAAE,QAAQ,EAAE,MAAM,cAAc,CAAC;AACxC,OAAO,0BAA0B,CAAC;AAClC,OAAO,KAAK,EAAE,EAAE,EAAE,MAAM,OAAO,CAAC;AA+DhC,eAAO,MAAM,QAAQ,EAAE,EAAE,CAAC,QAAQ,CAAgB,CAAC;AAEnD;;KAEK;AACL,eAAO,MAAM,GAAG,cAAW,CAAC"}
@@ -2,11 +2,14 @@ import { ControlPosition } from "leaflet";
2
2
  import type { MapContainerProps } from "react-leaflet";
3
3
  import { CustomBoundaryLayer, CustomPointLayer, EarthEngineLayerConfig, ThematicLayerConfig } from "../../MapLayer/interfaces";
4
4
  import type { MapAnalyticsOptions } from "../../../interfaces";
5
- export interface MapControls {
5
+ import type { TimelineControlOptions } from "../../MapControls/components/TimelineControl";
6
+ export type MapControls = {
6
7
  position: ControlPosition;
7
8
  type: "zoom" | "rotate" | "fullscreen" | "compass" | "scale" | "print";
8
9
  options?: Record<string, any>;
9
- }
10
+ } | ({
11
+ type: "timeline";
12
+ } & TimelineControlOptions);
10
13
  export interface MapLegendConfig {
11
14
  enabled: boolean;
12
15
  position: ControlPosition;
@@ -1 +1 @@
1
- {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../../../../../../src/components/Map/components/MapArea/interfaces/index.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,eAAe,EAAE,MAAM,SAAS,CAAC;AAC1C,OAAO,KAAK,EAAE,iBAAiB,EAAE,MAAM,eAAe,CAAC;AACvD,OAAO,EACN,mBAAmB,EACnB,gBAAgB,EAChB,sBAAsB,EACtB,mBAAmB,EACnB,MAAM,2BAA2B,CAAC;AACnC,OAAO,KAAK,EAAE,mBAAmB,EAAE,MAAM,qBAAqB,CAAC;AAE/D,MAAM,WAAW,WAAW;IAC3B,QAAQ,EAAE,eAAe,CAAC;IAC1B,IAAI,EAAE,MAAM,GAAG,QAAQ,GAAG,YAAY,GAAG,SAAS,GAAG,OAAO,GAAG,OAAO,CAAC;IACvE,OAAO,CAAC,EAAE,MAAM,CAAC,MAAM,EAAE,GAAG,CAAC,CAAC;CAC9B;AAED,MAAM,WAAW,eAAe;IAC/B,OAAO,EAAE,OAAO,CAAC;IACjB,QAAQ,EAAE,eAAe,CAAC;IAC1B,WAAW,EAAE,OAAO,CAAC;CACrB;AAED,MAAM,WAAW,cAAc;IAC9B,cAAc,CAAC,EAAE,mBAAmB,EAAE,CAAC;IACvC,cAAc,CAAC,EAAE,mBAAmB,EAAE,CAAC;IACvC,WAAW,CAAC,EAAE,gBAAgB,EAAE,CAAC;IACjC,iBAAiB,CAAC,EAAE,sBAAsB,EAAE,CAAC;CAC7C;AAED,MAAM,WAAW,YAAY;IAC5B,IAAI,CAAC,EAAE;QACN,GAAG,CAAC,EAAE,MAAM,CAAC;QACb,WAAW,CAAC,EAAE,MAAM,CAAC;QACrB,OAAO,CAAC,EAAE,OAAO,CAAC;KAClB,CAAC;IACF,gBAAgB,CAAC,EAAE,mBAAmB,CAAC;IACvC,QAAQ,CAAC,EAAE,WAAW,EAAE,CAAC;IACzB,UAAU,CAAC,EAAE,iBAAiB,CAAC;IAC/B,OAAO,CAAC,EAAE,eAAe,CAAC;IAC1B,MAAM,EAAE,cAAc,CAAC;IACvB,eAAe,CAAC,EAAE,OAAO,CAAC;IAC1B,GAAG,CAAC,EAAE,MAAM,CAAC;CACb"}
1
+ {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../../../../../../src/components/Map/components/MapArea/interfaces/index.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,eAAe,EAAE,MAAM,SAAS,CAAC;AAC1C,OAAO,KAAK,EAAE,iBAAiB,EAAE,MAAM,eAAe,CAAC;AACvD,OAAO,EACN,mBAAmB,EACnB,gBAAgB,EAChB,sBAAsB,EACtB,mBAAmB,EACnB,MAAM,2BAA2B,CAAC;AACnC,OAAO,KAAK,EAAE,mBAAmB,EAAE,MAAM,qBAAqB,CAAC;AAC/D,OAAO,KAAK,EAAE,sBAAsB,EAAE,MAAM,8CAA8C,CAAC;AAE3F,MAAM,MAAM,WAAW,GACpB;IACA,QAAQ,EAAE,eAAe,CAAC;IAC1B,IAAI,EACD,MAAM,GACN,QAAQ,GACR,YAAY,GACZ,SAAS,GACT,OAAO,GACP,OAAO,CAAC;IACX,OAAO,CAAC,EAAE,MAAM,CAAC,MAAM,EAAE,GAAG,CAAC,CAAC;CAC7B,GACD,CAAC;IACD,IAAI,EAAE,UAAU,CAAC;CAChB,GAAG,sBAAsB,CAAC,CAAC;AAE/B,MAAM,WAAW,eAAe;IAC/B,OAAO,EAAE,OAAO,CAAC;IACjB,QAAQ,EAAE,eAAe,CAAC;IAC1B,WAAW,EAAE,OAAO,CAAC;CACrB;AAED,MAAM,WAAW,cAAc;IAC9B,cAAc,CAAC,EAAE,mBAAmB,EAAE,CAAC;IACvC,cAAc,CAAC,EAAE,mBAAmB,EAAE,CAAC;IACvC,WAAW,CAAC,EAAE,gBAAgB,EAAE,CAAC;IACjC,iBAAiB,CAAC,EAAE,sBAAsB,EAAE,CAAC;CAC7C;AAED,MAAM,WAAW,YAAY;IAC5B,IAAI,CAAC,EAAE;QACN,GAAG,CAAC,EAAE,MAAM,CAAC;QACb,WAAW,CAAC,EAAE,MAAM,CAAC;QACrB,OAAO,CAAC,EAAE,OAAO,CAAC;KAClB,CAAC;IACF,gBAAgB,CAAC,EAAE,mBAAmB,CAAC;IACvC,QAAQ,CAAC,EAAE,WAAW,EAAE,CAAC;IACzB,UAAU,CAAC,EAAE,iBAAiB,CAAC;IAC/B,OAAO,CAAC,EAAE,eAAe,CAAC;IAC1B,MAAM,EAAE,cAAc,CAAC;IACvB,eAAe,CAAC,EAAE,OAAO,CAAC;IAC1B,GAAG,CAAC,EAAE,MAAM,CAAC;CACb"}
@@ -0,0 +1,26 @@
1
+ import { type DurationObjectUnits } from "luxon";
2
+ import { type ReactElement } from "react";
3
+ import { type DHIS2PeriodType } from "../../../../utils/helpers.js";
4
+ export type { DHIS2PeriodType };
5
+ export type TimelineRange = {
6
+ range: [Date, Date];
7
+ step: DurationObjectUnits;
8
+ } | {
9
+ range: [Date, Date, ...Date[]];
10
+ };
11
+ export type TimelinePosition = "bottom" | "bottomleft" | "bottomright" | "bottomcenter" | "top" | "topleft" | "topright" | "topcenter";
12
+ export interface TimelineControlOptions {
13
+ autoplay?: boolean;
14
+ button?: {
15
+ pausedText?: string;
16
+ playingText?: string;
17
+ };
18
+ interval?: number;
19
+ periodType?: DHIS2PeriodType;
20
+ position?: TimelinePosition;
21
+ timeline: {
22
+ dateFormat: string;
23
+ } & TimelineRange;
24
+ }
25
+ export declare function TimelineControl({ autoplay, button, interval, periodType, position, timeline, }: TimelineControlOptions): ReactElement | null;
26
+ //# sourceMappingURL=index.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../../../../../../../src/components/Map/components/MapControls/components/TimelineControl/index.tsx"],"names":[],"mappings":"AAIA,OAAO,EAAY,KAAK,mBAAmB,EAAE,MAAM,OAAO,CAAC;AAE3D,OAAO,EACN,KAAK,YAAY,EAOjB,MAAM,OAAO,CAAC;AAGf,OAAO,EAAuB,KAAK,eAAe,EAAE,MAAM,8BAA8B,CAAC;AAEzF,YAAY,EAAE,eAAe,EAAE,CAAC;AAEhC,MAAM,MAAM,aAAa,GACtB;IAAE,KAAK,EAAE,CAAC,IAAI,EAAE,IAAI,CAAC,CAAC;IAAC,IAAI,EAAE,mBAAmB,CAAA;CAAE,GAClD;IAAE,KAAK,EAAE,CAAC,IAAI,EAAE,IAAI,EAAE,GAAG,IAAI,EAAE,CAAC,CAAA;CAAE,CAAC;AAEtC,MAAM,MAAM,gBAAgB,GACzB,QAAQ,GACR,YAAY,GACZ,aAAa,GACb,cAAc,GACd,KAAK,GACL,SAAS,GACT,UAAU,GACV,WAAW,CAAC;AAEf,MAAM,WAAW,sBAAsB;IACtC,QAAQ,CAAC,EAAE,OAAO,CAAC;IACnB,MAAM,CAAC,EAAE;QACR,UAAU,CAAC,EAAE,MAAM,CAAC;QACpB,WAAW,CAAC,EAAE,MAAM,CAAC;KACrB,CAAC;IACF,QAAQ,CAAC,EAAE,MAAM,CAAC;IAClB,UAAU,CAAC,EAAE,eAAe,CAAC;IAC7B,QAAQ,CAAC,EAAE,gBAAgB,CAAC;IAC5B,QAAQ,EAAE;QACT,UAAU,EAAE,MAAM,CAAC;KACnB,GAAG,aAAa,CAAC;CAClB;AAyLD,wBAAgB,eAAe,CAAC,EAC/B,QAAgB,EAChB,MAAM,EACN,QAAe,EACf,UAAU,EACV,QAAmB,EACnB,QAAQ,GACR,EAAE,sBAAsB,GAAG,YAAY,GAAG,IAAI,CA4D9C"}
@@ -1,6 +1,5 @@
1
- import { MapControls } from "../MapArea/interfaces/index.js";
2
- export interface MapControlProps extends MapControls {
1
+ import { MapControls } from "../MapArea/interfaces";
2
+ export default function MapControl(props: MapControls & {
3
3
  mapId: string;
4
- }
5
- export default function MapControl({ type, options, position, mapId, }: MapControlProps): import("react/jsx-runtime.js").JSX.Element | null;
4
+ }): import("react/jsx-runtime").JSX.Element | null;
6
5
  //# sourceMappingURL=index.d.ts.map
@@ -1 +1 @@
1
- {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../../../../../src/components/Map/components/MapControls/index.tsx"],"names":[],"mappings":"AAEA,OAAO,EAAE,WAAW,EAAE,MAAM,gCAAgC,CAAC;AAI7D,MAAM,WAAW,eAAgB,SAAQ,WAAW;IACnD,KAAK,EAAE,MAAM,CAAC;CACd;AAED,MAAM,CAAC,OAAO,UAAU,UAAU,CAAC,EAClC,IAAI,EACJ,OAAO,EACP,QAAQ,EACR,KAAK,GACL,EAAE,eAAe,qDAmBjB"}
1
+ {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../../../../../src/components/Map/components/MapControls/index.tsx"],"names":[],"mappings":"AAEA,OAAO,EAAE,WAAW,EAAE,MAAM,uBAAuB,CAAC;AAKpD,MAAM,CAAC,OAAO,UAAU,UAAU,CAAC,KAAK,EAAE,WAAW,GAAG;IAAE,KAAK,EAAE,MAAM,CAAA;CAAE,kDA6BxE"}
@@ -1 +1 @@
1
- {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../../../../../../../../src/components/Map/components/MapProvider/components/MapLayerProvider/hooks/index.tsx"],"names":[],"mappings":"AAmBA,OAAO,EACN,uBAAuB,EACvB,gBAAgB,EAEhB,sBAAsB,EAEtB,MAAM,iCAAiC,CAAC;AACzC,OAAO,EACN,KAAK,mBAAmB,EAGxB,MAAM,oCAAoC,CAAC;AAiF5C,wBAAgB,iBAAiB,CAAC,EACjC,gBAAgB,GAChB,EAAE;IACF,gBAAgB,CAAC,EAAE,mBAAmB,CAAC;CACvC,GAAG,GAAG,CA+KN;AAED,wBAAgB,aAAa;;2BAoDnB,gBAAgB,KACrB,OAAO,CAAC,gBAAgB,GAAG,SAAS,CAAC;EA+DzC;AAED,wBAAgB,qBAAqB;6BAwB1B,sBAAsB,EAAE,KAC9B,OAAO,CAAC,uBAAuB,EAAE,CAAC;EA2DtC"}
1
+ {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../../../../../../../../src/components/Map/components/MapProvider/components/MapLayerProvider/hooks/index.tsx"],"names":[],"mappings":"AAaA,OAAO,EACN,uBAAuB,EACvB,gBAAgB,EAEhB,sBAAsB,EAEtB,MAAM,iCAAiC,CAAC;AACzC,OAAO,EACN,KAAK,mBAAmB,EAGxB,MAAM,oCAAoC,CAAC;AAkF5C,wBAAgB,iBAAiB,CAAC,EACjC,gBAAgB,GAChB,EAAE;IACF,gBAAgB,CAAC,EAAE,mBAAmB,CAAC;CACvC,GAAG,GAAG,CAgMN;AAED,wBAAgB,aAAa;;2BAoDnB,gBAAgB,KACrB,OAAO,CAAC,gBAAgB,GAAG,SAAS,CAAC;EA+DzC;AAED,wBAAgB,qBAAqB;6BAwB1B,sBAAsB,EAAE,KAC9B,OAAO,CAAC,uBAAuB,EAAE,CAAC;EA2DtC"}