@milaboratories/graph-maker 1.1.150 → 1.1.152

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (98) hide show
  1. package/dist/GraphMaker/components/AesSettings/AesDataMappingDiscrete.vue.d.ts.map +1 -1
  2. package/dist/GraphMaker/components/AesSettings/AesDataMappingDiscrete.vue.js +2 -1
  3. package/dist/GraphMaker/components/AesSettings/AesDataMappingDiscrete.vue.js.map +1 -1
  4. package/dist/GraphMaker/components/Chart.vue.js +3 -3
  5. package/dist/GraphMaker/components/Chart.vue.js.map +1 -1
  6. package/dist/GraphMaker/components/DragAndDrop/DnDBasketChip.vue.d.ts +3 -12
  7. package/dist/GraphMaker/components/DragAndDrop/DnDBasketChip.vue.d.ts.map +1 -1
  8. package/dist/GraphMaker/components/DragAndDrop/DnDBasketChip.vue.js +42 -85
  9. package/dist/GraphMaker/components/DragAndDrop/DnDBasketChip.vue.js.map +1 -1
  10. package/dist/GraphMaker/components/DragAndDrop/DnDRangeChip.vue.d.ts +1 -9
  11. package/dist/GraphMaker/components/DragAndDrop/DnDRangeChip.vue.d.ts.map +1 -1
  12. package/dist/GraphMaker/components/DragAndDrop/DnDRangeChip.vue.js +44 -89
  13. package/dist/GraphMaker/components/DragAndDrop/DnDRangeChip.vue.js.map +1 -1
  14. package/dist/GraphMaker/components/DragAndDrop/DndBasket.vue.d.ts +1 -3
  15. package/dist/GraphMaker/components/DragAndDrop/DndBasket.vue.d.ts.map +1 -1
  16. package/dist/GraphMaker/components/DragAndDrop/DndBasket.vue.js +68 -86
  17. package/dist/GraphMaker/components/DragAndDrop/DndBasket.vue.js.map +1 -1
  18. package/dist/GraphMaker/components/DragAndDrop/DndDoubleChip.vue.d.ts +7 -11
  19. package/dist/GraphMaker/components/DragAndDrop/DndDoubleChip.vue.d.ts.map +1 -1
  20. package/dist/GraphMaker/components/DragAndDrop/DndDoubleChip.vue.js +48 -91
  21. package/dist/GraphMaker/components/DragAndDrop/DndDoubleChip.vue.js.map +1 -1
  22. package/dist/GraphMaker/components/DragAndDrop/types.d.ts +1 -21
  23. package/dist/GraphMaker/components/DragAndDrop/types.d.ts.map +1 -1
  24. package/dist/GraphMaker/components/PlColorSliderThumb.vue.js +18 -18
  25. package/dist/GraphMaker/components/PlColorSliderThumb.vue.js.map +1 -1
  26. package/dist/GraphMaker/constantsCommon.d.ts +0 -1
  27. package/dist/GraphMaker/constantsCommon.d.ts.map +1 -1
  28. package/dist/GraphMaker/constantsCommon.js +95 -95
  29. package/dist/GraphMaker/constantsCommon.js.map +1 -1
  30. package/dist/GraphMaker/forms/DataMappingForm/DendroForm.vue.d.ts.map +1 -1
  31. package/dist/GraphMaker/forms/DataMappingForm/DendroForm.vue.js +128 -166
  32. package/dist/GraphMaker/forms/DataMappingForm/DendroForm.vue.js.map +1 -1
  33. package/dist/GraphMaker/forms/DataMappingForm/useBaskets.d.ts.map +1 -1
  34. package/dist/GraphMaker/forms/DataMappingForm/useBaskets.js +93 -131
  35. package/dist/GraphMaker/forms/DataMappingForm/useBaskets.js.map +1 -1
  36. package/dist/GraphMaker/forms/DataMappingForm/utils.d.ts +1 -1
  37. package/dist/GraphMaker/forms/DataMappingForm/utils.d.ts.map +1 -1
  38. package/dist/GraphMaker/forms/DataMappingForm/utils.js +79 -155
  39. package/dist/GraphMaker/forms/DataMappingForm/utils.js.map +1 -1
  40. package/dist/GraphMaker/forms/index.js +2 -2
  41. package/dist/GraphMaker/forms/index.js.map +1 -1
  42. package/dist/GraphMaker/icons/StackedAreaIcon.vue.d.ts +3 -0
  43. package/dist/GraphMaker/icons/StackedAreaIcon.vue.d.ts.map +1 -0
  44. package/dist/GraphMaker/icons/StackedAreaIcon.vue.js +19 -0
  45. package/dist/GraphMaker/icons/StackedAreaIcon.vue.js.map +1 -0
  46. package/dist/GraphMaker/index.vue.js +1 -1
  47. package/dist/GraphMaker/store.d.ts.map +1 -1
  48. package/dist/GraphMaker/store.js +43 -45
  49. package/dist/GraphMaker/store.js.map +1 -1
  50. package/dist/GraphMaker/types.d.ts +1 -1
  51. package/dist/GraphMaker/types.d.ts.map +1 -1
  52. package/dist/GraphMaker/utils/addFixedOptionsToState.js +2 -2
  53. package/dist/GraphMaker/utils/addFixedOptionsToState.js.map +1 -1
  54. package/dist/GraphMaker/utils/createChartSettingsForRender/composeChartSettings.js +25 -25
  55. package/dist/GraphMaker/utils/createChartSettingsForRender/composeChartSettings.js.map +1 -1
  56. package/dist/GraphMaker/utils/loadDefaultSources.d.ts +2 -3
  57. package/dist/GraphMaker/utils/loadDefaultSources.d.ts.map +1 -1
  58. package/dist/GraphMaker/utils/loadDefaultSources.js +47 -51
  59. package/dist/GraphMaker/utils/loadDefaultSources.js.map +1 -1
  60. package/dist/GraphMaker/utils/loadUniqueValuesToSave.d.ts.map +1 -1
  61. package/dist/GraphMaker/utils/loadUniqueValuesToSave.js +39 -41
  62. package/dist/GraphMaker/utils/loadUniqueValuesToSave.js.map +1 -1
  63. package/dist/lib.js +1 -1
  64. package/dist/node_modules/@milaboratories/helpers/dist/objects.js +33 -0
  65. package/dist/node_modules/@milaboratories/helpers/dist/objects.js.map +1 -0
  66. package/dist/node_modules/@milaboratories/helpers/dist/utils.js +12 -0
  67. package/dist/node_modules/@milaboratories/helpers/dist/utils.js.map +1 -0
  68. package/dist/node_modules/@milaboratories/pf-plots/dist/constants.js +6 -5
  69. package/dist/node_modules/@milaboratories/pf-plots/dist/constants.js.map +1 -1
  70. package/dist/node_modules/@milaboratories/pf-plots/dist/controllers/ComponentController.js +146 -149
  71. package/dist/node_modules/@milaboratories/pf-plots/dist/controllers/ComponentController.js.map +1 -1
  72. package/dist/node_modules/@milaboratories/pf-plots/dist/controllers/ControllerBase.js +168 -221
  73. package/dist/node_modules/@milaboratories/pf-plots/dist/controllers/ControllerBase.js.map +1 -1
  74. package/dist/node_modules/@milaboratories/pf-plots/dist/controllers/controllersByChartType/bubble.js +95 -102
  75. package/dist/node_modules/@milaboratories/pf-plots/dist/controllers/controllersByChartType/bubble.js.map +1 -1
  76. package/dist/node_modules/@milaboratories/pf-plots/dist/controllers/controllersByChartType/dendro.js +145 -156
  77. package/dist/node_modules/@milaboratories/pf-plots/dist/controllers/controllersByChartType/dendro.js.map +1 -1
  78. package/dist/node_modules/@milaboratories/pf-plots/dist/controllers/controllersByChartType/discrete.js +68 -75
  79. package/dist/node_modules/@milaboratories/pf-plots/dist/controllers/controllersByChartType/discrete.js.map +1 -1
  80. package/dist/node_modules/@milaboratories/pf-plots/dist/controllers/controllersByChartType/heatmap.js +154 -159
  81. package/dist/node_modules/@milaboratories/pf-plots/dist/controllers/controllersByChartType/heatmap.js.map +1 -1
  82. package/dist/node_modules/@milaboratories/pf-plots/dist/controllers/controllersByChartType/histogram.js +48 -55
  83. package/dist/node_modules/@milaboratories/pf-plots/dist/controllers/controllersByChartType/histogram.js.map +1 -1
  84. package/dist/node_modules/@milaboratories/pf-plots/dist/controllers/controllersByChartType/scatterplot-umap.js +114 -122
  85. package/dist/node_modules/@milaboratories/pf-plots/dist/controllers/controllersByChartType/scatterplot-umap.js.map +1 -1
  86. package/dist/node_modules/@milaboratories/pf-plots/dist/controllers/controllersByChartType/scatterplot.js +111 -119
  87. package/dist/node_modules/@milaboratories/pf-plots/dist/controllers/controllersByChartType/scatterplot.js.map +1 -1
  88. package/dist/node_modules/@milaboratories/pf-plots/dist/index.js +4 -4
  89. package/dist/node_modules/@milaboratories/pf-plots/dist/pframe/ColumnsProvider.js +70 -69
  90. package/dist/node_modules/@milaboratories/pf-plots/dist/pframe/ColumnsProvider.js.map +1 -1
  91. package/dist/node_modules/@milaboratories/pf-plots/dist/spec.js +2 -2
  92. package/dist/node_modules/@milaboratories/pf-plots/dist/spec.js.map +1 -1
  93. package/dist/node_modules/@milaboratories/pf-plots/dist/utils.js +184 -183
  94. package/dist/node_modules/@milaboratories/pf-plots/dist/utils.js.map +1 -1
  95. package/dist/node_modules/@vueuse/shared/index.js.map +1 -1
  96. package/package.json +4 -4
  97. package/dist/node_modules/@milaboratories/helpers/dist/index.js +0 -372
  98. package/dist/node_modules/@milaboratories/helpers/dist/index.js.map +0 -1
@@ -37,13 +37,13 @@ class U {
37
37
  },
38
38
  filters: t,
39
39
  sorting: []
40
- }), n = s.filter((i) => i.spec.type === "axis"), o = s.filter((i) => i.spec.type === "column");
40
+ }), o = s.filter((l) => l.spec.type === "axis"), i = s.filter((l) => l.spec.type === "column");
41
41
  return {
42
- axesData: n.reduce((i, m) => {
43
- const c = v.fromAxisSpec(m.spec.spec);
44
- return i[c.toCanonicalString()] = x(c.type, m.data), i;
42
+ axesData: o.reduce((l, p) => {
43
+ const m = v.fromAxisSpec(p.spec.spec);
44
+ return l[m.toCanonicalString()] = x(m.type, p.data), l;
45
45
  }, {}),
46
- data: o.length ? x(e.type, o[0].data) : []
46
+ data: i.length ? x(e.type, i[0].data) : []
47
47
  };
48
48
  } catch (a) {
49
49
  throw console.error("PFrame: calculateTableData error"), a;
@@ -58,86 +58,86 @@ class U {
58
58
  limit: t
59
59
  };
60
60
  try {
61
- const n = Date.now(), o = await this.pframeDriver.getUniqueValues(this.pframeHandle, s);
62
- let i = !1;
63
- return o.overflow && (i = !0, console.warn(`More than ${t} values for ${e.name} column`)), {
64
- values: Array.from(o.values.data).map(String),
65
- overflow: i
61
+ const o = Date.now(), i = await this.pframeDriver.getUniqueValues(this.pframeHandle, s);
62
+ let l = !1;
63
+ return i.overflow && (l = !0, console.warn(`More than ${t} values for ${e.name} column`)), {
64
+ values: Array.from(i.values.data).map(String),
65
+ overflow: l
66
66
  };
67
- } catch (n) {
68
- throw console.error("PFrame: getUniqueValues for column error"), n;
67
+ } catch (o) {
68
+ throw console.error("PFrame: getUniqueValues for column error"), o;
69
69
  }
70
70
  }
71
71
  async getAxisUniqueValues(e, t, a = I, s = []) {
72
- const n = t.filter(w), o = await Promise.all(n.map((c) => this.getColumnSpecById(c))), i = e.toCanonicalString(), m = n.filter((c, l) => {
73
- const p = o[l];
74
- return p !== null && p.axesSpec.some((u) => v.fromAxisSpec(u).toCanonicalString() === i);
72
+ const o = t.filter(w), i = await Promise.all(o.map((m) => this.getColumnSpecById(m))), l = e.toCanonicalString(), p = o.filter((m, n) => {
73
+ const u = i[n];
74
+ return u !== null && u.axesSpec.some((c) => v.fromAxisSpec(c).toCanonicalString() === l);
75
75
  });
76
- if (m.length === 0)
76
+ if (p.length === 0)
77
77
  return { values: [], overflow: !1 };
78
78
  try {
79
- const c = Date.now(), l = await Promise.all(
80
- m.map(
81
- (u) => this.pframeDriver.getUniqueValues(this.pframeHandle, {
82
- columnId: u.name,
79
+ const m = Date.now(), n = await Promise.all(
80
+ p.map(
81
+ (c) => this.pframeDriver.getUniqueValues(this.pframeHandle, {
82
+ columnId: c.name,
83
83
  axis: e.toPFrameId(),
84
84
  filters: s,
85
85
  limit: a
86
86
  })
87
87
  )
88
88
  );
89
- let p = !1;
90
- return l.forEach((u, f) => {
91
- u.overflow && (p = !0, console.warn(`More than ${a} values for ${m[f].name} column`));
89
+ let u = !1;
90
+ return n.forEach((c, f) => {
91
+ c.overflow && (u = !0, console.warn(`More than ${a} values for ${p[f].name} column`));
92
92
  }), {
93
93
  values: S.uniq(
94
- S.flatten(l.map((u) => Array.from(u.values.data).map(String)))
94
+ S.flatten(n.map((c) => Array.from(c.values.data).map(String)))
95
95
  ),
96
- overflow: p
96
+ overflow: u
97
97
  };
98
- } catch (c) {
99
- return console.error("PFrame: getUniqueValues for axis error", c), { values: [], overflow: !1 };
98
+ } catch (m) {
99
+ return console.error("PFrame: getUniqueValues for axis error", m), { values: [], overflow: !1 };
100
100
  }
101
101
  }
102
- async getTableOuterJoin(e, t, a = [], s = !0, n = [], o = []) {
103
- const i = e.filter(w), m = t.filter(w), c = {
102
+ async getTableOuterJoin(e, t, a = [], s = !0, o = [], i = []) {
103
+ const l = e.filter(w), p = t.filter(w), m = {
104
104
  src: {
105
105
  type: "outer",
106
106
  primary: {
107
107
  type: s ? "inner" : "full",
108
- entries: i.map((l, p) => {
109
- var u;
110
- const f = (u = n[p]) == null ? void 0 : u.map((r) => ({
108
+ entries: l.map((n, u) => {
109
+ var c;
110
+ const f = (c = o[u]) == null ? void 0 : c.map((r) => ({
111
111
  type: "constant",
112
112
  axisIndex: r.idx,
113
113
  constant: r.value
114
114
  })).filter((r) => r.constant !== void 0);
115
115
  return f != null && f.length ? {
116
116
  type: "slicedColumn",
117
- newId: l.name,
118
- column: l.name,
117
+ newId: n.name,
118
+ column: n.name,
119
119
  axisFilters: f
120
120
  } : {
121
121
  type: "column",
122
- column: l.name
122
+ column: n.name
123
123
  };
124
124
  })
125
125
  },
126
- secondary: m.map((l, p) => {
127
- var u;
128
- const f = (u = o[p]) == null ? void 0 : u.map((r) => ({
126
+ secondary: p.map((n, u) => {
127
+ var c;
128
+ const f = (c = i[u]) == null ? void 0 : c.map((r) => ({
129
129
  type: "constant",
130
130
  axisIndex: r.idx,
131
131
  constant: r.value
132
132
  })).filter((r) => r.constant !== void 0);
133
133
  return f != null && f.length ? {
134
134
  type: "slicedColumn",
135
- newId: l.name,
136
- column: l.name,
135
+ newId: n.name,
136
+ column: n.name,
137
137
  axisFilters: f
138
138
  } : {
139
139
  type: "column",
140
- column: l.name
140
+ column: n.name
141
141
  };
142
142
  })
143
143
  },
@@ -145,9 +145,9 @@ class U {
145
145
  sorting: []
146
146
  };
147
147
  try {
148
- const l = Date.now(), p = await this.pframeDriver.calculateTableData(this.pframeHandle, c), u = p.filter((r) => r.spec.type === "axis"), f = p.filter((r) => r.spec.type === "column");
148
+ const n = Date.now(), u = await this.pframeDriver.calculateTableData(this.pframeHandle, m), c = u.filter((r) => r.spec.type === "axis"), f = u.filter((r) => r.spec.type === "column");
149
149
  return {
150
- axesData: u.reduce((r, d) => {
150
+ axesData: c.reduce((r, d) => {
151
151
  const h = v.fromAxisSpec(d.spec.spec);
152
152
  return r[h.toCanonicalString()] = x(h.type, d.data), r;
153
153
  }, {}),
@@ -165,13 +165,13 @@ class U {
165
165
  });
166
166
  return r[g.toCanonicalString()] = h, r;
167
167
  }, {}),
168
- axesSpecs: u.reduce((r, d) => {
168
+ axesSpecs: c.reduce((r, d) => {
169
169
  const h = d.spec.spec, g = v.fromAxisSpec(h);
170
170
  return r[g.toCanonicalString()] = h, r;
171
171
  }, {})
172
172
  };
173
- } catch (l) {
174
- throw console.error("PFrame: table outer join error"), console.info("error with request: ", c), l;
173
+ } catch (n) {
174
+ throw console.error("PFrame: table outer join error"), console.info("error with request: ", m), n;
175
175
  }
176
176
  }
177
177
  async getColumnSpecById(e) {
@@ -191,44 +191,45 @@ class U {
191
191
  const a = [];
192
192
  for (const s of e)
193
193
  if (w(s)) {
194
- const n = ((t = await this.getColumnSpecById(s)) == null ? void 0 : t.axesSpec) ?? [];
195
- a.push(...n.map((o) => v.fromAxisSpec(o).toPFrameId()));
194
+ const o = ((t = await this.getColumnSpecById(s)) == null ? void 0 : t.axesSpec) ?? [];
195
+ a.push(...o.map((i) => v.fromAxisSpec(i).toPFrameId()));
196
196
  }
197
197
  return a;
198
198
  }
199
199
  async getColumnsList() {
200
200
  return this.pframeDriver.listColumns(this.pframeHandle);
201
201
  }
202
- async getColumnsFull(e, t, a, s, n) {
202
+ async getColumnsFull(e, t, a, s, o, i) {
203
203
  try {
204
- const o = {
204
+ const l = {
205
205
  columnFilter: {
206
206
  type: a,
207
207
  name: s,
208
- annotationValue: n
208
+ annotationValue: o,
209
+ annotationPattern: i == null ? void 0 : i.reduce((u, c) => (u[c] = ".+", u), {})
209
210
  },
210
211
  compatibleWith: await this.getRequestColumnsFromSelectedSources(e),
211
212
  strictlyCompatible: t
212
213
  // should be true if we want to get meta and false if X/Y
213
- }, i = Date.now(), m = await this.pframeDriver.findColumns(this.pframeHandle, o), c = [];
214
- return m.hits.forEach((l) => {
215
- c.push(l);
216
- }), c;
217
- } catch (o) {
218
- throw console.error("PFrame: findColumns error"), o;
214
+ }, p = Date.now(), m = await this.pframeDriver.findColumns(this.pframeHandle, l), n = [];
215
+ return m.hits.forEach((u) => {
216
+ n.push(u);
217
+ }), n;
218
+ } catch (l) {
219
+ throw console.error("PFrame: findColumns error"), l;
219
220
  }
220
221
  }
221
- async getColumns(e, t, a, s, n) {
222
- return (await this.getColumnsFull(e, t, a, s, n)).map(
223
- (o) => new C({
224
- name: o.columnId,
225
- type: o.spec.valueType
222
+ async getColumns(e, t, a, s, o) {
223
+ return (await this.getColumnsFull(e, t, a, s, o)).map(
224
+ (i) => new C({
225
+ name: i.columnId,
226
+ type: i.spec.valueType
226
227
  })
227
228
  );
228
229
  }
229
230
  async findColumnBy(e, t, a, s) {
230
231
  try {
231
- const n = {
232
+ const o = {
232
233
  columnFilter: {
233
234
  name: [e],
234
235
  ...t ? { type: [t] } : {},
@@ -237,12 +238,12 @@ class U {
237
238
  },
238
239
  compatibleWith: [],
239
240
  strictlyCompatible: !1
240
- }, o = Date.now(), i = await this.pframeDriver.findColumns(this.pframeHandle, n), m = [];
241
- return i.hits.forEach(({ columnId: c, spec: l }) => {
242
- m.push(new C({ name: c, type: l.valueType }));
243
- }), m.length > 1 && console.warn(`More than 1 column found for ${e}}`), m.length === 0 ? (console.warn(`No columns found for ${e}}`), null) : m[0];
244
- } catch (n) {
245
- throw console.error("PFrame: findColumns error"), n;
241
+ }, i = Date.now(), l = await this.pframeDriver.findColumns(this.pframeHandle, o), p = [];
242
+ return l.hits.forEach(({ columnId: m, spec: n }) => {
243
+ p.push(new C({ name: m, type: n.valueType }));
244
+ }), p.length > 1 && console.warn(`More than 1 column found for ${e}}`), p.length === 0 ? (console.warn(`No columns found for ${e}}`), null) : p[0];
245
+ } catch (o) {
246
+ throw console.error("PFrame: findColumns error"), o;
246
247
  }
247
248
  }
248
249
  }
@@ -1 +1 @@
1
- {"version":3,"file":"ColumnsProvider.js","sources":["../../../../../../node_modules/@milaboratories/pf-plots/src/pframe/ColumnsProvider.ts"],"sourcesContent":["import {AxisId, ColumnId, isColumnId} from '../spec';\nimport type {PValue} from '../store';\nimport lodash from 'lodash';\nimport type {\n AxisSpec,\n CalculateTableDataRequest,\n FindColumnsRequest,\n FindColumnsResponse,\n PColumnSpec,\n AxisId as PFrameAxisId,\n PFrameDriver,\n PFrameHandle,\n PObjectId,\n PTableRecordSingleValueFilterV2,\n PTableVector,\n UniqueValuesRequest,\n ValueType,\n FullPTableColumnData,\n PColumnIdAndSpec,\n} from '@milaboratories/pl-model-common';\nimport {pTableValue} from '@milaboratories/pl-model-common';\n\nexport type TableOuterJoinResult = {\n axesData: Record<string, PValue[]>;\n columnsData: Record<string, PValue[]>;\n columnSpecs: Record<string, PColumnSpec>;\n axesSpecs: Record<string, AxisSpec>;\n}\nconst UNIQUE_VALUES_LIMIT = 1000000;\n\nfunction convertColumnData(type: ValueType, response: PTableVector): PValue[] {\n if (type === 'String') {\n return response.data as PValue[];\n }\n const res:PValue[] = new Array(response.data.length);\n for (let i = 0; i < response.data.length; i++) {\n res[i] = pTableValue(response, i, {absent: null, na: null}) as PValue;\n }\n return res;\n}\n\nconst debug = false;\nconst LONG_REQUEST = 100;\n\nif (debug) {\n console.log('debug!');\n}\n\nexport class ColumnsProvider {\n pframeHandle: PFrameHandle;\n pframeDriver: PFrameDriver;\n\n constructor(pframeHandle: PFrameHandle, pframeDriver: PFrameDriver) {\n this.pframeHandle = pframeHandle;\n this.pframeDriver = pframeDriver;\n }\n\n async isColumnExisted(id: ColumnId) {\n const spec = await this.getColumnSpecById(id);\n return spec ? true : false;\n }\n\n async getSingleColumnData(id: ColumnId, filters: PTableRecordSingleValueFilterV2[] = []) {\n if (!(await this.isColumnExisted(id))) {\n return {\n axesData: {},\n data: [],\n };\n }\n try {\n const start = Date.now();\n const response: FullPTableColumnData[] = await this.pframeDriver.calculateTableData(this.pframeHandle, {\n src: {\n type: 'column',\n column: id.name as PObjectId,\n },\n filters,\n sorting: [],\n } as CalculateTableDataRequest<PObjectId>);\n if (debug) {\n const time = Date.now() - start;\n if (time > LONG_REQUEST) console.log('getSingleColumnData', time);\n }\n const axes = response.filter(item => item.spec.type === 'axis');\n const columns = response.filter(item => item.spec.type === 'column');\n return {\n axesData: axes.reduce((res: Record<string, PValue[]>, item) => {\n const id = AxisId.fromAxisSpec(item.spec.spec as AxisSpec);\n res[id.toCanonicalString()] = convertColumnData(id.type, item.data);\n return res;\n }, {}),\n data: columns.length ? convertColumnData(id.type, columns[0].data) : [],\n };\n } catch (err) {\n console.error('PFrame: calculateTableData error');\n throw err;\n }\n }\n\n async getColumnUniqueValues(\n id: ColumnId,\n limit = UNIQUE_VALUES_LIMIT,\n filters: PTableRecordSingleValueFilterV2[] = []\n ) {\n if (!(await this.isColumnExisted(id))) {\n return {values: [], overflow: false};\n }\n const request: UniqueValuesRequest = {\n columnId: id.name as PObjectId,\n filters,\n limit,\n };\n try {\n const start = Date.now();\n const response = await this.pframeDriver.getUniqueValues(this.pframeHandle, request);\n let overflow = false;\n if (response.overflow) {\n overflow = true;\n console.warn(`More than ${limit} values for ${id.name} column`);\n }\n if (debug) {\n const time = Date.now() - start;\n if (time > LONG_REQUEST)\n console.log('getColumnUniqueValues', time, id.type, `${response.values.data.length} items`);\n }\n return {\n values: Array.from(response.values.data as ArrayLike<unknown>).map(String),\n overflow\n };\n } catch (err) {\n console.error('PFrame: getUniqueValues for column error');\n throw err;\n }\n }\n\n async getAxisUniqueValues(\n axisId: AxisId,\n parents: ColumnId[],\n limit = UNIQUE_VALUES_LIMIT,\n filters: PTableRecordSingleValueFilterV2[] = []\n ) {\n const columnParents = parents.filter(isColumnId);\n\n const specs: (PColumnSpec | null)[] = await Promise.all(columnParents.map(c => this.getColumnSpecById(c)));\n const axisIdStr = axisId.toCanonicalString();\n // realParents - parent columns that has axisId in its spec\n const realParents = columnParents.filter((c, idx) => {\n const columnSpec = specs[idx];\n return (\n columnSpec !== null &&\n columnSpec.axesSpec.some(axisSpec => AxisId.fromAxisSpec(axisSpec).toCanonicalString() === axisIdStr)\n );\n });\n if (realParents.length === 0) {\n return {values: [], overflow: false};\n }\n try {\n const start = Date.now();\n const responses = await Promise.all(\n realParents.map(p =>\n this.pframeDriver.getUniqueValues(this.pframeHandle, {\n columnId: p.name as PObjectId,\n axis: axisId.toPFrameId(),\n filters,\n limit,\n })\n )\n );\n let overflow = false;\n responses.forEach((response, idx) => {\n if (response.overflow) {\n overflow = true;\n console.warn(`More than ${limit} values for ${realParents[idx].name} column`);\n }\n })\n if (debug) {\n const time = Date.now() - start;\n if (time > LONG_REQUEST) console.log('getAxisUniqueValues', time);\n }\n return {\n values: lodash.uniq(\n lodash.flatten(responses.map(r => {\n return Array.from(r.values.data as ArrayLike<unknown>).map(String);\n })) as string[]\n ),\n overflow\n };\n } catch (err) {\n console.error('PFrame: getUniqueValues for axis error', err);\n return {values: [], overflow: false};\n }\n }\n\n async getTableOuterJoin(\n primaryIds: (ColumnId | AxisId)[],\n secondaryIds: (ColumnId | AxisId)[],\n filters: PTableRecordSingleValueFilterV2[] = [],\n primaryInnerJoin = true,\n primarySourcesFixedAxes:{idx:number, value:PValue}[][] = [],\n secondarySourcesFixedAxes:{idx:number, value:PValue}[][] = []\n ): Promise<TableOuterJoinResult> {\n const primaryColumns = primaryIds.filter(isColumnId);\n const secondaryColumns = secondaryIds.filter(isColumnId);\n const request = {\n src: {\n type: 'outer',\n primary: {\n type: primaryInnerJoin ? 'inner' : 'full',\n entries: primaryColumns.map((item, idx) => {\n const axisFilters = primarySourcesFixedAxes[idx]?.map(v => ({\n type: 'constant',\n axisIndex: v.idx,\n constant: v.value\n })).filter((v) => v.constant !== undefined);\n return axisFilters?.length\n ? {\n type: 'slicedColumn',\n newId: item.name,\n column: item.name as PObjectId,\n axisFilters\n } : {\n type: 'column',\n column: item.name as PObjectId,\n }\n })\n },\n secondary: secondaryColumns.map((item, idx) => {\n const axisFilters = secondarySourcesFixedAxes[idx]?.map(v => ({\n type: 'constant',\n axisIndex: v.idx,\n constant: v.value\n })).filter((v) => v.constant !== undefined);\n return axisFilters?.length\n ? {\n type: 'slicedColumn',\n newId: item.name,\n column: item.name as PObjectId,\n axisFilters\n } : {\n type: 'column',\n column: item.name as PObjectId,\n }\n }),\n },\n filters,\n sorting: [],\n } as CalculateTableDataRequest<PObjectId>;\n try {\n const start = Date.now();\n const response = await this.pframeDriver.calculateTableData(this.pframeHandle, request);\n if (debug) {\n const time = Date.now() - start;\n if (time > LONG_REQUEST) console.log('getTableOuterJoin', time);\n }\n\n const axes = response.filter(item => item.spec.type === 'axis');\n const columns = response.filter(item => item.spec.type === 'column');\n if (debug) {\n console.log('getTableOuterJoin', `${response[0].data.data.length} items`);\n }\n\n return {\n axesData: axes.reduce((res: Record<string, PValue[]>, item) => {\n const id = AxisId.fromAxisSpec(item.spec.spec as AxisSpec);\n res[id.toCanonicalString()] = convertColumnData(id.type, item.data);\n return res;\n }, {}),\n columnsData: columns.reduce((res: Record<string, PValue[]>, item) => {\n const spec = item.spec.spec as PColumnSpec;\n const id = new ColumnId({\n name: item.spec.id as PObjectId,\n type: spec.valueType,\n });\n res[id.toCanonicalString()] = convertColumnData(id.type, item.data);\n return res;\n }, {}),\n columnSpecs: columns.reduce((res: Record<string, PColumnSpec>, item) => {\n const spec = item.spec.spec as PColumnSpec;\n const id = new ColumnId({\n name: item.spec.id as PObjectId,\n type: spec.valueType,\n });\n res[id.toCanonicalString()] = spec;\n return res;\n }, {}),\n axesSpecs: axes.reduce((res: Record<string, AxisSpec>, item) => {\n const spec = item.spec.spec as AxisSpec;\n const id = AxisId.fromAxisSpec(spec);\n res[id.toCanonicalString()] = spec;\n return res;\n }, {}),\n };\n } catch (err) {\n console.error('PFrame: table outer join error');\n console.info('error with request: ', request);\n throw err;\n }\n }\n\n async getColumnSpecById(id: ColumnId): Promise<PColumnSpec | null> {\n try {\n const start = Date.now();\n const response = await this.pframeDriver.getColumnSpec(this.pframeHandle, id.name as PObjectId);\n if (debug) {\n const time = Date.now() - start;\n if (time > LONG_REQUEST) console.log('getColumnSpecById', time, response);\n }\n return response ?? null;\n } catch (err) {\n console.error('PFrame: get single column error');\n return null;\n }\n }\n\n async getColumnAxesIds(id: ColumnId): Promise<AxisId[]> {\n return (await this.getColumnSpecById(id))?.axesSpec.map(axisSpec => AxisId.fromAxisSpec(axisSpec)) ?? [];\n }\n\n async getRequestColumnsFromSelectedSources(sources: (ColumnId | AxisId)[]): Promise<PFrameAxisId[]> {\n const result: PFrameAxisId[] = [];\n //NB: we don't need to add axes in request because axes are already in columns\n for (const item of sources) {\n if (isColumnId(item)) {\n const axesSpec = (await this.getColumnSpecById(item))?.axesSpec ?? [];\n result.push(...axesSpec.map(spec => AxisId.fromAxisSpec(spec).toPFrameId()));\n }\n }\n return result;\n }\n\n async getColumnsList() {\n return this.pframeDriver.listColumns(this.pframeHandle);\n }\n\n async getColumnsFull(\n selectedSources: (ColumnId | AxisId)[],\n strictlyCompatible: boolean,\n types?: ValueType[],\n names?: string[],\n annotations?: FindColumnsRequest['columnFilter']['annotationValue'],\n ): Promise<PColumnIdAndSpec[]> {\n try {\n const request: FindColumnsRequest = {\n columnFilter: {\n type: types,\n name: names,\n annotationValue: annotations,\n },\n compatibleWith: await this.getRequestColumnsFromSelectedSources(selectedSources),\n strictlyCompatible, // should be true if we want to get meta and false if X/Y\n };\n const start = Date.now();\n const response: FindColumnsResponse = await this.pframeDriver.findColumns(this.pframeHandle, request);\n if (debug) {\n const time = Date.now() - start;\n if (time > LONG_REQUEST) console.log('getColumnsFull', time);\n }\n const result: PColumnIdAndSpec[] = [];\n response.hits.forEach(item => {\n // ***\n // consider mapping variants in qualifications\n // ***\n\n result.push(item);\n });\n return result;\n } catch (err) {\n console.error('PFrame: findColumns error');\n throw err;\n }\n }\n\n async getColumns(\n selectedSources: (ColumnId | AxisId)[],\n strictlyCompatible: boolean,\n types?: ValueType[],\n names?: string[],\n annotations?: FindColumnsRequest['columnFilter']['annotationValue'],\n ): Promise<ColumnId[]> {\n return (await this.getColumnsFull(selectedSources, strictlyCompatible, types, names, annotations)).map(\n item =>\n new ColumnId({\n name: item.columnId,\n type: item.spec.valueType,\n })\n );\n }\n\n async findColumnBy(\n name: string,\n type?: ValueType,\n annotationValue?: FindColumnsRequest['columnFilter']['annotationValue'],\n domainValue?: FindColumnsRequest['columnFilter']['domainValue']\n ): Promise<ColumnId | null> {\n try {\n const request: FindColumnsRequest = {\n columnFilter: {\n name: [name],\n ...(type ? {type: [type]} : {}),\n ...(annotationValue ? {annotationValue} : {}),\n ...(domainValue ? {domainValue} : {}),\n },\n compatibleWith: [] as AxisId[],\n strictlyCompatible: false,\n };\n const start = Date.now();\n const response: FindColumnsResponse = await this.pframeDriver.findColumns(this.pframeHandle, request);\n if (debug) {\n const time = Date.now() - start;\n if (time > LONG_REQUEST) console.log('findColumnBy', time);\n }\n const result: ColumnId[] = [];\n response.hits.forEach(({columnId, spec}) => {\n // ***\n // consider mapping variants in qualifications\n // ***\n\n result.push(new ColumnId({name: columnId, type: spec.valueType}));\n });\n if (result.length > 1) {\n console.warn(`More than 1 column found for ${name}}`);\n }\n if (result.length === 0) {\n console.warn(`No columns found for ${name}}`);\n return null;\n }\n return result[0];\n } catch (err) {\n console.error('PFrame: findColumns error');\n throw err;\n }\n }\n}\n"],"names":["UNIQUE_VALUES_LIMIT","convertColumnData","type","response","res","i","pTableValue","ColumnsProvider","pframeHandle","pframeDriver","__publicField","id","filters","start","axes","u","item","columns","AxisId","err","limit","request","overflow","axisId","parents","columnParents","isColumnId","specs","c","axisIdStr","realParents","idx","columnSpec","axisSpec","responses","p","lodash","r","primaryIds","secondaryIds","primaryInnerJoin","primarySourcesFixedAxes","secondarySourcesFixedAxes","primaryColumns","secondaryColumns","axisFilters","_a","v","n","spec","ColumnId","sources","result","axesSpec","selectedSources","strictlyCompatible","types","names","annotations","name","annotationValue","domainValue","columnId"],"mappings":"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","x_google_ignoreList":[0]}
1
+ {"version":3,"file":"ColumnsProvider.js","sources":["../../../../../../node_modules/@milaboratories/pf-plots/src/pframe/ColumnsProvider.ts"],"sourcesContent":["import {AxisId, ColumnId, isColumnId} from '../spec';\nimport type {PValue} from '../store';\nimport lodash from 'lodash';\nimport type {\n AxisSpec,\n CalculateTableDataRequest,\n FindColumnsRequest,\n FindColumnsResponse,\n PColumnSpec,\n AxisId as PFrameAxisId,\n PFrameDriver,\n PFrameHandle,\n PObjectId,\n PTableRecordSingleValueFilterV2,\n PTableVector,\n UniqueValuesRequest,\n ValueType,\n FullPTableColumnData,\n PColumnIdAndSpec,\n} from '@milaboratories/pl-model-common';\nimport {pTableValue} from '@milaboratories/pl-model-common';\n\nexport type TableOuterJoinResult = {\n axesData: Record<string, PValue[]>;\n columnsData: Record<string, PValue[]>;\n columnSpecs: Record<string, PColumnSpec>;\n axesSpecs: Record<string, AxisSpec>;\n}\nconst UNIQUE_VALUES_LIMIT = 1000000;\n\nfunction convertColumnData(type: ValueType, response: PTableVector): PValue[] {\n if (type === 'String') {\n return response.data as PValue[];\n }\n const res:PValue[] = new Array(response.data.length);\n for (let i = 0; i < response.data.length; i++) {\n res[i] = pTableValue(response, i, {absent: null, na: null}) as PValue;\n }\n return res;\n}\n\nconst debug = false;\nconst LONG_REQUEST = 100;\n\nif (debug) {\n console.log('debug!');\n}\n\nexport class ColumnsProvider {\n pframeHandle: PFrameHandle;\n pframeDriver: PFrameDriver;\n\n constructor(pframeHandle: PFrameHandle, pframeDriver: PFrameDriver) {\n this.pframeHandle = pframeHandle;\n this.pframeDriver = pframeDriver;\n }\n\n async isColumnExisted(id: ColumnId) {\n const spec = await this.getColumnSpecById(id);\n return spec ? true : false;\n }\n\n async getSingleColumnData(id: ColumnId, filters: PTableRecordSingleValueFilterV2[] = []) {\n if (!(await this.isColumnExisted(id))) {\n return {\n axesData: {},\n data: [],\n };\n }\n try {\n const start = Date.now();\n const response: FullPTableColumnData[] = await this.pframeDriver.calculateTableData(this.pframeHandle, {\n src: {\n type: 'column',\n column: id.name as PObjectId,\n },\n filters,\n sorting: [],\n } as CalculateTableDataRequest<PObjectId>);\n if (debug) {\n const time = Date.now() - start;\n if (time > LONG_REQUEST) console.log('getSingleColumnData', time);\n }\n const axes = response.filter(item => item.spec.type === 'axis');\n const columns = response.filter(item => item.spec.type === 'column');\n return {\n axesData: axes.reduce((res: Record<string, PValue[]>, item) => {\n const id = AxisId.fromAxisSpec(item.spec.spec as AxisSpec);\n res[id.toCanonicalString()] = convertColumnData(id.type, item.data);\n return res;\n }, {}),\n data: columns.length ? convertColumnData(id.type, columns[0].data) : [],\n };\n } catch (err) {\n console.error('PFrame: calculateTableData error');\n throw err;\n }\n }\n\n async getColumnUniqueValues(\n id: ColumnId,\n limit = UNIQUE_VALUES_LIMIT,\n filters: PTableRecordSingleValueFilterV2[] = []\n ) {\n if (!(await this.isColumnExisted(id))) {\n return {values: [], overflow: false};\n }\n const request: UniqueValuesRequest = {\n columnId: id.name as PObjectId,\n filters,\n limit,\n };\n try {\n const start = Date.now();\n const response = await this.pframeDriver.getUniqueValues(this.pframeHandle, request);\n let overflow = false;\n if (response.overflow) {\n overflow = true;\n console.warn(`More than ${limit} values for ${id.name} column`);\n }\n if (debug) {\n const time = Date.now() - start;\n if (time > LONG_REQUEST)\n console.log('getColumnUniqueValues', time, id.type, `${response.values.data.length} items`);\n }\n return {\n values: Array.from(response.values.data as ArrayLike<unknown>).map(String),\n overflow\n };\n } catch (err) {\n console.error('PFrame: getUniqueValues for column error');\n throw err;\n }\n }\n\n async getAxisUniqueValues(\n axisId: AxisId,\n parents: ColumnId[],\n limit = UNIQUE_VALUES_LIMIT,\n filters: PTableRecordSingleValueFilterV2[] = []\n ) {\n const columnParents = parents.filter(isColumnId);\n\n const specs: (PColumnSpec | null)[] = await Promise.all(columnParents.map(c => this.getColumnSpecById(c)));\n const axisIdStr = axisId.toCanonicalString();\n // realParents - parent columns that has axisId in its spec\n const realParents = columnParents.filter((c, idx) => {\n const columnSpec = specs[idx];\n return (\n columnSpec !== null &&\n columnSpec.axesSpec.some(axisSpec => AxisId.fromAxisSpec(axisSpec).toCanonicalString() === axisIdStr)\n );\n });\n if (realParents.length === 0) {\n return {values: [], overflow: false};\n }\n try {\n const start = Date.now();\n const responses = await Promise.all(\n realParents.map(p =>\n this.pframeDriver.getUniqueValues(this.pframeHandle, {\n columnId: p.name as PObjectId,\n axis: axisId.toPFrameId(),\n filters,\n limit,\n })\n )\n );\n let overflow = false;\n responses.forEach((response, idx) => {\n if (response.overflow) {\n overflow = true;\n console.warn(`More than ${limit} values for ${realParents[idx].name} column`);\n }\n })\n if (debug) {\n const time = Date.now() - start;\n if (time > LONG_REQUEST) console.log('getAxisUniqueValues', time);\n }\n return {\n values: lodash.uniq(\n lodash.flatten(responses.map(r => {\n return Array.from(r.values.data as ArrayLike<unknown>).map(String);\n })) as string[]\n ),\n overflow\n };\n } catch (err) {\n console.error('PFrame: getUniqueValues for axis error', err);\n return {values: [], overflow: false};\n }\n }\n\n async getTableOuterJoin(\n primaryIds: (ColumnId | AxisId)[],\n secondaryIds: (ColumnId | AxisId)[],\n filters: PTableRecordSingleValueFilterV2[] = [],\n primaryInnerJoin = true,\n primarySourcesFixedAxes:{idx:number, value:PValue}[][] = [],\n secondarySourcesFixedAxes:{idx:number, value:PValue}[][] = []\n ): Promise<TableOuterJoinResult> {\n const primaryColumns = primaryIds.filter(isColumnId);\n const secondaryColumns = secondaryIds.filter(isColumnId);\n const request = {\n src: {\n type: 'outer',\n primary: {\n type: primaryInnerJoin ? 'inner' : 'full',\n entries: primaryColumns.map((item, idx) => {\n const axisFilters = primarySourcesFixedAxes[idx]?.map(v => ({\n type: 'constant',\n axisIndex: v.idx,\n constant: v.value\n })).filter((v) => v.constant !== undefined);\n return axisFilters?.length\n ? {\n type: 'slicedColumn',\n newId: item.name,\n column: item.name as PObjectId,\n axisFilters\n } : {\n type: 'column',\n column: item.name as PObjectId,\n }\n })\n },\n secondary: secondaryColumns.map((item, idx) => {\n const axisFilters = secondarySourcesFixedAxes[idx]?.map(v => ({\n type: 'constant',\n axisIndex: v.idx,\n constant: v.value\n })).filter((v) => v.constant !== undefined);\n return axisFilters?.length\n ? {\n type: 'slicedColumn',\n newId: item.name,\n column: item.name as PObjectId,\n axisFilters\n } : {\n type: 'column',\n column: item.name as PObjectId,\n }\n }),\n },\n filters,\n sorting: [],\n } as CalculateTableDataRequest<PObjectId>;\n try {\n const start = Date.now();\n const response = await this.pframeDriver.calculateTableData(this.pframeHandle, request);\n if (debug) {\n const time = Date.now() - start;\n if (time > LONG_REQUEST) console.log('getTableOuterJoin', time);\n }\n\n const axes = response.filter(item => item.spec.type === 'axis');\n const columns = response.filter(item => item.spec.type === 'column');\n if (debug) {\n console.log('getTableOuterJoin', `${response[0].data.data.length} items`);\n }\n\n return {\n axesData: axes.reduce((res: Record<string, PValue[]>, item) => {\n const id = AxisId.fromAxisSpec(item.spec.spec as AxisSpec);\n res[id.toCanonicalString()] = convertColumnData(id.type, item.data);\n return res;\n }, {}),\n columnsData: columns.reduce((res: Record<string, PValue[]>, item) => {\n const spec = item.spec.spec as PColumnSpec;\n const id = new ColumnId({\n name: item.spec.id as PObjectId,\n type: spec.valueType,\n });\n res[id.toCanonicalString()] = convertColumnData(id.type, item.data);\n return res;\n }, {}),\n columnSpecs: columns.reduce((res: Record<string, PColumnSpec>, item) => {\n const spec = item.spec.spec as PColumnSpec;\n const id = new ColumnId({\n name: item.spec.id as PObjectId,\n type: spec.valueType,\n });\n res[id.toCanonicalString()] = spec;\n return res;\n }, {}),\n axesSpecs: axes.reduce((res: Record<string, AxisSpec>, item) => {\n const spec = item.spec.spec as AxisSpec;\n const id = AxisId.fromAxisSpec(spec);\n res[id.toCanonicalString()] = spec;\n return res;\n }, {}),\n };\n } catch (err) {\n console.error('PFrame: table outer join error');\n console.info('error with request: ', request);\n throw err;\n }\n }\n\n async getColumnSpecById(id: ColumnId): Promise<PColumnSpec | null> {\n try {\n const start = Date.now();\n const response = await this.pframeDriver.getColumnSpec(this.pframeHandle, id.name as PObjectId);\n if (debug) {\n const time = Date.now() - start;\n if (time > LONG_REQUEST) console.log('getColumnSpecById', time, response);\n }\n return response ?? null;\n } catch (err) {\n console.error('PFrame: get single column error');\n return null;\n }\n }\n\n async getColumnAxesIds(id: ColumnId): Promise<AxisId[]> {\n return (await this.getColumnSpecById(id))?.axesSpec.map(axisSpec => AxisId.fromAxisSpec(axisSpec)) ?? [];\n }\n\n async getRequestColumnsFromSelectedSources(sources: (ColumnId | AxisId)[]): Promise<PFrameAxisId[]> {\n const result: PFrameAxisId[] = [];\n //NB: we don't need to add axes in request because axes are already in columns\n for (const item of sources) {\n if (isColumnId(item)) {\n const axesSpec = (await this.getColumnSpecById(item))?.axesSpec ?? [];\n result.push(...axesSpec.map(spec => AxisId.fromAxisSpec(spec).toPFrameId()));\n }\n }\n return result;\n }\n\n async getColumnsList() {\n return this.pframeDriver.listColumns(this.pframeHandle);\n }\n\n async getColumnsFull(\n selectedSources: (ColumnId | AxisId)[],\n strictlyCompatible: boolean,\n types?: ValueType[],\n names?: string[],\n annotations?: FindColumnsRequest['columnFilter']['annotationValue'],\n annotationsNotEmpty?: string[]\n ): Promise<PColumnIdAndSpec[]> {\n try {\n const request: FindColumnsRequest = {\n columnFilter: {\n type: types,\n name: names,\n annotationValue: annotations,\n annotationPattern: annotationsNotEmpty?.reduce((res, v) => {\n res[v] = '.+'\n return res;\n }, {} as Record<string, string>)\n },\n compatibleWith: await this.getRequestColumnsFromSelectedSources(selectedSources),\n strictlyCompatible, // should be true if we want to get meta and false if X/Y\n };\n const start = Date.now();\n const response: FindColumnsResponse = await this.pframeDriver.findColumns(this.pframeHandle, request);\n if (debug) {\n const time = Date.now() - start;\n if (time > LONG_REQUEST) console.log('getColumnsFull', time);\n }\n const result: PColumnIdAndSpec[] = [];\n response.hits.forEach(item => {\n // ***\n // consider mapping variants in qualifications\n // ***\n\n result.push(item);\n });\n return result;\n } catch (err) {\n console.error('PFrame: findColumns error');\n throw err;\n }\n }\n\n async getColumns(\n selectedSources: (ColumnId | AxisId)[],\n strictlyCompatible: boolean,\n types?: ValueType[],\n names?: string[],\n annotations?: FindColumnsRequest['columnFilter']['annotationValue'],\n ): Promise<ColumnId[]> {\n return (await this.getColumnsFull(selectedSources, strictlyCompatible, types, names, annotations)).map(\n item =>\n new ColumnId({\n name: item.columnId,\n type: item.spec.valueType,\n })\n );\n }\n\n async findColumnBy(\n name: string,\n type?: ValueType,\n annotationValue?: FindColumnsRequest['columnFilter']['annotationValue'],\n domainValue?: FindColumnsRequest['columnFilter']['domainValue']\n ): Promise<ColumnId | null> {\n try {\n const request: FindColumnsRequest = {\n columnFilter: {\n name: [name],\n ...(type ? {type: [type]} : {}),\n ...(annotationValue ? {annotationValue} : {}),\n ...(domainValue ? {domainValue} : {}),\n },\n compatibleWith: [] as AxisId[],\n strictlyCompatible: false,\n };\n const start = Date.now();\n const response: FindColumnsResponse = await this.pframeDriver.findColumns(this.pframeHandle, request);\n if (debug) {\n const time = Date.now() - start;\n if (time > LONG_REQUEST) console.log('findColumnBy', time);\n }\n const result: ColumnId[] = [];\n response.hits.forEach(({columnId, spec}) => {\n // ***\n // consider mapping variants in qualifications\n // ***\n\n result.push(new ColumnId({name: columnId, type: spec.valueType}));\n });\n if (result.length > 1) {\n console.warn(`More than 1 column found for ${name}}`);\n }\n if (result.length === 0) {\n console.warn(`No columns found for ${name}}`);\n return null;\n }\n return result[0];\n } catch (err) {\n console.error('PFrame: findColumns error');\n throw err;\n }\n }\n}\n"],"names":["UNIQUE_VALUES_LIMIT","convertColumnData","type","response","res","i","pTableValue","ColumnsProvider","pframeHandle","pframeDriver","__publicField","id","filters","start","axes","item","columns","AxisId","err","limit","request","overflow","axisId","parents","columnParents","isColumnId","specs","c","axisIdStr","realParents","idx","columnSpec","axisSpec","responses","p","lodash","r","primaryIds","secondaryIds","primaryInnerJoin","primarySourcesFixedAxes","secondarySourcesFixedAxes","primaryColumns","secondaryColumns","axisFilters","_a","v","n","spec","ColumnId","sources","result","axesSpec","selectedSources","strictlyCompatible","types","names","annotations","annotationsNotEmpty","name","annotationValue","domainValue","columnId"],"mappings":"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","x_google_ignoreList":[0]}
@@ -39,10 +39,10 @@ class o {
39
39
  }
40
40
  }
41
41
  function d(n) {
42
- return n !== null && n.kind === "column";
42
+ return n != null && n.kind === "column";
43
43
  }
44
44
  function h(n) {
45
- return n !== null && n.kind === "axis";
45
+ return n != null && n.kind === "axis";
46
46
  }
47
47
  function p(n) {
48
48
  const t = JSON.parse(n);
@@ -1 +1 @@
1
- {"version":3,"file":"spec.js","sources":["../../../../../node_modules/@milaboratories/pf-plots/src/spec.ts"],"sourcesContent":["import canonicalize from 'canonicalize';\nimport type {\n AxisSpec,\n AxisId as PFrameAxisId,\n ValueType,\n} from '@milaboratories/pl-model-common';\n\ninterface ToCanonicalString {\n toCanonicalString(): ColumnOrAxisIdString;\n}\n\ninterface AxisIdProps {\n type: ValueType;\n name: string;\n domain?: Record<string, string>;\n}\n\ninterface AxisIdPojo {\n kind: 'axis';\n type: ValueType;\n name: string;\n domain?: Record<string, string>;\n}\n\nexport class AxisId implements ToCanonicalString {\n kind = 'axis';\n type: ValueType;\n name: string;\n domain?: Record<string, string>;\n\n constructor({type, name, domain}: AxisIdProps) {\n this.type = type;\n this.name = name;\n this.domain = {...domain};\n }\n\n toCanonicalString(): ColumnOrAxisIdString {\n return canonicalize(this)!;\n }\n\n static fromAxisSpec(axisSpec: AxisSpec) {\n return new AxisId({name: axisSpec.name, type: axisSpec.type, domain: axisSpec.domain});\n }\n\n static fromAxesSpec(axesSpec: AxisSpec[]): AxisId[] {\n return axesSpec.map(axis => AxisId.fromAxisSpec(axis));\n }\n\n copy(): AxisId {\n return new AxisId({type: this.type, name: this.name, domain: this.domain});\n }\n\n toPFrameId():PFrameAxisId {\n return {\n type: this.type,\n name: this.name,\n domain: this.domain\n };\n }\n\n static fromPojo(values: AxisIdPojo) {\n return new AxisId(values);\n }\n}\n\ninterface ColumnIdProps {\n name: string;\n type: ValueType;\n}\n\ninterface ColumnIdPojo {\n kind: 'column';\n name: string;\n type: ValueType;\n}\n\nexport class ColumnId implements ToCanonicalString {\n kind = 'column';\n name: string;\n type: ValueType;\n\n constructor({name, type}: ColumnIdProps) {\n this.name = name;\n this.type = type;\n }\n\n toCanonicalString(): ColumnOrAxisIdString {\n return canonicalize(this)!;\n }\n\n static fromPojo(pojo: ColumnIdPojo) {\n return new ColumnId(pojo);\n }\n}\n\nexport function isColumnId(id: ColumnId | AxisId | null): id is ColumnId {\n return id !== null && id.kind === 'column';\n}\n\nexport function isAxisId(id: ColumnId | AxisId | null): id is AxisId {\n return id !== null && id.kind === 'axis';\n}\n\nexport type ColumnOrAxisIdString = string;\n\nexport function columnOrAxisIdFromString(str: ColumnOrAxisIdString) {\n const pojo: ColumnIdPojo | AxisIdPojo = JSON.parse(str);\n if (pojo.kind === 'column') {\n return ColumnId.fromPojo(pojo);\n }\n if (pojo.kind === 'axis') {\n return AxisId.fromPojo(pojo);\n }\n throw Error('wrong column or axis object');\n}\n"],"names":["AxisId","type","name","domain","__publicField","canonicalize","axisSpec","axesSpec","axis","values","ColumnId","pojo","isColumnId","id","isAxisId","columnOrAxisIdFromString","str"],"mappings":";;AAwBO,MAAMA,EAAoC;AAAA,EAM7C,YAAY,EAAC,MAAAC,GAAM,MAAAC,GAAM,QAAAC,KAAsB;AAL/CC,IAAAA,EAAA,MAAA,QAAO,MAAA,GACPA,EAAA,MAAA,MAAA,GACAA,EAAA,MAAA,MAAA,GACAA,EAAA,MAAA,QAAA,GAGI,KAAK,OAAOH,GACZ,KAAK,OAAOC,GACP,KAAA,SAAS,EAAC,GAAGC,EAAAA;AAAAA,EAAM;AAAA,EAG5B,oBAA0C;AACtC,WAAOE,EAAa,IAAI;AAAA,EAAA;AAAA,EAG5B,OAAO,aAAaC,GAAoB;AACpC,WAAO,IAAIN,EAAO,EAAC,MAAMM,EAAS,MAAM,MAAMA,EAAS,MAAM,QAAQA,EAAS,OAAA,CAAO;AAAA,EAAA;AAAA,EAGzF,OAAO,aAAaC,GAAgC;AAChD,WAAOA,EAAS,IAAI,CAAAC,MAAQR,EAAO,aAAaQ,CAAI,CAAC;AAAA,EAAA;AAAA,EAGzD,OAAe;AACX,WAAO,IAAIR,EAAO,EAAC,MAAM,KAAK,MAAM,MAAM,KAAK,MAAM,QAAQ,KAAK,OAAA,CAAO;AAAA,EAAA;AAAA,EAG7E,aAA0B;AACf,WAAA;AAAA,MACH,MAAM,KAAK;AAAA,MACX,MAAM,KAAK;AAAA,MACX,QAAQ,KAAK;AAAA,IAAA;AAAA,EACjB;AAAA,EAGJ,OAAO,SAASS,GAAoB;AACzB,WAAA,IAAIT,EAAOS,CAAM;AAAA,EAAA;AAEhC;AAaO,MAAMC,EAAsC;AAAA,EAK/C,YAAY,EAAC,MAAAR,GAAM,MAAAD,EAAAA,GAAsB;AAJzCG,IAAAA,EAAA,MAAA,QAAO,QAAA,GACPA,EAAA,MAAA,MAAA,GACAA,EAAA,MAAA,MAAA,GAGI,KAAK,OAAOF,GACZ,KAAK,OAAOD;AAAAA,EAAA;AAAA,EAGhB,oBAA0C;AACtC,WAAOI,EAAa,IAAI;AAAA,EAAA;AAAA,EAG5B,OAAO,SAASM,GAAoB;AACzB,WAAA,IAAID,EAASC,CAAI;AAAA,EAAA;AAEhC;AAEO,SAASC,EAAWC,GAA8C;AAC9D,SAAAA,MAAO,QAAQA,EAAG,SAAS;AACtC;AAEO,SAASC,EAASD,GAA4C;AAC1D,SAAAA,MAAO,QAAQA,EAAG,SAAS;AACtC;AAIO,SAASE,EAAyBC,GAA2B;AAC1D,QAAAL,IAAkC,KAAK,MAAMK,CAAG;AAClD,MAAAL,EAAK,SAAS;AACP,WAAAD,EAAS,SAASC,CAAI;AAE7B,MAAAA,EAAK,SAAS;AACP,WAAAX,EAAO,SAASW,CAAI;AAE/B,QAAM,MAAM,6BAA6B;AAC7C;","x_google_ignoreList":[0]}
1
+ {"version":3,"file":"spec.js","sources":["../../../../../node_modules/@milaboratories/pf-plots/src/spec.ts"],"sourcesContent":["import canonicalize from 'canonicalize';\nimport type {\n AxisSpec,\n AxisId as PFrameAxisId,\n ValueType,\n} from '@milaboratories/pl-model-common';\n\nexport type AxesSet = Map<ColumnOrAxisIdString, {parentSource: ColumnOrAxisIdString, spec: AxisSpec}>;\n\ninterface ToCanonicalString {\n toCanonicalString(): ColumnOrAxisIdString;\n}\n\ninterface AxisIdProps {\n type: ValueType;\n name: string;\n domain?: Record<string, string>;\n}\n\ninterface AxisIdPojo {\n kind: 'axis';\n type: ValueType;\n name: string;\n domain?: Record<string, string>;\n}\n\nexport class AxisId implements ToCanonicalString {\n kind = 'axis';\n type: ValueType;\n name: string;\n domain?: Record<string, string>;\n\n constructor({type, name, domain}: AxisIdProps) {\n this.type = type;\n this.name = name;\n this.domain = {...domain};\n }\n\n toCanonicalString(): ColumnOrAxisIdString {\n return canonicalize(this)!;\n }\n\n static fromAxisSpec(axisSpec: AxisSpec) {\n return new AxisId({name: axisSpec.name, type: axisSpec.type, domain: axisSpec.domain});\n }\n\n static fromAxesSpec(axesSpec: AxisSpec[]): AxisId[] {\n return axesSpec.map(axis => AxisId.fromAxisSpec(axis));\n }\n\n copy(): AxisId {\n return new AxisId({type: this.type, name: this.name, domain: this.domain});\n }\n\n toPFrameId():PFrameAxisId {\n return {\n type: this.type,\n name: this.name,\n domain: this.domain\n };\n }\n\n static fromPojo(values: AxisIdPojo) {\n return new AxisId(values);\n }\n}\n\ninterface ColumnIdProps {\n name: string;\n type: ValueType;\n}\n\ninterface ColumnIdPojo {\n kind: 'column';\n name: string;\n type: ValueType;\n}\n\nexport class ColumnId implements ToCanonicalString {\n kind = 'column';\n name: string;\n type: ValueType;\n\n constructor({name, type}: ColumnIdProps) {\n this.name = name;\n this.type = type;\n }\n\n toCanonicalString(): ColumnOrAxisIdString {\n return canonicalize(this)!;\n }\n\n static fromPojo(pojo: ColumnIdPojo) {\n return new ColumnId(pojo);\n }\n}\n\nexport function isColumnId(id: ColumnId | AxisId | null | undefined): id is ColumnId {\n return id !== undefined && id !== null && id.kind === 'column';\n}\n\nexport function isAxisId(id: ColumnId | AxisId | null | undefined): id is AxisId {\n return id !== undefined && id !== null && id.kind === 'axis';\n}\n\nexport type ColumnOrAxisIdString = string;\n\nexport function columnOrAxisIdFromString(str: ColumnOrAxisIdString) {\n const pojo: ColumnIdPojo | AxisIdPojo = JSON.parse(str);\n if (pojo.kind === 'column') {\n return ColumnId.fromPojo(pojo);\n }\n if (pojo.kind === 'axis') {\n return AxisId.fromPojo(pojo);\n }\n throw Error('wrong column or axis object');\n}\n"],"names":["AxisId","type","name","domain","__publicField","canonicalize","axisSpec","axesSpec","axis","values","ColumnId","pojo","isColumnId","id","isAxisId","columnOrAxisIdFromString","str"],"mappings":";;AA0BO,MAAMA,EAAoC;AAAA,EAM7C,YAAY,EAAC,MAAAC,GAAM,MAAAC,GAAM,QAAAC,KAAsB;AAL/CC,IAAAA,EAAA,MAAA,QAAO,MAAA,GACPA,EAAA,MAAA,MAAA,GACAA,EAAA,MAAA,MAAA,GACAA,EAAA,MAAA,QAAA,GAGI,KAAK,OAAOH,GACZ,KAAK,OAAOC,GACP,KAAA,SAAS,EAAC,GAAGC,EAAAA;AAAAA,EAAM;AAAA,EAG5B,oBAA0C;AACtC,WAAOE,EAAa,IAAI;AAAA,EAAA;AAAA,EAG5B,OAAO,aAAaC,GAAoB;AACpC,WAAO,IAAIN,EAAO,EAAC,MAAMM,EAAS,MAAM,MAAMA,EAAS,MAAM,QAAQA,EAAS,OAAA,CAAO;AAAA,EAAA;AAAA,EAGzF,OAAO,aAAaC,GAAgC;AAChD,WAAOA,EAAS,IAAI,CAAAC,MAAQR,EAAO,aAAaQ,CAAI,CAAC;AAAA,EAAA;AAAA,EAGzD,OAAe;AACX,WAAO,IAAIR,EAAO,EAAC,MAAM,KAAK,MAAM,MAAM,KAAK,MAAM,QAAQ,KAAK,OAAA,CAAO;AAAA,EAAA;AAAA,EAG7E,aAA0B;AACf,WAAA;AAAA,MACH,MAAM,KAAK;AAAA,MACX,MAAM,KAAK;AAAA,MACX,QAAQ,KAAK;AAAA,IAAA;AAAA,EACjB;AAAA,EAGJ,OAAO,SAASS,GAAoB;AACzB,WAAA,IAAIT,EAAOS,CAAM;AAAA,EAAA;AAEhC;AAaO,MAAMC,EAAsC;AAAA,EAK/C,YAAY,EAAC,MAAAR,GAAM,MAAAD,EAAAA,GAAsB;AAJzCG,IAAAA,EAAA,MAAA,QAAO,QAAA,GACPA,EAAA,MAAA,MAAA,GACAA,EAAA,MAAA,MAAA,GAGI,KAAK,OAAOF,GACZ,KAAK,OAAOD;AAAAA,EAAA;AAAA,EAGhB,oBAA0C;AACtC,WAAOI,EAAa,IAAI;AAAA,EAAA;AAAA,EAG5B,OAAO,SAASM,GAAoB;AACzB,WAAA,IAAID,EAASC,CAAI;AAAA,EAAA;AAEhC;AAEO,SAASC,EAAWC,GAA0D;AACjF,SAA2BA,KAAO,QAAQA,EAAG,SAAS;AAC1D;AAEO,SAASC,EAASD,GAAwD;AAC7E,SAA2BA,KAAO,QAAQA,EAAG,SAAS;AAC1D;AAIO,SAASE,EAAyBC,GAA2B;AAC1D,QAAAL,IAAkC,KAAK,MAAMK,CAAG;AAClD,MAAAL,EAAK,SAAS;AACP,WAAAD,EAAS,SAASC,CAAI;AAE7B,MAAAA,EAAK,SAAS;AACP,WAAAX,EAAO,SAASW,CAAI;AAE/B,QAAM,MAAM,6BAA6B;AAC7C;","x_google_ignoreList":[0]}