@platforma-sdk/ui-vue 1.45.37 → 1.45.45
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/.turbo/turbo-build.log +23 -39
- package/.turbo/turbo-type-check.log +1 -1
- package/CHANGELOG.md +19 -0
- package/dist/components/PlAdvancedFilter/{SingleFilter.vue.d.ts → FilterEditor.vue.d.ts} +12 -18
- package/dist/components/PlAdvancedFilter/FilterEditor.vue.js +10 -0
- package/dist/components/PlAdvancedFilter/FilterEditor.vue.js.map +1 -0
- package/dist/components/PlAdvancedFilter/FilterEditor.vue2.js +305 -0
- package/dist/components/PlAdvancedFilter/FilterEditor.vue2.js.map +1 -0
- package/dist/components/PlAdvancedFilter/FilterEditor.vue3.js +33 -0
- package/dist/components/PlAdvancedFilter/FilterEditor.vue3.js.map +1 -0
- package/dist/components/PlAdvancedFilter/OperandButton.vue2.js.map +1 -1
- package/dist/components/PlAdvancedFilter/OperandButton.vue3.js +9 -9
- package/dist/components/PlAdvancedFilter/PlAdvancedFilter.vue.d.ts +35 -16
- package/dist/components/PlAdvancedFilter/PlAdvancedFilter.vue2.js +185 -145
- package/dist/components/PlAdvancedFilter/PlAdvancedFilter.vue2.js.map +1 -1
- package/dist/components/PlAdvancedFilter/PlAdvancedFilter.vue3.js +13 -9
- package/dist/components/PlAdvancedFilter/PlAdvancedFilter.vue3.js.map +1 -1
- package/dist/components/PlAdvancedFilter/constants.d.ts +4 -4
- package/dist/components/PlAdvancedFilter/constants.js +26 -22
- package/dist/components/PlAdvancedFilter/constants.js.map +1 -1
- package/dist/components/PlAdvancedFilter/index.d.ts +4 -0
- package/dist/components/PlAdvancedFilter/index.js +9 -0
- package/dist/components/PlAdvancedFilter/index.js.map +1 -0
- package/dist/components/PlAdvancedFilter/types.d.ts +30 -34
- package/dist/components/PlAdvancedFilter/utils.d.ts +26 -0
- package/dist/components/PlAdvancedFilter/utils.js +32 -131
- package/dist/components/PlAdvancedFilter/utils.js.map +1 -1
- package/dist/components/PlAnnotations/components/AnnotationsSidebar.vue2.js +43 -41
- package/dist/components/PlAnnotations/components/AnnotationsSidebar.vue2.js.map +1 -1
- package/dist/components/PlAnnotations/components/AnnotationsSidebar.vue3.js +2 -2
- package/dist/components/PlAnnotations/components/FilterSidebar.vue.d.ts +14 -2
- package/dist/components/PlAnnotations/components/FilterSidebar.vue2.js +99 -90
- package/dist/components/PlAnnotations/components/FilterSidebar.vue2.js.map +1 -1
- package/dist/components/PlAnnotations/components/FilterSidebar.vue3.js +5 -5
- package/dist/components/PlAnnotations/components/PlAnnotations.vue2.js +32 -30
- package/dist/components/PlAnnotations/components/PlAnnotations.vue2.js.map +1 -1
- package/dist/components/PlAnnotations/components/PlAnnotations.vue3.js +5 -7
- package/dist/components/PlAnnotations/components/PlAnnotations.vue3.js.map +1 -1
- package/dist/components/PlAnnotations/components/PlAnnotationsModal.vue2.js +26 -22
- package/dist/components/PlAnnotations/components/PlAnnotationsModal.vue2.js.map +1 -1
- package/dist/components/PlAnnotations/components/PlAnnotationsModal.vue3.js +7 -9
- package/dist/components/PlAnnotations/components/PlAnnotationsModal.vue3.js.map +1 -1
- package/dist/components/PlAnnotations/components/style.module.css.js +13 -0
- package/dist/components/PlAnnotations/components/style.module.css.js.map +1 -0
- package/dist/components/PlAnnotations/index.d.ts +1 -0
- package/dist/index.js +35 -33
- package/dist/index.js.map +1 -1
- package/package.json +9 -8
- package/src/components/PlAdvancedFilter/{SingleFilter.vue → FilterEditor.vue} +53 -53
- package/src/components/PlAdvancedFilter/OperandButton.vue +1 -1
- package/src/components/PlAdvancedFilter/PlAdvancedFilter.vue +155 -59
- package/src/components/PlAdvancedFilter/constants.ts +17 -11
- package/src/components/PlAdvancedFilter/index.ts +6 -0
- package/src/components/PlAdvancedFilter/types.ts +23 -54
- package/src/components/PlAdvancedFilter/utils.ts +51 -163
- package/src/components/PlAnnotations/components/AnnotationsSidebar.vue +8 -8
- package/src/components/PlAnnotations/components/FilterSidebar.vue +64 -69
- package/src/components/PlAnnotations/components/PlAnnotations.vue +4 -7
- package/src/components/PlAnnotations/components/PlAnnotationsModal.vue +5 -8
- package/src/components/PlAnnotations/components/style.module.css +16 -0
- package/src/components/PlAnnotations/index.ts +2 -0
- package/dist/components/PlAdvancedFilter/SingleFilter.vue.js +0 -10
- package/dist/components/PlAdvancedFilter/SingleFilter.vue.js.map +0 -1
- package/dist/components/PlAdvancedFilter/SingleFilter.vue2.js +0 -306
- package/dist/components/PlAdvancedFilter/SingleFilter.vue2.js.map +0 -1
- package/dist/components/PlAdvancedFilter/SingleFilter.vue3.js +0 -35
- package/dist/components/PlAdvancedFilter/SingleFilter.vue3.js.map +0 -1
- package/dist/components/PlAdvancedFilter/types.js +0 -8
- package/dist/components/PlAdvancedFilter/types.js.map +0 -1
- package/dist/components/PlAnnotations/components/DynamicForm.vue.d.ts +0 -24
- package/dist/components/PlAnnotations/components/DynamicForm.vue.js +0 -10
- package/dist/components/PlAnnotations/components/DynamicForm.vue.js.map +0 -1
- package/dist/components/PlAnnotations/components/DynamicForm.vue2.js +0 -109
- package/dist/components/PlAnnotations/components/DynamicForm.vue2.js.map +0 -1
- package/dist/components/PlAnnotations/components/DynamicForm.vue3.js +0 -9
- package/dist/components/PlAnnotations/components/DynamicForm.vue3.js.map +0 -1
- package/dist/components/PlAnnotations/utils.js +0 -20
- package/dist/components/PlAnnotations/utils.js.map +0 -1
|
@@ -1,306 +0,0 @@
|
|
|
1
|
-
import { defineComponent as Z, mergeModels as _, useModel as ee, computed as p, createElementBlock as I, openBlock as n, Fragment as T, createElementVNode as v, createVNode as b, normalizeClass as r, createCommentVNode as f, createBlock as c, unref as a, toDisplayString as le, renderList as te } from "vue";
|
|
2
|
-
import { PlIcon16 as B, PlDropdown as N, PlAutocomplete as D, PlTextField as A, Slider as ue, PlToggleSwitch as oe, PlAutocompleteMulti as ae, PlNumberField as ne } from "@milaboratories/uikit";
|
|
3
|
-
import { SUPPORTED_FILTER_TYPES as se, DEFAULT_FILTERS as U, DEFAULT_FILTER_TYPE as re } from "./constants.js";
|
|
4
|
-
import { parseColumnId as M, isFilteredPColumn as R, stringifyColumnId as q } from "@platforma-sdk/model";
|
|
5
|
-
import ie from "./OperandButton.vue.js";
|
|
6
|
-
import { getNormalizedSpec as z, getFilterInfo as C, isNumericFilter as L, isStringFilter as de } from "./utils.js";
|
|
7
|
-
const pe = ["title"], fe = /* @__PURE__ */ Z({
|
|
8
|
-
__name: "SingleFilter",
|
|
9
|
-
props: /* @__PURE__ */ _({
|
|
10
|
-
operand: {},
|
|
11
|
-
columnOptions: {},
|
|
12
|
-
enableDnd: { type: Boolean },
|
|
13
|
-
isLast: { type: Boolean },
|
|
14
|
-
getSuggestOptions: { type: Function },
|
|
15
|
-
getSuggestModel: { type: Function },
|
|
16
|
-
onDelete: { type: Function },
|
|
17
|
-
onChangeOperand: { type: Function }
|
|
18
|
-
}, {
|
|
19
|
-
modelValue: { required: !0 },
|
|
20
|
-
modelModifiers: {}
|
|
21
|
-
}),
|
|
22
|
-
emits: ["update:modelValue"],
|
|
23
|
-
setup(y) {
|
|
24
|
-
const g = y, l = ee(y, "modelValue");
|
|
25
|
-
async function w(e, t, o) {
|
|
26
|
-
return Promise.all(t.map((d) => g.getSuggestModel({ columnId: e, searchStr: d, axisIdx: o })));
|
|
27
|
-
}
|
|
28
|
-
async function h(e, t, o) {
|
|
29
|
-
return g.getSuggestModel({ columnId: e, searchStr: t, axisIdx: o });
|
|
30
|
-
}
|
|
31
|
-
async function $(e, t, o) {
|
|
32
|
-
return g.getSuggestOptions({ columnId: e, searchStr: t, axisIdx: o });
|
|
33
|
-
}
|
|
34
|
-
function W() {
|
|
35
|
-
const e = C(l.value.type);
|
|
36
|
-
F.value && e.supportedFor(F.value) && L(l.value) || (F.value && e.supportedFor(F.value) && de(l.value) ? l.value = {
|
|
37
|
-
...U[l.value.type],
|
|
38
|
-
value: l.value.value,
|
|
39
|
-
column: l.value.column
|
|
40
|
-
} : l.value = {
|
|
41
|
-
...U[l.value.type],
|
|
42
|
-
column: l.value.column
|
|
43
|
-
});
|
|
44
|
-
}
|
|
45
|
-
function j(e) {
|
|
46
|
-
if (!e)
|
|
47
|
-
return;
|
|
48
|
-
const t = g.columnOptions.find((i) => i.id === E(e));
|
|
49
|
-
if (!t)
|
|
50
|
-
return;
|
|
51
|
-
const o = C(l.value.type), d = z(t == null ? void 0 : t.spec);
|
|
52
|
-
o.supportedFor(d) ? l.value.column = e : l.value = {
|
|
53
|
-
...U[re],
|
|
54
|
-
column: e
|
|
55
|
-
};
|
|
56
|
-
}
|
|
57
|
-
const x = p(() => g.columnOptions.find((t) => t.id === E(l.value.column)) === void 0), X = p(() => {
|
|
58
|
-
const e = g.columnOptions.map((t) => ({ value: t.id, label: t.label ?? t }));
|
|
59
|
-
return x.value && e.unshift({ value: l.value.column, label: "Inconsistent value" }), e;
|
|
60
|
-
});
|
|
61
|
-
function E(e) {
|
|
62
|
-
try {
|
|
63
|
-
const t = M(e);
|
|
64
|
-
return R(t) ? q(t.source) : e;
|
|
65
|
-
} catch {
|
|
66
|
-
return e;
|
|
67
|
-
}
|
|
68
|
-
}
|
|
69
|
-
function Y(e) {
|
|
70
|
-
const t = E(e), o = g.columnOptions.find((i) => i.id === t), d = ((o == null ? void 0 : o.axesToBeFixed) ?? []).reduce((i, V) => (i[V.idx] = void 0, i), {});
|
|
71
|
-
try {
|
|
72
|
-
const i = M(e);
|
|
73
|
-
if (R(i))
|
|
74
|
-
return {
|
|
75
|
-
source: t,
|
|
76
|
-
axisFiltersByIndex: i.axisFilters.reduce((V, O) => (V[O[0]] = O[1], V), d)
|
|
77
|
-
};
|
|
78
|
-
} catch {
|
|
79
|
-
return { source: e, axisFiltersByIndex: d };
|
|
80
|
-
}
|
|
81
|
-
return { source: e, axisFiltersByIndex: d };
|
|
82
|
-
}
|
|
83
|
-
function G(e) {
|
|
84
|
-
return Object.keys(e.axisFiltersByIndex).length === 0 ? e.source : q({
|
|
85
|
-
source: M(e.source),
|
|
86
|
-
axisFilters: Object.entries(e.axisFiltersByIndex).map(([t, o]) => [Number(t), o])
|
|
87
|
-
});
|
|
88
|
-
}
|
|
89
|
-
const s = p({
|
|
90
|
-
get: () => Y(l.value.column),
|
|
91
|
-
set: (e) => {
|
|
92
|
-
l.value.column = G(e);
|
|
93
|
-
}
|
|
94
|
-
});
|
|
95
|
-
function H(e, t) {
|
|
96
|
-
s.value = {
|
|
97
|
-
...s.value,
|
|
98
|
-
axisFiltersByIndex: { ...s.value.axisFiltersByIndex, [e]: t }
|
|
99
|
-
};
|
|
100
|
-
}
|
|
101
|
-
const m = p(() => g.columnOptions.find((e) => e.id === s.value.source)), F = p(() => {
|
|
102
|
-
var e;
|
|
103
|
-
return (e = m.value) != null && e.spec ? z(m.value.spec) : null;
|
|
104
|
-
}), P = p(() => {
|
|
105
|
-
var e;
|
|
106
|
-
return (e = F.value) == null ? void 0 : e.valueType;
|
|
107
|
-
}), k = p(() => {
|
|
108
|
-
var e;
|
|
109
|
-
return ((e = m.value) == null ? void 0 : e.error) || x.value;
|
|
110
|
-
}), J = p(
|
|
111
|
-
() => [...se].filter(
|
|
112
|
-
(e) => l.value.type === e || (F.value ? C(e).supportedFor(F.value) : !0)
|
|
113
|
-
).map((e) => ({ value: e, label: C(e).label }))
|
|
114
|
-
), K = p(() => {
|
|
115
|
-
var e, t;
|
|
116
|
-
return l.value.type === "patternFuzzyContainSubsequence" ? ((e = m.value) == null ? void 0 : e.alphabet) === "nucleotide" ? [{ label: "N", value: "N" }] : ((t = m.value) == null ? void 0 : t.alphabet) === "aminoacid" ? [{ label: "X", value: "X" }] : [...new Set(l.value.value.split(""))].sort().map((o) => ({ value: o, label: o })) : [];
|
|
117
|
-
}), Q = p(() => {
|
|
118
|
-
if (l.value.type !== "patternMatchesRegularExpression")
|
|
119
|
-
return !1;
|
|
120
|
-
try {
|
|
121
|
-
return new RegExp(l.value.value), !1;
|
|
122
|
-
} catch {
|
|
123
|
-
return !0;
|
|
124
|
-
}
|
|
125
|
-
});
|
|
126
|
-
return (e, t) => {
|
|
127
|
-
var o, d, i, V, O;
|
|
128
|
-
return n(), I(T, null, [
|
|
129
|
-
v("div", {
|
|
130
|
-
class: r(e.$style.filterWrapper)
|
|
131
|
-
}, [
|
|
132
|
-
y.enableDnd ? (n(), I("div", {
|
|
133
|
-
key: 0,
|
|
134
|
-
class: r([e.$style.top, e.$style.columnChip, { [e.$style.error]: k.value }])
|
|
135
|
-
}, [
|
|
136
|
-
v("div", {
|
|
137
|
-
class: r([e.$style.typeIcon, { [e.$style.error]: k.value }])
|
|
138
|
-
}, [
|
|
139
|
-
k.value ? (n(), c(a(B), {
|
|
140
|
-
key: 0,
|
|
141
|
-
name: "warning"
|
|
142
|
-
})) : (n(), c(a(B), {
|
|
143
|
-
key: 1,
|
|
144
|
-
name: P.value === "String" || P.value === void 0 ? "cell-type-txt" : "cell-type-num"
|
|
145
|
-
}, null, 8, ["name"]))
|
|
146
|
-
], 2),
|
|
147
|
-
v("div", {
|
|
148
|
-
class: r(e.$style.titleWrapper),
|
|
149
|
-
title: ((o = m.value) == null ? void 0 : o.label) ?? ""
|
|
150
|
-
}, [
|
|
151
|
-
v("div", {
|
|
152
|
-
class: r(e.$style.title)
|
|
153
|
-
}, le(x.value ? "Inconsistent value" : ((d = m.value) == null ? void 0 : d.label) ?? l.value.column), 3)
|
|
154
|
-
], 10, pe),
|
|
155
|
-
v("div", {
|
|
156
|
-
class: r(e.$style.closeIcon),
|
|
157
|
-
onClick: t[0] || (t[0] = (u) => y.onDelete(l.value.column))
|
|
158
|
-
}, [
|
|
159
|
-
b(a(B), { name: "close" })
|
|
160
|
-
], 2)
|
|
161
|
-
], 2)) : (n(), I("div", {
|
|
162
|
-
key: 1,
|
|
163
|
-
class: r(e.$style.top)
|
|
164
|
-
}, [
|
|
165
|
-
b(a(N), {
|
|
166
|
-
modelValue: s.value.source,
|
|
167
|
-
"onUpdate:modelValue": [
|
|
168
|
-
t[1] || (t[1] = (u) => s.value.source = u),
|
|
169
|
-
j
|
|
170
|
-
],
|
|
171
|
-
errorStatus: k.value,
|
|
172
|
-
options: X.value,
|
|
173
|
-
style: { width: "100%" },
|
|
174
|
-
"group-position": "top-left"
|
|
175
|
-
}, null, 8, ["modelValue", "errorStatus", "options"]),
|
|
176
|
-
v("div", {
|
|
177
|
-
class: r(e.$style.closeButton),
|
|
178
|
-
onClick: t[2] || (t[2] = (u) => y.onDelete(l.value.column))
|
|
179
|
-
}, [
|
|
180
|
-
b(a(B), { name: "close" })
|
|
181
|
-
], 2)
|
|
182
|
-
], 2)),
|
|
183
|
-
(V = (i = m.value) == null ? void 0 : i.axesToBeFixed) != null && V.length ? (n(), I("div", {
|
|
184
|
-
key: 2,
|
|
185
|
-
class: r(e.$style.fixedAxesBlock)
|
|
186
|
-
}, [
|
|
187
|
-
(n(!0), I(T, null, te((O = m.value) == null ? void 0 : O.axesToBeFixed, (u) => (n(), c(a(D), {
|
|
188
|
-
key: u.idx,
|
|
189
|
-
modelValue: s.value.axisFiltersByIndex[u.idx],
|
|
190
|
-
"onUpdate:modelValue": [(S) => s.value.axisFiltersByIndex[u.idx] = S, (S) => H(u.idx, S)],
|
|
191
|
-
label: u.label,
|
|
192
|
-
"options-search": (S) => $(s.value.source, S, u.idx),
|
|
193
|
-
"model-search": (S) => h(s.value.source, S, u.idx),
|
|
194
|
-
disabled: x.value,
|
|
195
|
-
clearable: !0
|
|
196
|
-
}, null, 8, ["modelValue", "onUpdate:modelValue", "label", "options-search", "model-search", "disabled"]))), 128))
|
|
197
|
-
], 2)) : f("", !0),
|
|
198
|
-
v("div", {
|
|
199
|
-
class: r(l.value.type === "isNA" || l.value.type === "isNotNA" ? e.$style.bottom : e.$style.middle)
|
|
200
|
-
}, [
|
|
201
|
-
b(a(N), {
|
|
202
|
-
modelValue: l.value.type,
|
|
203
|
-
"onUpdate:modelValue": [
|
|
204
|
-
t[3] || (t[3] = (u) => l.value.type = u),
|
|
205
|
-
W
|
|
206
|
-
],
|
|
207
|
-
options: J.value,
|
|
208
|
-
"group-position": l.value.type === "isNA" || l.value.type === "isNotNA" ? "bottom" : "middle"
|
|
209
|
-
}, null, 8, ["modelValue", "options", "group-position"])
|
|
210
|
-
], 2),
|
|
211
|
-
l.value.type === "patternFuzzyContainSubsequence" ? (n(), I(T, { key: 3 }, [
|
|
212
|
-
v("div", {
|
|
213
|
-
class: r(e.$style.middle)
|
|
214
|
-
}, [
|
|
215
|
-
b(a(A), {
|
|
216
|
-
modelValue: l.value.value,
|
|
217
|
-
"onUpdate:modelValue": t[4] || (t[4] = (u) => l.value.value = u),
|
|
218
|
-
placeholder: "Substring",
|
|
219
|
-
"group-position": "middle"
|
|
220
|
-
}, null, 8, ["modelValue"])
|
|
221
|
-
], 2),
|
|
222
|
-
v("div", {
|
|
223
|
-
class: r(e.$style.innerSection)
|
|
224
|
-
}, [
|
|
225
|
-
b(a(ue), {
|
|
226
|
-
modelValue: l.value.maxEdits,
|
|
227
|
-
"onUpdate:modelValue": t[5] || (t[5] = (u) => l.value.maxEdits = u),
|
|
228
|
-
max: 5,
|
|
229
|
-
breakpoints: "",
|
|
230
|
-
label: "Maximum number of substitutions and indels"
|
|
231
|
-
}, null, 8, ["modelValue"]),
|
|
232
|
-
b(a(oe), {
|
|
233
|
-
modelValue: l.value.substitutionsOnly,
|
|
234
|
-
"onUpdate:modelValue": t[6] || (t[6] = (u) => l.value.substitutionsOnly = u),
|
|
235
|
-
label: "Substitutions only"
|
|
236
|
-
}, null, 8, ["modelValue"])
|
|
237
|
-
], 2)
|
|
238
|
-
], 64)) : f("", !0),
|
|
239
|
-
v("div", {
|
|
240
|
-
class: r(e.$style.bottom)
|
|
241
|
-
}, [
|
|
242
|
-
l.value.type === "patternEquals" || l.value.type === "patternNotEquals" ? (n(), c(a(D), {
|
|
243
|
-
key: 0,
|
|
244
|
-
modelValue: l.value.value,
|
|
245
|
-
"onUpdate:modelValue": t[7] || (t[7] = (u) => l.value.value = u),
|
|
246
|
-
"options-search": (u) => $(s.value.source, u),
|
|
247
|
-
"model-search": (u) => h(s.value.source, u),
|
|
248
|
-
disabled: x.value,
|
|
249
|
-
clearable: !0,
|
|
250
|
-
"group-position": "bottom"
|
|
251
|
-
}, null, 8, ["modelValue", "options-search", "model-search", "disabled"])) : f("", !0),
|
|
252
|
-
l.value.type === "inSet" || l.value.type === "notInSet" ? (n(), c(a(ae), {
|
|
253
|
-
key: 1,
|
|
254
|
-
modelValue: l.value.value,
|
|
255
|
-
"onUpdate:modelValue": t[8] || (t[8] = (u) => l.value.value = u),
|
|
256
|
-
"options-search": (u) => $(s.value.source, u),
|
|
257
|
-
"model-search": (u) => w(s.value.source, u),
|
|
258
|
-
disabled: x.value,
|
|
259
|
-
"group-position": "bottom"
|
|
260
|
-
}, null, 8, ["modelValue", "options-search", "model-search", "disabled"])) : f("", !0),
|
|
261
|
-
a(L)(l.value) ? (n(), c(a(ne), {
|
|
262
|
-
key: 2,
|
|
263
|
-
modelValue: l.value.x,
|
|
264
|
-
"onUpdate:modelValue": t[9] || (t[9] = (u) => l.value.x = u),
|
|
265
|
-
"group-position": "bottom"
|
|
266
|
-
}, null, 8, ["modelValue"])) : f("", !0),
|
|
267
|
-
l.value.type === "patternContainSubsequence" || l.value.type === "patternNotContainSubsequence" ? (n(), c(a(A), {
|
|
268
|
-
key: 3,
|
|
269
|
-
modelValue: l.value.value,
|
|
270
|
-
"onUpdate:modelValue": t[10] || (t[10] = (u) => l.value.value = u),
|
|
271
|
-
placeholder: "Substring",
|
|
272
|
-
"group-position": "bottom"
|
|
273
|
-
}, null, 8, ["modelValue"])) : f("", !0),
|
|
274
|
-
l.value.type === "patternMatchesRegularExpression" ? (n(), c(a(A), {
|
|
275
|
-
key: 4,
|
|
276
|
-
modelValue: l.value.value,
|
|
277
|
-
"onUpdate:modelValue": t[11] || (t[11] = (u) => l.value.value = u),
|
|
278
|
-
error: Q.value ? "Regular expression is not valid" : void 0,
|
|
279
|
-
placeholder: "Regular expression",
|
|
280
|
-
"group-position": "bottom"
|
|
281
|
-
}, null, 8, ["modelValue", "error"])) : f("", !0),
|
|
282
|
-
l.value.type === "patternFuzzyContainSubsequence" ? (n(), c(a(N), {
|
|
283
|
-
key: 5,
|
|
284
|
-
modelValue: l.value.wildcard,
|
|
285
|
-
"onUpdate:modelValue": t[12] || (t[12] = (u) => l.value.wildcard = u),
|
|
286
|
-
clearable: "",
|
|
287
|
-
placeholder: "Wildcard value",
|
|
288
|
-
options: K.value,
|
|
289
|
-
"group-position": "bottom"
|
|
290
|
-
}, null, 8, ["modelValue", "options"])) : f("", !0)
|
|
291
|
-
], 2)
|
|
292
|
-
], 2),
|
|
293
|
-
b(ie, {
|
|
294
|
-
class: r(e.$style.buttonWrapper),
|
|
295
|
-
active: y.operand,
|
|
296
|
-
disabled: y.isLast,
|
|
297
|
-
"on-select": y.onChangeOperand
|
|
298
|
-
}, null, 8, ["class", "active", "disabled", "on-select"])
|
|
299
|
-
], 64);
|
|
300
|
-
};
|
|
301
|
-
}
|
|
302
|
-
});
|
|
303
|
-
export {
|
|
304
|
-
fe as default
|
|
305
|
-
};
|
|
306
|
-
//# sourceMappingURL=SingleFilter.vue2.js.map
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"file":"SingleFilter.vue2.js","sources":["../../../src/components/PlAdvancedFilter/SingleFilter.vue"],"sourcesContent":["<script lang=\"ts\" setup>\nimport type { PlAdvancedFilterColumnId, Filter, Operand, SourceOptionInfo } from './types';\nimport { PlIcon16, PlDropdown, PlAutocomplete, PlAutocompleteMulti, PlTextField, PlNumberField, Slider, PlToggleSwitch } from '@milaboratories/uikit';\nimport { computed } from 'vue';\nimport { SUPPORTED_FILTER_TYPES, DEFAULT_FILTER_TYPE, DEFAULT_FILTERS } from './constants';\nimport type { AnchoredPColumnId, AxisFilterByIdx, AxisFilterValue, SUniversalPColumnId } from '@platforma-sdk/model';\nimport { isFilteredPColumn, parseColumnId, stringifyColumnId, type ListOptionBase } from '@platforma-sdk/model';\nimport OperandButton from './OperandButton.vue';\nimport { getFilterInfo, getNormalizedSpec, isNumericFilter, isStringFilter } from './utils';\n\nconst props = defineProps<{\n operand: Operand;\n columnOptions: SourceOptionInfo[];\n enableDnd: boolean;\n isLast: boolean;\n getSuggestOptions: (params: { columnId: PlAdvancedFilterColumnId; searchStr: string; axisIdx?: number }) => (Promise<ListOptionBase<string | number>[]>) |\n ((params: { columnId: SUniversalPColumnId; searchStr: string; axisIdx?: number }) => ListOptionBase<string | number>[]);\n getSuggestModel: (params: { columnId: PlAdvancedFilterColumnId; searchStr: string; axisIdx?: number }) => (Promise<ListOptionBase<string | number>>) |\n ((params: { columnId: PlAdvancedFilterColumnId; searchStr: string; axisIdx?: number }) => ListOptionBase<string | number>);\n onDelete: (columnId: PlAdvancedFilterColumnId) => void;\n onChangeOperand: (op: Operand) => void;\n}>();\n\nconst filter = defineModel<Filter>({ required: true });\n\nasync function getSuggestModelMultiFn(id: PlAdvancedFilterColumnId, v: string[], axisIdx?: number): Promise<ListOptionBase<string>[]> {\n return Promise.all(v.map((v) => props.getSuggestModel({ columnId: id, searchStr: v, axisIdx }) as Promise<ListOptionBase<string>>));\n}\nasync function getSuggestModelSingleFn(id: PlAdvancedFilterColumnId, v: string, axisIdx?: number): Promise<ListOptionBase<string>> {\n return props.getSuggestModel({ columnId: id, searchStr: v, axisIdx }) as Promise<ListOptionBase<string>>;\n}\nasync function getSuggestOptionsFn(id: PlAdvancedFilterColumnId, str: string, axisIdx?: number): Promise<ListOptionBase<string>[]> {\n return props.getSuggestOptions({ columnId: id, searchStr: str, axisIdx }) as Promise<ListOptionBase<string>[]>;\n}\n\nfunction changeFilterType() {\n const nextFilterInfo = getFilterInfo(filter.value.type);\n if (currentSpec.value && nextFilterInfo.supportedFor(currentSpec.value) && isNumericFilter(filter.value)) {\n // no extra changes, previous filter is compatible with new filter type\n return;\n } else if (currentSpec.value && nextFilterInfo.supportedFor(currentSpec.value) && isStringFilter(filter.value)) {\n // erase extra settings for string filter types, save only value and column (for example regex)\n filter.value = {\n ...DEFAULT_FILTERS[filter.value.type],\n value: filter.value.value,\n column: filter.value.column,\n } as Filter;\n } else {\n filter.value = {\n ...DEFAULT_FILTERS[filter.value.type],\n column: filter.value.column,\n };\n }\n}\n\nfunction changeSourceId(newSourceId?: PlAdvancedFilterColumnId) {\n if (!newSourceId) {\n return;\n }\n const newSourceInfo = props.columnOptions.find((v) => v.id === getSourceId(newSourceId));\n if (!newSourceInfo) {\n return;\n }\n const filterInfo = getFilterInfo(filter.value.type);\n const newSourceSpec = getNormalizedSpec(newSourceInfo?.spec);\n if (filterInfo.supportedFor(newSourceSpec)) { // don't do anything except update source id\n filter.value.column = newSourceId;\n } else { // reset to default filter which fits to any column\n filter.value = {\n ...DEFAULT_FILTERS[DEFAULT_FILTER_TYPE],\n column: newSourceId,\n };\n }\n}\n\nconst inconsistentSourceSelected = computed(() => {\n const selectedOption = props.columnOptions.find((op) => op.id === getSourceId(filter.value.column));\n return selectedOption === undefined;\n});\nconst sourceOptions = computed(() => {\n const options = props.columnOptions.map((v) => ({ value: v.id, label: v.label ?? v }));\n if (inconsistentSourceSelected.value) {\n options.unshift({ value: filter.value.column, label: 'Inconsistent value' });\n }\n return options;\n});\n\nfunction getSourceId(column: PlAdvancedFilterColumnId): PlAdvancedFilterColumnId {\n try {\n const parsedColumnId = parseColumnId(column as SUniversalPColumnId);\n if (isFilteredPColumn(parsedColumnId)) {\n return stringifyColumnId(parsedColumnId.source);\n } else {\n return column;\n }\n } catch {\n return column;\n }\n}\n\n// similar to FilteredPColumnId but source is stringified and axis filters can be undefined\ntype ColumnAsSourceAndFixedAxes = { source: PlAdvancedFilterColumnId; axisFiltersByIndex: Record<number, AxisFilterValue | undefined> };\nfunction getColumnAsSourceAndFixedAxes(column: PlAdvancedFilterColumnId): ColumnAsSourceAndFixedAxes {\n const sourceId = getSourceId(column);\n const option = props.columnOptions.find((op) => op.id === sourceId);\n const axesToBeFixed = (option?.axesToBeFixed ?? []).reduce((res, item) => {\n res[item.idx] = undefined;\n return res;\n }, {} as Record<number, AxisFilterValue | undefined>);\n try {\n const parsedColumnId = parseColumnId(column as SUniversalPColumnId);\n if (isFilteredPColumn(parsedColumnId)) {\n return {\n source: sourceId,\n axisFiltersByIndex: parsedColumnId.axisFilters.reduce((res, item) => {\n res[item[0]] = item[1];\n return res;\n }, axesToBeFixed),\n };\n }\n } catch {\n return { source: column, axisFiltersByIndex: axesToBeFixed };\n }\n return { source: column, axisFiltersByIndex: axesToBeFixed };\n}\n\nfunction stringifyColumn(value: ColumnAsSourceAndFixedAxes): PlAdvancedFilterColumnId {\n if (Object.keys(value.axisFiltersByIndex).length === 0) {\n return value.source;\n }\n return stringifyColumnId({\n source: parseColumnId(value.source as SUniversalPColumnId) as AnchoredPColumnId,\n axisFilters: Object.entries(value.axisFiltersByIndex).map(([idx, value]) => [Number(idx), value] as AxisFilterByIdx),\n });\n}\n\nconst columnAsSourceAndFixedAxes = computed({\n get: () => {\n return getColumnAsSourceAndFixedAxes(filter.value.column);\n },\n set: (value) => {\n filter.value.column = stringifyColumn(value);\n },\n});\nfunction updateAxisFilterValue(idx: number, value: AxisFilterValue | undefined) {\n columnAsSourceAndFixedAxes.value = {\n ...columnAsSourceAndFixedAxes.value,\n axisFiltersByIndex: { ...columnAsSourceAndFixedAxes.value.axisFiltersByIndex, [idx]: value } };\n}\n\nconst currentOption = computed(() => props.columnOptions.find((op) => op.id === columnAsSourceAndFixedAxes.value.source));\nconst currentSpec = computed(() => currentOption.value?.spec ? getNormalizedSpec(currentOption.value.spec) : null);\nconst currentType = computed(() => currentSpec.value?.valueType);\nconst currentError = computed(() => currentOption.value?.error || inconsistentSourceSelected.value);\n\nconst filterTypesOptions = computed(() => [...SUPPORTED_FILTER_TYPES].filter((v) =>\n filter.value.type === v || (currentSpec.value ? getFilterInfo(v).supportedFor(currentSpec.value) : true),\n).map((v) => ({ value: v, label: getFilterInfo(v).label })),\n);\n\nconst wildcardOptions = computed(() => {\n if (filter.value.type === 'patternFuzzyContainSubsequence') {\n if (currentOption.value?.alphabet === 'nucleotide') {\n return [{ label: 'N', value: 'N' }];\n }\n if (currentOption.value?.alphabet === 'aminoacid') {\n return [{ label: 'X', value: 'X' }];\n }\n return [...new Set(filter.value.value.split(''))].sort().map((v) => ({ value: v, label: v }));\n }\n return [];\n});\n\nconst stringMatchesError = computed(() => {\n if (filter.value.type !== 'patternMatchesRegularExpression') {\n return false;\n }\n try {\n new RegExp(filter.value.value);\n return false;\n } catch {\n return true;\n }\n});\n\n</script>\n<template>\n <div :class=\"$style.filterWrapper\">\n <!-- top element - column selector / column label - for all filter types-->\n <div v-if=\"enableDnd\" :class=\"[$style.top, $style.columnChip, {[$style.error]: currentError}]\">\n <div :class=\"[$style.typeIcon, {[$style.error]: currentError}]\">\n <PlIcon16 v-if=\"currentError\" name=\"warning\"/>\n <PlIcon16 v-else :name=\"currentType === 'String' || currentType === undefined ? 'cell-type-txt' : 'cell-type-num'\"/>\n </div>\n <div :class=\"$style.titleWrapper\" :title=\"currentOption?.label ?? ''\">\n <div :class=\"$style.title\">\n {{ inconsistentSourceSelected ? 'Inconsistent value' : currentOption?.label ?? filter.column }}\n </div>\n </div>\n <div :class=\"$style.closeIcon\" @click=\"onDelete(filter.column)\">\n <PlIcon16 name=\"close\"/>\n </div>\n </div>\n <div v-else :class=\"$style.top\" >\n <PlDropdown\n v-model=\"columnAsSourceAndFixedAxes.source\"\n :errorStatus=\"currentError\"\n :options=\"sourceOptions\"\n :style=\"{width: '100%'}\"\n group-position=\"top-left\"\n @update:model-value=\"changeSourceId\"\n />\n <div :class=\"$style.closeButton\" @click=\"onDelete(filter.column)\">\n <PlIcon16 name=\"close\"/>\n </div>\n </div>\n\n <div v-if=\"currentOption?.axesToBeFixed?.length\" :class=\"$style.fixedAxesBlock\">\n <template v-for=\"value in currentOption?.axesToBeFixed\" :key=\"value.idx\">\n <PlAutocomplete\n v-model=\"columnAsSourceAndFixedAxes.axisFiltersByIndex[value.idx]\"\n :label=\"value.label\"\n :options-search=\"(str) => getSuggestOptionsFn(columnAsSourceAndFixedAxes.source, str, value.idx)\"\n :model-search=\"(v) => getSuggestModelSingleFn(columnAsSourceAndFixedAxes.source, v as string, value.idx)\"\n :disabled=\"inconsistentSourceSelected\"\n :clearable=\"true\"\n @update:model-value=\"(v) => updateAxisFilterValue(value.idx, v)\"\n />\n </template>\n </div>\n\n <!-- middle - filter type selector - for all filter types -->\n <div :class=\"filter.type === 'isNA' || filter.type === 'isNotNA' ? $style.bottom : $style.middle\">\n <PlDropdown\n v-model=\"filter.type\"\n :options=\"filterTypesOptions\"\n :group-position=\"filter.type === 'isNA' || filter.type === 'isNotNA' ? 'bottom' : 'middle'\"\n @update:model-value=\"changeFilterType\"\n />\n </div>\n\n <!-- middle - for fuzzy contains filter -->\n <template v-if=\"filter.type === 'patternFuzzyContainSubsequence'\">\n <div :class=\"$style.middle\">\n <PlTextField\n v-model=\"filter.value\"\n placeholder=\"Substring\"\n group-position=\"middle\"\n />\n </div>\n <div :class=\"$style.innerSection\">\n <Slider\n v-model=\"filter.maxEdits\"\n :max=\"5\"\n breakpoints label=\"Maximum number of substitutions and indels\"\n />\n <PlToggleSwitch\n v-model=\"filter.substitutionsOnly\"\n label=\"Substitutions only\"\n />\n </div>\n </template>\n\n <!-- bottom element - individual settings for every filter type -->\n <div :class=\"$style.bottom\">\n <template v-if=\"filter.type === 'patternEquals' || filter.type === 'patternNotEquals'\" >\n <PlAutocomplete\n v-model=\"filter.value\"\n :options-search=\"(str) => getSuggestOptionsFn(columnAsSourceAndFixedAxes.source, str)\"\n :model-search=\"(v) => getSuggestModelSingleFn(columnAsSourceAndFixedAxes.source, v as string)\"\n :disabled=\"inconsistentSourceSelected\"\n :clearable=\"true\"\n group-position=\"bottom\"\n />\n </template>\n <template v-if=\"filter.type === 'inSet' || filter.type === 'notInSet'\" >\n <PlAutocompleteMulti\n v-model=\"filter.value\"\n :options-search=\"(str) => getSuggestOptionsFn(columnAsSourceAndFixedAxes.source, str)\"\n :model-search=\"(v) => getSuggestModelMultiFn(columnAsSourceAndFixedAxes.source, v as string[])\"\n :disabled=\"inconsistentSourceSelected\"\n group-position=\"bottom\"\n />\n </template>\n <PlNumberField\n v-if=\"isNumericFilter(filter)\"\n v-model=\"filter.x\"\n group-position=\"bottom\"\n />\n <PlTextField\n v-if=\"filter.type === 'patternContainSubsequence' || filter.type === 'patternNotContainSubsequence'\"\n v-model=\"filter.value\"\n placeholder=\"Substring\"\n group-position=\"bottom\"\n />\n <PlTextField\n v-if=\"filter.type === 'patternMatchesRegularExpression'\"\n v-model=\"filter.value\"\n :error=\"stringMatchesError ? 'Regular expression is not valid' : undefined\"\n placeholder=\"Regular expression\"\n group-position=\"bottom\"\n />\n <PlDropdown\n v-if=\"filter.type === 'patternFuzzyContainSubsequence'\"\n v-model=\"filter.wildcard\"\n clearable\n placeholder=\"Wildcard value\"\n :options=\"wildcardOptions\"\n group-position=\"bottom\"\n />\n </div>\n </div>\n <OperandButton\n :class=\"$style.buttonWrapper\"\n :active=\"operand\"\n :disabled=\"isLast\"\n :on-select=\"onChangeOperand\"\n />\n</template>\n\n<style module>\n.filterWrapper {\n position: relative;\n display: flex;\n flex-direction: column;\n margin-bottom: 8px;\n width: 100%;\n cursor: default;\n}\n\n.typeIcon {\n display: inline-flex;\n margin-right: 8px;\n}\n\n.typeIcon.error {\n --icon-color: var(--txt-error);\n}\n\n.closeIcon {\n display: inline-flex;\n margin-left: 12px;\n cursor: pointer;\n}\n\n.titleWrapper {\n flex-grow: 1;\n overflow: hidden;\n}\n.title {\n overflow: hidden;\n color: var(--txt-01);\n text-overflow: ellipsis;\n white-space: nowrap;\n font-size: 14px;\n font-weight: 500;\n line-height: 20px;\n}\n\n.columnChip {\n width: 100%;\n display: flex;\n padding: 10px 12px;\n align-items: center;\n border-radius: 6px;\n border: 1px solid var(--txt-01);\n border-bottom-right-radius: 0;\n border-bottom-left-radius: 0;\n\n &.error {\n border-color: var(--txt-error);\n }\n}\n\n.innerSection {\n border: 1px solid var(--txt-01);\n border-top: none;\n padding: 16px 12px;\n}\n\n.closeButton {\n border: 1px solid var(--txt-01);\n border-top-right-radius: 6px;\n border-left: none;\n width: 40px;\n height: 40px;\n display: flex;\n justify-content: center;\n align-items: center;\n flex-shrink: 0;\n cursor: pointer;\n}\n\n.top {\n position: relative;\n display: flex;\n width: 100%;\n z-index: 1;\n background: #fff;\n}\n\n.fixedAxesBlock {\n position: relative;\n display: flex;\n flex-direction: column;\n padding: 12px 8px;\n gap: 12px;\n border-left: 1px solid var(--txt-01);\n border-right: 1px solid var(--txt-01);\n}\n\n.fixedAxesBlock > * {\n background: #fff;\n}\n\n.middle, .bottom {\n position: relative;\n margin-top: -1px;\n background: #fff;\n}\n\n.buttonWrapper {\n margin-bottom: 8px;\n}\n</style>\n"],"names":["props","__props","filter","_useModel","getSuggestModelMultiFn","id","v","axisIdx","getSuggestModelSingleFn","getSuggestOptionsFn","str","changeFilterType","nextFilterInfo","getFilterInfo","currentSpec","isNumericFilter","isStringFilter","DEFAULT_FILTERS","changeSourceId","newSourceId","newSourceInfo","getSourceId","filterInfo","newSourceSpec","getNormalizedSpec","DEFAULT_FILTER_TYPE","inconsistentSourceSelected","computed","op","sourceOptions","options","column","parsedColumnId","parseColumnId","isFilteredPColumn","stringifyColumnId","getColumnAsSourceAndFixedAxes","sourceId","option","axesToBeFixed","res","item","stringifyColumn","value","idx","columnAsSourceAndFixedAxes","updateAxisFilterValue","currentOption","_a","currentType","currentError","filterTypesOptions","SUPPORTED_FILTER_TYPES","wildcardOptions","_b","stringMatchesError","_createElementVNode","_normalizeClass","$style","_createElementBlock","_createBlock","_unref","PlIcon16","_toDisplayString","_cache","$event","_createVNode","PlDropdown","_d","_c","_openBlock","_Fragment","_renderList","_e","PlAutocomplete","PlTextField","Slider","PlToggleSwitch","PlAutocompleteMulti","PlNumberField","OperandButton"],"mappings":"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"}
|
|
@@ -1,35 +0,0 @@
|
|
|
1
|
-
(function(){"use strict";try{if(typeof document<"u"){var o=document.createElement("style");o.appendChild(document.createTextNode("._filterWrapper_mviuo_2{position:relative;display:flex;flex-direction:column;margin-bottom:8px;width:100%;cursor:default}._typeIcon_mviuo_11{display:inline-flex;margin-right:8px}._typeIcon_mviuo_11._error_mviuo_16{--icon-color: var(--txt-error)}._closeIcon_mviuo_20{display:inline-flex;margin-left:12px;cursor:pointer}._titleWrapper_mviuo_26{flex-grow:1;overflow:hidden}._title_mviuo_26{overflow:hidden;color:var(--txt-01);text-overflow:ellipsis;white-space:nowrap;font-size:14px;font-weight:500;line-height:20px}._columnChip_mviuo_40{width:100%;display:flex;padding:10px 12px;align-items:center;border:1px solid var(--txt-01);border-radius:6px 6px 0 0}._columnChip_mviuo_40._error_mviuo_16{border-color:var(--txt-error)}._innerSection_mviuo_55{border:1px solid var(--txt-01);border-top:none;padding:16px 12px}._closeButton_mviuo_61{border:1px solid var(--txt-01);border-top-right-radius:6px;border-left:none;width:40px;height:40px;display:flex;justify-content:center;align-items:center;flex-shrink:0;cursor:pointer}._top_mviuo_74{position:relative;display:flex;width:100%;z-index:1;background:#fff}._fixedAxesBlock_mviuo_82{position:relative;display:flex;flex-direction:column;padding:12px 8px;gap:12px;border-left:1px solid var(--txt-01);border-right:1px solid var(--txt-01)}._fixedAxesBlock_mviuo_82>*{background:#fff}._middle_mviuo_96,._bottom_mviuo_96{position:relative;margin-top:-1px;background:#fff}._buttonWrapper_mviuo_102{margin-bottom:8px}")),document.head.appendChild(o)}}catch(e){console.error("vite-plugin-css-injected-by-js",e)}})();
|
|
2
|
-
const o = "_filterWrapper_mviuo_2", t = "_typeIcon_mviuo_11", e = "_error_mviuo_16", _ = "_closeIcon_mviuo_20", n = "_titleWrapper_mviuo_26", i = "_title_mviuo_26", c = "_columnChip_mviuo_40", r = "_innerSection_mviuo_55", p = "_closeButton_mviuo_61", l = "_top_mviuo_74", s = "_fixedAxesBlock_mviuo_82", u = "_middle_mviuo_96", m = "_bottom_mviuo_96", v = "_buttonWrapper_mviuo_102", a = {
|
|
3
|
-
filterWrapper: o,
|
|
4
|
-
typeIcon: t,
|
|
5
|
-
error: e,
|
|
6
|
-
closeIcon: _,
|
|
7
|
-
titleWrapper: n,
|
|
8
|
-
title: i,
|
|
9
|
-
columnChip: c,
|
|
10
|
-
innerSection: r,
|
|
11
|
-
closeButton: p,
|
|
12
|
-
top: l,
|
|
13
|
-
fixedAxesBlock: s,
|
|
14
|
-
middle: u,
|
|
15
|
-
bottom: m,
|
|
16
|
-
buttonWrapper: v
|
|
17
|
-
};
|
|
18
|
-
export {
|
|
19
|
-
m as bottom,
|
|
20
|
-
v as buttonWrapper,
|
|
21
|
-
p as closeButton,
|
|
22
|
-
_ as closeIcon,
|
|
23
|
-
c as columnChip,
|
|
24
|
-
a as default,
|
|
25
|
-
e as error,
|
|
26
|
-
o as filterWrapper,
|
|
27
|
-
s as fixedAxesBlock,
|
|
28
|
-
r as innerSection,
|
|
29
|
-
u as middle,
|
|
30
|
-
i as title,
|
|
31
|
-
n as titleWrapper,
|
|
32
|
-
l as top,
|
|
33
|
-
t as typeIcon
|
|
34
|
-
};
|
|
35
|
-
//# sourceMappingURL=SingleFilter.vue3.js.map
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"file":"SingleFilter.vue3.js","sources":[],"sourcesContent":[],"names":[],"mappings":";;;;;;;;;;;;;;;;"}
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"file":"types.js","sources":["../../../src/components/PlAdvancedFilter/types.ts"],"sourcesContent":["import type { AxisSpec, FilterSpec, FilterSpecLeaf, FilterSpecType, ListOptionBase, PColumnSpec, SUniversalPColumnId } from '@platforma-sdk/model';\nimport { SUPPORTED_FILTER_TYPES } from './constants';\nimport type { CanonicalizedJson } from '@platforma-sdk/model';\nimport type { AxisId } from '@platforma-sdk/model';\n\nexport type PlAdvancedFilterColumnId = SUniversalPColumnId | CanonicalizedJson<AxisId>;\nexport type CommonFilterSpec = FilterSpec<FilterSpecLeaf<PlAdvancedFilterColumnId>, { expanded?: boolean }>;\n\n// Not supported: topN, bottomN, lessThanColumn, lessThanColumnOrEqual\n// or, and, not - in groups\nexport type SupportedFilterTypes = FilterSpecType &\n 'isNA' | 'isNotNA' |\n 'patternEquals' | 'patternNotEquals' |\n 'patternContainSubsequence' | 'patternNotContainSubsequence' |\n 'patternMatchesRegularExpression' |\n 'patternFuzzyContainSubsequence' |\n 'inSet' | 'notInSet' |\n 'equal' | 'notEqual' |\n 'lessThan' | 'lessThanOrEqual' |\n 'greaterThan' | 'greaterThanOrEqual';\n\nexport type FilterType = SupportedFilterTypes;\n\nexport function isSupportedFilterType(type: FilterSpecType | undefined): type is SupportedFilterTypes {\n if (!type) {\n return false;\n }\n return SUPPORTED_FILTER_TYPES.has(type as SupportedFilterTypes);\n}\n\nexport type Operand = 'or' | 'and';\n\ntype FilterUiBase = FilterSpecLeaf<PlAdvancedFilterColumnId> & {\n type: SupportedFilterTypes;\n column: PlAdvancedFilterColumnId;\n};\n\ntype RequireFields<T, K extends keyof T> = Omit<T, K> & Required<Pick<T, K>>;\ntype OptionalFields<T, K extends keyof T> = Omit<T, K> & Partial<Pick<T, K>>;\n\ntype NumericalWithOptionalX = 'lessThan' | 'lessThanOrEqual' | 'greaterThan' | 'greaterThanOrEqual' | 'equal' | 'notEqual';\ntype StringWithOptionalValue = 'patternEquals' | 'patternNotEquals';\ntype EditedTypes = SupportedFilterTypes & ('patternFuzzyContainSubsequence' | NumericalWithOptionalX | StringWithOptionalValue); // types from ui with some changed by optionality fields\nexport type Filter = Exclude<FilterUiBase, { type: EditedTypes }> |\n RequireFields<Extract<FilterUiBase, { type: 'patternFuzzyContainSubsequence' }>, 'maxEdits' | 'substitutionsOnly'> |\n OptionalFields<Extract<FilterUiBase, { type: NumericalWithOptionalX }>, 'x'> |\n OptionalFields<Extract<FilterUiBase, { type: StringWithOptionalValue }>, 'value'>\n;\n\nexport type Group = {\n id: string;\n not: boolean;\n filters: Filter[];\n operand: Operand;\n expanded: boolean;\n};\n\nexport type PlAdvancedFilterUI = {\n groups: Group[];\n operand: Operand;\n};\n\nexport type UniqueValuesList = ListOptionBase<string | number>[];\nexport type OptionInfo = { error: boolean; label: string; spec: PColumnSpec | AxisSpec };\nexport type FixedAxisInfo = {\n idx: number;\n label: string;\n};\n\nexport type SourceOptionInfo = {\n id: PlAdvancedFilterColumnId;\n label: string;\n error: boolean;\n spec: PColumnSpec | AxisSpec;\n axesToBeFixed?: FixedAxisInfo[];\n alphabet?: 'nucleotide' | 'aminoacid' | string;\n};\n"],"names":["isSupportedFilterType","type","SUPPORTED_FILTER_TYPES"],"mappings":";AAuBO,SAASA,EAAsBC,GAAgE;AACpG,SAAKA,IAGEC,EAAuB,IAAID,CAA4B,IAFrD;AAGX;"}
|
|
@@ -1,24 +0,0 @@
|
|
|
1
|
-
import { FilterSpecTypeFieldRecord } from '@milaboratories/uikit';
|
|
2
|
-
import { FilterSpecLeaf, SimplifiedUniversalPColumnEntry } from '@platforma-sdk/model';
|
|
3
|
-
declare const _default: <T extends FilterSpecLeaf = FilterSpecLeaf>(__VLS_props: NonNullable<Awaited<typeof __VLS_setup>>["props"], __VLS_ctx?: __VLS_PrettifyLocal<Pick<NonNullable<Awaited<typeof __VLS_setup>>, "attrs" | "emit" | "slots">>, __VLS_expose?: NonNullable<Awaited<typeof __VLS_setup>>["expose"], __VLS_setup?: Promise<{
|
|
4
|
-
props: __VLS_PrettifyLocal<Pick<Partial<{}> & Omit<{
|
|
5
|
-
readonly "onUpdate:modelValue"?: ((value: T) => any) | undefined;
|
|
6
|
-
} & import('vue').VNodeProps & import('vue').AllowedComponentProps & import('vue').ComponentCustomProps, never>, "onUpdate:modelValue"> & ({
|
|
7
|
-
modelValue?: T;
|
|
8
|
-
} & {
|
|
9
|
-
columns: SimplifiedUniversalPColumnEntry[];
|
|
10
|
-
formMetadata: FilterSpecTypeFieldRecord<T>;
|
|
11
|
-
}) & Partial<{}>> & import('vue').PublicProps;
|
|
12
|
-
expose(exposed: import('vue').ShallowUnwrapRef<{}>): void;
|
|
13
|
-
attrs: any;
|
|
14
|
-
slots: {};
|
|
15
|
-
emit: (evt: "update:modelValue", value: T) => void;
|
|
16
|
-
}>) => import('vue').VNode<import('vue').RendererNode, import('vue').RendererElement, {
|
|
17
|
-
[key: string]: any;
|
|
18
|
-
}> & {
|
|
19
|
-
__ctx?: Awaited<typeof __VLS_setup>;
|
|
20
|
-
};
|
|
21
|
-
export default _default;
|
|
22
|
-
type __VLS_PrettifyLocal<T> = {
|
|
23
|
-
[K in keyof T]: T[K];
|
|
24
|
-
} & {};
|
|
@@ -1,10 +0,0 @@
|
|
|
1
|
-
import o from "./DynamicForm.vue2.js";
|
|
2
|
-
import s from "./DynamicForm.vue3.js";
|
|
3
|
-
import t from "../../../_virtual/_plugin-vue_export-helper.js";
|
|
4
|
-
const m = {
|
|
5
|
-
$style: s
|
|
6
|
-
}, f = /* @__PURE__ */ t(o, [["__cssModules", m]]);
|
|
7
|
-
export {
|
|
8
|
-
f as default
|
|
9
|
-
};
|
|
10
|
-
//# sourceMappingURL=DynamicForm.vue.js.map
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"file":"DynamicForm.vue.js","sources":[],"sourcesContent":[],"names":[],"mappings":";;;;;;"}
|
|
@@ -1,109 +0,0 @@
|
|
|
1
|
-
import { defineComponent as D, mergeModels as O, useModel as h, computed as c, watch as x, resolveComponent as P, createElementBlock as v, createCommentVNode as V, openBlock as u, normalizeClass as B, Fragment as y, renderList as S, createBlock as p, unref as d, withCtx as _, createTextVNode as j, toDisplayString as U } from "vue";
|
|
2
|
-
import { isNil as w } from "../../../lib/util/helpers/dist/utils.js";
|
|
3
|
-
import { getFilterUiMetadata as R, getFilterUiTypeOptions as z, PlDropdown as T, PlTextField as E, PlNumberField as k, PlCheckbox as I } from "@milaboratories/uikit";
|
|
4
|
-
const L = { key: 7 }, G = /* @__PURE__ */ D({
|
|
5
|
-
__name: "DynamicForm",
|
|
6
|
-
props: /* @__PURE__ */ O({
|
|
7
|
-
columns: {},
|
|
8
|
-
formMetadata: {}
|
|
9
|
-
}, {
|
|
10
|
-
modelValue: { default: () => ({}) },
|
|
11
|
-
modelModifiers: {}
|
|
12
|
-
}),
|
|
13
|
-
emits: ["update:modelValue"],
|
|
14
|
-
setup(i) {
|
|
15
|
-
const t = h(i, "modelValue"), s = i, b = c(() => {
|
|
16
|
-
var n;
|
|
17
|
-
const l = t.value;
|
|
18
|
-
if ("column" in l)
|
|
19
|
-
return (n = s.columns.find((r) => r.id === l.column)) == null ? void 0 : n.obj;
|
|
20
|
-
}), F = c(() => {
|
|
21
|
-
const l = t.value;
|
|
22
|
-
if (l.type && typeof l.type == "string")
|
|
23
|
-
return R(l.type);
|
|
24
|
-
}), M = c(() => z(b.value)), f = c(() => s.columns.map((l) => ({ label: l.label, value: l.id }))), C = c(() => {
|
|
25
|
-
const l = F.value, n = b.value;
|
|
26
|
-
return l && n ? s.columns.filter((r) => l.supportedFor(n, r.obj)).map((r) => ({
|
|
27
|
-
label: r.label,
|
|
28
|
-
value: r.id
|
|
29
|
-
})) : [];
|
|
30
|
-
}), m = (l, n) => {
|
|
31
|
-
t.value[l] = n;
|
|
32
|
-
};
|
|
33
|
-
x(
|
|
34
|
-
() => s.formMetadata,
|
|
35
|
-
(l) => {
|
|
36
|
-
for (const [n, r] of Object.entries(l))
|
|
37
|
-
if (t.value[n] === void 0) {
|
|
38
|
-
const o = r.defaultValue();
|
|
39
|
-
w(o) || (t.value[n] = o);
|
|
40
|
-
}
|
|
41
|
-
},
|
|
42
|
-
{ immediate: !0, deep: !0 }
|
|
43
|
-
);
|
|
44
|
-
function g(l) {
|
|
45
|
-
return l === "FilterType" || l === "FilterUiType";
|
|
46
|
-
}
|
|
47
|
-
return (l, n) => {
|
|
48
|
-
const r = P("DynamicForm", !0);
|
|
49
|
-
return i.formMetadata ? (u(), v("div", {
|
|
50
|
-
key: 0,
|
|
51
|
-
class: B(l.$style.form)
|
|
52
|
-
}, [
|
|
53
|
-
(u(!0), v(y, null, S(i.formMetadata, (o, e) => (u(), v(y, { key: e }, [
|
|
54
|
-
o.fieldType === "form" ? (u(), v(y, { key: 0 }, [
|
|
55
|
-
"form" in o ? (u(), p(r, {
|
|
56
|
-
key: 0,
|
|
57
|
-
"model-value": t.value[e],
|
|
58
|
-
"form-metadata": o.form,
|
|
59
|
-
columns: s.columns,
|
|
60
|
-
"onUpdate:modelValue": (a) => m(e, a)
|
|
61
|
-
}, null, 8, ["model-value", "form-metadata", "columns", "onUpdate:modelValue"])) : V("", !0)
|
|
62
|
-
], 64)) : g(o.fieldType) ? (u(), p(d(T), {
|
|
63
|
-
key: 1,
|
|
64
|
-
"model-value": t.value[e],
|
|
65
|
-
label: o.label ?? e,
|
|
66
|
-
options: M.value,
|
|
67
|
-
"onUpdate:modelValue": (a) => m(e, a)
|
|
68
|
-
}, null, 8, ["model-value", "label", "options", "onUpdate:modelValue"])) : o.fieldType === "string" ? (u(), p(d(E), {
|
|
69
|
-
key: 2,
|
|
70
|
-
"model-value": t.value[e],
|
|
71
|
-
label: o.label ?? e,
|
|
72
|
-
"onUpdate:modelValue": (a) => m(e, a)
|
|
73
|
-
}, null, 8, ["model-value", "label", "onUpdate:modelValue"])) : o.fieldType === "SUniversalPColumnId" ? (u(), p(d(T), {
|
|
74
|
-
key: 3,
|
|
75
|
-
"model-value": t.value[e],
|
|
76
|
-
label: o.label ?? e,
|
|
77
|
-
options: e === "column" ? f.value : C.value,
|
|
78
|
-
"onUpdate:modelValue": (a) => m(e, a)
|
|
79
|
-
}, null, 8, ["model-value", "label", "options", "onUpdate:modelValue"])) : o.fieldType === "number" ? (u(), p(d(k), {
|
|
80
|
-
key: 4,
|
|
81
|
-
"model-value": t.value[e],
|
|
82
|
-
label: o.label ?? e,
|
|
83
|
-
"onUpdate:modelValue": (a) => m(e, a)
|
|
84
|
-
}, null, 8, ["model-value", "label", "onUpdate:modelValue"])) : o.fieldType === "number?" ? (u(), p(d(k), {
|
|
85
|
-
key: 5,
|
|
86
|
-
"model-value": t.value[e],
|
|
87
|
-
label: o.label ?? e,
|
|
88
|
-
clearable: !0,
|
|
89
|
-
"onUpdate:modelValue": (a) => m(e, a)
|
|
90
|
-
}, null, 8, ["model-value", "label", "onUpdate:modelValue"])) : o.fieldType === "boolean" || o.fieldType === "boolean?" ? (u(), p(d(I), {
|
|
91
|
-
key: 6,
|
|
92
|
-
"model-value": !!t.value[e],
|
|
93
|
-
label: o.label ?? e,
|
|
94
|
-
"onUpdate:modelValue": (a) => m(e, a)
|
|
95
|
-
}, {
|
|
96
|
-
default: _(() => [
|
|
97
|
-
j(U(o.label ?? e), 1)
|
|
98
|
-
]),
|
|
99
|
-
_: 2
|
|
100
|
-
}, 1032, ["model-value", "label", "onUpdate:modelValue"])) : (u(), v("pre", L, "TODO:" + U(o.fieldType), 1))
|
|
101
|
-
], 64))), 128))
|
|
102
|
-
], 2)) : V("", !0);
|
|
103
|
-
};
|
|
104
|
-
}
|
|
105
|
-
});
|
|
106
|
-
export {
|
|
107
|
-
G as default
|
|
108
|
-
};
|
|
109
|
-
//# sourceMappingURL=DynamicForm.vue2.js.map
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"file":"DynamicForm.vue2.js","sources":["../../../../src/components/PlAnnotations/components/DynamicForm.vue"],"sourcesContent":["<script setup lang=\"ts\" generic=\"T extends FilterSpecLeaf = FilterSpecLeaf\">\nimport { computed, watch } from 'vue';\n\nimport { isNil } from '@milaboratories/helpers';\nimport type { FilterSpecTypeFieldRecord } from '@milaboratories/uikit';\nimport { getFilterUiMetadata, getFilterUiTypeOptions, PlCheckbox, PlDropdown, PlNumberField, PlTextField } from '@milaboratories/uikit';\nimport type { FilterSpecLeaf, SimplifiedUniversalPColumnEntry, SUniversalPColumnId } from '@platforma-sdk/model';\n\nimport type { FilterSpecType } from '../types';\n\ntype ObjectEntries<T, K extends keyof T = keyof T> = [K, T[K]][];\n\nconst formData = defineModel<T>({ default: () => ({}) });\n\nconst props = defineProps<{\n columns: SimplifiedUniversalPColumnEntry[];\n formMetadata: FilterSpecTypeFieldRecord<T>;\n}>();\n\nconst columnSpecRef = computed(() => {\n const value = formData.value;\n if ('column' in value) {\n return props.columns.find((c) => c.id === value.column)?.obj;\n }\n return undefined;\n});\n\nconst typeMetadataRef = computed(() => {\n const value = formData.value;\n if (value.type && typeof value.type === 'string') {\n return getFilterUiMetadata(value.type);\n }\n return undefined;\n});\n\nconst filterUiTypeOptions = computed(() => {\n return getFilterUiTypeOptions(columnSpecRef.value);\n});\n\nconst firstColumnsOptions = computed(() => props.columns.map((c) => ({ label: c.label, value: c.id })));\nconst secondColumnOptions = computed(() => {\n const typeMetadata = typeMetadataRef.value;\n const columnSpec = columnSpecRef.value;\n if (typeMetadata && columnSpec) {\n return props.columns.filter((c) => typeMetadata.supportedFor(columnSpec, c.obj)).map((c) => ({\n label: c.label,\n value: c.id,\n }));\n }\n return [];\n});\n\nconst setFieldValue = <K extends keyof T>(fieldName: K, value: T[K]) => {\n formData.value[fieldName] = value;\n};\n\nwatch(() => props.formMetadata, (newForm) => {\n for (const [fieldName, field] of Object.entries(newForm) as ObjectEntries<typeof newForm>) {\n if (formData.value[fieldName] === undefined) {\n const value = field.defaultValue();\n if (!isNil(value)) {\n formData.value[fieldName] = value;\n }\n }\n }\n},\n{ immediate: true, deep: true },\n);\n\nfunction isFilterType(type: string | undefined): boolean {\n return type === 'FilterType'\n // @deprecated version\n || type === 'FilterUiType';\n}\n\n</script>\n\n<template>\n <div v-if=\"formMetadata\" :class=\"$style.form\">\n <template v-for=\"(field, fieldName) in formMetadata\" :key=\"fieldName\">\n <template v-if=\"field.fieldType === 'form'\">\n <!-- TODO: Nested Form not described in FilterUi, we need to define it later. Even more in type it don't possible situations -->\n <DynamicForm\n v-if=\"'form' in field\"\n :model-value=\"formData[fieldName] as any\"\n :form-metadata=\"field.form as any\"\n :columns=\"props.columns\"\n @update:model-value=\"setFieldValue(fieldName, $event as T[keyof T])\"\n />\n </template>\n <template v-else-if=\"isFilterType(field.fieldType)\">\n <PlDropdown\n :model-value=\"formData[fieldName] as FilterSpecType\"\n :label=\"field.label ?? fieldName\"\n :options=\"filterUiTypeOptions\"\n @update:model-value=\"setFieldValue(fieldName, $event as T[keyof T])\"\n />\n </template>\n <template v-else-if=\"field.fieldType === 'string'\">\n <PlTextField\n :model-value=\"formData[fieldName] as string\"\n :label=\"field.label ?? fieldName\"\n @update:model-value=\"setFieldValue(fieldName, $event as T[keyof T])\"\n />\n </template>\n <template v-else-if=\"field.fieldType === 'SUniversalPColumnId'\">\n <PlDropdown\n :model-value=\"formData[fieldName] as SUniversalPColumnId\"\n :label=\"field.label ?? fieldName\"\n :options=\"fieldName === 'column' ? firstColumnsOptions : secondColumnOptions\"\n @update:model-value=\"setFieldValue(fieldName, $event as T[keyof T])\"\n />\n </template>\n <template v-else-if=\"field.fieldType === 'number'\">\n <PlNumberField\n :model-value=\"formData[fieldName] as number\"\n :label=\"field.label ?? fieldName\"\n @update:model-value=\"setFieldValue(fieldName, $event as T[keyof T])\"\n />\n </template>\n <template v-else-if=\"field.fieldType === 'number?'\">\n <PlNumberField\n :model-value=\"formData[fieldName] as (undefined | number)\"\n :label=\"field.label ?? fieldName\"\n :clearable=\"true\"\n @update:model-value=\"setFieldValue(fieldName, $event as T[keyof T])\"\n />\n </template>\n <template v-else-if=\"field.fieldType === 'boolean' || field.fieldType === 'boolean?'\">\n <PlCheckbox\n :model-value=\"Boolean(formData[fieldName])\"\n :label=\"field.label ?? fieldName\"\n @update:model-value=\"setFieldValue(fieldName, $event as T[keyof T])\"\n >\n {{ field.label ?? fieldName }}\n </PlCheckbox>\n </template>\n <template v-else>\n <pre>TODO:{{ field.fieldType }}</pre>\n </template>\n </template>\n </div>\n</template>\n\n<style module>\n.form {\n display: flex;\n flex-direction: column;\n gap: 12px;\n}\n</style>\n"],"names":["formData","_useModel","__props","props","columnSpecRef","computed","value","_a","c","typeMetadataRef","getFilterUiMetadata","filterUiTypeOptions","getFilterUiTypeOptions","firstColumnsOptions","secondColumnOptions","typeMetadata","columnSpec","setFieldValue","fieldName","watch","newForm","field","isNil","isFilterType","type","_createElementBlock","_normalizeClass","$style","_openBlock","_Fragment","_renderList","_createBlock","_component_DynamicForm","$event","_unref","PlDropdown","PlTextField","PlNumberField","PlCheckbox","_hoisted_1","_toDisplayString"],"mappings":"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"}
|
|
@@ -1,9 +0,0 @@
|
|
|
1
|
-
(function(){"use strict";try{if(typeof document<"u"){var e=document.createElement("style");e.appendChild(document.createTextNode("._form_15mna_2{display:flex;flex-direction:column;gap:12px}")),document.head.appendChild(e)}}catch(n){console.error("vite-plugin-css-injected-by-js",n)}})();
|
|
2
|
-
const o = "_form_15mna_2", t = {
|
|
3
|
-
form: o
|
|
4
|
-
};
|
|
5
|
-
export {
|
|
6
|
-
t as default,
|
|
7
|
-
o as form
|
|
8
|
-
};
|
|
9
|
-
//# sourceMappingURL=DynamicForm.vue3.js.map
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"file":"DynamicForm.vue3.js","sources":[],"sourcesContent":[],"names":[],"mappings":";;;"}
|
|
@@ -1,20 +0,0 @@
|
|
|
1
|
-
function e() {
|
|
2
|
-
return {
|
|
3
|
-
column: {
|
|
4
|
-
label: "Column",
|
|
5
|
-
fieldType: "SUniversalPColumnId",
|
|
6
|
-
defaultValue: () => {
|
|
7
|
-
}
|
|
8
|
-
},
|
|
9
|
-
type: {
|
|
10
|
-
label: "Predicate",
|
|
11
|
-
fieldType: "FilterType",
|
|
12
|
-
defaultValue: () => {
|
|
13
|
-
}
|
|
14
|
-
}
|
|
15
|
-
};
|
|
16
|
-
}
|
|
17
|
-
export {
|
|
18
|
-
e as createDefaultFilterMetadata
|
|
19
|
-
};
|
|
20
|
-
//# sourceMappingURL=utils.js.map
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"file":"utils.js","sources":["../../../src/components/PlAnnotations/utils.ts"],"sourcesContent":["import type { FilterSpecTypeFieldRecord } from '@milaboratories/uikit';\nimport type { FilterSpecLeaf } from '@platforma-sdk/model';\n\nexport function createDefaultFilterMetadata<T extends FilterSpecLeaf>(): FilterSpecTypeFieldRecord<T> {\n return {\n column: {\n label: 'Column',\n fieldType: 'SUniversalPColumnId',\n defaultValue: () => undefined,\n },\n type: {\n label: 'Predicate',\n fieldType: 'FilterType',\n defaultValue: () => undefined,\n },\n } as FilterSpecTypeFieldRecord<T>;\n};\n"],"names":["createDefaultFilterMetadata"],"mappings":"AAGO,SAASA,IAAsF;AACpG,SAAO;AAAA,IACL,QAAQ;AAAA,MACN,OAAO;AAAA,MACP,WAAW;AAAA,MACX,cAAc,MAAA;AAAA;AAAA,IAAM;AAAA,IAEtB,MAAM;AAAA,MACJ,OAAO;AAAA,MACP,WAAW;AAAA,MACX,cAAc,MAAA;AAAA;AAAA,IAAM;AAAA,EACtB;AAEJ;"}
|