@milaboratories/graph-maker 1.1.167 → 1.1.169
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/GraphMaker/constantsCommon.d.ts +5 -0
- package/dist/GraphMaker/constantsCommon.d.ts.map +1 -1
- package/dist/GraphMaker/constantsCommon.js +13 -8
- package/dist/GraphMaker/constantsCommon.js.map +1 -1
- package/dist/GraphMaker/forms/DataMappingForm/BubbleForm.vue.d.ts.map +1 -1
- package/dist/GraphMaker/forms/DataMappingForm/BubbleForm.vue.js +60 -56
- package/dist/GraphMaker/forms/DataMappingForm/BubbleForm.vue.js.map +1 -1
- package/dist/GraphMaker/forms/LayersForm/Layer/Bubble.vue.d.ts.map +1 -1
- package/dist/GraphMaker/forms/LayersForm/Layer/Bubble.vue.js +86 -58
- package/dist/GraphMaker/forms/LayersForm/Layer/Bubble.vue.js.map +1 -1
- package/dist/GraphMaker/forms/LayersForm/Layer/discrete/StackedArea.vue.d.ts.map +1 -1
- package/dist/GraphMaker/forms/LayersForm/Layer/discrete/StackedArea.vue.js +56 -38
- package/dist/GraphMaker/forms/LayersForm/Layer/discrete/StackedArea.vue.js.map +1 -1
- package/dist/GraphMaker/forms/LayersForm/Layer/discrete/StackedBar.vue.d.ts.map +1 -1
- package/dist/GraphMaker/forms/LayersForm/Layer/discrete/StackedBar.vue.js +48 -30
- package/dist/GraphMaker/forms/LayersForm/Layer/discrete/StackedBar.vue.js.map +1 -1
- package/dist/GraphMaker/forms/LayersForm/Layer/heatmap/Heatmap.vue.js +109 -112
- package/dist/GraphMaker/forms/LayersForm/Layer/heatmap/Heatmap.vue.js.map +1 -1
- package/dist/GraphMaker/utils/createChartSettingsForRender/composeBubbleSettings.d.ts +20 -0
- package/dist/GraphMaker/utils/createChartSettingsForRender/composeBubbleSettings.d.ts.map +1 -1
- package/dist/GraphMaker/utils/createChartSettingsForRender/composeBubbleSettings.js +19 -15
- package/dist/GraphMaker/utils/createChartSettingsForRender/composeBubbleSettings.js.map +1 -1
- package/dist/GraphMaker/utils/createChartSettingsForRender/composeDiscreteSettings.d.ts +3 -1
- package/dist/GraphMaker/utils/createChartSettingsForRender/composeDiscreteSettings.d.ts.map +1 -1
- package/dist/GraphMaker/utils/createChartSettingsForRender/composeHeatmapSettings.d.ts +8 -8
- package/dist/GraphMaker/utils/createChartSettingsForRender/composeHeatmapSettings.d.ts.map +1 -1
- package/dist/GraphMaker/utils/createChartSettingsForRender/composeHeatmapSettings.js +23 -23
- package/dist/GraphMaker/utils/createChartSettingsForRender/composeHeatmapSettings.js.map +1 -1
- package/dist/GraphMaker/utils/createChartSettingsForRender/getLayersDataFromForms.d.ts.map +1 -1
- package/dist/GraphMaker/utils/createChartSettingsForRender/getLayersDataFromForms.js +7 -5
- package/dist/GraphMaker/utils/createChartSettingsForRender/getLayersDataFromForms.js.map +1 -1
- package/dist/node_modules/@milaboratories/miplots4/dist/bubble/BubbleSettingsImpl.js +19 -14
- package/dist/node_modules/@milaboratories/miplots4/dist/bubble/BubbleSettingsImpl.js.map +1 -1
- package/dist/node_modules/@milaboratories/miplots4/dist/bubble/ChartRenderer.js +132 -132
- package/dist/node_modules/@milaboratories/miplots4/dist/bubble/ChartRenderer.js.map +1 -1
- package/dist/node_modules/@milaboratories/miplots4/dist/bubble/components/Chart.js +53 -53
- package/dist/node_modules/@milaboratories/miplots4/dist/bubble/components/Chart.js.map +1 -1
- package/dist/node_modules/@milaboratories/miplots4/dist/bubble/components/ChartsGroup.js.map +1 -1
- package/dist/node_modules/@milaboratories/miplots4/dist/bubble/getCellTooltip.js +7 -7
- package/dist/node_modules/@milaboratories/miplots4/dist/bubble/getCellTooltip.js.map +1 -1
- package/dist/node_modules/@milaboratories/miplots4/dist/bubble/getGroupedCellsData.js +49 -83
- package/dist/node_modules/@milaboratories/miplots4/dist/bubble/getGroupedCellsData.js.map +1 -1
- package/dist/node_modules/@milaboratories/miplots4/dist/bubble/index.js +51 -34
- package/dist/node_modules/@milaboratories/miplots4/dist/bubble/index.js.map +1 -1
- package/dist/node_modules/@milaboratories/miplots4/dist/bubble/utils/calculateCaptionTails.js.map +1 -1
- package/dist/node_modules/@milaboratories/miplots4/dist/discrete/DiscreteSettingsImpl.js +8 -8
- package/dist/node_modules/@milaboratories/miplots4/dist/discrete/DiscreteSettingsImpl.js.map +1 -1
- package/dist/node_modules/@milaboratories/miplots4/dist/discrete/index.js +8 -8
- package/dist/node_modules/@milaboratories/miplots4/dist/discrete/layers/stackedBar.js +54 -29
- package/dist/node_modules/@milaboratories/miplots4/dist/discrete/layers/stackedBar.js.map +1 -1
- package/dist/node_modules/@milaboratories/miplots4/dist/heatmap/ChartRenderer.js +2 -2
- package/dist/node_modules/@milaboratories/miplots4/dist/heatmap/ChartRenderer.js.map +1 -1
- package/dist/node_modules/@milaboratories/miplots4/dist/heatmap/components/Annotations/Annotation.js.map +1 -1
- package/dist/node_modules/@milaboratories/miplots4/dist/heatmap/components/Annotations/AnnotationCellsCanvas.js.map +1 -1
- package/dist/node_modules/@milaboratories/miplots4/dist/heatmap/components/Annotations/AnnotationCellsSvg.js.map +1 -1
- package/dist/node_modules/@milaboratories/miplots4/dist/heatmap/components/Annotations/index.js.map +1 -1
- package/dist/node_modules/@milaboratories/miplots4/dist/heatmap/components/CanvasCells.js +31 -31
- package/dist/node_modules/@milaboratories/miplots4/dist/heatmap/components/CanvasCells.js.map +1 -1
- package/dist/node_modules/@milaboratories/miplots4/dist/heatmap/components/Chart.js +20 -20
- package/dist/node_modules/@milaboratories/miplots4/dist/heatmap/components/Chart.js.map +1 -1
- package/dist/node_modules/@milaboratories/miplots4/dist/heatmap/components/ChartsGroup.js +12 -12
- package/dist/node_modules/@milaboratories/miplots4/dist/heatmap/components/ChartsGroup.js.map +1 -1
- package/dist/node_modules/@milaboratories/miplots4/dist/heatmap/components/SvgCells.js +14 -14
- package/dist/node_modules/@milaboratories/miplots4/dist/heatmap/components/SvgCells.js.map +1 -1
- package/dist/node_modules/@milaboratories/miplots4/dist/heatmap/components/tooltipUtils.js +14 -14
- package/dist/node_modules/@milaboratories/miplots4/dist/heatmap/components/tooltipUtils.js.map +1 -1
- package/dist/node_modules/@milaboratories/miplots4/dist/heatmap/fillCellsData.js +244 -0
- package/dist/node_modules/@milaboratories/miplots4/dist/heatmap/fillCellsData.js.map +1 -0
- package/dist/node_modules/@milaboratories/miplots4/dist/heatmap/getCells.js +28 -214
- package/dist/node_modules/@milaboratories/miplots4/dist/heatmap/getCells.js.map +1 -1
- package/dist/node_modules/@milaboratories/miplots4/dist/heatmap/getDendrograms.js +26 -26
- package/dist/node_modules/@milaboratories/miplots4/dist/heatmap/getDendrograms.js.map +1 -1
- package/dist/node_modules/@milaboratories/miplots4/dist/heatmap/index.js +8 -8
- package/dist/node_modules/@milaboratories/miplots4/dist/heatmap/index.js.map +1 -1
- package/dist/node_modules/@milaboratories/miplots4/dist/heatmap/utils/calculateCaptionTails.js.map +1 -1
- package/dist/node_modules/@milaboratories/miplots4/dist/node_modules/d3-array/src/min.js +12 -6
- package/dist/node_modules/@milaboratories/miplots4/dist/node_modules/d3-array/src/min.js.map +1 -1
- package/dist/node_modules/@milaboratories/miplots4/dist/types/bubble.js +23 -12
- package/dist/node_modules/@milaboratories/miplots4/dist/types/bubble.js.map +1 -1
- package/dist/node_modules/@milaboratories/miplots4/dist/types/discrete.js +2 -0
- package/dist/node_modules/@milaboratories/miplots4/dist/types/discrete.js.map +1 -1
- package/dist/node_modules/@milaboratories/miplots4/dist/utils/getFacetOrGroupKey.js +7 -0
- package/dist/node_modules/@milaboratories/miplots4/dist/utils/getFacetOrGroupKey.js.map +1 -0
- package/dist/node_modules/@milaboratories/pf-plots/dist/controllers/controllersByChartType/bubble.js +165 -95
- package/dist/node_modules/@milaboratories/pf-plots/dist/controllers/controllersByChartType/bubble.js.map +1 -1
- package/dist/node_modules/@milaboratories/pf-plots/dist/controllers/controllersByChartType/scatterplot-umap.js +64 -64
- package/dist/node_modules/@milaboratories/pf-plots/dist/controllers/controllersByChartType/scatterplot-umap.js.map +1 -1
- package/dist/node_modules/@milaboratories/pf-plots/dist/controllers/controllersByChartType/scatterplot.js +30 -30
- package/dist/node_modules/@milaboratories/pf-plots/dist/controllers/controllersByChartType/scatterplot.js.map +1 -1
- package/package.json +3 -3
|
@@ -1,4 +1,4 @@
|
|
|
1
|
-
import { isContinuousDataMapping as
|
|
1
|
+
import { isContinuousDataMapping as T } from "../../constantsCommon.js";
|
|
2
2
|
import { AMINOACID_COLOR_MAPPING as L, NUCLEOTIDE_COLOR_MAPPING as A, PALETTE_MAP as b, DEFAULT_BLACK as y, DEFAULT_CONTINUOUS_PALETTE as F, DEFAULT_DOT_SHAPE as I } from "../../constantsAesthetic.js";
|
|
3
3
|
import { DEFAULT_DOT_SIZE as V, DEFAULT_DOT_RANGE as _, isAestheticMappingContinuous as P, createContinuousMappingFromPalette as N } from "../../dataBindAes.js";
|
|
4
4
|
function x(r) {
|
|
@@ -111,6 +111,7 @@ function B(r, l, p, u, d) {
|
|
|
111
111
|
o.push({
|
|
112
112
|
type: "stackedBar",
|
|
113
113
|
normalize: e.normalize,
|
|
114
|
+
height: e.height,
|
|
114
115
|
aes: {
|
|
115
116
|
fillColor: i(e.fillColor),
|
|
116
117
|
lineColor: i(e.lineColor),
|
|
@@ -124,6 +125,7 @@ function B(r, l, p, u, d) {
|
|
|
124
125
|
type: "stackedArea",
|
|
125
126
|
normalize: e.normalize,
|
|
126
127
|
showBars: e.showBars,
|
|
128
|
+
height: e.height,
|
|
127
129
|
aes: {
|
|
128
130
|
fillColor: i(e.fillColor),
|
|
129
131
|
lineColor: i(e.lineColor),
|
|
@@ -187,13 +189,13 @@ function B(r, l, p, u, d) {
|
|
|
187
189
|
}
|
|
188
190
|
function z(r, l, p, u) {
|
|
189
191
|
if (r) {
|
|
190
|
-
const d =
|
|
192
|
+
const d = T(l) ? l : { column: r.value, range: _ }, o = [1 / 0, -1 / 0];
|
|
191
193
|
return p.values[r.value].forEach((n) => {
|
|
192
194
|
const c = Number(n);
|
|
193
195
|
c < o[0] && (o[0] = c), c > o[1] && (o[1] = c);
|
|
194
196
|
}), { columnName: r, domain: o, range: [d.range.min, d.range.max] };
|
|
195
197
|
}
|
|
196
|
-
return
|
|
198
|
+
return T(l) ? u : l ?? u;
|
|
197
199
|
}
|
|
198
200
|
function w(r, l, p, u) {
|
|
199
201
|
const d = p.find((n) => n.value === r);
|
|
@@ -222,8 +224,8 @@ function R(r, l, p, u, d, o, n = [], c = V) {
|
|
|
222
224
|
function t(a, s, D, G = !1) {
|
|
223
225
|
var v;
|
|
224
226
|
if (s.length) {
|
|
225
|
-
const O = s.length ? (v = o.getSourceInfo(s[0])) == null ? void 0 : v.type : void 0, E = O === "String" || !G ? { type: "grouping", value: s[0] } : w(s[0], N(F), n, p),
|
|
226
|
-
return a === null || O === "String" || !G || !P(
|
|
227
|
+
const O = s.length ? (v = o.getSourceInfo(s[0])) == null ? void 0 : v.type : void 0, E = O === "String" || !G ? { type: "grouping", value: s[0] } : w(s[0], N(F), n, p), g = d[s[0]];
|
|
228
|
+
return a === null || O === "String" || !G || !P(g) ? E : w(s[0], g, n, p);
|
|
227
229
|
}
|
|
228
230
|
return typeof a == "object" ? D : a;
|
|
229
231
|
}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"getLayersDataFromForms.js","sources":["../../../../src/GraphMaker/utils/createChartSettingsForRender/getLayersDataFromForms.ts"],"sourcesContent":["import {\n ColorAes,\n getDefaultLayersSettings,\n NumberRange,\n LayersSettings,\n MappingLink,\n DiscreteStatisticsState,\n ColumnNameSchema,\n ContinuousDataMappingSize,\n isContinuousDataMapping,\n ContinuousDataMappingForGraph\n} from '../../constantsCommon';\nimport {\n Layer,\n ReactiveState\n} from '../../types';\nimport {\n DiscreteUIState, InputGuide,\n InputState,\n PlotDataAndSettings,\n ScatterplotUIState\n} from '@milaboratories/pf-plots';\nimport { DotShape, LineType } from '../../components/AesSettings/types';\nimport {\n AMINOACID_COLOR_MAPPING,\n DEFAULT_BLACK,\n DEFAULT_CONTINUOUS_PALETTE,\n DEFAULT_DOT_SHAPE, NUCLEOTIDE_COLOR_MAPPING,\n PALETTE_MAP\n} from '../../constantsAesthetic';\nimport {\n AestheticMappingContinuous, createContinuousMappingFromPalette,\n DEFAULT_DOT_RANGE,\n DEFAULT_DOT_SIZE\n} from '../../dataBindAes';\nimport { ScatterplotSettings } from '@milaboratories/miplots4';\nimport { isAestheticMappingContinuous } from '../../dataBindAes';\n\nexport function getStatLayers(statisticsSettings: DiscreteStatisticsState) {\n const layers: ChartLayerSettings[] = [];\n if (\n statisticsSettings.overall.data.testMethod &&\n statisticsSettings.overall.validity.testMethod\n ) {\n layers.push({\n type: 'stat',\n statType: 'overall',\n testMethod: statisticsSettings.overall.data.testMethod\n });\n }\n if (\n statisticsSettings.referenceGroup.data.testMethod &&\n statisticsSettings.referenceGroup.validity.testMethod &&\n statisticsSettings.referenceGroup.validity.referenceGroup\n ) {\n const layer: ChartLayerSettings = {\n type: 'stat',\n statType: 'referenceGroup',\n testMethod: statisticsSettings.referenceGroup.data.testMethod,\n referenceGroup: statisticsSettings.referenceGroup.data.referenceGroup,\n format: statisticsSettings.referenceGroup.data.format,\n ns: statisticsSettings.referenceGroup.data.ns\n };\n if (statisticsSettings.referenceGroup.data.correctionMethod !== 'none') {\n layer.correctionMethod =\n statisticsSettings.referenceGroup.data.correctionMethod;\n }\n layers.push(layer);\n }\n if (\n statisticsSettings.pairwise.data.testMethod &&\n statisticsSettings.pairwise.validity.testMethod\n ) {\n const layer: ChartLayerSettings = {\n type: 'stat',\n statType: 'pairwise',\n testMethod: statisticsSettings.pairwise.data.testMethod,\n format: statisticsSettings.pairwise.data.format,\n ns: statisticsSettings.pairwise.data.ns\n };\n if (statisticsSettings.referenceGroup.data.correctionMethod !== 'none') {\n layer.correctionMethod =\n statisticsSettings.referenceGroup.data.correctionMethod;\n }\n layers.push(layer);\n }\n return layers;\n}\n\nexport function getDiscreteLayersSettings(\n layers: Layer[],\n layerSettings: LayersSettings,\n statisticsSettings: DiscreteStatisticsState,\n optionsState: DiscreteUIState,\n inputGuide: InputGuide<InputState>\n): ChartLayerSettings[] {\n const result: ChartLayerSettings[] = [];\n const hasPrimaryGrouping =\n optionsState.components.primaryGrouping.selectorStates.length > 0;\n const hasSecondaryGrouping =\n optionsState.components.secondaryGrouping.selectorStates.length > 0;\n // If user didn't touch layers settings, some aes that can be mapped to groupings has 'null' value - we set them to secondary or primary grouping if available\n // for 'line', 'errorbar' layer it isn't possible to set primary grouping as a color aes\n function useDefaultColor(\n value: ColorAes | null,\n onlySecondaryAvailable = false\n ) {\n if (value === null) {\n if (hasSecondaryGrouping) {\n return { type: 'secondaryGrouping' };\n }\n if (hasPrimaryGrouping && !onlySecondaryAvailable) {\n return { type: 'primaryGrouping' };\n }\n return { type: 'secondaryGrouping' };\n }\n return value;\n }\n\n layers.forEach((layer) => {\n if (layer === 'box') {\n const settings = layerSettings[layer];\n result.push({\n type: 'box',\n aes: {\n showOutliers: settings.showOutliers,\n dotShape: settings.dotShape,\n fillColor: useDefaultColor(settings.fillColor),\n lineColor: useDefaultColor(settings.lineColor),\n lineShape: settings.lineType,\n opacity: settings.opacity\n }\n });\n }\n if (layer === 'binnedDots') {\n const settings = layerSettings[layer];\n result.push({\n type: 'binnedDots',\n aes: {\n showOutliers: settings.showOutliers,\n fillColor: useDefaultColor(settings.fillColor),\n lineColor: useDefaultColor(settings.lineColor),\n opacity: settings.opacity\n }\n });\n }\n if (layer === 'jitteredDots') {\n const settings = layerSettings[layer];\n result.push({\n type: 'dot',\n aes: {\n showOutliers: settings.showOutliers,\n dotFill: useDefaultColor(settings.dotFill),\n dotShape: settings.dotShape,\n lineColor: settings.lineColor,\n opacity: settings.opacity\n }\n });\n }\n if (layer === 'violin') {\n const settings = layerSettings[layer];\n result.push({\n type: 'violin',\n stat: {\n trim: settings.trim\n },\n aes: {\n showQuartiles: settings.showQuartiles,\n medianLineStyle: settings.medianLineStyle,\n quartilesLineStyle: settings.quartilesLineStyle,\n fillColor: useDefaultColor(settings.fillColor),\n lineColor: useDefaultColor(settings.lineColor),\n lineShape: settings.lineType,\n opacity: settings.opacity\n }\n });\n }\n if (layer === 'bar') {\n const settings = layerSettings[layer];\n result.push({\n type: 'bar',\n height: settings.height,\n aes: {\n fillColor: useDefaultColor(settings.fillColor),\n lineColor: useDefaultColor(settings.lineColor),\n opacity: settings.opacity\n }\n });\n }\n if (layer === 'stackedBar') {\n const settings = layerSettings[layer];\n result.push({\n type: 'stackedBar',\n normalize: settings.normalize,\n aes: {\n fillColor: useDefaultColor(settings.fillColor),\n lineColor: useDefaultColor(settings.lineColor),\n opacity: settings.opacity\n }\n });\n }\n if (layer === 'stackedArea') {\n const settings = layerSettings[layer];\n result.push({\n type: 'stackedArea',\n normalize: settings.normalize,\n showBars: settings.showBars,\n aes: {\n fillColor: useDefaultColor(settings.fillColor),\n lineColor: useDefaultColor(settings.lineColor),\n barsOpacity: settings.barsOpacity,\n areaOpacity: settings.areaOpacity,\n }\n });\n }\n if (layer === 'line') {\n const settings = layerSettings[layer];\n result.push({\n type: 'line',\n pointsValues: settings.pointsValues,\n emptyGroupValue: settings.emptyGroupValue ?? 0,\n aes: {\n lineColor: useDefaultColor(settings.lineColor, true),\n fillColor: useDefaultColor(settings.dotFill, true),\n lineShape: settings.lineType,\n dotShape: settings.dotShape,\n opacity: settings.opacity\n }\n });\n }\n if (layer === 'errorbar') {\n const settings = layerSettings[layer];\n result.push({\n type: 'errorbar',\n pointsValues: settings.pointsValues,\n interval: settings.interval,\n aes: {\n lineColor: useDefaultColor(settings.lineColor, true),\n fillColor: useDefaultColor(settings.dotFill, true),\n dotShape: settings.dotShape,\n opacity: settings.opacity\n }\n });\n }\n if (layer === 'sina') {\n const settings = layerSettings[layer];\n result.push({\n type: 'sina',\n aes: {\n showOutliers: settings.showOutliers,\n dotFill: useDefaultColor(settings.dotFill),\n dotShape: settings.dotShape\n }\n });\n }\n if (layer === 'logo' && hasSecondaryGrouping) {\n const settings = layerSettings[layer];\n const secondaryGroupingInfo = inputGuide.getSourceInfo(optionsState.components.secondaryGrouping.selectorStates[0].selectedSource);\n const isProtein = secondaryGroupingInfo.spec.domain?.['pl7.app/alphabet'] === 'aminoacid';\n result.push({\n type: 'logo',\n normalize: settings.normalize,\n aes: {\n opacity: settings.opacity,\n dotFill: isProtein ? AMINOACID_COLOR_MAPPING : NUCLEOTIDE_COLOR_MAPPING\n }\n });\n }\n });\n if (hasPrimaryGrouping && !hasSecondaryGrouping) {\n result.push(...getStatLayers(statisticsSettings));\n }\n return result;\n}\n\nfunction getDotSize(\n column: ColumnNameSchema | undefined,\n dotSize: ContinuousDataMappingSize | number | null,\n dataByColumns: PlotDataAndSettings['data']['byColumns'],\n defaultDotSize: number\n): number | { columnName: ColumnNameSchema, domain: number[], range: number[] } {\n if (column) {\n const mapping = isContinuousDataMapping(dotSize) ? dotSize : { column: column.value, range: DEFAULT_DOT_RANGE };\n const domain = [Infinity, -Infinity];\n dataByColumns.values[column.value].forEach((v) => {\n const value = Number(v);\n if (value < domain[0]) {\n domain[0] = value;\n }\n if (value > domain[1]) {\n domain[1] = value;\n }\n });\n return { columnName: column, domain, range: [mapping.range.min, mapping.range.max] };\n }\n return isContinuousDataMapping(dotSize) ? defaultDotSize : dotSize ?? defaultDotSize;\n}\n\nfunction getContinuousColor<T extends string>(\n columnKey: string,\n value: AestheticMappingContinuous,\n groupingColumns: ColumnNameSchema[],\n dataByColumns: PlotDataAndSettings['data']['byColumns']\n): T | ContinuousDataMappingForGraph<T> {\n const column = groupingColumns.find(groupingColumn => groupingColumn.value === columnKey);\n let domain = [Infinity, -Infinity];\n if (column) {\n const { range, palette, midPoint, log } = value;\n const minValueMissed = range?.minValue === null || range?.minValue === undefined;\n const maxValueMissed = range?.maxValue === null || range?.maxValue === undefined;\n if (minValueMissed || maxValueMissed) {\n dataByColumns.values[column.value].forEach((v) => {\n const value = Number(v);\n if (minValueMissed && value < domain[0]) {\n domain[0] = value;\n }\n if (maxValueMissed && value > domain[1]) {\n domain[1] = value;\n }\n });\n }\n if (!minValueMissed) {\n domain[0] = range?.minValue as number;\n }\n if (!maxValueMissed) {\n domain[1] = range?.maxValue as number;\n }\n if (midPoint !== null && midPoint !== undefined) {\n const maxDistance = Math.max(Math.abs(midPoint - domain[0]), Math.abs(midPoint - domain[1]));\n domain[0] = midPoint - maxDistance;\n domain[1] = midPoint + maxDistance;\n }\n\n return {\n columnName: column,\n domain,\n range: PALETTE_MAP[palette].colors,\n type: log ? 'log' : 'linear'\n } as ContinuousDataMappingForGraph<T>;\n }\n return DEFAULT_BLACK as T;\n}\n\nexport function getScatterplotLayersSettings(\n layers: Layer[],\n layerSettings: ReturnType<typeof getDefaultLayersSettings>,\n dataByColumns: PlotDataAndSettings['data']['byColumns'],\n optionsState: ScatterplotUIState,\n dataBindAes: ReactiveState['dataBindAes'],\n inputGuide: InputGuide<InputState>,\n groupingSchema: ColumnNameSchema[] = [],\n defaultDotSize = DEFAULT_DOT_SIZE\n): ScatterplotSettings['layers'] {\n const result: ScatterplotSettings['layers'] = [];\n\n function useDefault<T extends string>(value: T | MappingLink | null, columns: string[], defaultValue: T, continousAvailable = false): T | {\n type: 'grouping',\n value: string\n } | ContinuousDataMappingForGraph<T> {\n if (columns.length) {\n const valueType = columns.length ? inputGuide.getSourceInfo(columns[0])?.type : undefined;\n const defaultByColumn = (valueType === 'String' || !continousAvailable)\n ? { type: 'grouping', value: columns[0] } as { type: 'grouping', value: string }\n : getContinuousColor<T>(columns[0], createContinuousMappingFromPalette(DEFAULT_CONTINUOUS_PALETTE), groupingSchema, dataByColumns);\n\n const savedMapping = dataBindAes[columns[0]];\n\n if (value === null || (valueType === 'String' || !continousAvailable) || !isAestheticMappingContinuous(savedMapping)) {\n return defaultByColumn;\n }\n return getContinuousColor<T>(columns[0], savedMapping as AestheticMappingContinuous, groupingSchema, dataByColumns);\n }\n\n return typeof value === 'object' ? defaultValue : value as T;\n }\n\n const grouping = optionsState.components.grouping.selectorStates.map((s) => s.selectedSource);\n const shape = optionsState.components.shape?.selectorStates.map((s) => s.selectedSource) ?? [];\n const sizeKey = optionsState.components.size?.selectorStates.map((s) => s.selectedSource)[0];\n const sizeColumn = sizeKey ? groupingSchema.find(column => column.value === sizeKey) : undefined;\n\n layers.forEach((layer) => {\n if (layer === 'dots') {\n const settings = layerSettings[layer];\n result.push({\n type: 'dots',\n aes: {\n dotFill: useDefault<string>(settings.dotFill, grouping, DEFAULT_BLACK, true) as string | {\n type: 'grouping',\n value: string\n } | ContinuousDataMappingForGraph<string>,\n dotShape: useDefault<DotShape>(settings.dotShape, shape, DEFAULT_DOT_SHAPE) as {\n type: 'grouping',\n value: string\n } | DotShape,\n dotSize: getDotSize(sizeColumn, settings.dotSize, dataByColumns, defaultDotSize)\n }\n });\n }\n if (layer === 'curve') {\n const settings = layerSettings[layer];\n result.push({\n type: 'curve',\n smoothing: settings.smoothing,\n aes: {\n lineColor: useDefault<string>(settings.lineColor, grouping, DEFAULT_BLACK, true) as {\n type: 'grouping',\n value: string\n } | string\n }\n });\n }\n });\n return result;\n}\n\nexport type ChartLayerSettings = {\n [key: string]: string | number | boolean | null | Record<string, string | DotShape | NumberRange | {\n domain: number[],\n range: number[]\n } | LineType | boolean | number | MappingLink | Record<string, string>> | undefined;\n type: string,\n aes?: Record<string, string | DotShape | NumberRange | {\n domain: number[],\n range: number[]\n } | LineType | boolean | number | MappingLink | Record<string, string>>,\n}\n"],"names":["getStatLayers","statisticsSettings","layers","layer","getDiscreteLayersSettings","layerSettings","optionsState","inputGuide","result","hasPrimaryGrouping","hasSecondaryGrouping","useDefaultColor","value","onlySecondaryAvailable","settings","isProtein","_a","AMINOACID_COLOR_MAPPING","NUCLEOTIDE_COLOR_MAPPING","getDotSize","column","dotSize","dataByColumns","defaultDotSize","mapping","isContinuousDataMapping","DEFAULT_DOT_RANGE","domain","v","getContinuousColor","columnKey","groupingColumns","groupingColumn","range","palette","midPoint","log","minValueMissed","maxValueMissed","maxDistance","PALETTE_MAP","DEFAULT_BLACK","getScatterplotLayersSettings","dataBindAes","groupingSchema","DEFAULT_DOT_SIZE","useDefault","columns","defaultValue","continousAvailable","valueType","defaultByColumn","createContinuousMappingFromPalette","DEFAULT_CONTINUOUS_PALETTE","savedMapping","isAestheticMappingContinuous","grouping","s","shape","sizeKey","_b","sizeColumn","DEFAULT_DOT_SHAPE"],"mappings":"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"}
|
|
1
|
+
{"version":3,"file":"getLayersDataFromForms.js","sources":["../../../../src/GraphMaker/utils/createChartSettingsForRender/getLayersDataFromForms.ts"],"sourcesContent":["import {\n ColorAes,\n getDefaultLayersSettings,\n NumberRange,\n LayersSettings,\n MappingLink,\n DiscreteStatisticsState,\n ColumnNameSchema,\n ContinuousDataMappingSize,\n isContinuousDataMapping,\n ContinuousDataMappingForGraph\n} from '../../constantsCommon';\nimport {\n Layer,\n ReactiveState\n} from '../../types';\nimport {\n DiscreteUIState, InputGuide,\n InputState,\n PlotDataAndSettings,\n ScatterplotUIState\n} from '@milaboratories/pf-plots';\nimport { DotShape, LineType } from '../../components/AesSettings/types';\nimport {\n AMINOACID_COLOR_MAPPING,\n DEFAULT_BLACK,\n DEFAULT_CONTINUOUS_PALETTE,\n DEFAULT_DOT_SHAPE, NUCLEOTIDE_COLOR_MAPPING,\n PALETTE_MAP\n} from '../../constantsAesthetic';\nimport {\n AestheticMappingContinuous, createContinuousMappingFromPalette,\n DEFAULT_DOT_RANGE,\n DEFAULT_DOT_SIZE\n} from '../../dataBindAes';\nimport { ScatterplotSettings } from '@milaboratories/miplots4';\nimport { isAestheticMappingContinuous } from '../../dataBindAes';\n\nexport function getStatLayers(statisticsSettings: DiscreteStatisticsState) {\n const layers: ChartLayerSettings[] = [];\n if (\n statisticsSettings.overall.data.testMethod &&\n statisticsSettings.overall.validity.testMethod\n ) {\n layers.push({\n type: 'stat',\n statType: 'overall',\n testMethod: statisticsSettings.overall.data.testMethod\n });\n }\n if (\n statisticsSettings.referenceGroup.data.testMethod &&\n statisticsSettings.referenceGroup.validity.testMethod &&\n statisticsSettings.referenceGroup.validity.referenceGroup\n ) {\n const layer: ChartLayerSettings = {\n type: 'stat',\n statType: 'referenceGroup',\n testMethod: statisticsSettings.referenceGroup.data.testMethod,\n referenceGroup: statisticsSettings.referenceGroup.data.referenceGroup,\n format: statisticsSettings.referenceGroup.data.format,\n ns: statisticsSettings.referenceGroup.data.ns\n };\n if (statisticsSettings.referenceGroup.data.correctionMethod !== 'none') {\n layer.correctionMethod =\n statisticsSettings.referenceGroup.data.correctionMethod;\n }\n layers.push(layer);\n }\n if (\n statisticsSettings.pairwise.data.testMethod &&\n statisticsSettings.pairwise.validity.testMethod\n ) {\n const layer: ChartLayerSettings = {\n type: 'stat',\n statType: 'pairwise',\n testMethod: statisticsSettings.pairwise.data.testMethod,\n format: statisticsSettings.pairwise.data.format,\n ns: statisticsSettings.pairwise.data.ns\n };\n if (statisticsSettings.referenceGroup.data.correctionMethod !== 'none') {\n layer.correctionMethod =\n statisticsSettings.referenceGroup.data.correctionMethod;\n }\n layers.push(layer);\n }\n return layers;\n}\n\nexport function getDiscreteLayersSettings(\n layers: Layer[],\n layerSettings: LayersSettings,\n statisticsSettings: DiscreteStatisticsState,\n optionsState: DiscreteUIState,\n inputGuide: InputGuide<InputState>\n): ChartLayerSettings[] {\n const result: ChartLayerSettings[] = [];\n const hasPrimaryGrouping =\n optionsState.components.primaryGrouping.selectorStates.length > 0;\n const hasSecondaryGrouping =\n optionsState.components.secondaryGrouping.selectorStates.length > 0;\n // If user didn't touch layers settings, some aes that can be mapped to groupings has 'null' value - we set them to secondary or primary grouping if available\n // for 'line', 'errorbar' layer it isn't possible to set primary grouping as a color aes\n function useDefaultColor(\n value: ColorAes | null,\n onlySecondaryAvailable = false\n ) {\n if (value === null) {\n if (hasSecondaryGrouping) {\n return { type: 'secondaryGrouping' };\n }\n if (hasPrimaryGrouping && !onlySecondaryAvailable) {\n return { type: 'primaryGrouping' };\n }\n return { type: 'secondaryGrouping' };\n }\n return value;\n }\n\n layers.forEach((layer) => {\n if (layer === 'box') {\n const settings = layerSettings[layer];\n result.push({\n type: 'box',\n aes: {\n showOutliers: settings.showOutliers,\n dotShape: settings.dotShape,\n fillColor: useDefaultColor(settings.fillColor),\n lineColor: useDefaultColor(settings.lineColor),\n lineShape: settings.lineType,\n opacity: settings.opacity\n }\n });\n }\n if (layer === 'binnedDots') {\n const settings = layerSettings[layer];\n result.push({\n type: 'binnedDots',\n aes: {\n showOutliers: settings.showOutliers,\n fillColor: useDefaultColor(settings.fillColor),\n lineColor: useDefaultColor(settings.lineColor),\n opacity: settings.opacity\n }\n });\n }\n if (layer === 'jitteredDots') {\n const settings = layerSettings[layer];\n result.push({\n type: 'dot',\n aes: {\n showOutliers: settings.showOutliers,\n dotFill: useDefaultColor(settings.dotFill),\n dotShape: settings.dotShape,\n lineColor: settings.lineColor,\n opacity: settings.opacity\n }\n });\n }\n if (layer === 'violin') {\n const settings = layerSettings[layer];\n result.push({\n type: 'violin',\n stat: {\n trim: settings.trim\n },\n aes: {\n showQuartiles: settings.showQuartiles,\n medianLineStyle: settings.medianLineStyle,\n quartilesLineStyle: settings.quartilesLineStyle,\n fillColor: useDefaultColor(settings.fillColor),\n lineColor: useDefaultColor(settings.lineColor),\n lineShape: settings.lineType,\n opacity: settings.opacity\n }\n });\n }\n if (layer === 'bar') {\n const settings = layerSettings[layer];\n result.push({\n type: 'bar',\n height: settings.height,\n aes: {\n fillColor: useDefaultColor(settings.fillColor),\n lineColor: useDefaultColor(settings.lineColor),\n opacity: settings.opacity\n }\n });\n }\n if (layer === 'stackedBar') {\n const settings = layerSettings[layer];\n result.push({\n type: 'stackedBar',\n normalize: settings.normalize,\n height: settings.height,\n aes: {\n fillColor: useDefaultColor(settings.fillColor),\n lineColor: useDefaultColor(settings.lineColor),\n opacity: settings.opacity\n }\n });\n }\n if (layer === 'stackedArea') {\n const settings = layerSettings[layer];\n result.push({\n type: 'stackedArea',\n normalize: settings.normalize,\n showBars: settings.showBars,\n height: settings.height,\n aes: {\n fillColor: useDefaultColor(settings.fillColor),\n lineColor: useDefaultColor(settings.lineColor),\n barsOpacity: settings.barsOpacity,\n areaOpacity: settings.areaOpacity,\n }\n });\n }\n if (layer === 'line') {\n const settings = layerSettings[layer];\n result.push({\n type: 'line',\n pointsValues: settings.pointsValues,\n emptyGroupValue: settings.emptyGroupValue ?? 0,\n aes: {\n lineColor: useDefaultColor(settings.lineColor, true),\n fillColor: useDefaultColor(settings.dotFill, true),\n lineShape: settings.lineType,\n dotShape: settings.dotShape,\n opacity: settings.opacity\n }\n });\n }\n if (layer === 'errorbar') {\n const settings = layerSettings[layer];\n result.push({\n type: 'errorbar',\n pointsValues: settings.pointsValues,\n interval: settings.interval,\n aes: {\n lineColor: useDefaultColor(settings.lineColor, true),\n fillColor: useDefaultColor(settings.dotFill, true),\n dotShape: settings.dotShape,\n opacity: settings.opacity\n }\n });\n }\n if (layer === 'sina') {\n const settings = layerSettings[layer];\n result.push({\n type: 'sina',\n aes: {\n showOutliers: settings.showOutliers,\n dotFill: useDefaultColor(settings.dotFill),\n dotShape: settings.dotShape\n }\n });\n }\n if (layer === 'logo' && hasSecondaryGrouping) {\n const settings = layerSettings[layer];\n const secondaryGroupingInfo = inputGuide.getSourceInfo(optionsState.components.secondaryGrouping.selectorStates[0].selectedSource);\n const isProtein = secondaryGroupingInfo.spec.domain?.['pl7.app/alphabet'] === 'aminoacid';\n result.push({\n type: 'logo',\n normalize: settings.normalize,\n aes: {\n opacity: settings.opacity,\n dotFill: isProtein ? AMINOACID_COLOR_MAPPING : NUCLEOTIDE_COLOR_MAPPING\n }\n });\n }\n });\n if (hasPrimaryGrouping && !hasSecondaryGrouping) {\n result.push(...getStatLayers(statisticsSettings));\n }\n return result;\n}\n\nfunction getDotSize(\n column: ColumnNameSchema | undefined,\n dotSize: ContinuousDataMappingSize | number | null,\n dataByColumns: PlotDataAndSettings['data']['byColumns'],\n defaultDotSize: number\n): number | { columnName: ColumnNameSchema, domain: number[], range: number[] } {\n if (column) {\n const mapping = isContinuousDataMapping(dotSize) ? dotSize : { column: column.value, range: DEFAULT_DOT_RANGE };\n const domain = [Infinity, -Infinity];\n dataByColumns.values[column.value].forEach((v) => {\n const value = Number(v);\n if (value < domain[0]) {\n domain[0] = value;\n }\n if (value > domain[1]) {\n domain[1] = value;\n }\n });\n return { columnName: column, domain, range: [mapping.range.min, mapping.range.max] };\n }\n return isContinuousDataMapping(dotSize) ? defaultDotSize : dotSize ?? defaultDotSize;\n}\n\nfunction getContinuousColor<T extends string>(\n columnKey: string,\n value: AestheticMappingContinuous,\n groupingColumns: ColumnNameSchema[],\n dataByColumns: PlotDataAndSettings['data']['byColumns']\n): T | ContinuousDataMappingForGraph<T> {\n const column = groupingColumns.find(groupingColumn => groupingColumn.value === columnKey);\n let domain = [Infinity, -Infinity];\n if (column) {\n const { range, palette, midPoint, log } = value;\n const minValueMissed = range?.minValue === null || range?.minValue === undefined;\n const maxValueMissed = range?.maxValue === null || range?.maxValue === undefined;\n if (minValueMissed || maxValueMissed) {\n dataByColumns.values[column.value].forEach((v) => {\n const value = Number(v);\n if (minValueMissed && value < domain[0]) {\n domain[0] = value;\n }\n if (maxValueMissed && value > domain[1]) {\n domain[1] = value;\n }\n });\n }\n if (!minValueMissed) {\n domain[0] = range?.minValue as number;\n }\n if (!maxValueMissed) {\n domain[1] = range?.maxValue as number;\n }\n if (midPoint !== null && midPoint !== undefined) {\n const maxDistance = Math.max(Math.abs(midPoint - domain[0]), Math.abs(midPoint - domain[1]));\n domain[0] = midPoint - maxDistance;\n domain[1] = midPoint + maxDistance;\n }\n\n return {\n columnName: column,\n domain,\n range: PALETTE_MAP[palette].colors,\n type: log ? 'log' : 'linear'\n } as ContinuousDataMappingForGraph<T>;\n }\n return DEFAULT_BLACK as T;\n}\n\nexport function getScatterplotLayersSettings(\n layers: Layer[],\n layerSettings: ReturnType<typeof getDefaultLayersSettings>,\n dataByColumns: PlotDataAndSettings['data']['byColumns'],\n optionsState: ScatterplotUIState,\n dataBindAes: ReactiveState['dataBindAes'],\n inputGuide: InputGuide<InputState>,\n groupingSchema: ColumnNameSchema[] = [],\n defaultDotSize = DEFAULT_DOT_SIZE\n): ScatterplotSettings['layers'] {\n const result: ScatterplotSettings['layers'] = [];\n\n function useDefault<T extends string>(value: T | MappingLink | null, columns: string[], defaultValue: T, continousAvailable = false): T | {\n type: 'grouping',\n value: string\n } | ContinuousDataMappingForGraph<T> {\n if (columns.length) {\n const valueType = columns.length ? inputGuide.getSourceInfo(columns[0])?.type : undefined;\n const defaultByColumn = (valueType === 'String' || !continousAvailable)\n ? { type: 'grouping', value: columns[0] } as { type: 'grouping', value: string }\n : getContinuousColor<T>(columns[0], createContinuousMappingFromPalette(DEFAULT_CONTINUOUS_PALETTE), groupingSchema, dataByColumns);\n\n const savedMapping = dataBindAes[columns[0]];\n\n if (value === null || (valueType === 'String' || !continousAvailable) || !isAestheticMappingContinuous(savedMapping)) {\n return defaultByColumn;\n }\n return getContinuousColor<T>(columns[0], savedMapping as AestheticMappingContinuous, groupingSchema, dataByColumns);\n }\n\n return typeof value === 'object' ? defaultValue : value as T;\n }\n\n const grouping = optionsState.components.grouping.selectorStates.map((s) => s.selectedSource);\n const shape = optionsState.components.shape?.selectorStates.map((s) => s.selectedSource) ?? [];\n const sizeKey = optionsState.components.size?.selectorStates.map((s) => s.selectedSource)[0];\n const sizeColumn = sizeKey ? groupingSchema.find(column => column.value === sizeKey) : undefined;\n\n layers.forEach((layer) => {\n if (layer === 'dots') {\n const settings = layerSettings[layer];\n result.push({\n type: 'dots',\n aes: {\n dotFill: useDefault<string>(settings.dotFill, grouping, DEFAULT_BLACK, true) as string | {\n type: 'grouping',\n value: string\n } | ContinuousDataMappingForGraph<string>,\n dotShape: useDefault<DotShape>(settings.dotShape, shape, DEFAULT_DOT_SHAPE) as {\n type: 'grouping',\n value: string\n } | DotShape,\n dotSize: getDotSize(sizeColumn, settings.dotSize, dataByColumns, defaultDotSize)\n }\n });\n }\n if (layer === 'curve') {\n const settings = layerSettings[layer];\n result.push({\n type: 'curve',\n smoothing: settings.smoothing,\n aes: {\n lineColor: useDefault<string>(settings.lineColor, grouping, DEFAULT_BLACK, true) as {\n type: 'grouping',\n value: string\n } | string\n }\n });\n }\n });\n return result;\n}\n\nexport type ChartLayerSettings = {\n [key: string]: string | number | boolean | null | Record<string, string | DotShape | NumberRange | {\n domain: number[],\n range: number[]\n } | LineType | boolean | number | MappingLink | Record<string, string>> | undefined;\n type: string,\n aes?: Record<string, string | DotShape | NumberRange | {\n domain: number[],\n range: number[]\n } | LineType | boolean | number | MappingLink | Record<string, string>>,\n}\n"],"names":["getStatLayers","statisticsSettings","layers","layer","getDiscreteLayersSettings","layerSettings","optionsState","inputGuide","result","hasPrimaryGrouping","hasSecondaryGrouping","useDefaultColor","value","onlySecondaryAvailable","settings","isProtein","_a","AMINOACID_COLOR_MAPPING","NUCLEOTIDE_COLOR_MAPPING","getDotSize","column","dotSize","dataByColumns","defaultDotSize","mapping","isContinuousDataMapping","DEFAULT_DOT_RANGE","domain","v","getContinuousColor","columnKey","groupingColumns","groupingColumn","range","palette","midPoint","log","minValueMissed","maxValueMissed","maxDistance","PALETTE_MAP","DEFAULT_BLACK","getScatterplotLayersSettings","dataBindAes","groupingSchema","DEFAULT_DOT_SIZE","useDefault","columns","defaultValue","continousAvailable","valueType","defaultByColumn","createContinuousMappingFromPalette","DEFAULT_CONTINUOUS_PALETTE","savedMapping","isAestheticMappingContinuous","grouping","s","shape","sizeKey","_b","sizeColumn","DEFAULT_DOT_SHAPE"],"mappings":"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"}
|
|
@@ -1,4 +1,4 @@
|
|
|
1
|
-
import { DEFAULT_WIDTH_SMALL as
|
|
1
|
+
import { DEFAULT_WIDTH_SMALL as g, DEFAULT_WIDTH as C, DEFAULT_HEIGHT_SMALL as v, DEFAULT_HEIGHT as x, BLACK as A } from "../constants.js";
|
|
2
2
|
import "../types/common.js";
|
|
3
3
|
import "../types/discrete.js";
|
|
4
4
|
import "../types/scatterplot.js";
|
|
@@ -6,21 +6,21 @@ import "../types/heatmap.js";
|
|
|
6
6
|
import "../types/dendro.js";
|
|
7
7
|
import "../types/histogram.js";
|
|
8
8
|
import { BubblesSettingsSchema as f } from "../types/bubble.js";
|
|
9
|
-
import
|
|
9
|
+
import b from "../node_modules/lodash/lodash.js";
|
|
10
10
|
var S = Object.defineProperty, L = (s, t, e) => t in s ? S(s, t, { enumerable: !0, configurable: !0, writable: !0, value: e }) : s[t] = e, i = (s, t, e) => L(s, typeof t != "symbol" ? t + "" : t, e);
|
|
11
|
-
class
|
|
11
|
+
class D {
|
|
12
12
|
constructor(t) {
|
|
13
|
-
i(this, "id"), i(this, "type", "bubble"), i(this, "facetSettings"), i(this, "valueColumnSize"), i(this, "valueColumnColor"), i(this, "xColumn"), i(this, "yColumn"), i(this, "facetBy"), i(this, "normalization"), i(this, "NAValueAs"), i(this, "chartSettings"), i(this, "aes");
|
|
14
|
-
var e, l, a, n, u,
|
|
15
|
-
f.parse(t), this.id =
|
|
16
|
-
const o = ((e = t.size) == null ? void 0 : e.cellSize) ?? null,
|
|
13
|
+
i(this, "id"), i(this, "type", "bubble"), i(this, "facetSettings"), i(this, "valueColumnSize"), i(this, "valueColumnColor"), i(this, "xColumn"), i(this, "xGroupBy"), i(this, "yColumn"), i(this, "yGroupBy"), i(this, "facetBy"), i(this, "normalization"), i(this, "aggregation"), i(this, "NAValueAs"), i(this, "keysOrder"), i(this, "chartSettings"), i(this, "aes");
|
|
14
|
+
var e, l, a, r, n, u, h, m, p, y;
|
|
15
|
+
f.parse(t), this.id = b.uniqueId("settings"), this.facetSettings = { titlePosition: "left", ...t.facetSettings }, this.facetBy = t.facetBy ?? [], this.valueColumnSize = t.valueSize, this.valueColumnColor = t.valueColor, this.xColumn = t.xColumn, this.xGroupBy = t.xGroupBy ?? [], this.yColumn = t.yColumn, this.yGroupBy = t.yGroupBy ?? [], this.NAValueAs = t.NAValueAs ?? null, this.keysOrder = t.keysOrder ?? {}, this.normalization = t.normalization ?? null;
|
|
16
|
+
const o = ((e = t.size) == null ? void 0 : e.cellSize) ?? null, c = o ? null : ((l = t == null ? void 0 : t.size) == null ? void 0 : l.width) ?? (this.facetBy.length ? g : C), d = o ? null : ((a = t == null ? void 0 : t.size) == null ? void 0 : a.height) ?? (this.facetBy.length ? v : x);
|
|
17
17
|
this.chartSettings = {
|
|
18
|
-
size: { width:
|
|
18
|
+
size: { width: c, height: d, cellSize: o },
|
|
19
19
|
title: {
|
|
20
20
|
position: "center",
|
|
21
21
|
show: !0,
|
|
22
22
|
...t.title,
|
|
23
|
-
name: ((
|
|
23
|
+
name: ((r = t.title) == null ? void 0 : r.name) ?? "Chart"
|
|
24
24
|
},
|
|
25
25
|
yAxis: {
|
|
26
26
|
title: t.yColumn.label ?? t.yColumn.value,
|
|
@@ -42,7 +42,7 @@ class k {
|
|
|
42
42
|
sorting: "asc",
|
|
43
43
|
...t.xAxis
|
|
44
44
|
},
|
|
45
|
-
frame: { type: ((
|
|
45
|
+
frame: { type: ((n = t.frame) == null ? void 0 : n.type) ?? "full" },
|
|
46
46
|
legend: {
|
|
47
47
|
show: !0,
|
|
48
48
|
position: "right",
|
|
@@ -52,16 +52,21 @@ class k {
|
|
|
52
52
|
show: !0,
|
|
53
53
|
...t.tooltips
|
|
54
54
|
}
|
|
55
|
+
}, this.aggregation = {
|
|
56
|
+
x: !1,
|
|
57
|
+
y: !1,
|
|
58
|
+
method: "min",
|
|
59
|
+
...t.aggregation
|
|
55
60
|
}, this.aes = {
|
|
56
|
-
minRadius: ((
|
|
61
|
+
minRadius: ((u = t.aes) == null ? void 0 : u.minRadius) ?? 3,
|
|
57
62
|
maxRadius: ((h = t.aes) == null ? void 0 : h.maxRadius) ?? 20,
|
|
58
63
|
colorsList: ((m = t.aes) == null ? void 0 : m.colorsList) ?? ["black", "white", "red"],
|
|
59
|
-
cellStrokeColor: ((
|
|
60
|
-
emptyCellColor: ((
|
|
64
|
+
cellStrokeColor: ((p = t.aes) == null ? void 0 : p.cellStrokeColor) ?? A,
|
|
65
|
+
emptyCellColor: ((y = t.aes) == null ? void 0 : y.emptyCellColor) ?? "white"
|
|
61
66
|
};
|
|
62
67
|
}
|
|
63
68
|
}
|
|
64
69
|
export {
|
|
65
|
-
|
|
70
|
+
D as BubbleSettingsImpl
|
|
66
71
|
};
|
|
67
72
|
//# sourceMappingURL=BubbleSettingsImpl.js.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"BubbleSettingsImpl.js","sources":["../../../../../../node_modules/@milaboratories/miplots4/src/bubble/BubbleSettingsImpl.ts"],"sourcesContent":["import {BLACK, DEFAULT_HEIGHT, DEFAULT_HEIGHT_SMALL, DEFAULT_WIDTH, DEFAULT_WIDTH_SMALL} from '../constants';\nimport {BubblesSettingsSchema} from '../types';\nimport type {\n BubbleSettings,\n ColumnName,\n FrameType,\n LegendPosition,\n NormalizationDirection,\n NormalizationMethod,\n SettingsInterface,\n TitlePosition,\n} from '../types';\nimport lodash from 'lodash';\n\nexport class BubbleSettingsImpl implements SettingsInterface {\n readonly id: string;\n readonly type = 'bubble';\n readonly facetSettings: {\n nRows?: number;\n nCols?: number;\n titlePosition: 'left' | 'center' | 'right';\n };\n readonly valueColumnSize: ColumnName;\n readonly valueColumnColor: ColumnName;\n readonly xColumn: ColumnName;\n readonly yColumn: ColumnName;\n readonly facetBy: ColumnName[];\n readonly normalization: {\n direction: NormalizationDirection;\n method: NormalizationMethod;\n colorRange?: number[];\n sizeRange?: number[];\n } | null;\n readonly NAValueAs: number | null;\n readonly chartSettings: {\n readonly size: {width: number | null; height: number | null, cellSize: number | null};\n readonly title: {name: string; show: boolean; position: TitlePosition};\n readonly yAxis: {\n title: string;\n showTicks: boolean;\n showTitle: boolean;\n showAxisLabels: boolean;\n position: 'left' | 'right';\n axisLabelsAngle: 0 | 45 | 90;\n sorting: 'asc' | 'desc';\n };\n readonly xAxis: {\n title: string;\n showTicks: boolean;\n showTitle: boolean;\n showAxisLabels: boolean;\n position: 'bottom' | 'top';\n axisLabelsAngle: 0 | 45 | 90;\n sorting: 'asc' | 'desc';\n };\n readonly frame: {type: FrameType};\n readonly legend: {show: boolean; position: LegendPosition};\n readonly tooltips: {show: boolean; content?: ColumnName[]};\n };\n readonly aes: {\n minRadius: number;\n maxRadius: number;\n colorsList: string[];\n cellStrokeColor: string;\n emptyCellColor: string;\n };\n\n constructor(settings: BubbleSettings) {\n BubblesSettingsSchema.parse(settings);\n this.id = lodash.uniqueId('settings');\n this.facetSettings = {titlePosition: 'left', ...settings.facetSettings};\n this.facetBy = settings.facetBy ?? [];\n this.valueColumnSize = settings.valueSize;\n this.valueColumnColor = settings.valueColor;\n this.xColumn = settings.xColumn;\n this.yColumn = settings.yColumn;\n this.NAValueAs = settings.NAValueAs ?? null;\n this.normalization = settings.normalization ?? null;\n\n const cellSize = settings.size?.cellSize ?? null;\n const width = cellSize ? null : settings?.size?.width ?? (this.facetBy.length ? DEFAULT_WIDTH_SMALL : DEFAULT_WIDTH);\n const height = cellSize ? null : settings?.size?.height ?? (this.facetBy.length ? DEFAULT_HEIGHT_SMALL : DEFAULT_HEIGHT);\n this.chartSettings = {\n size: {width, height, cellSize},\n title: {\n position: 'center',\n show: true,\n ...settings.title,\n name: settings.title?.name ?? 'Chart',\n },\n yAxis: {\n title: settings.yColumn.label ?? settings.yColumn.value,\n showTicks: true,\n showTitle: true,\n showAxisLabels: true,\n position: 'left',\n axisLabelsAngle: 90,\n sorting: 'asc',\n ...settings.yAxis,\n },\n xAxis: {\n title: settings.xColumn.label ?? settings.xColumn.value,\n showTicks: true,\n showTitle: true,\n showAxisLabels: true,\n position: 'bottom',\n axisLabelsAngle: 90,\n sorting: 'asc',\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 show: true,\n ...settings.tooltips,\n },\n };\n\n this.aes = {\n minRadius: settings.aes?.minRadius ?? 3,\n maxRadius: settings.aes?.maxRadius ?? 20,\n colorsList: settings.aes?.colorsList ?? ['black', 'white', 'red'],\n cellStrokeColor: settings.aes?.cellStrokeColor ?? BLACK,\n emptyCellColor: settings.aes?.emptyCellColor ?? 'white',\n };\n }\n}\n"],"names":["BubbleSettingsImpl","settings","__publicField","BubblesSettingsSchema","lodash","cellSize","_a","width","_b","DEFAULT_WIDTH_SMALL","DEFAULT_WIDTH","height","_c","DEFAULT_HEIGHT_SMALL","DEFAULT_HEIGHT","_d","_e","_f","_g","_h","_i","BLACK","_j"],"mappings":";;;;;;;;;;
|
|
1
|
+
{"version":3,"file":"BubbleSettingsImpl.js","sources":["../../../../../../node_modules/@milaboratories/miplots4/src/bubble/BubbleSettingsImpl.ts"],"sourcesContent":["import { BLACK, DEFAULT_HEIGHT, DEFAULT_HEIGHT_SMALL, DEFAULT_WIDTH, DEFAULT_WIDTH_SMALL } from '../constants';\nimport { BubblesSettingsSchema } from '../types';\nimport type {\n AggregationMethod,\n BubbleSettings,\n ColumnName,\n FrameType,\n LegendPosition,\n NormalizationDirection,\n NormalizationMethod,\n SettingsInterface,\n TitlePosition,\n} from '../types';\nimport lodash from 'lodash';\n\nexport class BubbleSettingsImpl implements SettingsInterface {\n readonly id: string;\n readonly type = 'bubble';\n readonly facetSettings: {\n nRows?: number;\n nCols?: number;\n titlePosition: 'left' | 'center' | 'right';\n };\n readonly valueColumnSize: ColumnName;\n readonly valueColumnColor: ColumnName;\n readonly xColumn: ColumnName;\n readonly xGroupBy: ColumnName[];\n readonly yColumn: ColumnName;\n readonly yGroupBy: ColumnName[];\n readonly facetBy: ColumnName[];\n readonly normalization: {\n direction: NormalizationDirection;\n method: NormalizationMethod;\n colorRange?: number[];\n sizeRange?: number[];\n } | null;\n readonly aggregation: {\n x: boolean;\n y: boolean;\n method: AggregationMethod;\n };\n readonly NAValueAs: number | null;\n readonly keysOrder: Record<string, string[]>;\n readonly chartSettings: {\n readonly size: { width: number | null; height: number | null, cellSize: number | null };\n readonly title: { name: string; show: boolean; position: TitlePosition };\n readonly yAxis: {\n title: string;\n showTicks: boolean;\n showTitle: boolean;\n showAxisLabels: boolean;\n position: 'left' | 'right';\n axisLabelsAngle: 0 | 45 | 90;\n sorting: 'asc' | 'desc';\n };\n readonly xAxis: {\n title: string;\n showTicks: boolean;\n showTitle: boolean;\n showAxisLabels: boolean;\n position: 'bottom' | 'top';\n axisLabelsAngle: 0 | 45 | 90;\n sorting: 'asc' | 'desc';\n };\n readonly frame: { type: FrameType };\n readonly legend: { show: boolean; position: LegendPosition };\n readonly tooltips: { show: boolean; content?: ColumnName[] };\n };\n readonly aes: {\n minRadius: number;\n maxRadius: number;\n colorsList: string[];\n cellStrokeColor: string;\n emptyCellColor: string;\n };\n\n constructor(settings: BubbleSettings) {\n BubblesSettingsSchema.parse(settings);\n this.id = lodash.uniqueId('settings');\n this.facetSettings = { titlePosition: 'left', ...settings.facetSettings };\n this.facetBy = settings.facetBy ?? [];\n this.valueColumnSize = settings.valueSize;\n this.valueColumnColor = settings.valueColor;\n this.xColumn = settings.xColumn;\n this.xGroupBy = settings.xGroupBy ?? [];\n this.yColumn = settings.yColumn;\n this.yGroupBy = settings.yGroupBy ?? [];\n this.NAValueAs = settings.NAValueAs ?? null;\n this.keysOrder = settings.keysOrder ?? {};\n this.normalization = settings.normalization ?? null;\n\n const cellSize = settings.size?.cellSize ?? null;\n const width = cellSize ? null : settings?.size?.width ?? (this.facetBy.length ? DEFAULT_WIDTH_SMALL : DEFAULT_WIDTH);\n const height = cellSize ? null : settings?.size?.height ?? (this.facetBy.length ? DEFAULT_HEIGHT_SMALL : DEFAULT_HEIGHT);\n this.chartSettings = {\n size: { width, height, cellSize },\n title: {\n position: 'center',\n show: true,\n ...settings.title,\n name: settings.title?.name ?? 'Chart',\n },\n yAxis: {\n title: settings.yColumn.label ?? settings.yColumn.value,\n showTicks: true,\n showTitle: true,\n showAxisLabels: true,\n position: 'left',\n axisLabelsAngle: 90,\n sorting: 'asc',\n ...settings.yAxis,\n },\n xAxis: {\n title: settings.xColumn.label ?? settings.xColumn.value,\n showTicks: true,\n showTitle: true,\n showAxisLabels: true,\n position: 'bottom',\n axisLabelsAngle: 90,\n sorting: 'asc',\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 show: true,\n ...settings.tooltips,\n },\n };\n\n this.aggregation = {\n x: false,\n y: false,\n method: 'min',\n ...settings.aggregation\n };\n\n this.aes = {\n minRadius: settings.aes?.minRadius ?? 3,\n maxRadius: settings.aes?.maxRadius ?? 20,\n colorsList: settings.aes?.colorsList ?? ['black', 'white', 'red'],\n cellStrokeColor: settings.aes?.cellStrokeColor ?? BLACK,\n emptyCellColor: settings.aes?.emptyCellColor ?? 'white',\n };\n }\n}\n"],"names":["BubbleSettingsImpl","settings","__publicField","BubblesSettingsSchema","lodash","cellSize","_a","width","_b","DEFAULT_WIDTH_SMALL","DEFAULT_WIDTH","height","_c","DEFAULT_HEIGHT_SMALL","DEFAULT_HEIGHT","_d","_e","_f","_g","_h","_i","BLACK","_j"],"mappings":"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","x_google_ignoreList":[0]}
|