@cdc/core 4.24.9 → 4.24.11
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.
- package/LICENSE +201 -0
- package/assets/icon-combo-chart.svg +1 -0
- package/assets/icon-epi-chart.svg +27 -0
- package/components/AdvancedEditor/AdvancedEditor.tsx +17 -13
- package/components/Alert/components/Alert.tsx +34 -8
- package/components/BlurStrokeText.tsx +44 -0
- package/components/DataTable/DataTable.tsx +62 -36
- package/components/DataTable/DataTableStandAlone.tsx +37 -6
- package/components/DataTable/components/ChartHeader.tsx +31 -26
- package/components/DataTable/components/MapHeader.tsx +19 -10
- package/components/DataTable/components/SortIcon/index.tsx +25 -0
- package/components/DataTable/components/SortIcon/sort-icon.css +21 -0
- package/{styles/_data-table.scss → components/DataTable/data-table.css} +250 -298
- package/components/DataTable/helpers/boxplotCellMatrix.tsx +14 -13
- package/components/DataTable/helpers/customSort.ts +11 -15
- package/components/DataTable/helpers/getChartCellValue.ts +23 -5
- package/components/DataTable/helpers/getDataSeriesColumns.ts +5 -1
- package/components/DataTable/helpers/getNewSortBy.ts +35 -0
- package/components/DataTable/helpers/tests/customSort.test.ts +52 -0
- package/components/DataTable/helpers/tests/getNewSortBy.test.ts +26 -0
- package/components/EditorPanel/ColumnsEditor.tsx +81 -36
- package/components/EditorPanel/DataTableEditor.tsx +149 -43
- package/components/EditorPanel/FieldSetWrapper.tsx +2 -2
- package/components/EditorPanel/Inputs.tsx +68 -20
- package/components/EditorPanel/VizFilterEditor/NestedDropdownEditor.tsx +25 -7
- package/components/EditorPanel/VizFilterEditor/VizFilterEditor.tsx +30 -55
- package/components/{Filters.tsx → Filters/Filters.tsx} +60 -43
- package/components/Filters/helpers/applyQueuedActive.ts +12 -0
- package/components/Filters/helpers/getNestedOptions.ts +29 -0
- package/components/Filters/helpers/handleSorting.ts +18 -0
- package/components/Filters/helpers/tests/applyQueuedActive.test.ts +49 -0
- package/components/Filters/helpers/tests/getNestedOptions.test.ts +93 -0
- package/components/Filters/helpers/tests/handleSorting.test.ts +68 -0
- package/components/Filters/index.ts +5 -0
- package/components/Layout/components/Sidebar/components/sidebar.styles.scss +1 -7
- package/components/Layout/components/Visualization/visualizations.scss +1 -1
- package/components/Legend/Legend.Gradient.tsx +44 -36
- package/components/Loader/Loader.tsx +33 -0
- package/components/Loader/index.ts +1 -0
- package/components/Loader/loader.styles.css +13 -0
- package/components/MultiSelect/MultiSelect.tsx +85 -62
- package/components/MultiSelect/multiselect.styles.css +10 -7
- package/components/NestedDropdown/NestedDropdown.tsx +118 -56
- package/components/NestedDropdown/nestedDropdownHelpers.ts +34 -0
- package/components/NestedDropdown/nesteddropdown.styles.css +22 -13
- package/components/NestedDropdown/tests/nestedDropdownHelpers.test.ts +58 -0
- package/components/Table/Table.tsx +102 -34
- package/components/Table/components/GroupRow.tsx +1 -1
- package/components/_stories/BlurStrokeTest.stories.tsx +27 -0
- package/components/_stories/DataTable.stories.tsx +14 -0
- package/components/_stories/Filters.stories.tsx +57 -0
- package/components/_stories/NestedDropdown.stories.tsx +22 -46
- package/components/_stories/_mocks/DataTable/no-data.json +108 -0
- package/components/_stories/_mocks/nested-dropdown.json +30 -0
- package/components/_stories/styles.scss +0 -1
- package/components/ui/Icon.tsx +19 -6
- package/components/ui/{Tooltip.jsx → Tooltip.tsx} +38 -14
- package/data/colorPalettes.js +107 -10
- package/dist/cove-main.css +6080 -0
- package/dist/cove-main.css.map +1 -0
- package/helpers/DataTransform.ts +2 -1
- package/helpers/addValuesToFilters.ts +8 -3
- package/helpers/cove/{number.js → number.ts} +62 -27
- package/helpers/coveUpdateWorker.ts +6 -7
- package/helpers/fetchRemoteData.js +32 -37
- package/helpers/formatConfigBeforeSave.ts +17 -1
- package/helpers/gatherQueryParams.ts +12 -2
- package/helpers/pivotData.ts +52 -11
- package/helpers/queryStringUtils.ts +6 -0
- package/helpers/tests/gatherQueryParams.test.ts +34 -0
- package/helpers/tests/pivotData.test.ts +50 -0
- package/helpers/useDataVizClasses.ts +42 -20
- package/helpers/ver/4.24.10.ts +47 -0
- package/helpers/ver/4.24.9.ts +0 -3
- package/helpers/ver/tests/4.24.10.test.ts +45 -0
- package/helpers/viewports.ts +9 -0
- package/package.json +7 -3
- package/styles/_button-section.scss +5 -1
- package/styles/_global-variables.scss +20 -2
- package/styles/_global.scss +22 -30
- package/styles/_reset.scss +2 -26
- package/styles/base.scss +0 -1
- package/styles/cove-main.scss +6 -0
- package/styles/filters.scss +6 -26
- package/styles/v2/base/_reset.scss +0 -7
- package/styles/v2/components/editor.scss +0 -4
- package/styles/v2/components/icon.scss +1 -1
- package/styles/v2/components/ui/tooltip.scss +42 -40
- package/styles/v2/layout/_component.scss +0 -6
- package/styles/v2/layout/index.scss +0 -1
- package/types/Axis.ts +4 -0
- package/types/BoxPlot.ts +5 -3
- package/types/Color.ts +1 -1
- package/types/General.ts +1 -0
- package/types/Legend.ts +1 -2
- package/types/MarkupInclude.ts +1 -0
- package/types/Runtime.ts +3 -1
- package/types/Series.ts +8 -1
- package/types/Table.ts +3 -2
- package/types/Visualization.ts +19 -8
- package/types/VizFilter.ts +2 -1
- package/components/DataTable/components/Icons.tsx +0 -10
- package/components/_stories/EditorPanel.stories.tsx +0 -54
- package/components/_stories/Layout.Debug.stories.tsx +0 -91
- package/components/ui/Select.jsx +0 -30
- package/helpers/getGradientLegendWidth.ts +0 -15
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"sourceRoot":"","sources":["../styles/_reset.scss","../styles/_global-variables.scss","../styles/filters.scss","../styles/base.scss","../styles/_variables.scss","../styles/_global.scss","../styles/_button-section.scss","../styles/_series-list.scss","../styles/_typography.scss","../styles/heading-colors.scss","../styles/v2/themes/_color-definitions.scss","../styles/v2/components/ui/tooltip.scss","../styles/v2/utils/_align.scss","../styles/v2/utils/_animations.scss","../styles/v2/utils/_grid.scss","../styles/v2/utils/_spacers.scss","../styles/v2/main.scss","../styles/v2/base/_general.scss","../styles/v2/base/_heading.scss","../styles/v2/base/_file-selector.scss","../styles/v2/layout/_alert.scss","../styles/v2/layout/_component.scss","../styles/v2/layout/_progression.scss","../styles/v2/utils/_mixins.scss","../styles/v2/layout/_tooltip.scss","../styles/v2/utils/_breakpoints.scss"],"names":[],"mappings":";AAAA;EACE;EACA;EAEA;EACA;EACA;EACA;EACA;;AAGA;AAAA;EAEE;;AAGF;EACE;;;AAIF;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;EAqEE;EACA;EACA;EACA;EACA;EACA;;AAGF;EACE;;AAGF;AAAA;AAEE;AAAA;EAEA;AAEA;AAAA;EAEA;AAEA;AAAA;EAEA;AAEA;AAAA;EAEA;;AAGF;AACE;EACA;;AAGF;AACE;AAAA;EAEA;;;AC7DF;EAEI;EAAA;EAAA;EAAA;EAAA;EAAA;EAAA;EAAA;EAAA;EAAA;EAAA;EAAA;EAAA;EAAA;EAAA;EAAA;EAAA;EAAA;EAAA;EAAA;EAAA;EAAA;EAAA;EAAA;EAAA;EAAA;EAAA;EAAA;EAAA;EAAA;EAAA;EAAA;EAAA;EAAA;EAAA;EAAA;EAAA;EAAA;EAAA;EAAA;EAAA;EAAA;EAAA;EAAA;EAAA;EAAA;EAAA;EAAA;EAAA;EAAA;EAAA;EAAA;EAAA;;;AAON;EACE;EACA;EACA;EACA;EACA;EACA;EACA;EACA;;;AAGF;EACE;IACE;;;ACzFF;EACE;EACA;EACA;EACA;EACA;;AACA;EACE;EACA;EACA;EACA;;AAIJ;EACE;EACA;;AAGF;EACE;;AACA;EACE;;;AAOJ;EACE;;AAIA;EACE;EACA;;;AAKN;EACE;EACA;EACA;;AAEA;EACE;EACA;EACA;EACA;EACA;EACA;EACA;EACA;;AAGF;EACE;;;AAIJ;EACE;EACA;EACA;;AAEA;EACE;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;;AAEA;EACE;;;AAKN;EACE;EACA;EACA;EACA;EACA;;AAEA;EACE;EACA;EACA;EACA;;AACA;EACE;EACA;;;AC7CN;EACE;;;AAGF;EACE;;;AAGF;EACE;EACA,OCnEU;EDoEV;EACA;EAcA;EACA;EACA;;AAhDE;EAkCA;;AEvEJ;EACE;;AAGF;EACE;EACA;EACA;EACA;EACA;;AACA;EACE;;AAEF;EACE;;AAEF;EACE;EACA;EACA;;AAIJ;AAAA;EAEE;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;;AAEF;EACE;EACA;EACA;;AAEF;EACE;EACA;EAIA;EACA;;AAJA;EAHF;IAII;;;AAIF;EACE;;AAKF;EACE;;AAEF;EACE;;AAEF;EACE;EACA;EACA;EACA;EACA;;AACA;EACE;;AAGJ;EACE,kBDlEE;ECmEF;EACA;EACA;EACA;;AACA;EACE;;AAIJ;EACE;EACA;EACA;EACA;;AAIJ;AAAA;AAAA;AAAA;AAAA;AAAA;EAME;EACA;EACA;EACA;EACA;;AACA;AAAA;AAAA;AAAA;AAAA;AAAA;EACE;EACA;;AAGJ;EACE;;AAGF;EACE;EACA;;AAGF;EACE;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;;AACA;EACE;EACA;EACA,YD/HG;ECgIH;EACA;EACA;EACA;;AAEF;EACE,YDrIW;ECsIX;EACA;;AAEF;EACE;;AAEF;EACE;EACA,OD/IG;ECgJH;;AACA;EACE;;AAGJ;EACE;EACA;;AAIJ;EACE;EACA;;AAGF;EACE;EACA;EACA;;AAGF;EACE;;AAGF;EACE;;AAGF;EACE,kBD/KK;ECgLL,cDhLK;;ACiLL;EACE;EACA;;AAOJ;EACE;EACA;EACA;EACA;EACA;EACA;;AChMF;EACE;EACA;EACA;;AAEA;EACE;;AAEF;EACE;;AAKJ;EACE;EACA;EACA;EAUA;;AATA;EACE;;AAEF;EACE;;AAEF;EACE;;AAGF;EACE;;AAMF;EACE;EACA;;AAEF;EACE;;ACzCJ;EAEE;EACA;;AAIS;EACP,YAHO;;;AAMA;EACP,eAPO;;;AAUT;EACE;;AAEA;EACE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AAAA;AAAA;AAAA;AAAA;EACE;EACA;EACA;EACA;;AASI;AAAA;AAAA;AAAA;AAAA;AAAA;EACE;;AAGF;AAAA;AAAA;AAAA;AAAA;AAAA;EACE;;AAEF;AAAA;AAAA;AAAA;AAAA;AAAA;EACE;;AAKJ;AAAA;AAAA;AAAA;AAAA;AAAA;EACE;;AAIF;AAAA;AAAA;AAAA;AAAA;AAAA;EACE;;AAIJ;AAAA;AAAA;AAAA;AAAA;AAAA;EACE;;AAKF;AAAA;AAAA;AAAA;AAAA;AAAA;EACE;;;AAUF;EACE;EACA;EACA;;AAGF;EACE;;AAGF;EACE;EACA;;AAEF;EACE;;AAKF;EACE;EACA;EACA;;AAGF;EACE;;AAGF;EACE;EACA;;AAGF;EACE;;AAEF;EACE;;AAvCF;EACE;EACA;EACA;;AAGF;EACE;;AAGF;EACE;EACA;;AAEF;EACE;;AAKF;EACE;EACA;EACA;;AAGF;EACE;;AAGF;EACE;EACA;;AAGF;EACE;;AAEF;EACE;;AAvCF;EACE;EACA;EACA;;AAGF;EACE;;AAGF;EACE;EACA;;AAEF;EACE;;AAKF;EACE;EACA;EACA;;AAGF;EACE;;AAGF;EACE;EACA;;AAGF;EACE;;AAEF;EACE;;AAvCF;EACE;EACA;EACA;;AAGF;EACE;;AAGF;EACE;EACA;;AAEF;EACE;;AAKF;EACE;EACA;EACA;;AAGF;EACE;;AAGF;EACE;EACA;;AAGF;EACE;;AAEF;EACE;;AAvCF;EACE;EACA;EACA;;AAGF;EACE;;AAGF;EACE;EACA;;AAEF;EACE;;AAKF;EACE;EACA;EACA;;AAGF;EACE;;AAGF;EACE;EACA;;AAGF;EACE;;AAEF;EACE;;AAvCF;EACE;EACA;EACA;;AAGF;EACE;;AAGF;EACE;EACA;;AAEF;EACE;;AAKF;EACE;EACA;EACA;;AAGF;EACE;;AAGF;EACE;EACA;;AAGF;EACE;;AAEF;EACE;;AAvCF;EACE;EACA;EACA;;AAGF;EACE;;AAGF;EACE;EACA;;AAEF;EACE;;AAKF;EACE;EACA;EACA;;AAGF;EACE;;AAGF;EACE;EACA;;AAGF;EACE;;AAEF;EACE;;AAvCF;EACE;EACA;EACA;;AAGF;EACE;;AAGF;EACE;EACA;;AAEF;EACE;;AAKF;EACE;EACA;EACA;;AAGF;EACE;;AAGF;EACE;EACA;;AAGF;EACE;;AAEF;EACE;;AAvCF;EACE;EACA;EACA;;AAGF;EACE;;AAGF;EACE;EACA;;AAEF;EACE;;AAKF;EACE;EACA;EACA;;AAGF;EACE;;AAGF;EACE;EACA;;AAGF;EACE;;AAEF;EACE;;AAvCF;EACE;EACA;EACA;;AAGF;EACE;;AAGF;EACE;EACA;;AAEF;EACE;;AAKF;EACE;EACA;EACA;;AAGF;EACE;;AAGF;EACE;EACA;;AAGF;EACE;;AAEF;EACE;;AAvCF;EACE;EACA;EACA;;AAGF;EACE;;AAGF;EACE;EACA;;AAEF;EACE;;AAKF;EACE;EACA;EACA;;AAGF;EACE;;AAGF;EACE;EACA;;AAGF;EACE;;AAEF;EACE;;;AC9KR;EACE;EACA;EACA;EACA;EACA;EACA;EACA;;;AAOA;AAAA;EACE;;AAKA;AAAA;AAAA;AAAA;EAEE;EACA;EACA;;AAKJ;AAAA;AAAA;AAAA;EAEE;EACA;EACA;EACA;EACA;;AAGE;AAAA;AAAA;AAAA;EACE;;AAIJ;AAAA;AAAA;AAAA;EACE;;AAEA;AAAA;AAAA;AAAA;EACE;;AAIF;AAAA;AAAA;AAAA;EACE;EACA;;AAGF;AAAA;AAAA;AAAA;EACE;EACA;;AAIF;AAAA;AAAA;AAAA;EACE;EACA;;AAIJ;AAAA;AAAA;AAAA;EACE;EACA;EACA;EACA;EACA;;;AAKN;EACE;EACA;EACA;;;AAGF;EACE;EACA;;AAGE;EACE;EACA;;;AAMJ;EACE;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;;AAGE;EACE;;AAGF;EACE;;AAKF;EACE;;AAGF;EACE;;AAKF;EACE;;AAGF;EACE;;AAKF;EACE;;AAGF;EACE;;;AChJJ;EACE;;;AADF;EACE;;;AADF;EACE;;;AADF;EACE;;;AADF;EACE;;;AADF;EACE;;;AADF;EACE;;;AADF;EACE;;;AADF;EACE;;;AADF;EACE;;;AADF;EACE;;;AADF;EACE;;;AADF;EACE;;;AADF;EACE;;;AADF;EACE;;;AADF;EACE;;;ACJN;EACE;IACE;;EAGF;IACE;;;AAIJ;EACE;IACE;;EAGF;IACE;;;AAIJ;EACE;IACE;IACA;;EAGF;IACE;IACA;;;AAIJ;EACE;IACE;IACA;;EAEF;IACE;IACA;;;AAIJ;EACE;IACE;;EAEF;IACE;;EAEF;IACE;;EAEF;IACE;;EAEF;IACE;;EAEF;IACE;;;AC1BJ;EACE;EACA;;;AA5BE;EACE;;;AAEF;EACE;;;AAEF;EACE;;;AAEF;EACE;;;AAVF;EACE;;;AAEF;EACE;;;AAEF;EACE;;;AAEF;EACE;;;AAVF;EACE;;;AAEF;EACE;;;AAEF;EACE;;;AAEF;EACE;;;AAVF;EACE;;;AAEF;EACE;;;AAEF;EACE;;;AAEF;EACE;;;AAVF;EACE;;;AAEF;EACE;;;AAEF;EACE;;;AAEF;EACE;;;AAVF;EACE;;;AAEF;EACE;;;AAEF;EACE;;;AAEF;EACE;;;AAVF;EACE;;;AAEF;EACE;;;AAEF;EACE;;;AAEF;EACE;;;AAVF;EACE;;;AAEF;EACE;;;AAEF;EACE;;;AAEF;EACE;;;AAVF;EACE;;;AAEF;EACE;;;AAEF;EACE;;;AAEF;EACE;;;AAVF;EACE;;;AAEF;EACE;;;AAEF;EACE;;;AAEF;EACE;;;AAVF;EACE;;;AAEF;EACE;;;AAEF;EACE;;;AAEF;EACE;;;AAVF;EACE;;;AAEF;EACE;;;AAEF;EACE;;;AAEF;EACE;;;AAQF;EACE;EACA;;;AAFF;EACE;EACA;;;AAFF;EACE;EACA;;;AAFF;EACE;EACA;;;AAFF;EACE;EACA;;;AAFF;EACE;EACA;;;AAFF;EACE;EACA;;;AAFF;EACE;EACA;;;AAFF;EACE;EACA;;;AAeJ;EAnCE;IACE;;EAEF;IACE;;EAEF;IACE;;EAEF;IACE;;EAVF;IACE;;EAEF;IACE;;EAEF;IACE;;EAEF;IACE;;EAVF;IACE;;EAEF;IACE;;EAEF;IACE;;EAEF;IACE;;EAVF;IACE;;EAEF;IACE;;EAEF;IACE;;EAEF;IACE;;EAVF;IACE;;EAEF;IACE;;EAEF;IACE;;EAEF;IACE;;EAVF;IACE;;EAEF;IACE;;EAEF;IACE;;EAEF;IACE;;EAVF;IACE;;EAEF;IACE;;EAEF;IACE;;EAEF;IACE;;EAVF;IACE;;EAEF;IACE;;EAEF;IACE;;EAEF;IACE;;EAVF;IACE;;EAEF;IACE;;EAEF;IACE;;EAEF;IACE;;EAVF;IACE;;EAEF;IACE;;EAEF;IACE;;EAEF;IACE;;EAVF;IACE;;EAEF;IACE;;EAEF;IACE;;EAEF;IACE;;EAVF;IACE;;EAEF;IACE;;EAEF;IACE;;EAEF;IACE;;;AAyBJ;EAnCE;IACE;;EAEF;IACE;;EAEF;IACE;;EAEF;IACE;;EAVF;IACE;;EAEF;IACE;;EAEF;IACE;;EAEF;IACE;;EAVF;IACE;;EAEF;IACE;;EAEF;IACE;;EAEF;IACE;;EAVF;IACE;;EAEF;IACE;;EAEF;IACE;;EAEF;IACE;;EAVF;IACE;;EAEF;IACE;;EAEF;IACE;;EAEF;IACE;;EAVF;IACE;;EAEF;IACE;;EAEF;IACE;;EAEF;IACE;;EAVF;IACE;;EAEF;IACE;;EAEF;IACE;;EAEF;IACE;;EAVF;IACE;;EAEF;IACE;;EAEF;IACE;;EAEF;IACE;;EAVF;IACE;;EAEF;IACE;;EAEF;IACE;;EAEF;IACE;;EAVF;IACE;;EAEF;IACE;;EAEF;IACE;;EAEF;IACE;;EAVF;IACE;;EAEF;IACE;;EAEF;IACE;;EAEF;IACE;;EAVF;IACE;;EAEF;IACE;;EAEF;IACE;;EAEF;IACE;;;AAyBJ;EAnCE;IACE;;EAEF;IACE;;EAEF;IACE;;EAEF;IACE;;EAVF;IACE;;EAEF;IACE;;EAEF;IACE;;EAEF;IACE;;EAVF;IACE;;EAEF;IACE;;EAEF;IACE;;EAEF;IACE;;EAVF;IACE;;EAEF;IACE;;EAEF;IACE;;EAEF;IACE;;EAVF;IACE;;EAEF;IACE;;EAEF;IACE;;EAEF;IACE;;EAVF;IACE;;EAEF;IACE;;EAEF;IACE;;EAEF;IACE;;EAVF;IACE;;EAEF;IACE;;EAEF;IACE;;EAEF;IACE;;EAVF;IACE;;EAEF;IACE;;EAEF;IACE;;EAEF;IACE;;EAVF;IACE;;EAEF;IACE;;EAEF;IACE;;EAEF;IACE;;EAVF;IACE;;EAEF;IACE;;EAEF;IACE;;EAEF;IACE;;EAVF;IACE;;EAEF;IACE;;EAEF;IACE;;EAEF;IACE;;EAVF;IACE;;EAEF;IACE;;EAEF;IACE;;EAEF;IACE;;;AAyBJ;EAnCE;IACE;;EAEF;IACE;;EAEF;IACE;;EAEF;IACE;;EAVF;IACE;;EAEF;IACE;;EAEF;IACE;;EAEF;IACE;;EAVF;IACE;;EAEF;IACE;;EAEF;IACE;;EAEF;IACE;;EAVF;IACE;;EAEF;IACE;;EAEF;IACE;;EAEF;IACE;;EAVF;IACE;;EAEF;IACE;;EAEF;IACE;;EAEF;IACE;;EAVF;IACE;;EAEF;IACE;;EAEF;IACE;;EAEF;IACE;;EAVF;IACE;;EAEF;IACE;;EAEF;IACE;;EAEF;IACE;;EAVF;IACE;;EAEF;IACE;;EAEF;IACE;;EAEF;IACE;;EAVF;IACE;;EAEF;IACE;;EAEF;IACE;;EAEF;IACE;;EAVF;IACE;;EAEF;IACE;;EAEF;IACE;;EAEF;IACE;;EAVF;IACE;;EAEF;IACE;;EAEF;IACE;;EAEF;IACE;;EAVF;IACE;;EAEF;IACE;;EAEF;IACE;;EAEF;IACE;;;AAyBJ;EAnCE;IACE;;EAEF;IACE;;EAEF;IACE;;EAEF;IACE;;EAVF;IACE;;EAEF;IACE;;EAEF;IACE;;EAEF;IACE;;EAVF;IACE;;EAEF;IACE;;EAEF;IACE;;EAEF;IACE;;EAVF;IACE;;EAEF;IACE;;EAEF;IACE;;EAEF;IACE;;EAVF;IACE;;EAEF;IACE;;EAEF;IACE;;EAEF;IACE;;EAVF;IACE;;EAEF;IACE;;EAEF;IACE;;EAEF;IACE;;EAVF;IACE;;EAEF;IACE;;EAEF;IACE;;EAEF;IACE;;EAVF;IACE;;EAEF;IACE;;EAEF;IACE;;EAEF;IACE;;EAVF;IACE;;EAEF;IACE;;EAEF;IACE;;EAEF;IACE;;EAVF;IACE;;EAEF;IACE;;EAEF;IACE;;EAEF;IACE;;EAVF;IACE;;EAEF;IACE;;EAEF;IACE;;EAEF;IACE;;EAVF;IACE;;EAEF;IACE;;EAEF;IACE;;EAEF;IACE;;;ACXF;EAEI;;;AAFJ;EAEI;;;AAFJ;EAEI;;;AAFJ;EAEI;;;AAFJ;EAEI;;;AAFJ;EAEI;;;AAFJ;EAEI;;;AAFJ;EAEI;;;AAFJ;EAEI;;;AAFJ;EAEI;;;AAFJ;EAEI;;;AAFJ;EAEI;;;AAFJ;EAEI;;;AAFJ;EAEI;;;AAFJ;EAEI;;;AAFJ;EAEI;;;AAFJ;EAEI;;;AAFJ;EAEI;;;AAFJ;EAEI;;;AAFJ;EAEI;;;AAFJ;EAEI;;;AAFJ;EAEI;;;AAFJ;EAEI;;;AAFJ;EAEI;;;AAFJ;EAEI;;;AAFJ;EAEI;;;AAFJ;EAEI;;;AAFJ;EAEI;;;AAFJ;EAEI;;;AAFJ;EAEI;;;AAFJ;EAEI;;;AAFJ;EAEI;;;AAFJ;EAEI;;;AAFJ;EAEI;;;AAFJ;EAEI;;;AAFJ;EAEI;;;AAFJ;EAEI;;;AAFJ;EAEI;;;AAFJ;EAEI;;;AAFJ;EAEI;;;AAFJ;EAEI;;;AAFJ;EAEI;;;AAFJ;EAEI;;;AAFJ;EAEI;;;AAFJ;EAEI;;;AAFJ;EAEI;EAAA;;;AAFJ;EAEI;EAAA;;;AAFJ;EAEI;EAAA;;;AAFJ;EAEI;EAAA;;;AAFJ;EAEI;EAAA;;;AAFJ;EAEI;EAAA;;;AAFJ;EAEI;EAAA;;;AAFJ;EAEI;EAAA;;;AAFJ;EAEI;EAAA;;;AAFJ;EAEI;EAAA;;;AAFJ;EAEI;EAAA;;;AAFJ;EAEI;EAAA;;;AAFJ;EAEI;EAAA;;;AAFJ;EAEI;EAAA;;;AAFJ;EAEI;EAAA;;;AAFJ;EAEI;EAAA;;;AAFJ;EAEI;EAAA;;;AAFJ;EAEI;EAAA;;;AAFJ;EAEI;;;AAFJ;EAEI;;;AAFJ;EAEI;;;AAFJ;EAEI;;;AAFJ;EAEI;;;AAFJ;EAEI;;;AAFJ;EAEI;;;AAFJ;EAEI;;;AAFJ;EAEI;;;AAFJ;EAEI;;;AAFJ;EAEI;;;AAFJ;EAEI;;;AAFJ;EAEI;;;AAFJ;EAEI;;;AAFJ;EAEI;;;AAFJ;EAEI;;;AAFJ;EAEI;;;AAFJ;EAEI;;;AAFJ;EAEI;;;AAFJ;EAEI;;;AA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AGF;EACE;EACA;;AAEF;EACE;;AAKF;EACE;EACA;EACA;;AAGF;EACE;;AAGF;EACE;EACA;;AAGF;EACE;;AAEF;EACE;;AAvCF;EACE;EACA;EACA;;AAGF;EACE;;AAGF;EACE;EACA;;AAEF;EACE;;AAKF;EACE;EACA;EACA;;AAGF;EACE;;AAGF;EACE;EACA;;AAGF;EACE;;AAEF;EACE;;AAvCF;EACE;EACA;EACA;;AAGF;EACE;;AAGF;EACE;EACA;;AAEF;EACE;;AAKF;EACE;EACA;EACA;;AAGF;EACE;;AAGF;EACE;EACA;;AAGF;EACE;;AAEF;EACE;;AAvCF;EACE;EACA;EACA;;AAGF;EACE;;AAGF;EACE;EACA;;AAEF;EACE;;AAKF;EACE;EACA;EACA;;AAGF;EACE;;AAGF;EACE;EACA;;AAGF;EACE;;AAEF;EACE;;AAvCF;EACE;EACA;EACA;;AAGF;EACE;;AAGF;EACE;EACA;;AAEF;EACE;;AAKF;EACE;EACA;EACA;;AAGF;EACE;;AAGF;EACE;EACA;;AAGF;EACE;;AAEF;EACE;;AO7KR;EACE;EACA;EACA;EACA;EACA;EACA,OP6KU;EO5KV;EACA;;AAEA;EACE;EACA;EACA;EACA,OPyKS;;AOtKX;AAAA;EAEE;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;;AC9BJ;EACE;EACA;;AAGF;EACE;;AAGF;EACE;;AAGF;EACE;;AAGF;EACE;;AClBF;EACE;EACA;EACA;EACA,OTqLW;ESpLX;EACA;EACA;EACA;;AAEA;EACE,kBT4KW;;ASzKb;EACE;EACA,OTsKG;ESrKH;;AHRF;AAAA;EAEE;;AAWF;EACE;;AAGF;EACE;;AAGF;EACE;EACA;EACA;EACA;EACA;EACA;EACA;;AAEA;EACE;EACA;;AAIJ;AAAA;EAEE;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;;AIxDJ;EACE;EACA;EACA;EACA;EACA;EACA;;AAEA;EACE;;AAGF;EACE;;AAGF;EACE;EACA;EACA;;AAIJ;EACE;EACA;EACA;EACA;EACA;EACA;EACA;;AAEA;EACE;EACA;;AClCJ;EACE;;AAGF;EACE;EACA;EACA;;AAEA;EACE;;AAGF;EACE,YXyKW;;AWrKf;EACE;;AClBF;ECAE;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EDRA;;AAEA;EACE;;AAGF;EACE;;AAGF;EACE;EACA;EACA;;AAGF;EACE;;AAEA;EACE;;AAMN;EACE;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;;AAEA;EACE;EACA;EACA;;AAGF;EACE;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;;AAEA;EAGE;;AAGF;EACE;;AAGF;EACE;EACA;EACA;EACA;EACA;EACA;EACA;EACA;;AAEA;EACE;;AEzER;EACE;;AAGF;EACE;;AAGF;EACE;EACA;EACA;EACA;EACA,OAhBmB;EAiBnB,kBAlBgB;EAmBhB;EACA;EACA;EACA;;AAGE;EACE;;AAGF;EACE;;AAKF;EACE;;AAGF;EACE;;AAKF;EACE;;AAGF;EACE;;AAKF;EACE;;AAGF;EACE;;AAMJ;EACE;;AAIJ;EACE;;AAGF;EACE;;AAGF;EACE;;AAGF;EACE;IACE;IACA;;EAGF;IACE;IACA;;;AAIJ;EACE;IACE;IACA;;EAGF;IACE;IACA;;;AAIJ;EACE;IACE;IACA;;EAGF;IACE;IACA;;;AAIJ;EACE;IACE;IACA;;EAGF;IACE;IACA;;;ACxFA;ETqBA","file":"cove-main.css"}
|
package/helpers/DataTransform.ts
CHANGED
|
@@ -150,7 +150,8 @@ export class DataTransform {
|
|
|
150
150
|
}
|
|
151
151
|
})
|
|
152
152
|
description.valueKeysTallSupport.forEach((valueKey, i) => {
|
|
153
|
-
|
|
153
|
+
if(row[description.seriesKey])
|
|
154
|
+
standardizedMapped[uniqueKey][i === 0 ? row[description.seriesKey] : (row[description.seriesKey] + '-' + valueKey)] = row[valueKey]
|
|
154
155
|
})
|
|
155
156
|
})
|
|
156
157
|
|
|
@@ -72,9 +72,9 @@ const handleVizParents = (filter: VizFilter, data: any[] | MapData, filtersLooku
|
|
|
72
72
|
let filteredData = Array.isArray(data) ? data : Object.values(data).flat(1)
|
|
73
73
|
filter.parents.forEach(parentKey => {
|
|
74
74
|
const parent = filtersLookup[parentKey]
|
|
75
|
-
if (parent
|
|
75
|
+
if (parent?.filterStyle === 'nested-dropdown') {
|
|
76
76
|
const { subGrouping } = parent as VizFilter
|
|
77
|
-
if (subGrouping
|
|
77
|
+
if (subGrouping?.active) {
|
|
78
78
|
filteredData = filteredData.filter(d => {
|
|
79
79
|
const matchingParentGroup = parent.active == d[parent.columnName]
|
|
80
80
|
const matchingSubGroup = subGrouping.active == d[subGrouping.columnName]
|
|
@@ -122,7 +122,12 @@ export const addValuesToFilters = (filters: VizFilter[], data: any[] | MapData):
|
|
|
122
122
|
}
|
|
123
123
|
}
|
|
124
124
|
if (filterCopy.subGrouping) {
|
|
125
|
-
const
|
|
125
|
+
const groupName = filterCopy.active as string
|
|
126
|
+
const subGroupingFilter = {
|
|
127
|
+
...filterCopy.subGrouping,
|
|
128
|
+
values: filterCopy.subGrouping.valuesLookup[groupName].values
|
|
129
|
+
}
|
|
130
|
+
const queryStringFilterValue = getQueryStringFilterValue(subGroupingFilter)
|
|
126
131
|
const groupActive = filterCopy.active || filterCopy.values[0]
|
|
127
132
|
const defaultValue = filterCopy.subGrouping.valuesLookup[groupActive as string].values[0]
|
|
128
133
|
// if the value doesn't exist in the subGrouping then return the default
|
|
@@ -19,7 +19,20 @@ const abbreviateNumber = num => {
|
|
|
19
19
|
}
|
|
20
20
|
|
|
21
21
|
// Format numeric data based on settings in config
|
|
22
|
-
|
|
22
|
+
type formatNumberProps = {
|
|
23
|
+
num: number | string
|
|
24
|
+
axis: 'left' | 'right' | 'bottom'
|
|
25
|
+
shouldAbbreviate?: boolean
|
|
26
|
+
config: CdcChartConfig
|
|
27
|
+
addColParams: {
|
|
28
|
+
addColCommas: boolean
|
|
29
|
+
addColRoundTo: number
|
|
30
|
+
addColPrefix: string
|
|
31
|
+
addColSuffix: string
|
|
32
|
+
}
|
|
33
|
+
}
|
|
34
|
+
|
|
35
|
+
const formatNumber = (num, axis, shouldAbbreviate = false, config = null, addColParams = null): string | number => {
|
|
23
36
|
if (!config) console.error('no config found in formatNumber')
|
|
24
37
|
// if num is NaN return num
|
|
25
38
|
if (isNaN(num) || !num) return num
|
|
@@ -30,14 +43,29 @@ const formatNumber = (num, axis, shouldAbbreviate = false, config = null, addCol
|
|
|
30
43
|
if (isNegative) {
|
|
31
44
|
num = Math.abs(num)
|
|
32
45
|
}
|
|
33
|
-
|
|
46
|
+
|
|
34
47
|
// destructure dataFormat values
|
|
35
48
|
let {
|
|
36
|
-
dataFormat: {
|
|
49
|
+
dataFormat: {
|
|
50
|
+
abbreviated,
|
|
51
|
+
bottomAbbreviated,
|
|
52
|
+
bottomPrefix,
|
|
53
|
+
bottomRoundTo,
|
|
54
|
+
bottomSuffix,
|
|
55
|
+
bottomComas,
|
|
56
|
+
commas,
|
|
57
|
+
onlyShowTopPrefixSuffix,
|
|
58
|
+
prefix,
|
|
59
|
+
rightPrefix,
|
|
60
|
+
rightRoundTo,
|
|
61
|
+
rightSuffix,
|
|
62
|
+
roundTo,
|
|
63
|
+
suffix
|
|
64
|
+
}
|
|
37
65
|
} = config
|
|
38
66
|
|
|
39
67
|
// destructure Additional Col dataformat values
|
|
40
|
-
const { addColCommas, addColRoundTo, addColPrefix, addColSuffix } = addColParams
|
|
68
|
+
const { addColCommas, addColRoundTo, addColPrefix, addColSuffix } = addColParams || {}
|
|
41
69
|
|
|
42
70
|
// check if value contains comma and remove it. later will add comma below.
|
|
43
71
|
if (String(num).indexOf(',') !== -1) num = num.replaceAll(',', '')
|
|
@@ -108,7 +136,10 @@ const formatNumber = (num, axis, shouldAbbreviate = false, config = null, addCol
|
|
|
108
136
|
// Edge case for small numbers with decimals
|
|
109
137
|
// - if roundTo undefined which means it is blank, then do not round
|
|
110
138
|
|
|
111
|
-
if (
|
|
139
|
+
if (
|
|
140
|
+
(axis === 'left' && commas && abbreviated && shouldAbbreviate) ||
|
|
141
|
+
(axis === 'bottom' && commas && abbreviated && shouldAbbreviate)
|
|
142
|
+
) {
|
|
112
143
|
num = num // eslint-disable-line
|
|
113
144
|
} else {
|
|
114
145
|
num = num.toLocaleString('en-US', stringFormattingOptions)
|
|
@@ -123,38 +154,42 @@ const formatNumber = (num, axis, shouldAbbreviate = false, config = null, addCol
|
|
|
123
154
|
num = abbreviateNumber(parseFloat(num))
|
|
124
155
|
}
|
|
125
156
|
|
|
126
|
-
if (
|
|
127
|
-
|
|
128
|
-
|
|
129
|
-
|
|
130
|
-
|
|
157
|
+
if (!onlyShowTopPrefixSuffix) {
|
|
158
|
+
if (addColPrefix !== undefined && axis === 'left') {
|
|
159
|
+
result = addColPrefix + result
|
|
160
|
+
} else {
|
|
161
|
+
if (prefix && axis === 'left') {
|
|
162
|
+
result = prefix + result
|
|
163
|
+
}
|
|
131
164
|
}
|
|
132
|
-
}
|
|
133
165
|
|
|
134
|
-
|
|
135
|
-
|
|
136
|
-
|
|
166
|
+
if (rightPrefix && axis === 'right') {
|
|
167
|
+
result += rightPrefix
|
|
168
|
+
}
|
|
137
169
|
|
|
138
|
-
|
|
139
|
-
|
|
170
|
+
if (bottomPrefix && axis === 'bottom') {
|
|
171
|
+
result += bottomPrefix
|
|
172
|
+
}
|
|
140
173
|
}
|
|
141
174
|
|
|
142
175
|
result += num
|
|
143
176
|
|
|
144
|
-
if (
|
|
145
|
-
|
|
146
|
-
|
|
147
|
-
|
|
148
|
-
|
|
177
|
+
if (!onlyShowTopPrefixSuffix) {
|
|
178
|
+
if (addColSuffix !== undefined && axis === 'left') {
|
|
179
|
+
result += addColSuffix
|
|
180
|
+
} else {
|
|
181
|
+
if (suffix && axis === 'left') {
|
|
182
|
+
result += suffix
|
|
183
|
+
}
|
|
149
184
|
}
|
|
150
|
-
}
|
|
151
185
|
|
|
152
|
-
|
|
153
|
-
|
|
154
|
-
|
|
186
|
+
if (rightSuffix && axis === 'right') {
|
|
187
|
+
result += rightSuffix
|
|
188
|
+
}
|
|
155
189
|
|
|
156
|
-
|
|
157
|
-
|
|
190
|
+
if (bottomSuffix && axis === 'bottom') {
|
|
191
|
+
result += bottomSuffix
|
|
192
|
+
}
|
|
158
193
|
}
|
|
159
194
|
if (isNegative) {
|
|
160
195
|
result = '-' + result
|
|
@@ -1,19 +1,17 @@
|
|
|
1
1
|
// If config key names or position in the config have been changed with a version change,
|
|
2
2
|
// process those config entries and format old values into new
|
|
3
|
+
|
|
4
|
+
import { UpdateFunction } from 'json-edit-react'
|
|
5
|
+
|
|
3
6
|
import update_4_24_4 from './ver/4.24.4'
|
|
4
7
|
import update_4_24_3 from './ver/4.24.3'
|
|
5
8
|
import update_4_24_5 from './ver/4.24.5'
|
|
6
9
|
import update_4_24_7 from './ver/4.24.7'
|
|
7
10
|
import update_4_24_9 from './ver/4.24.9'
|
|
8
11
|
import versionNeedsUpdate from './ver/versionNeedsUpdate'
|
|
9
|
-
import
|
|
12
|
+
import update_4_24_10 from './ver/4.24.10'
|
|
10
13
|
|
|
11
14
|
export const coveUpdateWorker = config => {
|
|
12
|
-
if (config.multiDashboards) {
|
|
13
|
-
config.multiDashboards.forEach((dashboard, index) => {
|
|
14
|
-
config.multiDashboards[index] = coveUpdateWorker(dashboard)
|
|
15
|
-
})
|
|
16
|
-
}
|
|
17
15
|
let genConfig = config
|
|
18
16
|
|
|
19
17
|
const versions = [
|
|
@@ -21,7 +19,8 @@ export const coveUpdateWorker = config => {
|
|
|
21
19
|
['4.24.4', update_4_24_4],
|
|
22
20
|
['4.24.5', update_4_24_5],
|
|
23
21
|
['4.24.7', update_4_24_7, true],
|
|
24
|
-
['4.24.9', update_4_24_9]
|
|
22
|
+
['4.24.9', update_4_24_9],
|
|
23
|
+
['4.24.10', update_4_24_10]
|
|
25
24
|
]
|
|
26
25
|
|
|
27
26
|
versions.forEach(([version, updateFunction, alwaysRun]: [string, UpdateFunction, boolean?]) => {
|
|
@@ -1,44 +1,39 @@
|
|
|
1
1
|
import Papa from 'papaparse'
|
|
2
|
-
import { isSolrCsv
|
|
2
|
+
import { isSolrCsv } from '@cdc/core/helpers/isSolr'
|
|
3
3
|
|
|
4
|
-
export default
|
|
4
|
+
export default function fetchRemoteData(_url) {
|
|
5
5
|
let url = new URL(_url, window.location.origin)
|
|
6
|
-
|
|
7
|
-
|
|
8
|
-
|
|
9
|
-
const ext = regex.exec(path)[1]
|
|
6
|
+
const path = url.pathname
|
|
7
|
+
const regex = /(?:\.([^.]+))?$/
|
|
8
|
+
const ext = regex.exec(path)[1]
|
|
10
9
|
|
|
11
|
-
|
|
12
|
-
|
|
13
|
-
|
|
14
|
-
|
|
15
|
-
|
|
16
|
-
|
|
17
|
-
|
|
18
|
-
|
|
19
|
-
|
|
20
|
-
|
|
21
|
-
|
|
22
|
-
|
|
23
|
-
|
|
24
|
-
|
|
25
|
-
|
|
26
|
-
|
|
27
|
-
|
|
28
|
-
|
|
29
|
-
})
|
|
30
|
-
return parsedCsv.data
|
|
10
|
+
if ('csv' === ext || isSolrCsv(_url)) {
|
|
11
|
+
return fetch(url.href)
|
|
12
|
+
.then(response => response.text())
|
|
13
|
+
.then(responseText => {
|
|
14
|
+
// for every comma NOT inside quotes, replace with a pipe delimiter
|
|
15
|
+
// - this will let commas inside the quotes not be parsed as a new column
|
|
16
|
+
// - Limitation: if a delimiter other than comma is used in the csv this will break
|
|
17
|
+
// Examples of other delimiters that would break: tab
|
|
18
|
+
responseText = responseText.replace(/(".*?")|,/g, (...m) => m[1] || '|')
|
|
19
|
+
// now strip the double quotes
|
|
20
|
+
responseText = responseText.replace(/["]+/g, '')
|
|
21
|
+
const parsedCsv = Papa.parse(responseText, {
|
|
22
|
+
//quotes: "true", // dont need these
|
|
23
|
+
//quoteChar: "'", // has no effect that I can tell
|
|
24
|
+
header: true,
|
|
25
|
+
skipEmptyLines: true,
|
|
26
|
+
delimiter: '|', // we are using pipe symbol as delimiter so setting this explicitly for Papa.parse
|
|
27
|
+
dynamicTyping: false
|
|
31
28
|
})
|
|
32
|
-
|
|
33
|
-
|
|
34
|
-
|
|
35
|
-
|
|
36
|
-
|
|
37
|
-
|
|
38
|
-
|
|
39
|
-
return response
|
|
40
|
-
}
|
|
41
|
-
console.error(`Cannot parse URL: ${url}`)
|
|
42
|
-
}
|
|
29
|
+
return parsedCsv.data
|
|
30
|
+
})
|
|
31
|
+
} else {
|
|
32
|
+
return fetch(isSolrCsv(_url) ? _url : url.href).then(response => {
|
|
33
|
+
if (!response.ok) {
|
|
34
|
+
return Promise.reject(response)
|
|
35
|
+
}
|
|
36
|
+
return response.json()
|
|
37
|
+
})
|
|
43
38
|
}
|
|
44
39
|
}
|
|
@@ -13,6 +13,7 @@ const cleanDashboardFootnotes = (config: DashboardConfig) => {
|
|
|
13
13
|
const { dataKey, staticFootnotes } = config.visualizations[row.footnotesId] as Footnotes
|
|
14
14
|
if (!dataKey && !staticFootnotes?.length) {
|
|
15
15
|
delete config.visualizations[row.footnotesId]
|
|
16
|
+
delete row.footnotesId
|
|
16
17
|
} else {
|
|
17
18
|
footnoteIds.push(row.footnotesId)
|
|
18
19
|
}
|
|
@@ -42,7 +43,13 @@ const cleanDashboardData = (config: DashboardConfig) => {
|
|
|
42
43
|
}
|
|
43
44
|
if (config.visualizations) {
|
|
44
45
|
Object.keys(config.visualizations).forEach(vizKey => {
|
|
45
|
-
config.visualizations[vizKey] = _.omit(config.visualizations[vizKey], [
|
|
46
|
+
config.visualizations[vizKey] = _.omit(config.visualizations[vizKey], [
|
|
47
|
+
'runtime',
|
|
48
|
+
'formattedData',
|
|
49
|
+
'data',
|
|
50
|
+
'editing',
|
|
51
|
+
'originalFormattedData'
|
|
52
|
+
])
|
|
46
53
|
})
|
|
47
54
|
}
|
|
48
55
|
if (config.rows) {
|
|
@@ -65,6 +72,14 @@ const cleanSharedFilters = (config: DashboardConfig) => {
|
|
|
65
72
|
}
|
|
66
73
|
}
|
|
67
74
|
|
|
75
|
+
const removeRuntimeDataURLs = (config: DashboardConfig) => {
|
|
76
|
+
if (config.datasets) {
|
|
77
|
+
Object.keys(config.datasets).forEach(datasetKey => {
|
|
78
|
+
delete config.datasets[datasetKey].runtimeDataUrl
|
|
79
|
+
})
|
|
80
|
+
}
|
|
81
|
+
}
|
|
82
|
+
|
|
68
83
|
export const formatConfigBeforeSave = configToStrip => {
|
|
69
84
|
const strippedConfig = _.cloneDeep(configToStrip)
|
|
70
85
|
if (strippedConfig.type === 'dashboard') {
|
|
@@ -83,6 +98,7 @@ export const formatConfigBeforeSave = configToStrip => {
|
|
|
83
98
|
cleanDashboardData(strippedConfig)
|
|
84
99
|
cleanSharedFilters(strippedConfig)
|
|
85
100
|
cleanDashboardFootnotes(strippedConfig)
|
|
101
|
+
removeRuntimeDataURLs(strippedConfig)
|
|
86
102
|
} else {
|
|
87
103
|
delete strippedConfig.runtime
|
|
88
104
|
delete strippedConfig.formattedData
|
|
@@ -1,5 +1,15 @@
|
|
|
1
1
|
import _ from 'lodash'
|
|
2
2
|
|
|
3
|
+
const strip = (paramVal: string) => {
|
|
4
|
+
return paramVal.replace(/"/g, '')
|
|
5
|
+
}
|
|
6
|
+
|
|
7
|
+
const isNumber = (value: string) => {
|
|
8
|
+
const hasLetters = value.match(/[a-zA-Z]/)
|
|
9
|
+
if (hasLetters) return false
|
|
10
|
+
return !isNaN(parseInt(value))
|
|
11
|
+
}
|
|
12
|
+
|
|
3
13
|
export const gatherQueryParams = (baseEndpoint: string, params: { key: string; value: string }[]) => {
|
|
4
14
|
const baseEndpointHasQueryParams = baseEndpoint.includes('?')
|
|
5
15
|
return params
|
|
@@ -7,8 +17,8 @@ export const gatherQueryParams = (baseEndpoint: string, params: { key: string; v
|
|
|
7
17
|
.map(({ key, value }, i) => {
|
|
8
18
|
const leadingCharacter = i === 0 && !baseEndpointHasQueryParams ? '?' : '&'
|
|
9
19
|
const isStatementParam = key.match(/\$.*/)
|
|
10
|
-
if (
|
|
11
|
-
return leadingCharacter + key + '=' + `"${value}"`
|
|
20
|
+
if (isNumber(value) || isStatementParam) return leadingCharacter + key + '=' + value
|
|
21
|
+
return leadingCharacter + key + '=' + `"${strip(value)}"`
|
|
12
22
|
})
|
|
13
23
|
.join('')
|
|
14
24
|
}
|
package/helpers/pivotData.ts
CHANGED
|
@@ -1,18 +1,59 @@
|
|
|
1
1
|
import _ from 'lodash'
|
|
2
2
|
|
|
3
|
+
const getKeyFromRow = (row: Record<string, any>, columns: string[]) => {
|
|
4
|
+
return columns.map(column => row[column] || '').join(':')
|
|
5
|
+
}
|
|
6
|
+
|
|
7
|
+
const getColumns = (data: Record<string, any>[], columnName: string, pivot: string[]) => {
|
|
8
|
+
const excludedColumns = [columnName, ...pivot]
|
|
9
|
+
return _.uniq(data.flatMap(row => Object.keys(row))).filter(col => !excludedColumns.includes(col))
|
|
10
|
+
}
|
|
11
|
+
|
|
3
12
|
/** columnName is the column you'd like to select data values from to show as column headers.
|
|
4
13
|
* Pivot is the value column who's data you'd like to show under those respective columns*/
|
|
5
|
-
export const pivotData = (data: Record<string, any>[], columnName: string, pivot: string) => {
|
|
6
|
-
const
|
|
7
|
-
const
|
|
8
|
-
|
|
9
|
-
|
|
10
|
-
|
|
11
|
-
|
|
12
|
-
|
|
13
|
-
|
|
14
|
-
|
|
14
|
+
export const pivotData = (data: Record<string, any>[], columnName: string, pivot: string[]): Record<string, any>[] => {
|
|
15
|
+
const columns = getColumns(data, columnName, pivot)
|
|
16
|
+
const newColumns = {}
|
|
17
|
+
// there should be one row for every aggregate row
|
|
18
|
+
const aggregateRows = data.reduce((acc, row) => {
|
|
19
|
+
const key = getKeyFromRow(row, columns)
|
|
20
|
+
if (!acc[key]) {
|
|
21
|
+
acc[key] = {}
|
|
22
|
+
}
|
|
23
|
+
return acc
|
|
24
|
+
}, {})
|
|
25
|
+
|
|
26
|
+
data.forEach(row => {
|
|
27
|
+
const key = getKeyFromRow(row, columns)
|
|
28
|
+
if (pivot.length > 1) {
|
|
29
|
+
pivot.forEach(pivotColumn => {
|
|
30
|
+
const toAdd = _.omit(row, [columnName, ...pivot])
|
|
31
|
+
aggregateRows[key][pivotColumn] = {
|
|
32
|
+
...aggregateRows[key][pivotColumn],
|
|
33
|
+
...toAdd,
|
|
34
|
+
[row[columnName]]: row[pivotColumn]
|
|
35
|
+
}
|
|
36
|
+
})
|
|
37
|
+
} else {
|
|
38
|
+
const _pivot = pivot[0]
|
|
39
|
+
const toAdd = _.omit(row, [columnName, ...pivot])
|
|
40
|
+
aggregateRows[key] = {
|
|
41
|
+
...aggregateRows[key],
|
|
42
|
+
...toAdd,
|
|
43
|
+
[row[columnName]]: row[_pivot]
|
|
44
|
+
}
|
|
45
|
+
}
|
|
46
|
+
|
|
47
|
+
newColumns[row[columnName]] = ''
|
|
48
|
+
})
|
|
49
|
+
|
|
50
|
+
if (pivot.length > 1) {
|
|
51
|
+
return Object.keys(aggregateRows).flatMap(aggregateKey => {
|
|
52
|
+
return Object.keys(aggregateRows[aggregateKey]).map(pivotColumn => ({
|
|
53
|
+
pivotColumn,
|
|
54
|
+
...aggregateRows[aggregateKey][pivotColumn]
|
|
55
|
+
}))
|
|
15
56
|
})
|
|
16
57
|
}
|
|
17
|
-
return
|
|
58
|
+
return Object.values(aggregateRows).map(row => ({ ...newColumns, ...row }))
|
|
18
59
|
}
|
|
@@ -27,3 +27,9 @@ export function updateQueryString(queryParams) {
|
|
|
27
27
|
.join('&')}`
|
|
28
28
|
window.history.pushState({ path: updateUrl }, '', updateUrl)
|
|
29
29
|
}
|
|
30
|
+
|
|
31
|
+
export function updateQueryParam(key: string, value: number | string) {
|
|
32
|
+
const queryParams = getQueryParams()
|
|
33
|
+
queryParams[key] = value
|
|
34
|
+
updateQueryString(queryParams)
|
|
35
|
+
}
|
|
@@ -0,0 +1,34 @@
|
|
|
1
|
+
import { gatherQueryParams } from '../gatherQueryParams'
|
|
2
|
+
import { expect, describe, it } from 'vitest'
|
|
3
|
+
|
|
4
|
+
describe('invertValue', () => {
|
|
5
|
+
it('should return the inverted value if xScale has an invert function', () => {
|
|
6
|
+
const _params = [
|
|
7
|
+
{ key: 'YearQuarter', value: '2020-Q3' },
|
|
8
|
+
{ key: 'abc', value: 'def' }
|
|
9
|
+
]
|
|
10
|
+
|
|
11
|
+
const result = gatherQueryParams('', _params)
|
|
12
|
+
expect(result).toBe('?YearQuarter="2020-Q3"&abc="def"')
|
|
13
|
+
})
|
|
14
|
+
})
|
|
15
|
+
|
|
16
|
+
describe('gatherQueryParams', () => {
|
|
17
|
+
it('should return a string of query params', () => {
|
|
18
|
+
const baseEndpoint = 'https://example.com'
|
|
19
|
+
const params = [
|
|
20
|
+
{ key: 'key1', value: 'value1' },
|
|
21
|
+
{ key: 'key2', value: 'value2' }
|
|
22
|
+
]
|
|
23
|
+
expect(gatherQueryParams(baseEndpoint, params)).toEqual('?key1="value1"&key2="value2"')
|
|
24
|
+
})
|
|
25
|
+
|
|
26
|
+
it('should not wrap strings in extra Quotes', () => {
|
|
27
|
+
const baseEndpoint = 'https://example.com'
|
|
28
|
+
const params = [
|
|
29
|
+
{ key: 'key1', value: 'value1' },
|
|
30
|
+
{ key: 'key2', value: '"value2"' }
|
|
31
|
+
]
|
|
32
|
+
expect(gatherQueryParams(baseEndpoint, params)).toEqual('?key1="value1"&key2="value2"')
|
|
33
|
+
})
|
|
34
|
+
})
|
|
@@ -0,0 +1,50 @@
|
|
|
1
|
+
import { describe, it, expect } from 'vitest'
|
|
2
|
+
|
|
3
|
+
import { pivotData } from '../pivotData'
|
|
4
|
+
|
|
5
|
+
describe('pivotData', () => {
|
|
6
|
+
const data = [
|
|
7
|
+
{ name: 'John', age: 25, city: 'New York' },
|
|
8
|
+
{ name: 'Jane', age: 30, city: 'San Francisco' },
|
|
9
|
+
{ name: 'Jane', age: 27, city: 'New York' },
|
|
10
|
+
{ name: 'John', age: 31, city: 'San Francisco' }
|
|
11
|
+
]
|
|
12
|
+
it('should pivot data correctly', () => {
|
|
13
|
+
const result = pivotData(data, 'name', ['age'])
|
|
14
|
+
expect(result).toEqual([
|
|
15
|
+
{ city: 'New York', John: 25, Jane: 27 },
|
|
16
|
+
{ city: 'San Francisco', Jane: 30, John: 31 }
|
|
17
|
+
])
|
|
18
|
+
})
|
|
19
|
+
it('should fill in columns with no data with empty strings', () => {
|
|
20
|
+
const data2 = [data[0], data[1]]
|
|
21
|
+
const result = pivotData(data2, 'name', ['age'])
|
|
22
|
+
|
|
23
|
+
expect(result).toEqual([
|
|
24
|
+
{ city: 'New York', John: 25, Jane: '' },
|
|
25
|
+
{ city: 'San Francisco', Jane: 30, John: '' }
|
|
26
|
+
])
|
|
27
|
+
|
|
28
|
+
const data3 = [data[0], data[1], data[2]]
|
|
29
|
+
const result2 = pivotData(data3, 'name', ['age'])
|
|
30
|
+
expect(result2).toEqual([
|
|
31
|
+
{ city: 'New York', John: 25, Jane: 27 },
|
|
32
|
+
{ city: 'San Francisco', Jane: 30, John: '' }
|
|
33
|
+
])
|
|
34
|
+
})
|
|
35
|
+
it('should be able to pivot more than one column', () => {
|
|
36
|
+
const data = [
|
|
37
|
+
{ name: 'John', age: 25, color: 'blue', city: 'New York' },
|
|
38
|
+
{ name: 'Jane', age: 27, color: 'red', city: 'New York' },
|
|
39
|
+
{ name: 'Jane', age: 30, color: 'yellow', city: 'San Francisco' },
|
|
40
|
+
{ name: 'John', age: 31, color: 'green', city: 'San Francisco' }
|
|
41
|
+
]
|
|
42
|
+
const result = pivotData(data, 'name', ['age', 'color'])
|
|
43
|
+
expect(result).toEqual([
|
|
44
|
+
{ city: 'New York', John: 25, Jane: 27, pivotColumn: 'age' },
|
|
45
|
+
{ city: 'New York', John: 'blue', Jane: 'red', pivotColumn: 'color' },
|
|
46
|
+
{ city: 'San Francisco', Jane: 30, John: 31, pivotColumn: 'age' },
|
|
47
|
+
{ city: 'San Francisco', Jane: 'yellow', John: 'green', pivotColumn: 'color' }
|
|
48
|
+
])
|
|
49
|
+
})
|
|
50
|
+
})
|