@milaboratories/miplots4 1.0.166 → 1.0.168
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/dist/_virtual/index10.js +5 -2
- package/dist/_virtual/index10.js.map +1 -1
- package/dist/_virtual/index5.js +2 -5
- package/dist/_virtual/index5.js.map +1 -1
- package/dist/_virtual/index6.js +4 -4
- package/dist/_virtual/index7.js +1 -1
- package/dist/_virtual/index8.js +4 -4
- package/dist/_virtual/index9.js +3 -3
- package/dist/bubble/components/ChartsGroup.js +21 -21
- package/dist/bubble/components/ChartsGroup.js.map +1 -1
- package/dist/common/Tooltip.js +2 -2
- package/dist/common/Tooltip.js.map +1 -1
- package/dist/discrete/index.d.ts +2 -0
- package/dist/discrete/index.js +127 -123
- package/dist/discrete/index.js.map +1 -1
- package/dist/discrete/layers/stats/pValueCalculation.js +5 -5
- package/dist/discrete/utils/getFacetLabels.d.ts +3 -0
- package/dist/discrete/utils/getFacetLabels.js +16 -0
- package/dist/discrete/utils/getFacetLabels.js.map +1 -0
- package/dist/heatmap/components/ChartsGroup.js +9 -9
- package/dist/heatmap/components/ChartsGroup.js.map +1 -1
- package/dist/heatmap/components/tooltipUtils.js +15 -15
- package/dist/heatmap/components/tooltipUtils.js.map +1 -1
- package/dist/heatmap/fillCellsData.js +88 -85
- package/dist/heatmap/fillCellsData.js.map +1 -1
- package/dist/histogram/getHistogramData.js +42 -41
- package/dist/histogram/getHistogramData.js.map +1 -1
- package/dist/histogram/index.d.ts +1 -0
- package/dist/histogram/index.js +59 -57
- package/dist/histogram/index.js.map +1 -1
- package/dist/node_modules/.pnpm/scheduler@0.23.2/node_modules/scheduler/index.js +1 -1
- package/dist/scatterplot/ScatterplotSettingsImpl.d.ts +8 -0
- package/dist/scatterplot/ScatterplotSettingsImpl.js +22 -20
- package/dist/scatterplot/ScatterplotSettingsImpl.js.map +1 -1
- package/dist/scatterplot/index.d.ts +1 -0
- package/dist/scatterplot/index.js +94 -92
- package/dist/scatterplot/index.js.map +1 -1
- package/dist/types/scatterplot.d.ts +176 -0
- package/dist/types/scatterplot.js +63 -51
- package/dist/types/scatterplot.js.map +1 -1
- package/package.json +2 -2
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"index.js","sources":["../../src/histogram/index.ts"],"sourcesContent":["import {\n intersection\n} from 'lodash';\nimport { renderToString } from 'react-dom/server';\nimport { AbstractChart } from '../AbstractChart';\nimport type { DataFrame } from '../DataFrame';\nimport type { ErrorInfoHistogramGroups} from '../types';\nimport { type Category, type ColumnName, type ErrorInfoFacets, getUnknownErrorInfo, type HistogramEventHandlers, type HistogramSettings, isErrorInfo } from '../types';\nimport { getKeysCombinations } from '../utils/getKeysCombination';\nimport ChartRenderer from './ChartRenderer';\nimport type { HistogramLegendInfo } from './components/types';\nimport type { GroupedHistogramData } from './getHistogramData';\nimport { createHistogramDataByFacets } from './getHistogramData';\nimport { HistogramSettingsImpl } from './HistogramSettingsImpl';\nimport { MAX_FACETS_COUNT, MAX_GROUPS_COUNT } from '../constants';\n\nfunction getLegendInfo(\n data: DataFrame,\n grouping: ColumnName[],\n inheritedAes: HistogramSettingsImpl['inheritedAes']\n): HistogramLegendInfo {\n return grouping.reduce((res: HistogramLegendInfo, column) => {\n const categories = data.getColumnCategories(column.value, false);\n const getValueLabel = (category: Category) => (column.valueLabels\n ? String(data.getColumnValue(\n column.valueLabels,\n data.getColumnCategoryRowIndex(column.value, category)\n ))\n : category\n );\n const labels = categories.reduce((res: Record<string, string>, category) => {\n res[category] = getValueLabel(category);\n return res;\n }, {});\n res[column.value] = {\n values: categories.sort((a, b) => labels[a].localeCompare(labels[b], 'en', {numeric: true})),\n aesMap: inheritedAes[column.value],\n labels,\n };\n return res;\n }, {});\n}\n\nexport class ChartHistogram extends AbstractChart {\n settings: HistogramSettingsImpl;\n chartRenderer = new ChartRenderer();\n\n onTooltipHintSwitch: (v:boolean) => void = () => undefined;\n calculatedData: {\n facetKeys: string[];\n facetKeysCombinations: string[][];\n histogramDataByFacets: Record<string, GroupedHistogramData>\n legendInfo: HistogramLegendInfo\n } | null = null;\n\n constructor(data: DataFrame, settings: HistogramSettings, eventHandlers?: HistogramEventHandlers) {\n super(data, settings);\n\n this.settings = new HistogramSettingsImpl(settings);\n if (eventHandlers) {\n this.onTooltipHintSwitch = eventHandlers[0];\n }\n }\n\n mount(node: HTMLElement) {\n try {\n this.chartRenderer.init(node);\n this._updateData();\n this._updateChart();\n this.hasError = false;\n this.errorInfo = null;\n } catch (err) {\n this.hasError = true;\n if (err instanceof Error) {\n this.errorInfo = isErrorInfo(err.cause) ? err.cause : getUnknownErrorInfo(err);\n this.chartRenderer.renderError(err.message as string);\n console.error(err);\n }\n }\n }\n\n unmount() {\n this.chartRenderer.clear();\n }\n\n updateSettingsAndData(data: DataFrame, settings: HistogramSettings) {\n try {\n const previousSettings = this.settings;\n const previousData = this.data;\n this.settings = new HistogramSettingsImpl(settings);\n this.data = data;\n if (\n this._needUpdateCalculatedDataBySettings(previousSettings, this.settings) ||\n this._needUpdateCalculatedDataByData(previousData, this.data)\n ) {\n this._updateData();\n } else {\n this._updateAesInData();\n }\n this._updateChart();\n this.hasError = false;\n this.errorInfo = null;\n } catch (err) {\n this.hasError = true;\n if (err instanceof Error) {\n this.errorInfo = isErrorInfo(err.cause) ? err.cause : getUnknownErrorInfo(err);\n this.chartRenderer.renderError(err.message as string);\n console.error(err);\n }\n }\n }\n\n updateChartState(_field: string, _value: unknown) {\n console.warn('no chart state for histogram');\n }\n\n export(): string {\n this._updateChart();\n return renderToString(this.chartRenderer.component);\n }\n\n _needUpdateCalculatedDataBySettings(prevSettings: HistogramSettingsImpl, settings: HistogramSettingsImpl) {\n return (\n prevSettings.valueColumn.value !== settings.valueColumn.value ||\n prevSettings.facetBy.some((el, idx) => el.value !== settings.facetBy[idx]?.value) ||\n prevSettings.grouping?.value !== settings.grouping?.value ||\n prevSettings.layers.length !== settings.layers.length ||\n prevSettings.layers.some((l, idx) => l.type !== settings.layers[idx].type) ||\n prevSettings.binsCount !== settings.binsCount ||\n prevSettings.chartSettings.xAxis.scale !== settings.chartSettings.xAxis.scale ||\n prevSettings.groupingOrder?.some((key, idx) => key !== settings.groupingOrder?.[idx]) ||\n settings.groupingOrder?.some((key, idx) => key !== prevSettings.groupingOrder?.[idx])\n );\n }\n\n _needUpdateCalculatedDataByData(prevData: DataFrame, data: DataFrame) {\n const prevKeys = Object.keys(prevData.data);\n const keys = Object.keys(data.data);\n return (\n prevData.id !== data.id ||\n prevKeys.length !== keys.length ||\n prevKeys.some(key => prevData.data[key].length !== data.data[key]?.length)\n );\n }\n\n _updateData() {\n const {valueColumn, facetBy, grouping, binsCount, chartSettings, inheritedAes, groupingOrder} = this.settings;\n\n const facetKeysLists = facetBy.map(column => this.data.getColumnCategories(column.value));\n const facetKeysCombinations = facetKeysLists.length ? getKeysCombinations([...facetKeysLists]) : [['null']];\n\n if (facetKeysCombinations.length > MAX_FACETS_COUNT) {\n const errorInfo: ErrorInfoFacets = {\n type: 'tooManyFacets',\n info: {count: facetKeysCombinations.length, maxCount: MAX_FACETS_COUNT}\n };\n throw Error(errorInfo.type, {cause: errorInfo});\n }\n\n const facetGroupingValues = facetBy.map(column => column.value) ?? null;\n const groupingValues = grouping ? [grouping.value] : [];\n let groupingKeys = grouping ? this.data.getColumnCategories(grouping.value) : ['null'];\n if (groupingKeys.length > MAX_GROUPS_COUNT) {\n const errorInfo: ErrorInfoHistogramGroups = {\n type: 'tooManyHistogramGroups',\n info: {count: groupingKeys.length, maxCount: MAX_GROUPS_COUNT}\n };\n throw Error(errorInfo.type, {cause: errorInfo});\n }\n if (groupingOrder) {\n groupingKeys = intersection(groupingOrder, groupingKeys);\n }\n\n this.data.setGrouping([...facetGroupingValues, ...groupingValues]);\n const histogramDataByFacets = createHistogramDataByFacets(this.data, facetKeysCombinations, groupingKeys, valueColumn, binsCount, chartSettings.xAxis.scale);\n\n this.calculatedData = {\n facetKeys: facetKeysCombinations.map(v => v.join(', ')),\n facetKeysCombinations,\n histogramDataByFacets,\n legendInfo: getLegendInfo(this.data, grouping ? [grouping] : [], inheritedAes)\n };\n }\n\n _updateAesInData() {\n const calculated = this.calculatedData;\n if (!calculated) {\n return;\n }\n }\n\n _updateChart() {\n if (!this.calculatedData) {\n return;\n }\n const {id, chartSettings, facetSettings, inheritedAes, layers, grouping, groupingDirection, groupingStack} = this.settings;\n this.calculatedData.legendInfo = getLegendInfo(this.data, grouping ? [grouping] : [], inheritedAes);\n this.chartRenderer.render(\n this.data,\n id,\n chartSettings,\n facetSettings,\n this.calculatedData.facetKeys,\n this.calculatedData.facetKeysCombinations, //for titles, if facet by more than 1 column\n this.calculatedData.histogramDataByFacets,\n this.calculatedData.legendInfo,\n layers,\n inheritedAes,\n grouping,\n groupingStack,\n groupingDirection,\n this.onTooltipHintSwitch\n );\n }\n}\n"],"names":["getLegendInfo","data","grouping","inheritedAes","res","column","categories","getValueLabel","category","labels","a","b","ChartHistogram","AbstractChart","settings","eventHandlers","__publicField","ChartRenderer","HistogramSettingsImpl","node","err","isErrorInfo","getUnknownErrorInfo","previousSettings","previousData","_field","_value","renderToString","prevSettings","el","idx","_a","_b","l","_c","key","_d","prevData","prevKeys","keys","valueColumn","facetBy","binsCount","chartSettings","groupingOrder","facetKeysLists","facetKeysCombinations","getKeysCombinations","MAX_FACETS_COUNT","errorInfo","facetGroupingValues","groupingValues","groupingKeys","MAX_GROUPS_COUNT","intersection","histogramDataByFacets","createHistogramDataByFacets","v","id","facetSettings","layers","groupingDirection","groupingStack"],"mappings":"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"}
|
|
1
|
+
{"version":3,"file":"index.js","sources":["../../src/histogram/index.ts"],"sourcesContent":["import {\n intersection\n} from 'lodash';\nimport { renderToString } from 'react-dom/server';\nimport { AbstractChart } from '../AbstractChart';\nimport type { DataFrame } from '../DataFrame';\nimport type { ErrorInfoHistogramGroups} from '../types';\nimport { type Category, type ColumnName, type ErrorInfoFacets, getUnknownErrorInfo, type HistogramEventHandlers, type HistogramSettings, isErrorInfo } from '../types';\nimport { getKeysCombinations } from '../utils/getKeysCombination';\nimport ChartRenderer from './ChartRenderer';\nimport type { HistogramLegendInfo } from './components/types';\nimport type { GroupedHistogramData } from './getHistogramData';\nimport { createHistogramDataByFacets } from './getHistogramData';\nimport { HistogramSettingsImpl } from './HistogramSettingsImpl';\nimport { MAX_FACETS_COUNT, MAX_GROUPS_COUNT } from '../constants';\nimport { getFacetLabels } from '../discrete/utils/getFacetLabels';\n\nfunction getLegendInfo(\n data: DataFrame,\n grouping: ColumnName[],\n inheritedAes: HistogramSettingsImpl['inheritedAes']\n): HistogramLegendInfo {\n return grouping.reduce((res: HistogramLegendInfo, column) => {\n const categories = data.getColumnCategories(column.value, false);\n const getValueLabel = (category: Category) => (column.valueLabels\n ? String(data.getColumnValue(\n column.valueLabels,\n data.getColumnCategoryRowIndex(column.value, category)\n ))\n : category\n );\n const labels = categories.reduce((res: Record<string, string>, category) => {\n res[category] = getValueLabel(category);\n return res;\n }, {});\n res[column.value] = {\n values: categories.sort((a, b) => labels[a].localeCompare(labels[b], 'en', {numeric: true})),\n aesMap: inheritedAes[column.value],\n labels,\n };\n return res;\n }, {});\n}\n\nexport class ChartHistogram extends AbstractChart {\n settings: HistogramSettingsImpl;\n chartRenderer = new ChartRenderer();\n\n onTooltipHintSwitch: (v:boolean) => void = () => undefined;\n calculatedData: {\n facetKeys: string[];\n facetKeysCombinations: string[][];\n histogramDataByFacets: Record<string, GroupedHistogramData>\n legendInfo: HistogramLegendInfo;\n facetLabels: Record<string, string[]>;\n } | null = null;\n\n constructor(data: DataFrame, settings: HistogramSettings, eventHandlers?: HistogramEventHandlers) {\n super(data, settings);\n\n this.settings = new HistogramSettingsImpl(settings);\n if (eventHandlers) {\n this.onTooltipHintSwitch = eventHandlers[0];\n }\n }\n\n mount(node: HTMLElement) {\n try {\n this.chartRenderer.init(node);\n this._updateData();\n this._updateChart();\n this.hasError = false;\n this.errorInfo = null;\n } catch (err) {\n this.hasError = true;\n if (err instanceof Error) {\n this.errorInfo = isErrorInfo(err.cause) ? err.cause : getUnknownErrorInfo(err);\n this.chartRenderer.renderError(err.message as string);\n console.error(err);\n }\n }\n }\n\n unmount() {\n this.chartRenderer.clear();\n }\n\n updateSettingsAndData(data: DataFrame, settings: HistogramSettings) {\n try {\n const previousSettings = this.settings;\n const previousData = this.data;\n this.settings = new HistogramSettingsImpl(settings);\n this.data = data;\n if (\n this._needUpdateCalculatedDataBySettings(previousSettings, this.settings) ||\n this._needUpdateCalculatedDataByData(previousData, this.data)\n ) {\n this._updateData();\n } else {\n this._updateAesInData();\n }\n this._updateChart();\n this.hasError = false;\n this.errorInfo = null;\n } catch (err) {\n this.hasError = true;\n if (err instanceof Error) {\n this.errorInfo = isErrorInfo(err.cause) ? err.cause : getUnknownErrorInfo(err);\n this.chartRenderer.renderError(err.message as string);\n console.error(err);\n }\n }\n }\n\n updateChartState(_field: string, _value: unknown) {\n console.warn('no chart state for histogram');\n }\n\n export(): string {\n this._updateChart();\n return renderToString(this.chartRenderer.component);\n }\n\n _needUpdateCalculatedDataBySettings(prevSettings: HistogramSettingsImpl, settings: HistogramSettingsImpl) {\n return (\n prevSettings.valueColumn.value !== settings.valueColumn.value ||\n prevSettings.facetBy.some((el, idx) => el.value !== settings.facetBy[idx]?.value) ||\n prevSettings.grouping?.value !== settings.grouping?.value ||\n prevSettings.layers.length !== settings.layers.length ||\n prevSettings.layers.some((l, idx) => l.type !== settings.layers[idx].type) ||\n prevSettings.binsCount !== settings.binsCount ||\n prevSettings.chartSettings.xAxis.scale !== settings.chartSettings.xAxis.scale ||\n prevSettings.groupingOrder?.some((key, idx) => key !== settings.groupingOrder?.[idx]) ||\n settings.groupingOrder?.some((key, idx) => key !== prevSettings.groupingOrder?.[idx])\n );\n }\n\n _needUpdateCalculatedDataByData(prevData: DataFrame, data: DataFrame) {\n const prevKeys = Object.keys(prevData.data);\n const keys = Object.keys(data.data);\n return (\n prevData.id !== data.id ||\n prevKeys.length !== keys.length ||\n prevKeys.some(key => prevData.data[key].length !== data.data[key]?.length)\n );\n }\n\n _updateData() {\n const {valueColumn, facetBy, grouping, binsCount, chartSettings, inheritedAes, groupingOrder} = this.settings;\n\n const facetKeysLists = facetBy.map(column => this.data.getColumnCategories(column.value));\n const facetKeysCombinations = facetKeysLists.length ? getKeysCombinations([...facetKeysLists]) : [['null']];\n\n if (facetKeysCombinations.length > MAX_FACETS_COUNT) {\n const errorInfo: ErrorInfoFacets = {\n type: 'tooManyFacets',\n info: {count: facetKeysCombinations.length, maxCount: MAX_FACETS_COUNT}\n };\n throw Error(errorInfo.type, {cause: errorInfo});\n }\n\n const facetGroupingValues = facetBy.map(column => column.value) ?? null;\n const groupingValues = grouping ? [grouping.value] : [];\n let groupingKeys = grouping ? this.data.getColumnCategories(grouping.value) : ['null'];\n if (groupingKeys.length > MAX_GROUPS_COUNT) {\n const errorInfo: ErrorInfoHistogramGroups = {\n type: 'tooManyHistogramGroups',\n info: {count: groupingKeys.length, maxCount: MAX_GROUPS_COUNT}\n };\n throw Error(errorInfo.type, {cause: errorInfo});\n }\n if (groupingOrder) {\n groupingKeys = intersection(groupingOrder, groupingKeys);\n }\n\n this.data.setGrouping([...facetGroupingValues, ...groupingValues]);\n const histogramDataByFacets = createHistogramDataByFacets(this.data, facetKeysCombinations, groupingKeys, valueColumn, binsCount, chartSettings.xAxis.scale);\n\n const facetKeys = facetKeysCombinations.map(v => v.join(', '));\n const facetLabels = getFacetLabels(this.data, facetBy, facetKeys, facetKeysCombinations);\n this.calculatedData = {\n facetKeys,\n facetKeysCombinations,\n facetLabels,\n histogramDataByFacets,\n legendInfo: getLegendInfo(this.data, grouping ? [grouping] : [], inheritedAes)\n };\n }\n\n _updateAesInData() {\n const calculated = this.calculatedData;\n if (!calculated) {\n return;\n }\n }\n\n _updateChart() {\n if (!this.calculatedData) {\n return;\n }\n const {facetLabels} = this.calculatedData;\n const {id, chartSettings, facetSettings, inheritedAes, layers, grouping, groupingDirection, groupingStack, facetBy} = this.settings;\n this.calculatedData.legendInfo = getLegendInfo(this.data, grouping ? [grouping] : [], inheritedAes);\n\n this.chartRenderer.render(\n this.data,\n id,\n chartSettings,\n facetSettings,\n this.calculatedData.facetKeys,\n this.calculatedData.facetKeys.map(key => facetLabels[key]),\n //for titles, if facet by more than 1 column\n this.calculatedData.histogramDataByFacets,\n this.calculatedData.legendInfo,\n layers,\n inheritedAes,\n grouping,\n groupingStack,\n groupingDirection,\n this.onTooltipHintSwitch\n );\n }\n}\n"],"names":["getLegendInfo","data","grouping","inheritedAes","res","column","categories","getValueLabel","category","labels","a","b","ChartHistogram","AbstractChart","settings","eventHandlers","__publicField","ChartRenderer","HistogramSettingsImpl","node","err","isErrorInfo","getUnknownErrorInfo","previousSettings","previousData","_field","_value","renderToString","prevSettings","el","idx","_a","_b","l","_c","key","_d","prevData","prevKeys","keys","valueColumn","facetBy","binsCount","chartSettings","groupingOrder","facetKeysLists","facetKeysCombinations","getKeysCombinations","MAX_FACETS_COUNT","errorInfo","facetGroupingValues","groupingValues","groupingKeys","MAX_GROUPS_COUNT","intersection","histogramDataByFacets","createHistogramDataByFacets","facetKeys","v","facetLabels","getFacetLabels","id","facetSettings","layers","groupingDirection","groupingStack"],"mappings":";;;;;;;;;;;;;;;;;;;AAiBA,SAASA,EACLC,GACAC,GACAC,GACmB;AACnB,SAAOD,EAAS,OAAO,CAACE,GAA0BC,MAAW;AACzD,UAAMC,IAAaL,EAAK,oBAAoBI,EAAO,OAAO,EAAK,GACzDE,IAAgB,CAACC,MAAwBH,EAAO,cAChD,OAAOJ,EAAK;AAAA,MACVI,EAAO;AAAA,MACPJ,EAAK,0BAA0BI,EAAO,OAAOG,CAAQ;AAAA,IAAA,CACxD,IACCA,GAEAC,IAASH,EAAW,OAAO,CAACF,GAA6BI,OAC3DJ,EAAII,CAAQ,IAAID,EAAcC,CAAQ,GAC/BJ,IACR,CAAA,CAAE;AACL,WAAAA,EAAIC,EAAO,KAAK,IAAI;AAAA,MAChB,QAAQC,EAAW,KAAK,CAACI,GAAGC,MAAMF,EAAOC,CAAC,EAAE,cAAcD,EAAOE,CAAC,GAAG,MAAM,EAAC,SAAS,GAAA,CAAK,CAAC;AAAA,MAC3F,QAAQR,EAAaE,EAAO,KAAK;AAAA,MACjC,QAAAI;AAAA,IAAA,GAEGL;AAAA,EACX,GAAG,CAAA,CAAE;AACT;AAEO,MAAMQ,UAAuBC,EAAc;AAAA,EAa9C,YAAYZ,GAAiBa,GAA6BC,GAAwC;AAC9F,UAAMd,GAAMa,CAAQ;AAbxB,IAAAE,EAAA;AACA,IAAAA,EAAA,uBAAgB,IAAIC,EAAA;AAEpB,IAAAD,EAAA,6BAA2C,MAAA;AAAA;AAC3C,IAAAA,EAAA,wBAMW;AAKP,SAAK,WAAW,IAAIE,EAAsBJ,CAAQ,GAC9CC,MACA,KAAK,sBAAsBA,EAAc,CAAC;AAAA,EAElD;AAAA,EAEA,MAAMI,GAAmB;AACrB,QAAI;AACA,WAAK,cAAc,KAAKA,CAAI,GAC5B,KAAK,YAAA,GACL,KAAK,aAAA,GACL,KAAK,WAAW,IAChB,KAAK,YAAY;AAAA,IACrB,SAASC,GAAK;AACV,WAAK,WAAW,IACZA,aAAe,UACf,KAAK,YAAYC,EAAYD,EAAI,KAAK,IAAIA,EAAI,QAAQE,EAAoBF,CAAG,GAC7E,KAAK,cAAc,YAAYA,EAAI,OAAiB,GACpD,QAAQ,MAAMA,CAAG;AAAA,IAEzB;AAAA,EACJ;AAAA,EAEA,UAAU;AACN,SAAK,cAAc,MAAA;AAAA,EACvB;AAAA,EAEA,sBAAsBnB,GAAiBa,GAA6B;AAChE,QAAI;AACA,YAAMS,IAAmB,KAAK,UACxBC,IAAe,KAAK;AAC1B,WAAK,WAAW,IAAIN,EAAsBJ,CAAQ,GAClD,KAAK,OAAOb,GAER,KAAK,oCAAoCsB,GAAkB,KAAK,QAAQ,KACxE,KAAK,gCAAgCC,GAAc,KAAK,IAAI,IAE5D,KAAK,YAAA,IAEL,KAAK,iBAAA,GAET,KAAK,aAAA,GACL,KAAK,WAAW,IAChB,KAAK,YAAY;AAAA,IACrB,SAASJ,GAAK;AACV,WAAK,WAAW,IACZA,aAAe,UACf,KAAK,YAAYC,EAAYD,EAAI,KAAK,IAAIA,EAAI,QAAQE,EAAoBF,CAAG,GAC7E,KAAK,cAAc,YAAYA,EAAI,OAAiB,GACpD,QAAQ,MAAMA,CAAG;AAAA,IAEzB;AAAA,EACJ;AAAA,EAEA,iBAAiBK,GAAgBC,GAAiB;AAC9C,YAAQ,KAAK,8BAA8B;AAAA,EAC/C;AAAA,EAEA,SAAiB;AACb,gBAAK,aAAA,GACEC,iBAAe,KAAK,cAAc,SAAS;AAAA,EACtD;AAAA,EAEA,oCAAoCC,GAAqCd,GAAiC;;AACtG,WACIc,EAAa,YAAY,UAAUd,EAAS,YAAY,SACxDc,EAAa,QAAQ,KAAK,CAACC,GAAIC;;AAAQ,aAAAD,EAAG,YAAUE,IAAAjB,EAAS,QAAQgB,CAAG,MAApB,gBAAAC,EAAuB;AAAA,KAAK,OAChFA,IAAAH,EAAa,aAAb,gBAAAG,EAAuB,aAAUC,IAAAlB,EAAS,aAAT,gBAAAkB,EAAmB,UACpDJ,EAAa,OAAO,WAAWd,EAAS,OAAO,UAC/Cc,EAAa,OAAO,KAAK,CAACK,GAAGH,MAAQG,EAAE,SAASnB,EAAS,OAAOgB,CAAG,EAAE,IAAI,KACzEF,EAAa,cAAcd,EAAS,aACpCc,EAAa,cAAc,MAAM,UAAUd,EAAS,cAAc,MAAM,WACxEoB,IAAAN,EAAa,kBAAb,gBAAAM,EAA4B,KAAK,CAACC,GAAKL;;AAAQ,aAAAK,QAAQJ,IAAAjB,EAAS,kBAAT,gBAAAiB,EAAyBD;AAAA,aAChFM,IAAAtB,EAAS,kBAAT,gBAAAsB,EAAwB,KAAK,CAACD,GAAKL,MAAA;;AAAQ,aAAAK,QAAQJ,IAAAH,EAAa,kBAAb,gBAAAG,EAA6BD;AAAA;AAAA,EAExF;AAAA,EAEA,gCAAgCO,GAAqBpC,GAAiB;AAClE,UAAMqC,IAAW,OAAO,KAAKD,EAAS,IAAI,GACpCE,IAAO,OAAO,KAAKtC,EAAK,IAAI;AAClC,WACIoC,EAAS,OAAOpC,EAAK,MACrBqC,EAAS,WAAWC,EAAK,UACzBD,EAAS,KAAK;;AAAO,aAAAD,EAAS,KAAKF,CAAG,EAAE,aAAWJ,IAAA9B,EAAK,KAAKkC,CAAG,MAAb,gBAAAJ,EAAgB;AAAA,KAAM;AAAA,EAEjF;AAAA,EAEA,cAAc;AACV,UAAM,EAAC,aAAAS,GAAa,SAAAC,GAAS,UAAAvC,GAAU,WAAAwC,GAAW,eAAAC,GAAe,cAAAxC,GAAc,eAAAyC,MAAiB,KAAK,UAE/FC,IAAiBJ,EAAQ,IAAI,CAAApC,MAAU,KAAK,KAAK,oBAAoBA,EAAO,KAAK,CAAC,GAClFyC,IAAwBD,EAAe,SAASE,EAAoB,CAAC,GAAGF,CAAc,CAAC,IAAI,CAAC,CAAC,MAAM,CAAC;AAE1G,QAAIC,EAAsB,SAASE,GAAkB;AACjD,YAAMC,IAA6B;AAAA,QAC/B,MAAM;AAAA,QACN,MAAM,EAAC,OAAOH,EAAsB,QAAQ,UAAUE,EAAA;AAAA,MAAgB;AAE1E,YAAM,MAAMC,EAAU,MAAM,EAAC,OAAOA,GAAU;AAAA,IAClD;AAEA,UAAMC,IAAsBT,EAAQ,IAAI,CAAApC,MAAUA,EAAO,KAAK,KAAK,MAC7D8C,IAAiBjD,IAAW,CAACA,EAAS,KAAK,IAAI,CAAA;AACrD,QAAIkD,IAAelD,IAAW,KAAK,KAAK,oBAAoBA,EAAS,KAAK,IAAI,CAAC,MAAM;AACrF,QAAIkD,EAAa,SAASC,GAAkB;AACxC,YAAMJ,IAAsC;AAAA,QACxC,MAAM;AAAA,QACN,MAAM,EAAC,OAAOG,EAAa,QAAQ,UAAUC,EAAA;AAAA,MAAgB;AAEjE,YAAM,MAAMJ,EAAU,MAAM,EAAC,OAAOA,GAAU;AAAA,IAClD;AACA,IAAIL,MACAQ,IAAeE,EAAAA,aAAaV,GAAeQ,CAAY,IAG3D,KAAK,KAAK,YAAY,CAAC,GAAGF,GAAqB,GAAGC,CAAc,CAAC;AACjE,UAAMI,IAAwBC,EAA4B,KAAK,MAAMV,GAAuBM,GAAcZ,GAAaE,GAAWC,EAAc,MAAM,KAAK,GAErJc,IAAYX,EAAsB,IAAI,OAAKY,EAAE,KAAK,IAAI,CAAC,GACvDC,IAAcC,EAAe,KAAK,MAAMnB,GAASgB,GAAWX,CAAqB;AACvF,SAAK,iBAAiB;AAAA,MAClB,WAAAW;AAAA,MACA,uBAAAX;AAAA,MACA,aAAAa;AAAA,MACA,uBAAAJ;AAAA,MACA,YAAYvD,EAAc,KAAK,MAAME,IAAW,CAACA,CAAQ,IAAI,CAAA,GAAIC,CAAY;AAAA,IAAA;AAAA,EAErF;AAAA,EAEA,mBAAmB;AAEf,IADmB,KAAK;AAAA,EAI5B;AAAA,EAEA,eAAe;AACX,QAAI,CAAC,KAAK;AACN;AAEJ,UAAM,EAAC,aAAAwD,MAAe,KAAK,gBACrB,EAAC,IAAAE,GAAI,eAAAlB,GAAe,eAAAmB,GAAe,cAAA3D,GAAc,QAAA4D,GAAQ,UAAA7D,GAAU,mBAAA8D,GAAmB,eAAAC,GAAe,SAAAxB,EAAA,IAAW,KAAK;AAC3H,SAAK,eAAe,aAAazC,EAAc,KAAK,MAAME,IAAW,CAACA,CAAQ,IAAI,CAAA,GAAIC,CAAY,GAElG,KAAK,cAAc;AAAA,MACf,KAAK;AAAA,MACL0D;AAAA,MACAlB;AAAA,MACAmB;AAAA,MACA,KAAK,eAAe;AAAA,MACpB,KAAK,eAAe,UAAU,IAAI,CAAA3B,MAAOwB,EAAYxB,CAAG,CAAC;AAAA;AAAA,MAEzD,KAAK,eAAe;AAAA,MACpB,KAAK,eAAe;AAAA,MACpB4B;AAAA,MACA5D;AAAA,MACAD;AAAA,MACA+D;AAAA,MACAD;AAAA,MACA,KAAK;AAAA,IAAA;AAAA,EAEb;AACJ;"}
|
|
@@ -1,4 +1,4 @@
|
|
|
1
|
-
import { __module as e } from "../../../../../_virtual/
|
|
1
|
+
import { __module as e } from "../../../../../_virtual/index5.js";
|
|
2
2
|
import { __require as o } from "./cjs/scheduler.production.min.js";
|
|
3
3
|
import { __require as u } from "./cjs/scheduler.development.js";
|
|
4
4
|
var r;
|
|
@@ -45,6 +45,14 @@ export declare class ScatterplotSettingsImpl implements SettingsInterface {
|
|
|
45
45
|
order?: DataValue[];
|
|
46
46
|
inheritedAes?: AesRecord;
|
|
47
47
|
}[];
|
|
48
|
+
readonly dotSize: {
|
|
49
|
+
columnName: ColumnName;
|
|
50
|
+
inheritedAes?: AesRecord;
|
|
51
|
+
}[];
|
|
52
|
+
readonly dotShape: {
|
|
53
|
+
columnName: ColumnName;
|
|
54
|
+
inheritedAes?: AesRecord;
|
|
55
|
+
}[];
|
|
48
56
|
readonly label: ColumnName | null;
|
|
49
57
|
readonly highlight: ColumnName | null;
|
|
50
58
|
readonly chartSettings: {
|
|
@@ -1,8 +1,8 @@
|
|
|
1
|
-
var
|
|
2
|
-
var m = (t, e,
|
|
3
|
-
var o = (t, e,
|
|
1
|
+
var u = Object.defineProperty;
|
|
2
|
+
var m = (t, e, i) => e in t ? u(t, e, { enumerable: !0, configurable: !0, writable: !0, value: i }) : t[e] = i;
|
|
3
|
+
var o = (t, e, i) => m(t, typeof e != "symbol" ? e + "" : e, i);
|
|
4
4
|
import y from "../_virtual/lodash.js";
|
|
5
|
-
import { DEFAULT_HEIGHT_SMALL as
|
|
5
|
+
import { DEFAULT_HEIGHT_SMALL as S, DEFAULT_HEIGHT as f, DEFAULT_WIDTH_SMALL as s, DEFAULT_WIDTH as n, BLACK as h } from "../constants.js";
|
|
6
6
|
import "../types/common.js";
|
|
7
7
|
import "../types/discrete.js";
|
|
8
8
|
import { ScatterplotSettingsSchema as x } from "../types/scatterplot.js";
|
|
@@ -15,7 +15,7 @@ class A {
|
|
|
15
15
|
constructor(e) {
|
|
16
16
|
o(this, "type", "dots");
|
|
17
17
|
o(this, "aes", {
|
|
18
|
-
dotFill:
|
|
18
|
+
dotFill: h,
|
|
19
19
|
dotShape: "21",
|
|
20
20
|
dotSize: 3,
|
|
21
21
|
opacity: 1
|
|
@@ -31,7 +31,7 @@ class L {
|
|
|
31
31
|
o(this, "type", "curve");
|
|
32
32
|
o(this, "smoothing");
|
|
33
33
|
o(this, "aes", {
|
|
34
|
-
lineColor:
|
|
34
|
+
lineColor: h,
|
|
35
35
|
lineWidth: 1,
|
|
36
36
|
lineShape: "solid",
|
|
37
37
|
opacity: 1
|
|
@@ -42,7 +42,7 @@ class L {
|
|
|
42
42
|
};
|
|
43
43
|
}
|
|
44
44
|
}
|
|
45
|
-
class
|
|
45
|
+
class _ {
|
|
46
46
|
constructor(e) {
|
|
47
47
|
o(this, "id");
|
|
48
48
|
o(this, "type", "scatterplot");
|
|
@@ -52,16 +52,18 @@ class F {
|
|
|
52
52
|
o(this, "y");
|
|
53
53
|
o(this, "facetBy");
|
|
54
54
|
o(this, "grouping");
|
|
55
|
+
o(this, "dotSize");
|
|
56
|
+
o(this, "dotShape");
|
|
55
57
|
o(this, "label");
|
|
56
58
|
o(this, "highlight");
|
|
57
59
|
o(this, "chartSettings");
|
|
58
60
|
o(this, "trend");
|
|
59
61
|
o(this, "layers");
|
|
60
|
-
var
|
|
61
|
-
x.parse(e), this.id = y.uniqueId("settings"), this.keyColumn = e.keyColumn, this.facetSettings = { sharedX: !0, sharedY: !0, titlePosition: "left", ...e.facetSettings }, this.x = e.x, this.y = e.y, this.facetBy = e.facetBy ?? [], this.grouping = e.grouping ?? [], this.label = e.label ?? null, this.highlight = e.highlight ?? null, this.chartSettings = {
|
|
62
|
+
var i, l, a, c, p, d;
|
|
63
|
+
x.parse(e), this.id = y.uniqueId("settings"), this.keyColumn = e.keyColumn, this.facetSettings = { sharedX: !0, sharedY: !0, titlePosition: "left", ...e.facetSettings }, this.x = e.x, this.y = e.y, this.facetBy = e.facetBy ?? [], this.grouping = e.grouping ?? [], this.dotSize = e.dotSize ?? [], this.dotShape = e.dotShape ?? [], this.label = e.label ?? null, this.highlight = e.highlight ?? null, this.chartSettings = {
|
|
62
64
|
size: {
|
|
63
|
-
width: ((
|
|
64
|
-
height: ((
|
|
65
|
+
width: ((i = e == null ? void 0 : e.size) == null ? void 0 : i.width) ?? (this.facetBy.length ? s : n),
|
|
66
|
+
height: ((l = e == null ? void 0 : e.size) == null ? void 0 : l.height) ?? (this.facetBy.length ? S : f)
|
|
65
67
|
},
|
|
66
68
|
title: {
|
|
67
69
|
position: "center",
|
|
@@ -91,23 +93,23 @@ class F {
|
|
|
91
93
|
},
|
|
92
94
|
tooltips: {
|
|
93
95
|
...e.tooltips,
|
|
94
|
-
show: ((p = e.tooltips) == null ? void 0 : p.show) !== !1 && (((
|
|
96
|
+
show: ((p = e.tooltips) == null ? void 0 : p.show) !== !1 && (((d = e.tooltips) == null ? void 0 : d.content) ?? []).length > 0
|
|
95
97
|
}
|
|
96
98
|
}, this.trend = e != null && e.trend && this.chartSettings.xAxis.scale !== "discrete" && this.chartSettings.yAxis.scale !== "discrete" ? {
|
|
97
99
|
bounded: e.trend.bounded ?? !1,
|
|
98
|
-
color: e.trend.color ??
|
|
99
|
-
} : null, this.layers = e.layers.map((
|
|
100
|
-
if (
|
|
101
|
-
return new A(
|
|
102
|
-
if (
|
|
103
|
-
return new L(
|
|
104
|
-
w(
|
|
100
|
+
color: e.trend.color ?? h
|
|
101
|
+
} : null, this.layers = e.layers.map((r) => {
|
|
102
|
+
if (r.type === "dots")
|
|
103
|
+
return new A(r);
|
|
104
|
+
if (r.type === "curve")
|
|
105
|
+
return new L(r);
|
|
106
|
+
w(r, "Unknown layer type");
|
|
105
107
|
}).filter(Boolean);
|
|
106
108
|
}
|
|
107
109
|
}
|
|
108
110
|
export {
|
|
109
111
|
L as CurveLayer,
|
|
110
112
|
A as DotsLayer,
|
|
111
|
-
|
|
113
|
+
_ as ScatterplotSettingsImpl
|
|
112
114
|
};
|
|
113
115
|
//# sourceMappingURL=ScatterplotSettingsImpl.js.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"ScatterplotSettingsImpl.js","sources":["../../src/scatterplot/ScatterplotSettingsImpl.ts"],"sourcesContent":["import lodash from 'lodash';\nimport {BLACK, DEFAULT_HEIGHT, DEFAULT_HEIGHT_SMALL, DEFAULT_WIDTH, DEFAULT_WIDTH_SMALL} from '../constants';\nimport type {\n AxisSettingsContinuous,\n AxisSettingsDiscrete,\n ColumnName,\n ContinuousAesFromColumn,\n DataValue,\n FrameType,\n InheritAesScatterplot,\n LegendPosition,\n LineShape,\n CurveLayer as OuterCurveLayer,\n DotsLayer as OuterDotsLayer,\n PointShape,\n ScatterplotSettings,\n SettingsInterface,\n TitlePosition,\n} from '../types';\nimport {type AesRecord, ScatterplotSettingsSchema} from '../types';\nimport {exhaustive} from '../utils';\n\nexport class DotsLayer {\n readonly type = 'dots';\n readonly aes: {\n dotFill: string | InheritAesScatterplot | ContinuousAesFromColumn<string>;\n dotShape: PointShape | InheritAesScatterplot;\n dotSize: number | ContinuousAesFromColumn<number>;\n opacity: number;\n } = {\n dotFill: BLACK,\n dotShape: '21',\n dotSize: 3,\n opacity: 1,\n };\n\n constructor(layer: OuterDotsLayer) {\n this.aes = {\n ...this.aes,\n ...layer.aes,\n };\n }\n}\n\nexport class CurveLayer {\n readonly type = 'curve';\n readonly smoothing: boolean;\n readonly aes: {\n lineColor: string | InheritAesScatterplot | ContinuousAesFromColumn<string>;\n lineWidth: number;\n lineShape: LineShape;\n opacity: number;\n } = {\n lineColor: BLACK,\n lineWidth: 1,\n lineShape: 'solid',\n opacity: 1,\n };\n\n constructor(layer: OuterCurveLayer) {\n this.smoothing = layer.smoothing ?? false;\n this.aes = {\n ...this.aes,\n ...layer.aes,\n };\n }\n}\n\nexport type ScatterplotLayer = DotsLayer | CurveLayer;\n\nexport type ScatterplotAxisSettings =\n AxisSettingsDiscrete & {title: string | ColumnName}\n | AxisSettingsContinuous & {title: string | ColumnName}\n\nexport class ScatterplotSettingsImpl implements SettingsInterface {\n readonly id: string;\n readonly type = 'scatterplot';\n readonly keyColumn: ColumnName;\n readonly facetSettings: {\n sharedX: boolean;\n sharedY: boolean;\n nRows?: number;\n nCols?: number;\n titlePosition: 'left' | 'center' | 'right';\n };\n readonly x: ColumnName;\n readonly y: ColumnName;\n readonly facetBy: ColumnName[];\n readonly grouping: {\n columnName: ColumnName;\n order?: DataValue[];\n inheritedAes?: AesRecord;\n }[];\n readonly label: ColumnName | null;\n readonly highlight: ColumnName | null;\n readonly chartSettings: {\n readonly size: {width: number; height: number};\n readonly title: {name: string; show: boolean; position: TitlePosition};\n readonly yAxis: ScatterplotAxisSettings;\n readonly xAxis: ScatterplotAxisSettings;\n readonly frame: {type: FrameType};\n readonly legend: {show: boolean; position: LegendPosition};\n readonly tooltips: {show: boolean; content?: ColumnName[]};\n };\n\n readonly trend: {\n bounded: boolean;\n color: string | InheritAesScatterplot | ContinuousAesFromColumn<string>;\n } | null;\n\n readonly layers: ScatterplotLayer[];\n\n constructor(settings: ScatterplotSettings) {\n ScatterplotSettingsSchema.parse(settings);\n this.id = lodash.uniqueId('settings');\n this.keyColumn = settings.keyColumn;\n this.facetSettings = {sharedX: true, sharedY: true, titlePosition: 'left', ...settings.facetSettings};\n this.x = settings.x;\n this.y = settings.y;\n this.facetBy = settings.facetBy ?? [];\n this.grouping = settings.grouping ?? [];\n this.label = settings.label ?? null;\n this.highlight = settings.highlight ?? null;\n this.chartSettings = {\n size: {\n width: settings?.size?.width ?? (this.facetBy.length ? DEFAULT_WIDTH_SMALL : DEFAULT_WIDTH),\n height: settings?.size?.height ?? (this.facetBy.length ? DEFAULT_HEIGHT_SMALL : DEFAULT_HEIGHT),\n },\n title: {\n position: 'center',\n show: true,\n ...settings.title,\n name: settings.title?.name ?? 'Chart',\n },\n yAxis: {\n title: settings.y.label ?? settings.y.value,\n scale: 'linear',\n showGrid: true,\n showTicks: true,\n ...settings.yAxis,\n },\n xAxis: {\n title: settings.x.label ?? settings.x.value,\n scale: 'linear',\n showGrid: true,\n showTicks: true,\n ...settings.xAxis,\n },\n frame: {type: settings.frame?.type ?? 'full'},\n legend: {\n show: true,\n position: 'right',\n ...settings.legend,\n },\n tooltips: {\n ...settings.tooltips,\n show: !(settings.tooltips?.show === false) && (settings.tooltips?.content ?? []).length > 0,\n },\n };\n\n this.trend = settings?.trend && this.chartSettings.xAxis.scale !== 'discrete' && this.chartSettings.yAxis.scale !== 'discrete'\n ? {\n bounded: settings.trend.bounded ?? false,\n color: settings.trend.color ?? BLACK,\n }\n : null;\n\n this.layers = settings.layers\n .map(layer => {\n if (layer.type === 'dots') {\n return new DotsLayer(layer);\n }\n if (layer.type === 'curve') {\n return new CurveLayer(layer);\n }\n exhaustive(layer, 'Unknown layer type');\n })\n .filter(Boolean) as ScatterplotLayer[];\n }\n}\n"],"names":["DotsLayer","layer","__publicField","BLACK","CurveLayer","ScatterplotSettingsImpl","settings","ScatterplotSettingsSchema","lodash","_a","DEFAULT_WIDTH_SMALL","DEFAULT_WIDTH","_b","DEFAULT_HEIGHT_SMALL","DEFAULT_HEIGHT","_c","_d","_e","_f","exhaustive"],"mappings":";;;;;;;;;;;;;AAsBO,MAAMA,EAAU;AAAA,EAcnB,YAAYC,GAAuB;AAb1B,IAAAC,EAAA,cAAO;AACP,IAAAA,EAAA,aAKL;AAAA,MACA,SAASC;AAAA,MACT,UAAU;AAAA,MACV,SAAS;AAAA,MACT,SAAS;AAAA,IAAA;AAIT,SAAK,MAAM;AAAA,MACP,GAAG,KAAK;AAAA,MACR,GAAGF,EAAM;AAAA,IAAA;AAAA,EAEjB;AACJ;AAEO,MAAMG,EAAW;AAAA,EAepB,YAAYH,GAAwB;AAd3B,IAAAC,EAAA,cAAO;AACP,IAAAA,EAAA;AACA,IAAAA,EAAA,aAKL;AAAA,MACA,WAAWC;AAAA,MACX,WAAW;AAAA,MACX,WAAW;AAAA,MACX,SAAS;AAAA,IAAA;AAIT,SAAK,YAAYF,EAAM,aAAa,IACpC,KAAK,MAAM;AAAA,MACP,GAAG,KAAK;AAAA,MACR,GAAGA,EAAM;AAAA,IAAA;AAAA,EAEjB;AACJ;AAQO,MAAMI,EAAqD;AAAA,
|
|
1
|
+
{"version":3,"file":"ScatterplotSettingsImpl.js","sources":["../../src/scatterplot/ScatterplotSettingsImpl.ts"],"sourcesContent":["import lodash from 'lodash';\nimport {BLACK, DEFAULT_HEIGHT, DEFAULT_HEIGHT_SMALL, DEFAULT_WIDTH, DEFAULT_WIDTH_SMALL} from '../constants';\nimport type {\n AxisSettingsContinuous,\n AxisSettingsDiscrete,\n ColumnName,\n ContinuousAesFromColumn,\n DataValue,\n FrameType,\n InheritAesScatterplot,\n LegendPosition,\n LineShape,\n CurveLayer as OuterCurveLayer,\n DotsLayer as OuterDotsLayer,\n PointShape,\n ScatterplotSettings,\n SettingsInterface,\n TitlePosition,\n} from '../types';\nimport {type AesRecord, ScatterplotSettingsSchema} from '../types';\nimport {exhaustive} from '../utils';\n\nexport class DotsLayer {\n readonly type = 'dots';\n readonly aes: {\n dotFill: string | InheritAesScatterplot | ContinuousAesFromColumn<string>;\n dotShape: PointShape | InheritAesScatterplot;\n dotSize: number | ContinuousAesFromColumn<number>;\n opacity: number;\n } = {\n dotFill: BLACK,\n dotShape: '21',\n dotSize: 3,\n opacity: 1,\n };\n\n constructor(layer: OuterDotsLayer) {\n this.aes = {\n ...this.aes,\n ...layer.aes,\n };\n }\n}\n\nexport class CurveLayer {\n readonly type = 'curve';\n readonly smoothing: boolean;\n readonly aes: {\n lineColor: string | InheritAesScatterplot | ContinuousAesFromColumn<string>;\n lineWidth: number;\n lineShape: LineShape;\n opacity: number;\n } = {\n lineColor: BLACK,\n lineWidth: 1,\n lineShape: 'solid',\n opacity: 1,\n };\n\n constructor(layer: OuterCurveLayer) {\n this.smoothing = layer.smoothing ?? false;\n this.aes = {\n ...this.aes,\n ...layer.aes,\n };\n }\n}\n\nexport type ScatterplotLayer = DotsLayer | CurveLayer;\n\nexport type ScatterplotAxisSettings =\n AxisSettingsDiscrete & {title: string | ColumnName}\n | AxisSettingsContinuous & {title: string | ColumnName}\n\nexport class ScatterplotSettingsImpl implements SettingsInterface {\n readonly id: string;\n readonly type = 'scatterplot';\n readonly keyColumn: ColumnName;\n readonly facetSettings: {\n sharedX: boolean;\n sharedY: boolean;\n nRows?: number;\n nCols?: number;\n titlePosition: 'left' | 'center' | 'right';\n };\n readonly x: ColumnName;\n readonly y: ColumnName;\n readonly facetBy: ColumnName[];\n readonly grouping: {\n columnName: ColumnName;\n order?: DataValue[];\n inheritedAes?: AesRecord;\n }[];\n readonly dotSize: {\n columnName: ColumnName;\n inheritedAes?: AesRecord;\n }[];\n readonly dotShape: {\n columnName: ColumnName;\n inheritedAes?: AesRecord;\n }[];\n readonly label: ColumnName | null;\n readonly highlight: ColumnName | null;\n readonly chartSettings: {\n readonly size: {width: number; height: number};\n readonly title: {name: string; show: boolean; position: TitlePosition};\n readonly yAxis: ScatterplotAxisSettings;\n readonly xAxis: ScatterplotAxisSettings;\n readonly frame: {type: FrameType};\n readonly legend: {show: boolean; position: LegendPosition};\n readonly tooltips: {show: boolean; content?: ColumnName[]};\n };\n\n readonly trend: {\n bounded: boolean;\n color: string | InheritAesScatterplot | ContinuousAesFromColumn<string>;\n } | null;\n\n readonly layers: ScatterplotLayer[];\n\n constructor(settings: ScatterplotSettings) {\n ScatterplotSettingsSchema.parse(settings);\n this.id = lodash.uniqueId('settings');\n this.keyColumn = settings.keyColumn;\n this.facetSettings = {sharedX: true, sharedY: true, titlePosition: 'left', ...settings.facetSettings};\n this.x = settings.x;\n this.y = settings.y;\n this.facetBy = settings.facetBy ?? [];\n this.grouping = settings.grouping ?? [];\n this.dotSize = settings.dotSize ?? [];\n this.dotShape = settings.dotShape ?? [];\n this.label = settings.label ?? null;\n this.highlight = settings.highlight ?? null;\n this.chartSettings = {\n size: {\n width: settings?.size?.width ?? (this.facetBy.length ? DEFAULT_WIDTH_SMALL : DEFAULT_WIDTH),\n height: settings?.size?.height ?? (this.facetBy.length ? DEFAULT_HEIGHT_SMALL : DEFAULT_HEIGHT),\n },\n title: {\n position: 'center',\n show: true,\n ...settings.title,\n name: settings.title?.name ?? 'Chart',\n },\n yAxis: {\n title: settings.y.label ?? settings.y.value,\n scale: 'linear',\n showGrid: true,\n showTicks: true,\n ...settings.yAxis,\n },\n xAxis: {\n title: settings.x.label ?? settings.x.value,\n scale: 'linear',\n showGrid: true,\n showTicks: true,\n ...settings.xAxis,\n },\n frame: {type: settings.frame?.type ?? 'full'},\n legend: {\n show: true,\n position: 'right',\n ...settings.legend,\n },\n tooltips: {\n ...settings.tooltips,\n show: !(settings.tooltips?.show === false) && (settings.tooltips?.content ?? []).length > 0,\n },\n };\n\n this.trend = settings?.trend && this.chartSettings.xAxis.scale !== 'discrete' && this.chartSettings.yAxis.scale !== 'discrete'\n ? {\n bounded: settings.trend.bounded ?? false,\n color: settings.trend.color ?? BLACK,\n }\n : null;\n\n this.layers = settings.layers\n .map(layer => {\n if (layer.type === 'dots') {\n return new DotsLayer(layer);\n }\n if (layer.type === 'curve') {\n return new CurveLayer(layer);\n }\n exhaustive(layer, 'Unknown layer type');\n })\n .filter(Boolean) as ScatterplotLayer[];\n }\n}\n"],"names":["DotsLayer","layer","__publicField","BLACK","CurveLayer","ScatterplotSettingsImpl","settings","ScatterplotSettingsSchema","lodash","_a","DEFAULT_WIDTH_SMALL","DEFAULT_WIDTH","_b","DEFAULT_HEIGHT_SMALL","DEFAULT_HEIGHT","_c","_d","_e","_f","exhaustive"],"mappings":"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"}
|
|
@@ -19,6 +19,7 @@ export declare class ChartScatterplot extends AbstractChart {
|
|
|
19
19
|
dotsByFacets: GroupedDots;
|
|
20
20
|
facetKeys: string[];
|
|
21
21
|
facetKeysCombinations: string[][];
|
|
22
|
+
facetLabels: Record<string, string[]>;
|
|
22
23
|
trendsData: TrendsData | null;
|
|
23
24
|
legendLabels: ScatterplotLegendInfo;
|
|
24
25
|
layersData: Record<string, ScatterplotLayerData[]>;
|
|
@@ -1,52 +1,53 @@
|
|
|
1
|
-
var
|
|
2
|
-
var
|
|
3
|
-
var
|
|
4
|
-
import { s as
|
|
5
|
-
import { AbstractChart as
|
|
6
|
-
import { getUnknownErrorInfo as
|
|
1
|
+
var N = Object.defineProperty;
|
|
2
|
+
var j = (l, c, t) => c in l ? N(l, c, { enumerable: !0, configurable: !0, writable: !0, value: t }) : l[c] = t;
|
|
3
|
+
var C = (l, c, t) => j(l, typeof c != "symbol" ? c + "" : c, t);
|
|
4
|
+
import { s as F } from "../_virtual/server.browser.js";
|
|
5
|
+
import { AbstractChart as P } from "../AbstractChart.js";
|
|
6
|
+
import { getUnknownErrorInfo as w, isErrorInfo as I } from "../types/common.js";
|
|
7
7
|
import "../types/discrete.js";
|
|
8
8
|
import "../types/scatterplot.js";
|
|
9
9
|
import "../types/heatmap.js";
|
|
10
10
|
import "../types/dendro.js";
|
|
11
11
|
import "../types/histogram.js";
|
|
12
12
|
import "../types/bubble.js";
|
|
13
|
-
import { arraysAreDifferent as
|
|
14
|
-
import { getKeysCombinations as
|
|
15
|
-
import
|
|
16
|
-
import { getDots as
|
|
17
|
-
import { getLayersData as
|
|
18
|
-
import { getRegressionData as
|
|
19
|
-
import { ScatterplotSettingsImpl as
|
|
20
|
-
import { createLegendInfo as
|
|
21
|
-
import { MAX_FACETS_COUNT as
|
|
22
|
-
|
|
13
|
+
import { arraysAreDifferent as S } from "../utils/arraysAreDifferent.js";
|
|
14
|
+
import { getKeysCombinations as L } from "../utils/getKeysCombination.js";
|
|
15
|
+
import X from "./ChartRenderer.js";
|
|
16
|
+
import { getDots as z } from "./dots.js";
|
|
17
|
+
import { getLayersData as H } from "./getLayersData.js";
|
|
18
|
+
import { getRegressionData as V } from "./linearRegression.js";
|
|
19
|
+
import { ScatterplotSettingsImpl as M } from "./ScatterplotSettingsImpl.js";
|
|
20
|
+
import { createLegendInfo as Y, addPalettesToAesMapping as q } from "./utils/createLegendInfo.js";
|
|
21
|
+
import { MAX_FACETS_COUNT as R, MAX_GROUPS_COUNT as E } from "../constants.js";
|
|
22
|
+
import { getFacetLabels as J } from "../discrete/utils/getFacetLabels.js";
|
|
23
|
+
function Q(l) {
|
|
23
24
|
return typeof l == "object" && "type" in l && l.type === "grouping";
|
|
24
25
|
}
|
|
25
|
-
function
|
|
26
|
-
if (
|
|
27
|
-
const e =
|
|
28
|
-
return { keys: e, labels: e.reduce((a,
|
|
29
|
-
const
|
|
30
|
-
return a[
|
|
26
|
+
function B(l, c, t) {
|
|
27
|
+
if (c.scale === "discrete") {
|
|
28
|
+
const e = c.keys ? c.keys : l.getColumnCategories(t.value);
|
|
29
|
+
return { keys: e, labels: e.reduce((a, o) => {
|
|
30
|
+
const h = (c.labels ?? {})[o] ?? (t.valueLabels ? l.getColumnValue(t.valueLabels, l.getColumnCategoryRowIndex(t.value, o)) : o);
|
|
31
|
+
return a[o] = String(h), a;
|
|
31
32
|
}, {}) };
|
|
32
33
|
}
|
|
33
34
|
return { keys: [], labels: {} };
|
|
34
35
|
}
|
|
35
|
-
class
|
|
36
|
+
class mt extends P {
|
|
36
37
|
constructor(t, e, a) {
|
|
37
38
|
super(t, e);
|
|
38
|
-
|
|
39
|
-
|
|
40
|
-
|
|
39
|
+
C(this, "settings");
|
|
40
|
+
C(this, "chartRenderer");
|
|
41
|
+
C(this, "onTooltipHintSwitch", () => {
|
|
41
42
|
});
|
|
42
|
-
|
|
43
|
-
this.chartRenderer = new
|
|
43
|
+
C(this, "calculatedData", null);
|
|
44
|
+
this.chartRenderer = new X(), this.settings = new M(e), a && (this.onTooltipHintSwitch = a.onTooltipHintSwitch);
|
|
44
45
|
}
|
|
45
46
|
mount(t) {
|
|
46
47
|
try {
|
|
47
48
|
this.chartRenderer.init(t), this._updateData(), this._updateChart(), this.hasError = !1, this.errorInfo = null;
|
|
48
49
|
} catch (e) {
|
|
49
|
-
this.hasError = !0, e instanceof Error && (this.errorInfo =
|
|
50
|
+
this.hasError = !0, e instanceof Error && (this.errorInfo = I(e.cause) ? e.cause : w(e), this.chartRenderer.renderError(e.message), console.error(e));
|
|
50
51
|
}
|
|
51
52
|
}
|
|
52
53
|
unmount() {
|
|
@@ -54,126 +55,127 @@ class ut extends G {
|
|
|
54
55
|
}
|
|
55
56
|
updateSettingsAndData(t, e) {
|
|
56
57
|
try {
|
|
57
|
-
const a = this.settings,
|
|
58
|
-
this.settings = new
|
|
58
|
+
const a = this.settings, o = this.data;
|
|
59
|
+
this.settings = new M(e), this.data = t, this._needUpdateCalculatedDataBySettings(a, this.settings) || this._needUpdateCalculatedDataByData(o, this.data) ? this._updateData() : this._updateAesInData(), this._updateChart(), this.hasError = !1, this.errorInfo = null;
|
|
59
60
|
} catch (a) {
|
|
60
|
-
this.hasError = !0, console.error(a), a instanceof Error && (this.errorInfo =
|
|
61
|
+
this.hasError = !0, console.error(a), a instanceof Error && (this.errorInfo = I(a.cause) ? a.cause : w(a), this.chartRenderer.renderError(a.message), console.error(a));
|
|
61
62
|
}
|
|
62
63
|
}
|
|
63
64
|
updateChartState(t, e) {
|
|
64
65
|
console.warn("no chart state for scatterplot");
|
|
65
66
|
}
|
|
66
67
|
export() {
|
|
67
|
-
return this._updateChart(),
|
|
68
|
+
return this._updateChart(), F.renderToString(this.chartRenderer.component);
|
|
68
69
|
}
|
|
69
70
|
_needUpdateCalculatedDataBySettings(t, e) {
|
|
70
|
-
var a,
|
|
71
|
-
return t.facetBy.some((
|
|
72
|
-
var
|
|
73
|
-
return
|
|
74
|
-
}) || t.grouping.length !== e.grouping.length ||
|
|
75
|
-
t.grouping.map((
|
|
76
|
-
e.grouping.map((
|
|
77
|
-
) || t.grouping.some((
|
|
78
|
-
var
|
|
79
|
-
return
|
|
80
|
-
}) ||
|
|
71
|
+
var a, o, u, h;
|
|
72
|
+
return t.facetBy.some((n, i) => {
|
|
73
|
+
var p;
|
|
74
|
+
return n.value !== ((p = e.facetBy[i]) == null ? void 0 : p.value);
|
|
75
|
+
}) || t.grouping.length !== e.grouping.length || S(
|
|
76
|
+
t.grouping.map((n) => n.columnName.value),
|
|
77
|
+
e.grouping.map((n) => n.columnName.value)
|
|
78
|
+
) || t.grouping.some((n, i) => {
|
|
79
|
+
var p;
|
|
80
|
+
return S(n.order, (p = e.grouping) == null ? void 0 : p[i].order);
|
|
81
|
+
}) || S(t.chartSettings.xAxis.keys, e.chartSettings.xAxis.keys) || S(t.chartSettings.yAxis.keys, e.chartSettings.yAxis.keys) || (((a = t.label) == null ? void 0 : a.value) || ((o = e.label) == null ? void 0 : o.value)) && ((u = t.label) == null ? void 0 : u.value) !== ((h = e.label) == null ? void 0 : h.value) || t.layers.length !== e.layers.length || t.layers.some((n, i) => n.type !== e.layers[i].type) || !!t.trend != !!e.trend;
|
|
81
82
|
}
|
|
82
83
|
_needUpdateCalculatedDataByData(t, e) {
|
|
83
|
-
const a = Object.keys(t.data),
|
|
84
|
-
return t.id !== e.id || a.length !==
|
|
85
|
-
var
|
|
86
|
-
return t.data[u].length !== ((
|
|
84
|
+
const a = Object.keys(t.data), o = Object.keys(e.data);
|
|
85
|
+
return t.id !== e.id || a.length !== o.length || a.some((u) => {
|
|
86
|
+
var h;
|
|
87
|
+
return t.data[u].length !== ((h = e.data[u]) == null ? void 0 : h.length);
|
|
87
88
|
});
|
|
88
89
|
}
|
|
89
90
|
_updateData() {
|
|
90
|
-
const { x: t, y: e, facetBy: a, grouping:
|
|
91
|
-
this.data.setGrouping([...
|
|
92
|
-
const
|
|
91
|
+
const { x: t, y: e, facetBy: a, grouping: o, dotSize: u, dotShape: h, trend: n, layers: i, label: p, highlight: d, chartSettings: s } = this.settings, m = a.map((r) => this.data.getColumnCategories(r.value)).filter((r) => r.length > 0), D = o.map(({ columnName: r }) => this.data.getColumnCategories(r.value)).filter((r) => r.length > 0), g = m.length ? L(m) : [["null"]], b = D.length ? L(D) : [["null"]], y = a.map((r) => r.value) ?? null;
|
|
92
|
+
this.data.setGrouping([...y]);
|
|
93
|
+
const K = {
|
|
93
94
|
x: this.data.getColumn(t.value).every((r) => r === null || !(Number(r) < 0)),
|
|
94
95
|
y: this.data.getColumn(e.value).every((r) => r === null || !(Number(r) < 0))
|
|
95
|
-
},
|
|
96
|
-
if (f.length >
|
|
96
|
+
}, k = o.map((r) => r.columnName), A = z(this.data, g, t, e, p, d, o, s.xAxis, s.yAxis, i.find((r) => r.type === "dots")), f = Object.keys(A);
|
|
97
|
+
if (f.length > R) {
|
|
97
98
|
const r = {
|
|
98
99
|
type: "tooManyFacets",
|
|
99
|
-
info: { count: f.length, maxCount:
|
|
100
|
+
info: { count: f.length, maxCount: R }
|
|
100
101
|
};
|
|
101
102
|
throw Error(r.type, { cause: r });
|
|
102
103
|
}
|
|
103
|
-
const
|
|
104
|
-
if (
|
|
104
|
+
const T = V(this.data, A, f, b, k, n), x = B(this.data, s.xAxis, t), _ = B(this.data, s.yAxis, e);
|
|
105
|
+
if (x.keys.length > E) {
|
|
105
106
|
const r = {
|
|
106
107
|
type: "tooManyScatterplotGroupsX",
|
|
107
|
-
info: { count:
|
|
108
|
+
info: { count: x.keys.length, maxCount: E }
|
|
108
109
|
};
|
|
109
110
|
throw Error(r.type, { cause: r });
|
|
110
111
|
}
|
|
111
|
-
if (
|
|
112
|
+
if (_.keys.length > E) {
|
|
112
113
|
const r = {
|
|
113
114
|
type: "tooManyScatterplotGroupsY",
|
|
114
|
-
info: { count:
|
|
115
|
+
info: { count: _.keys.length, maxCount: E }
|
|
115
116
|
};
|
|
116
117
|
throw Error(r.type, { cause: r });
|
|
117
118
|
}
|
|
118
|
-
const
|
|
119
|
+
const v = [...o, ...u, ...h], O = Y(this.data, v, i), U = H(this.data, i, f, A, b, k, s.xAxis, x), G = J(this.data, a, f, g);
|
|
119
120
|
this.calculatedData = {
|
|
120
|
-
onlyPositive:
|
|
121
|
-
dotsByFacets:
|
|
121
|
+
onlyPositive: K,
|
|
122
|
+
dotsByFacets: A,
|
|
122
123
|
facetKeys: f,
|
|
123
|
-
facetKeysCombinations:
|
|
124
|
-
|
|
125
|
-
|
|
126
|
-
|
|
127
|
-
|
|
128
|
-
|
|
124
|
+
facetKeysCombinations: g,
|
|
125
|
+
facetLabels: G,
|
|
126
|
+
trendsData: T,
|
|
127
|
+
legendLabels: O,
|
|
128
|
+
layersData: U,
|
|
129
|
+
discreteAxisDataX: x,
|
|
130
|
+
discreteAxisDataY: _
|
|
129
131
|
};
|
|
130
132
|
}
|
|
131
133
|
_updateAesInData() {
|
|
132
134
|
const t = this.calculatedData;
|
|
133
135
|
if (!t)
|
|
134
136
|
return;
|
|
135
|
-
const { grouping: e, trend: a, layers:
|
|
136
|
-
|
|
137
|
-
for (let
|
|
138
|
-
t.layersData[
|
|
139
|
-
}), e.forEach(({ columnName:
|
|
140
|
-
const
|
|
141
|
-
|
|
142
|
-
g.aes && Object.entries(g.aes).forEach(([
|
|
143
|
-
|
|
137
|
+
const { grouping: e, trend: a, layers: o, dotSize: u, dotShape: h } = this.settings, { facetKeys: n, trendsData: i } = t;
|
|
138
|
+
n.forEach((d) => {
|
|
139
|
+
for (let s = 0; s < o.length; s++)
|
|
140
|
+
t.layersData[d][s].info = o[s];
|
|
141
|
+
}), [...e, ...u, ...h].forEach(({ columnName: d, inheritedAes: s }) => {
|
|
142
|
+
const m = /* @__PURE__ */ new Set(), D = {};
|
|
143
|
+
o.forEach((g) => {
|
|
144
|
+
g.aes && Object.entries(g.aes).forEach(([b, y]) => {
|
|
145
|
+
Q(y) && y.value === d.value && (m.add(b), y.palette && (D[b] = y.palette));
|
|
144
146
|
});
|
|
145
|
-
}), t.legendLabels[
|
|
146
|
-
|
|
147
|
-
|
|
148
|
-
|
|
147
|
+
}), t.legendLabels[d.value].usedAes = [...m], t.legendLabels[d.value].aesMap = q(
|
|
148
|
+
d,
|
|
149
|
+
D,
|
|
150
|
+
s
|
|
149
151
|
);
|
|
150
|
-
}), i && a && Object.keys(i).forEach((
|
|
151
|
-
i[
|
|
152
|
-
|
|
152
|
+
}), i && a && Object.keys(i).forEach((d) => {
|
|
153
|
+
i[d].forEach((s) => {
|
|
154
|
+
s.color = a.color, s.bounded = a.bounded;
|
|
153
155
|
});
|
|
154
156
|
});
|
|
155
157
|
}
|
|
156
158
|
_updateChart() {
|
|
157
159
|
if (!this.calculatedData)
|
|
158
160
|
return;
|
|
159
|
-
const {
|
|
161
|
+
const { facetLabels: t } = this.calculatedData, { id: e, chartSettings: a, facetSettings: o, grouping: u, dotSize: h, dotShape: n, keyColumn: i, layers: p, trend: d } = this.settings;
|
|
160
162
|
this.chartRenderer.render(
|
|
161
163
|
this.data,
|
|
162
|
-
t,
|
|
163
164
|
e,
|
|
164
165
|
a,
|
|
166
|
+
o,
|
|
165
167
|
this.calculatedData.facetKeys,
|
|
166
|
-
this.calculatedData.
|
|
168
|
+
this.calculatedData.facetKeys.map((s) => t[s]),
|
|
167
169
|
//for titles, if facet by more than 1 column
|
|
168
170
|
this.calculatedData.dotsByFacets,
|
|
169
171
|
this.calculatedData.trendsData,
|
|
170
|
-
|
|
172
|
+
i,
|
|
171
173
|
this.calculatedData.onlyPositive,
|
|
172
174
|
this.calculatedData.legendLabels,
|
|
173
175
|
this.calculatedData.layersData,
|
|
174
|
-
s.map((
|
|
175
|
-
|
|
176
|
-
|
|
176
|
+
[...u.map((s) => s.columnName), ...h.map((s) => s.columnName), ...n.map((s) => s.columnName)],
|
|
177
|
+
p,
|
|
178
|
+
d,
|
|
177
179
|
this.calculatedData.discreteAxisDataX,
|
|
178
180
|
this.calculatedData.discreteAxisDataY,
|
|
179
181
|
this.onTooltipHintSwitch
|
|
@@ -181,6 +183,6 @@ class ut extends G {
|
|
|
181
183
|
}
|
|
182
184
|
}
|
|
183
185
|
export {
|
|
184
|
-
|
|
186
|
+
mt as ChartScatterplot
|
|
185
187
|
};
|
|
186
188
|
//# sourceMappingURL=index.js.map
|