@masterteam/components 0.0.66 → 0.0.67
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/README.md +63 -63
- package/assets/cairo.css +70 -70
- package/assets/common.css +1 -1
- package/assets/i18n/ar.json +36 -32
- package/assets/i18n/en.json +36 -32
- package/assets/inter.css +418 -418
- package/fesm2022/masterteam-components-avatar-text.mjs +2 -2
- package/fesm2022/masterteam-components-avatar-text.mjs.map +1 -1
- package/fesm2022/masterteam-components-avatar.mjs +2 -2
- package/fesm2022/masterteam-components-avatar.mjs.map +1 -1
- package/fesm2022/masterteam-components-breadcrumb.mjs +2 -2
- package/fesm2022/masterteam-components-breadcrumb.mjs.map +1 -1
- package/fesm2022/masterteam-components-button-group.mjs +2 -2
- package/fesm2022/masterteam-components-button-group.mjs.map +1 -1
- package/fesm2022/masterteam-components-button.mjs +2 -2
- package/fesm2022/masterteam-components-button.mjs.map +1 -1
- package/fesm2022/masterteam-components-card.mjs +2 -2
- package/fesm2022/masterteam-components-card.mjs.map +1 -1
- package/fesm2022/masterteam-components-checkbox-field.mjs +2 -2
- package/fesm2022/masterteam-components-checkbox-field.mjs.map +1 -1
- package/fesm2022/masterteam-components-chip.mjs +2 -2
- package/fesm2022/masterteam-components-chip.mjs.map +1 -1
- package/fesm2022/masterteam-components-color-picker-field.mjs +2 -2
- package/fesm2022/masterteam-components-color-picker-field.mjs.map +1 -1
- package/fesm2022/masterteam-components-confirmation.mjs +2 -2
- package/fesm2022/masterteam-components-confirmation.mjs.map +1 -1
- package/fesm2022/masterteam-components-date-field.mjs +2 -2
- package/fesm2022/masterteam-components-date-field.mjs.map +1 -1
- package/fesm2022/masterteam-components-dialog.mjs.map +1 -1
- package/fesm2022/masterteam-components-drawer.mjs +2 -2
- package/fesm2022/masterteam-components-drawer.mjs.map +1 -1
- package/fesm2022/masterteam-components-dynamic-drawer.mjs +68 -68
- package/fesm2022/masterteam-components-dynamic-drawer.mjs.map +1 -1
- package/fesm2022/masterteam-components-editor-field.mjs +2 -2
- package/fesm2022/masterteam-components-editor-field.mjs.map +1 -1
- package/fesm2022/masterteam-components-field-validation.mjs +20 -20
- package/fesm2022/masterteam-components-field-validation.mjs.map +1 -1
- package/fesm2022/masterteam-components-icon-field.mjs +2 -2
- package/fesm2022/masterteam-components-icon-field.mjs.map +1 -1
- package/fesm2022/masterteam-components-list.mjs +2 -2
- package/fesm2022/masterteam-components-list.mjs.map +1 -1
- package/fesm2022/masterteam-components-menu.mjs +2 -2
- package/fesm2022/masterteam-components-menu.mjs.map +1 -1
- package/fesm2022/masterteam-components-modal.mjs.map +1 -1
- package/fesm2022/masterteam-components-module-summary-card.mjs +2 -2
- package/fesm2022/masterteam-components-module-summary-card.mjs.map +1 -1
- package/fesm2022/masterteam-components-multi-select-field.mjs +2 -2
- package/fesm2022/masterteam-components-multi-select-field.mjs.map +1 -1
- package/fesm2022/masterteam-components-number-field.mjs +2 -2
- package/fesm2022/masterteam-components-number-field.mjs.map +1 -1
- package/fesm2022/masterteam-components-page-header.mjs +2 -2
- package/fesm2022/masterteam-components-page-header.mjs.map +1 -1
- package/fesm2022/masterteam-components-page.mjs +2 -2
- package/fesm2022/masterteam-components-page.mjs.map +1 -1
- package/fesm2022/masterteam-components-paginator.mjs +2 -2
- package/fesm2022/masterteam-components-paginator.mjs.map +1 -1
- package/fesm2022/masterteam-components-pick-list-field.mjs +2 -2
- package/fesm2022/masterteam-components-pick-list-field.mjs.map +1 -1
- package/fesm2022/masterteam-components-radio-button-field.mjs +2 -2
- package/fesm2022/masterteam-components-radio-button-field.mjs.map +1 -1
- package/fesm2022/masterteam-components-radio-cards-field.mjs +2 -2
- package/fesm2022/masterteam-components-radio-cards-field.mjs.map +1 -1
- package/fesm2022/masterteam-components-radio-cards.mjs +2 -2
- package/fesm2022/masterteam-components-radio-cards.mjs.map +1 -1
- package/fesm2022/masterteam-components-select-field.mjs +2 -2
- package/fesm2022/masterteam-components-select-field.mjs.map +1 -1
- package/fesm2022/masterteam-components-sidebar.mjs +2 -2
- package/fesm2022/masterteam-components-sidebar.mjs.map +1 -1
- package/fesm2022/masterteam-components-slider-field.mjs +2 -2
- package/fesm2022/masterteam-components-slider-field.mjs.map +1 -1
- package/fesm2022/masterteam-components-table.mjs +2 -2
- package/fesm2022/masterteam-components-table.mjs.map +1 -1
- package/fesm2022/masterteam-components-tabs.mjs +2 -2
- package/fesm2022/masterteam-components-tabs.mjs.map +1 -1
- package/fesm2022/masterteam-components-text-field.mjs +2 -2
- package/fesm2022/masterteam-components-text-field.mjs.map +1 -1
- package/fesm2022/masterteam-components-textarea-field.mjs +2 -2
- package/fesm2022/masterteam-components-textarea-field.mjs.map +1 -1
- package/fesm2022/masterteam-components-toast.mjs +2 -2
- package/fesm2022/masterteam-components-toast.mjs.map +1 -1
- package/fesm2022/masterteam-components-toggle-field.mjs +2 -2
- package/fesm2022/masterteam-components-toggle-field.mjs.map +1 -1
- package/fesm2022/masterteam-components-tooltip.mjs.map +1 -1
- package/fesm2022/masterteam-components-topbar.mjs +2 -2
- package/fesm2022/masterteam-components-topbar.mjs.map +1 -1
- package/fesm2022/masterteam-components-upload-field.mjs +6 -6
- package/fesm2022/masterteam-components-upload-field.mjs.map +1 -1
- package/fesm2022/masterteam-components-user-search-field.mjs +2 -2
- package/fesm2022/masterteam-components-user-search-field.mjs.map +1 -1
- package/fesm2022/masterteam-components.mjs +61 -61
- package/fesm2022/masterteam-components.mjs.map +1 -1
- package/package.json +2 -6
- package/fesm2022/masterteam-components-formula-builder.mjs +0 -360
- package/fesm2022/masterteam-components-formula-builder.mjs.map +0 -1
- package/types/masterteam-components-formula-builder.d.ts +0 -69
|
@@ -1,360 +0,0 @@
|
|
|
1
|
-
import * as i0 from '@angular/core';
|
|
2
|
-
import { input, booleanAttribute, inject, signal, computed, Component } from '@angular/core';
|
|
3
|
-
import * as i1 from '@angular/forms';
|
|
4
|
-
import { FormsModule } from '@angular/forms';
|
|
5
|
-
import * as i3 from '@angular/cdk/drag-drop';
|
|
6
|
-
import { moveItemInArray, DragDropModule } from '@angular/cdk/drag-drop';
|
|
7
|
-
import { Button } from '@masterteam/components/button';
|
|
8
|
-
import { InputTextModule } from 'primeng/inputtext';
|
|
9
|
-
import * as i2 from 'primeng/chip';
|
|
10
|
-
import { ChipModule } from 'primeng/chip';
|
|
11
|
-
import { HttpClient } from '@angular/common/http';
|
|
12
|
-
import { map, catchError, EMPTY, of } from 'rxjs';
|
|
13
|
-
import { SelectField } from '@masterteam/components/select-field';
|
|
14
|
-
import * as i4 from 'primeng/inputgroup';
|
|
15
|
-
import { InputGroupModule } from 'primeng/inputgroup';
|
|
16
|
-
import * as i5 from 'primeng/inputgroupaddon';
|
|
17
|
-
import { InputGroupAddonModule } from 'primeng/inputgroupaddon';
|
|
18
|
-
import { TextField } from '@masterteam/components/text-field';
|
|
19
|
-
|
|
20
|
-
const types = {
|
|
21
|
-
function: {
|
|
22
|
-
bg: 'var(--p-green-50)',
|
|
23
|
-
border: 'var(--p-green-500)',
|
|
24
|
-
},
|
|
25
|
-
value: {
|
|
26
|
-
bg: 'var(--p-purple-100)',
|
|
27
|
-
border: 'var(--p-purple-500)',
|
|
28
|
-
},
|
|
29
|
-
field: {
|
|
30
|
-
bg: 'var(--p-orange-50)',
|
|
31
|
-
border: 'var(--p-orange-500)',
|
|
32
|
-
},
|
|
33
|
-
operator: {
|
|
34
|
-
bg: 'var(--p-primary-50)',
|
|
35
|
-
border: 'var(--p-primary-500)',
|
|
36
|
-
},
|
|
37
|
-
};
|
|
38
|
-
const operators = [
|
|
39
|
-
{
|
|
40
|
-
key: '+',
|
|
41
|
-
name: '+',
|
|
42
|
-
type: 'operator',
|
|
43
|
-
},
|
|
44
|
-
{
|
|
45
|
-
key: '-',
|
|
46
|
-
name: '-',
|
|
47
|
-
type: 'operator',
|
|
48
|
-
},
|
|
49
|
-
{
|
|
50
|
-
key: '*',
|
|
51
|
-
name: '×',
|
|
52
|
-
type: 'operator',
|
|
53
|
-
},
|
|
54
|
-
{
|
|
55
|
-
key: '/',
|
|
56
|
-
name: '÷',
|
|
57
|
-
type: 'operator',
|
|
58
|
-
},
|
|
59
|
-
// {
|
|
60
|
-
// key: '==',
|
|
61
|
-
// name: '=',
|
|
62
|
-
// type: 'operator',
|
|
63
|
-
// },
|
|
64
|
-
// {
|
|
65
|
-
// key: '!=',
|
|
66
|
-
// name: '≠',
|
|
67
|
-
// type: 'operator',
|
|
68
|
-
// },
|
|
69
|
-
// {
|
|
70
|
-
// key: '<',
|
|
71
|
-
// name: '<',
|
|
72
|
-
// type: 'operator',
|
|
73
|
-
// },
|
|
74
|
-
// {
|
|
75
|
-
// key: '<=',
|
|
76
|
-
// name: '≤',
|
|
77
|
-
// type: 'operator',
|
|
78
|
-
// },
|
|
79
|
-
// {
|
|
80
|
-
// key: '>',
|
|
81
|
-
// name: '>',
|
|
82
|
-
// type: 'operator',
|
|
83
|
-
// },
|
|
84
|
-
// {
|
|
85
|
-
// key: '>=',
|
|
86
|
-
// name: '≥',
|
|
87
|
-
// type: 'operator',
|
|
88
|
-
// },
|
|
89
|
-
// {
|
|
90
|
-
// key: '||',
|
|
91
|
-
// name: '||',
|
|
92
|
-
// type: 'operator',
|
|
93
|
-
// },
|
|
94
|
-
// {
|
|
95
|
-
// key: '&&',
|
|
96
|
-
// name: '&&',
|
|
97
|
-
// type: 'operator',
|
|
98
|
-
// },
|
|
99
|
-
{
|
|
100
|
-
key: '(',
|
|
101
|
-
name: '(',
|
|
102
|
-
type: 'operator',
|
|
103
|
-
},
|
|
104
|
-
{
|
|
105
|
-
key: ')',
|
|
106
|
-
name: ')',
|
|
107
|
-
type: 'operator',
|
|
108
|
-
},
|
|
109
|
-
{
|
|
110
|
-
key: ',',
|
|
111
|
-
name: ',',
|
|
112
|
-
type: 'operator',
|
|
113
|
-
},
|
|
114
|
-
{
|
|
115
|
-
key: ';',
|
|
116
|
-
name: ';',
|
|
117
|
-
type: 'operator',
|
|
118
|
-
},
|
|
119
|
-
];
|
|
120
|
-
|
|
121
|
-
class FormulaBuilder {
|
|
122
|
-
hideTitle = input(false, { ...(ngDevMode ? { debugName: "hideTitle" } : {}), transform: booleanAttribute });
|
|
123
|
-
properties = input([], ...(ngDevMode ? [{ debugName: "properties" }] : []));
|
|
124
|
-
// validationUrl = input<string>('app/checkformula');
|
|
125
|
-
validationUrl = input(...(ngDevMode ? [undefined, { debugName: "validationUrl" }] : []));
|
|
126
|
-
httpClient = inject(HttpClient);
|
|
127
|
-
// translateService: TranslateService = inject(TranslateService);
|
|
128
|
-
// functions = computed(() => []);
|
|
129
|
-
functions = [
|
|
130
|
-
{
|
|
131
|
-
// name: this.translateService.instant('formula-builder.count'),
|
|
132
|
-
name: 'formula-builder.count',
|
|
133
|
-
key: 'count',
|
|
134
|
-
hint: '',
|
|
135
|
-
},
|
|
136
|
-
{
|
|
137
|
-
// name: this.translateService.instant('formula-builder.sum'),
|
|
138
|
-
name: 'formula-builder.sum',
|
|
139
|
-
key: 'sum',
|
|
140
|
-
hint: '',
|
|
141
|
-
},
|
|
142
|
-
{
|
|
143
|
-
// name: this.translateService.instant('formula-builder.average'),
|
|
144
|
-
name: 'formula-builder.average',
|
|
145
|
-
key: 'average',
|
|
146
|
-
hint: '',
|
|
147
|
-
},
|
|
148
|
-
{
|
|
149
|
-
// name: this.translateService.instant('formula-builder.count-value'),
|
|
150
|
-
name: 'formula-builder.count-value',
|
|
151
|
-
key: 'countvalue',
|
|
152
|
-
// hint: this.translateService.instant('formula-builder.count-value-hint'),
|
|
153
|
-
hint: 'formula-builder.count-value-hint',
|
|
154
|
-
},
|
|
155
|
-
{
|
|
156
|
-
// name: this.translateService.instant('formula-builder.average-count'),
|
|
157
|
-
name: 'formula-builder.average-count',
|
|
158
|
-
key: 'averagecount',
|
|
159
|
-
// hint: this.translateService.instant('formula-builder.average-count-hint'),
|
|
160
|
-
hint: 'formula-builder.average-count-hint',
|
|
161
|
-
},
|
|
162
|
-
{
|
|
163
|
-
// name: this.translateService.instant('formula-builder.mode'),
|
|
164
|
-
name: 'formula-builder.mode',
|
|
165
|
-
key: 'mode',
|
|
166
|
-
// hint: this.translateService.instant('formula-builder.mode-hint'),
|
|
167
|
-
hint: 'formula-builder.mode-hint',
|
|
168
|
-
},
|
|
169
|
-
{
|
|
170
|
-
// name: this.translateService.instant('formula-builder.median'),
|
|
171
|
-
name: 'formula-builder.median',
|
|
172
|
-
key: 'median',
|
|
173
|
-
// hint: this.translateService.instant('formula-builder.median-hint'),
|
|
174
|
-
hint: 'formula-builder.median-hint',
|
|
175
|
-
},
|
|
176
|
-
{
|
|
177
|
-
// name: this.translateService.instant('formula-builder.standard-deviation'),
|
|
178
|
-
name: 'formula-builder.standard-deviation',
|
|
179
|
-
key: 'stddev',
|
|
180
|
-
hint: '',
|
|
181
|
-
},
|
|
182
|
-
{
|
|
183
|
-
// name: this.translateService.instant('formula-builder.min-max'),
|
|
184
|
-
name: 'formula-builder.min-max',
|
|
185
|
-
key: 'range',
|
|
186
|
-
// hint: this.translateService.instant('formula-builder.min-max-hint'),
|
|
187
|
-
hint: 'formula-builder.min-max-hint',
|
|
188
|
-
},
|
|
189
|
-
];
|
|
190
|
-
selectedLookup = signal(null, ...(ngDevMode ? [{ debugName: "selectedLookup" }] : []));
|
|
191
|
-
formula = signal([], ...(ngDevMode ? [{ debugName: "formula" }] : []));
|
|
192
|
-
disabled = signal(false, ...(ngDevMode ? [{ debugName: "disabled" }] : []));
|
|
193
|
-
touched = signal(false, ...(ngDevMode ? [{ debugName: "touched" }] : []));
|
|
194
|
-
types = types;
|
|
195
|
-
operators = operators;
|
|
196
|
-
formulaText = computed(() => {
|
|
197
|
-
return '';
|
|
198
|
-
}, ...(ngDevMode ? [{ debugName: "formulaText" }] : []));
|
|
199
|
-
onChange(_formula) { }
|
|
200
|
-
onTouched() { }
|
|
201
|
-
emitChange() {
|
|
202
|
-
const str = this.formula()
|
|
203
|
-
.map((x) => x.key)
|
|
204
|
-
.join(' ');
|
|
205
|
-
this.onChange(str);
|
|
206
|
-
}
|
|
207
|
-
onAdd(item) {
|
|
208
|
-
this.markAsTouched();
|
|
209
|
-
if (!this.disabled()) {
|
|
210
|
-
this.formula.update((formula) => [...formula, item]);
|
|
211
|
-
this.emitChange();
|
|
212
|
-
}
|
|
213
|
-
}
|
|
214
|
-
onRemove(index) {
|
|
215
|
-
this.markAsTouched();
|
|
216
|
-
if (!this.disabled()) {
|
|
217
|
-
this.formula.update((formula) => {
|
|
218
|
-
formula.splice(index, 1);
|
|
219
|
-
return formula;
|
|
220
|
-
});
|
|
221
|
-
this.emitChange();
|
|
222
|
-
}
|
|
223
|
-
}
|
|
224
|
-
onAddProperty(property, dropdown) {
|
|
225
|
-
if (!property?.key)
|
|
226
|
-
return;
|
|
227
|
-
this.onAdd({
|
|
228
|
-
key: property.key,
|
|
229
|
-
name: property.name,
|
|
230
|
-
type: 'field',
|
|
231
|
-
dataType: property?.dataType,
|
|
232
|
-
});
|
|
233
|
-
// TODO: fix input clearing
|
|
234
|
-
dropdown?.clearSelection();
|
|
235
|
-
this.selectedLookup.set(null);
|
|
236
|
-
}
|
|
237
|
-
onAddValue(el) {
|
|
238
|
-
this.onAdd({
|
|
239
|
-
key: el.value(),
|
|
240
|
-
name: el.value(),
|
|
241
|
-
type: 'value',
|
|
242
|
-
});
|
|
243
|
-
el.value.set('');
|
|
244
|
-
}
|
|
245
|
-
onAddFunction(func, dropdown) {
|
|
246
|
-
if (!func?.key)
|
|
247
|
-
return;
|
|
248
|
-
this.onAdd({
|
|
249
|
-
key: func.key,
|
|
250
|
-
name: func.name,
|
|
251
|
-
type: 'function',
|
|
252
|
-
});
|
|
253
|
-
dropdown?.clearSelection();
|
|
254
|
-
}
|
|
255
|
-
writeValue(formulaString) {
|
|
256
|
-
if (formulaString) {
|
|
257
|
-
this.formula.set(this.parseStringToItems(formulaString));
|
|
258
|
-
}
|
|
259
|
-
}
|
|
260
|
-
registerOnChange(onChange) {
|
|
261
|
-
this.onChange = onChange;
|
|
262
|
-
}
|
|
263
|
-
registerOnTouched(onTouched) {
|
|
264
|
-
this.onTouched = onTouched;
|
|
265
|
-
}
|
|
266
|
-
setDisabledState(isDisabled) {
|
|
267
|
-
this.disabled.set(isDisabled);
|
|
268
|
-
}
|
|
269
|
-
markAsTouched() {
|
|
270
|
-
if (!this.touched()) {
|
|
271
|
-
this.onTouched();
|
|
272
|
-
this.touched.set(true);
|
|
273
|
-
}
|
|
274
|
-
}
|
|
275
|
-
validate(control) {
|
|
276
|
-
const formula = control.value;
|
|
277
|
-
if (this.validationUrl()) {
|
|
278
|
-
const res$ = this.httpClient.post(this.validationUrl(), {
|
|
279
|
-
formula,
|
|
280
|
-
});
|
|
281
|
-
return res$.pipe(map(({ data }) => {
|
|
282
|
-
return data ? null : { mustBeValidFormula: formula };
|
|
283
|
-
}), catchError(() => {
|
|
284
|
-
return EMPTY;
|
|
285
|
-
}));
|
|
286
|
-
}
|
|
287
|
-
else {
|
|
288
|
-
return of(null);
|
|
289
|
-
}
|
|
290
|
-
}
|
|
291
|
-
drop(event) {
|
|
292
|
-
this.formula.update((formula) => {
|
|
293
|
-
moveItemInArray(formula, event.previousIndex, event.currentIndex);
|
|
294
|
-
return formula;
|
|
295
|
-
});
|
|
296
|
-
}
|
|
297
|
-
parseStringToItems(strValue) {
|
|
298
|
-
if (!strValue || !strValue.trim())
|
|
299
|
-
return [];
|
|
300
|
-
const tokens = strValue.split(/\s+/);
|
|
301
|
-
const results = [];
|
|
302
|
-
tokens.forEach((token) => {
|
|
303
|
-
let found = this.operators.find((el) => el.key === token);
|
|
304
|
-
if (found) {
|
|
305
|
-
results.push(found);
|
|
306
|
-
return;
|
|
307
|
-
}
|
|
308
|
-
found = this.functions.find((el) => el.key === token);
|
|
309
|
-
if (found) {
|
|
310
|
-
results.push({
|
|
311
|
-
key: token,
|
|
312
|
-
name: found.name,
|
|
313
|
-
type: 'function',
|
|
314
|
-
});
|
|
315
|
-
return;
|
|
316
|
-
}
|
|
317
|
-
found = this.properties().find((el) => el.key === token);
|
|
318
|
-
if (found) {
|
|
319
|
-
results.push({
|
|
320
|
-
key: token,
|
|
321
|
-
name: found.name,
|
|
322
|
-
type: 'field',
|
|
323
|
-
});
|
|
324
|
-
return;
|
|
325
|
-
}
|
|
326
|
-
results.push({
|
|
327
|
-
key: token,
|
|
328
|
-
name: token,
|
|
329
|
-
type: 'value',
|
|
330
|
-
});
|
|
331
|
-
});
|
|
332
|
-
return results;
|
|
333
|
-
}
|
|
334
|
-
static ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "21.0.3", ngImport: i0, type: FormulaBuilder, deps: [], target: i0.ɵɵFactoryTarget.Component });
|
|
335
|
-
static ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "17.0.0", version: "21.0.3", type: FormulaBuilder, isStandalone: true, selector: "mt-formula-builder", inputs: { hideTitle: { classPropertyName: "hideTitle", publicName: "hideTitle", isSignal: true, isRequired: false, transformFunction: null }, properties: { classPropertyName: "properties", publicName: "properties", isSignal: true, isRequired: false, transformFunction: null }, validationUrl: { classPropertyName: "validationUrl", publicName: "validationUrl", isSignal: true, isRequired: false, transformFunction: null } }, ngImport: i0, template: "<div class=\"@container w-full flex flex-col gap-2\">\n @if (!hideTitle()) {\n <h6 class=\"m-0\" translate>formula-builder.formula-builder</h6>\n }\n @if (!disabled()) {\n <div class=\"grid grid-cols-6 gap-2\">\n @if (properties()?.length) {\n <div class=\"col-span-6 @md:col-span-3 @2xl:col-span-2\">\n <mt-select-field\n #propertyDropdown=\"\"\n (onChange)=\"onAddProperty($event, propertyDropdown)\"\n label=\"formula-builder.property\"\n selectId=\"-1\"\n placeholder=\"{{ 'formula-builder.select-property' }}\"\n styleClass=\"w-full\"\n [filter]=\"true\"\n filterBy=\"name\"\n [ngModel]=\"null\"\n [options]=\"properties()\"\n optionLabel=\"name\"\n dataKey=\"key\"\n appendTo=\"body\"\n ></mt-select-field>\n </div>\n }\n @if (functions?.length) {\n <div class=\"col-span-6 @md:col-span-3 @2xl:col-span-2\">\n <mt-select-field\n #functionDropdown=\"\"\n label=\"formula-builder.function\"\n (onChange)=\"onAddFunction($event, functionDropdown)\"\n selectId=\"-1\"\n placeholder=\"{{ 'formula-builder.select-function' }}\"\n styleClass=\"w-full\"\n [filter]=\"true\"\n filterBy=\"name\"\n [ngModel]=\"null\"\n [options]=\"functions\"\n optionLabel=\"name\"\n dataKey=\"key\"\n appendTo=\"body\"\n ></mt-select-field>\n </div>\n }\n <div class=\"col-span-6 @md:col-span-3 @2xl:col-span-2\">\n <label for=\"configuration\" translate>formula-builder.operators</label>\n <div dir=\"ltr\" class=\"flex flex-wrap gap-1\">\n @for (operator of operators; track operator) {\n <mt-button\n type=\"button\"\n [outlined]=\"true\"\n [label]=\"operator.name\"\n (click)=\"onAdd(operator)\"\n >\n </mt-button>\n }\n </div>\n </div>\n <div class=\"col-span-6 @md:col-span-3 @2xl:col-span-2\">\n <label for=\"configuration\" translate\n >formula-builder.custom-value</label\n >\n <p-input-group>\n <mt-text-field\n #customInput\n type=\"text\"\n [field]=\"false\"\n [placeholder]=\"'formula-builder.custom-value'\"\n style=\"width: 100%\"\n ></mt-text-field>\n <p-inputgroup-addon>\n <mt-button\n class=\"\"\n type=\"button\"\n (click)=\"onAddValue(customInput)\"\n [disabled]=\"disabled() || !customInput.value()\"\n label=\"\"\n icon=\"general.plus\"\n ></mt-button>\n </p-inputgroup-addon>\n </p-input-group>\n </div>\n </div>\n }\n <div>\n <label for=\"configuration\" translate>formula-builder.formula</label>\n <div\n dir=\"ltr\"\n cdkDropList=\"\"\n cdkDropListOrientation=\"mixed\"\n [cdkDropListData]=\"formula()\"\n (cdkDropListDropped)=\"drop($event)\"\n [cdkDropListDisabled]=\"disabled()\"\n class=\"flex flex-wrap gap-1 rounded-lg border-1 border-gray-500 bg-gray-50 p-2 formula-preview\"\n >\n @for (item of formula(); track item; let i = $index) {\n <p-chip\n [style]=\"{\n background: types[item.type]?.bg ?? 'var(--p-gary-50)',\n borderColor: types[item.type]?.border ?? 'var(--p-gary-500)',\n }\"\n styleClass=\"text-black-alpha-90 border-1 border-round cursor-grab\"\n [label]=\"item.name\"\n [removable]=\"!disabled()\"\n (onRemove)=\"onRemove(i)\"\n [cdkDragDisabled]=\"disabled()\"\n cdkDrag=\"\"\n ></p-chip>\n }\n </div>\n </div>\n</div>\n", styles: [":host .formula-preview{border-color:var(--p-gray-500);min-height:60px}:host.ng-valid .formula-preview{border-color:var(--p-green-500)}:host.ng-invalid .formula-preview{border-color:var(--p-red-500)}:host ::ng-deep .cdk-drop-list{display:flex}:host ::ng-deep .cdk-drag-preview{box-sizing:border-box;border-radius:4px;box-shadow:0 5px 5px -3px #0003,0 8px 10px 1px #00000024,0 3px 14px 2px #0000001f;z-index:1000}:host ::ng-deep .cdk-drag-placeholder{opacity:.5}:host ::ng-deep .cdk-drag-animating{transition:transform .25s cubic-bezier(0,0,.2,1)}:host ::ng-deep .formula-preview.cdk-drop-list-dragging .formula-preview:not(.cdk-drag-placeholder){transition:transform .25s cubic-bezier(0,0,.2,1)}::ng-deep .p-inputgroupaddon:first-child .p-inputtext,::ng-deep .p-inputgroup>mt-text-field:first-child .p-inputtext{height:100%;width:100%;border-radius:0;border-start-start-radius:var(--p-inputgroup-addon-border-radius);border-end-start-radius:var(--p-inputgroup-addon-border-radius)}::ng-deep .p-inputgroupaddon:first-child,::ng-deep .p-inputgroup>p-autocomplete:first-child{width:100%}::ng-deep .p-inputgroupaddon:first-child>div,::ng-deep .p-inputgroup>p-autocomplete:first-child>div{width:100%;height:100%}::ng-deep .p-inputgroupaddon:first-child>div ul,::ng-deep .p-inputgroup>p-autocomplete:first-child>div ul{border-radius:0;border-start-start-radius:var(--p-inputgroup-addon-border-radius);border-end-start-radius:var(--p-inputgroup-addon-border-radius)}\n"], dependencies: [{ kind: "ngmodule", type: FormsModule }, { kind: "directive", type: i1.NgControlStatus, selector: "[formControlName],[ngModel],[formControl]" }, { kind: "directive", type: i1.NgModel, selector: "[ngModel]:not([formControlName]):not([formControl])", inputs: ["name", "disabled", "ngModel", "ngModelOptions"], outputs: ["ngModelChange"], exportAs: ["ngModel"] }, { kind: "component", type: SelectField, selector: "mt-select-field", inputs: ["field", "label", "placeholder", "hasPlaceholderPrefix", "class", "readonly", "pInputs", "options", "optionValue", "optionLabel", "filter", "filterBy", "dataKey", "showClear", "clearAfterSelect", "required", "group", "optionGroupLabel", "optionGroupChildren", "loading"], outputs: ["onChange"] }, { kind: "ngmodule", type: InputTextModule }, { kind: "component", type: Button, selector: "mt-button", inputs: ["icon", "label", "tooltip", "class", "type", "styleClass", "severity", "badge", "variant", "badgeSeverity", "size", "iconPos", "autofocus", "fluid", "raised", "rounded", "text", "plain", "outlined", "link", "disabled", "loading", "pInputs"], outputs: ["onClick", "onFocus", "onBlur"] }, { kind: "ngmodule", type: ChipModule }, { kind: "component", type: i2.Chip, selector: "p-chip", inputs: ["label", "icon", "image", "alt", "styleClass", "disabled", "removable", "removeIcon", "chipProps"], outputs: ["onRemove", "onImageError"] }, { kind: "ngmodule", type:
|
|
336
|
-
// TranslateModule,
|
|
337
|
-
DragDropModule }, { kind: "directive", type: i3.CdkDropList, selector: "[cdkDropList], cdk-drop-list", inputs: ["cdkDropListConnectedTo", "cdkDropListData", "cdkDropListOrientation", "id", "cdkDropListLockAxis", "cdkDropListDisabled", "cdkDropListSortingDisabled", "cdkDropListEnterPredicate", "cdkDropListSortPredicate", "cdkDropListAutoScrollDisabled", "cdkDropListAutoScrollStep", "cdkDropListElementContainer", "cdkDropListHasAnchor"], outputs: ["cdkDropListDropped", "cdkDropListEntered", "cdkDropListExited", "cdkDropListSorted"], exportAs: ["cdkDropList"] }, { kind: "directive", type: i3.CdkDrag, selector: "[cdkDrag]", inputs: ["cdkDragData", "cdkDragLockAxis", "cdkDragRootElement", "cdkDragBoundary", "cdkDragStartDelay", "cdkDragFreeDragPosition", "cdkDragDisabled", "cdkDragConstrainPosition", "cdkDragPreviewClass", "cdkDragPreviewContainer", "cdkDragScale"], outputs: ["cdkDragStarted", "cdkDragReleased", "cdkDragEnded", "cdkDragEntered", "cdkDragExited", "cdkDragDropped", "cdkDragMoved"], exportAs: ["cdkDrag"] }, { kind: "ngmodule", type: InputGroupModule }, { kind: "component", type: i4.InputGroup, selector: "p-inputgroup, p-inputGroup, p-input-group", inputs: ["styleClass"] }, { kind: "ngmodule", type: InputGroupAddonModule }, { kind: "component", type: i5.InputGroupAddon, selector: "p-inputgroup-addon, p-inputGroupAddon", inputs: ["style", "styleClass"] }, { kind: "component", type: TextField, selector: "mt-text-field", inputs: ["field", "hint", "label", "placeholder", "class", "type", "readonly", "pInputs", "required", "icon", "iconPosition"] }] });
|
|
338
|
-
}
|
|
339
|
-
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "21.0.3", ngImport: i0, type: FormulaBuilder, decorators: [{
|
|
340
|
-
type: Component,
|
|
341
|
-
args: [{ selector: 'mt-formula-builder', standalone: true, imports: [
|
|
342
|
-
FormsModule,
|
|
343
|
-
SelectField,
|
|
344
|
-
InputTextModule,
|
|
345
|
-
Button,
|
|
346
|
-
ChipModule,
|
|
347
|
-
// TranslateModule,
|
|
348
|
-
DragDropModule,
|
|
349
|
-
InputGroupModule,
|
|
350
|
-
InputGroupAddonModule,
|
|
351
|
-
TextField,
|
|
352
|
-
], template: "<div class=\"@container w-full flex flex-col gap-2\">\n @if (!hideTitle()) {\n <h6 class=\"m-0\" translate>formula-builder.formula-builder</h6>\n }\n @if (!disabled()) {\n <div class=\"grid grid-cols-6 gap-2\">\n @if (properties()?.length) {\n <div class=\"col-span-6 @md:col-span-3 @2xl:col-span-2\">\n <mt-select-field\n #propertyDropdown=\"\"\n (onChange)=\"onAddProperty($event, propertyDropdown)\"\n label=\"formula-builder.property\"\n selectId=\"-1\"\n placeholder=\"{{ 'formula-builder.select-property' }}\"\n styleClass=\"w-full\"\n [filter]=\"true\"\n filterBy=\"name\"\n [ngModel]=\"null\"\n [options]=\"properties()\"\n optionLabel=\"name\"\n dataKey=\"key\"\n appendTo=\"body\"\n ></mt-select-field>\n </div>\n }\n @if (functions?.length) {\n <div class=\"col-span-6 @md:col-span-3 @2xl:col-span-2\">\n <mt-select-field\n #functionDropdown=\"\"\n label=\"formula-builder.function\"\n (onChange)=\"onAddFunction($event, functionDropdown)\"\n selectId=\"-1\"\n placeholder=\"{{ 'formula-builder.select-function' }}\"\n styleClass=\"w-full\"\n [filter]=\"true\"\n filterBy=\"name\"\n [ngModel]=\"null\"\n [options]=\"functions\"\n optionLabel=\"name\"\n dataKey=\"key\"\n appendTo=\"body\"\n ></mt-select-field>\n </div>\n }\n <div class=\"col-span-6 @md:col-span-3 @2xl:col-span-2\">\n <label for=\"configuration\" translate>formula-builder.operators</label>\n <div dir=\"ltr\" class=\"flex flex-wrap gap-1\">\n @for (operator of operators; track operator) {\n <mt-button\n type=\"button\"\n [outlined]=\"true\"\n [label]=\"operator.name\"\n (click)=\"onAdd(operator)\"\n >\n </mt-button>\n }\n </div>\n </div>\n <div class=\"col-span-6 @md:col-span-3 @2xl:col-span-2\">\n <label for=\"configuration\" translate\n >formula-builder.custom-value</label\n >\n <p-input-group>\n <mt-text-field\n #customInput\n type=\"text\"\n [field]=\"false\"\n [placeholder]=\"'formula-builder.custom-value'\"\n style=\"width: 100%\"\n ></mt-text-field>\n <p-inputgroup-addon>\n <mt-button\n class=\"\"\n type=\"button\"\n (click)=\"onAddValue(customInput)\"\n [disabled]=\"disabled() || !customInput.value()\"\n label=\"\"\n icon=\"general.plus\"\n ></mt-button>\n </p-inputgroup-addon>\n </p-input-group>\n </div>\n </div>\n }\n <div>\n <label for=\"configuration\" translate>formula-builder.formula</label>\n <div\n dir=\"ltr\"\n cdkDropList=\"\"\n cdkDropListOrientation=\"mixed\"\n [cdkDropListData]=\"formula()\"\n (cdkDropListDropped)=\"drop($event)\"\n [cdkDropListDisabled]=\"disabled()\"\n class=\"flex flex-wrap gap-1 rounded-lg border-1 border-gray-500 bg-gray-50 p-2 formula-preview\"\n >\n @for (item of formula(); track item; let i = $index) {\n <p-chip\n [style]=\"{\n background: types[item.type]?.bg ?? 'var(--p-gary-50)',\n borderColor: types[item.type]?.border ?? 'var(--p-gary-500)',\n }\"\n styleClass=\"text-black-alpha-90 border-1 border-round cursor-grab\"\n [label]=\"item.name\"\n [removable]=\"!disabled()\"\n (onRemove)=\"onRemove(i)\"\n [cdkDragDisabled]=\"disabled()\"\n cdkDrag=\"\"\n ></p-chip>\n }\n </div>\n </div>\n</div>\n", styles: [":host .formula-preview{border-color:var(--p-gray-500);min-height:60px}:host.ng-valid .formula-preview{border-color:var(--p-green-500)}:host.ng-invalid .formula-preview{border-color:var(--p-red-500)}:host ::ng-deep .cdk-drop-list{display:flex}:host ::ng-deep .cdk-drag-preview{box-sizing:border-box;border-radius:4px;box-shadow:0 5px 5px -3px #0003,0 8px 10px 1px #00000024,0 3px 14px 2px #0000001f;z-index:1000}:host ::ng-deep .cdk-drag-placeholder{opacity:.5}:host ::ng-deep .cdk-drag-animating{transition:transform .25s cubic-bezier(0,0,.2,1)}:host ::ng-deep .formula-preview.cdk-drop-list-dragging .formula-preview:not(.cdk-drag-placeholder){transition:transform .25s cubic-bezier(0,0,.2,1)}::ng-deep .p-inputgroupaddon:first-child .p-inputtext,::ng-deep .p-inputgroup>mt-text-field:first-child .p-inputtext{height:100%;width:100%;border-radius:0;border-start-start-radius:var(--p-inputgroup-addon-border-radius);border-end-start-radius:var(--p-inputgroup-addon-border-radius)}::ng-deep .p-inputgroupaddon:first-child,::ng-deep .p-inputgroup>p-autocomplete:first-child{width:100%}::ng-deep .p-inputgroupaddon:first-child>div,::ng-deep .p-inputgroup>p-autocomplete:first-child>div{width:100%;height:100%}::ng-deep .p-inputgroupaddon:first-child>div ul,::ng-deep .p-inputgroup>p-autocomplete:first-child>div ul{border-radius:0;border-start-start-radius:var(--p-inputgroup-addon-border-radius);border-end-start-radius:var(--p-inputgroup-addon-border-radius)}\n"] }]
|
|
353
|
-
}], propDecorators: { hideTitle: [{ type: i0.Input, args: [{ isSignal: true, alias: "hideTitle", required: false }] }], properties: [{ type: i0.Input, args: [{ isSignal: true, alias: "properties", required: false }] }], validationUrl: [{ type: i0.Input, args: [{ isSignal: true, alias: "validationUrl", required: false }] }] } });
|
|
354
|
-
|
|
355
|
-
/**
|
|
356
|
-
* Generated bundle index. Do not edit.
|
|
357
|
-
*/
|
|
358
|
-
|
|
359
|
-
export { FormulaBuilder };
|
|
360
|
-
//# sourceMappingURL=masterteam-components-formula-builder.mjs.map
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"file":"masterteam-components-formula-builder.mjs","sources":["../../../../packages/masterteam/components/formula-builder/formula-builder.utils.ts","../../../../packages/masterteam/components/formula-builder/formula-builder.ts","../../../../packages/masterteam/components/formula-builder/formula-builder.html","../../../../packages/masterteam/components/formula-builder/masterteam-components-formula-builder.ts"],"sourcesContent":["export const types = {\n function: {\n bg: 'var(--p-green-50)',\n border: 'var(--p-green-500)',\n },\n value: {\n bg: 'var(--p-purple-100)',\n border: 'var(--p-purple-500)',\n },\n field: {\n bg: 'var(--p-orange-50)',\n border: 'var(--p-orange-500)',\n },\n operator: {\n bg: 'var(--p-primary-50)',\n border: 'var(--p-primary-500)',\n },\n};\n\nexport const operators = [\n {\n key: '+',\n name: '+',\n type: 'operator',\n },\n {\n key: '-',\n name: '-',\n type: 'operator',\n },\n {\n key: '*',\n name: '×',\n type: 'operator',\n },\n {\n key: '/',\n name: '÷',\n type: 'operator',\n },\n // {\n // key: '==',\n // name: '=',\n // type: 'operator',\n // },\n // {\n // key: '!=',\n // name: '≠',\n // type: 'operator',\n // },\n // {\n // key: '<',\n // name: '<',\n // type: 'operator',\n // },\n // {\n // key: '<=',\n // name: '≤',\n // type: 'operator',\n // },\n // {\n // key: '>',\n // name: '>',\n // type: 'operator',\n // },\n // {\n // key: '>=',\n // name: '≥',\n // type: 'operator',\n // },\n // {\n // key: '||',\n // name: '||',\n // type: 'operator',\n // },\n // {\n // key: '&&',\n // name: '&&',\n // type: 'operator',\n // },\n {\n key: '(',\n name: '(',\n type: 'operator',\n },\n {\n key: ')',\n name: ')',\n type: 'operator',\n },\n {\n key: ',',\n name: ',',\n type: 'operator',\n },\n {\n key: ';',\n name: ';',\n type: 'operator',\n },\n];\n","import {\n booleanAttribute,\n Component,\n computed,\n inject,\n input,\n signal,\n} from '@angular/core';\nimport {\n AbstractControl,\n ControlValueAccessor,\n FormsModule,\n // NG_ASYNC_VALIDATORS,\n // NG_VALUE_ACCESSOR,\n ValidationErrors,\n} from '@angular/forms';\nimport {\n CdkDragDrop,\n DragDropModule,\n moveItemInArray,\n} from '@angular/cdk/drag-drop';\nimport { Button } from '@masterteam/components/button';\nimport { InputTextModule } from 'primeng/inputtext';\nimport { ChipModule } from 'primeng/chip';\n// import { TranslateModule, TranslateService } from '@ngx-translate/core';\nimport { HttpClient } from '@angular/common/http';\nimport { catchError, EMPTY, map, Observable, of } from 'rxjs';\nimport { operators, types } from './formula-builder.utils';\nimport { SelectField } from '@masterteam/components/select-field';\nimport { InputGroupModule } from 'primeng/inputgroup';\nimport { InputGroupAddonModule } from 'primeng/inputgroupaddon';\nimport { TextField } from '@masterteam/components/text-field';\n\nexport interface FormulaBuilderProperty {\n key: string;\n name: string;\n dataType: string;\n}\n\n@Component({\n selector: 'mt-formula-builder',\n standalone: true,\n imports: [\n FormsModule,\n SelectField,\n InputTextModule,\n Button,\n ChipModule,\n // TranslateModule,\n DragDropModule,\n InputGroupModule,\n InputGroupAddonModule,\n TextField,\n ],\n // providers: [\n // {\n // provide: NG_VALUE_ACCESSOR,\n // multi: true,\n // useExisting: FormulaBuilder,\n // },\n // {\n // provide: NG_ASYNC_VALIDATORS,\n // multi: true,\n // useExisting: FormulaBuilder,\n // },\n // ],\n templateUrl: './formula-builder.html',\n styleUrls: ['./formula-builder.scss'],\n})\nexport class FormulaBuilder implements ControlValueAccessor {\n hideTitle = input<boolean, unknown>(false, { transform: booleanAttribute });\n properties = input<FormulaBuilderProperty[]>([]);\n // validationUrl = input<string>('app/checkformula');\n validationUrl = input<string>();\n\n httpClient: HttpClient = inject(HttpClient);\n // translateService: TranslateService = inject(TranslateService);\n\n // functions = computed(() => []);\n protected readonly functions: any[] = [\n {\n // name: this.translateService.instant('formula-builder.count'),\n name: 'formula-builder.count',\n key: 'count',\n hint: '',\n },\n {\n // name: this.translateService.instant('formula-builder.sum'),\n name: 'formula-builder.sum',\n key: 'sum',\n hint: '',\n },\n {\n // name: this.translateService.instant('formula-builder.average'),\n name: 'formula-builder.average',\n key: 'average',\n hint: '',\n },\n {\n // name: this.translateService.instant('formula-builder.count-value'),\n name: 'formula-builder.count-value',\n key: 'countvalue',\n // hint: this.translateService.instant('formula-builder.count-value-hint'),\n hint: 'formula-builder.count-value-hint',\n },\n {\n // name: this.translateService.instant('formula-builder.average-count'),\n name: 'formula-builder.average-count',\n key: 'averagecount',\n // hint: this.translateService.instant('formula-builder.average-count-hint'),\n hint: 'formula-builder.average-count-hint',\n },\n {\n // name: this.translateService.instant('formula-builder.mode'),\n name: 'formula-builder.mode',\n key: 'mode',\n // hint: this.translateService.instant('formula-builder.mode-hint'),\n hint: 'formula-builder.mode-hint',\n },\n {\n // name: this.translateService.instant('formula-builder.median'),\n name: 'formula-builder.median',\n key: 'median',\n // hint: this.translateService.instant('formula-builder.median-hint'),\n hint: 'formula-builder.median-hint',\n },\n {\n // name: this.translateService.instant('formula-builder.standard-deviation'),\n name: 'formula-builder.standard-deviation',\n key: 'stddev',\n hint: '',\n },\n {\n // name: this.translateService.instant('formula-builder.min-max'),\n name: 'formula-builder.min-max',\n key: 'range',\n // hint: this.translateService.instant('formula-builder.min-max-hint'),\n hint: 'formula-builder.min-max-hint',\n },\n ];\n selectedLookup = signal<any>(null);\n formula = signal<any[]>([]);\n disabled = signal<boolean>(false);\n touched = signal<boolean>(false);\n types = types;\n operators = operators;\n\n formulaText = computed<string>(() => {\n return '';\n });\n\n onChange(_formula: string) {}\n\n onTouched() {}\n\n emitChange() {\n const str = this.formula()\n .map((x) => x.key)\n .join(' ');\n this.onChange(str);\n }\n\n onAdd(item: any) {\n this.markAsTouched();\n if (!this.disabled()) {\n this.formula.update((formula) => [...formula, item]);\n this.emitChange();\n }\n }\n\n onRemove(index: number) {\n this.markAsTouched();\n if (!this.disabled()) {\n this.formula.update((formula) => {\n formula.splice(index, 1);\n return formula;\n });\n\n this.emitChange();\n }\n }\n\n onAddProperty(property: any, dropdown: SelectField) {\n if (!property?.key) return;\n this.onAdd({\n key: property.key,\n name: property.name,\n type: 'field',\n dataType: property?.dataType,\n });\n // TODO: fix input clearing\n dropdown?.clearSelection();\n this.selectedLookup.set(null);\n }\n\n onAddValue(el: TextField) {\n this.onAdd({\n key: el.value(),\n name: el.value(),\n type: 'value',\n });\n el.value.set('');\n }\n\n onAddFunction(func: any, dropdown: SelectField) {\n if (!func?.key) return;\n this.onAdd({\n key: func.key,\n name: func.name,\n type: 'function',\n });\n dropdown?.clearSelection();\n }\n\n writeValue(formulaString: string): void {\n if (formulaString) {\n this.formula.set(this.parseStringToItems(formulaString));\n }\n }\n\n registerOnChange(onChange: any) {\n this.onChange = onChange;\n }\n\n registerOnTouched(onTouched: any) {\n this.onTouched = onTouched;\n }\n\n setDisabledState(isDisabled: boolean): void {\n this.disabled.set(isDisabled);\n }\n\n markAsTouched() {\n if (!this.touched()) {\n this.onTouched();\n this.touched.set(true);\n }\n }\n\n validate(control: AbstractControl): Observable<ValidationErrors | null> {\n const formula = control.value;\n\n if (this.validationUrl()) {\n const res$ = this.httpClient.post<any>(this.validationUrl() as string, {\n formula,\n });\n return res$.pipe(\n map(({ data }) => {\n return data ? null : { mustBeValidFormula: formula };\n }),\n catchError(() => {\n return EMPTY;\n }),\n );\n } else {\n return of(null);\n }\n }\n\n drop(event: CdkDragDrop<any[]>) {\n this.formula.update((formula) => {\n moveItemInArray(formula, event.previousIndex, event.currentIndex);\n return formula;\n });\n }\n\n parseStringToItems(strValue: string): any[] {\n if (!strValue || !strValue.trim()) return [];\n\n const tokens = strValue.split(/\\s+/);\n const results: any[] = [];\n\n tokens.forEach((token) => {\n let found: any = this.operators.find((el) => el.key === token);\n\n if (found) {\n results.push(found);\n return;\n }\n\n found = this.functions.find((el) => el.key === token);\n\n if (found) {\n results.push({\n key: token,\n name: found.name,\n type: 'function',\n });\n\n return;\n }\n\n found = this.properties().find((el) => el.key === token);\n\n if (found) {\n results.push({\n key: token,\n name: found.name,\n type: 'field',\n });\n return;\n }\n\n results.push({\n key: token,\n name: token,\n type: 'value',\n });\n });\n\n return results;\n }\n}\n","<div class=\"@container w-full flex flex-col gap-2\">\n @if (!hideTitle()) {\n <h6 class=\"m-0\" translate>formula-builder.formula-builder</h6>\n }\n @if (!disabled()) {\n <div class=\"grid grid-cols-6 gap-2\">\n @if (properties()?.length) {\n <div class=\"col-span-6 @md:col-span-3 @2xl:col-span-2\">\n <mt-select-field\n #propertyDropdown=\"\"\n (onChange)=\"onAddProperty($event, propertyDropdown)\"\n label=\"formula-builder.property\"\n selectId=\"-1\"\n placeholder=\"{{ 'formula-builder.select-property' }}\"\n styleClass=\"w-full\"\n [filter]=\"true\"\n filterBy=\"name\"\n [ngModel]=\"null\"\n [options]=\"properties()\"\n optionLabel=\"name\"\n dataKey=\"key\"\n appendTo=\"body\"\n ></mt-select-field>\n </div>\n }\n @if (functions?.length) {\n <div class=\"col-span-6 @md:col-span-3 @2xl:col-span-2\">\n <mt-select-field\n #functionDropdown=\"\"\n label=\"formula-builder.function\"\n (onChange)=\"onAddFunction($event, functionDropdown)\"\n selectId=\"-1\"\n placeholder=\"{{ 'formula-builder.select-function' }}\"\n styleClass=\"w-full\"\n [filter]=\"true\"\n filterBy=\"name\"\n [ngModel]=\"null\"\n [options]=\"functions\"\n optionLabel=\"name\"\n dataKey=\"key\"\n appendTo=\"body\"\n ></mt-select-field>\n </div>\n }\n <div class=\"col-span-6 @md:col-span-3 @2xl:col-span-2\">\n <label for=\"configuration\" translate>formula-builder.operators</label>\n <div dir=\"ltr\" class=\"flex flex-wrap gap-1\">\n @for (operator of operators; track operator) {\n <mt-button\n type=\"button\"\n [outlined]=\"true\"\n [label]=\"operator.name\"\n (click)=\"onAdd(operator)\"\n >\n </mt-button>\n }\n </div>\n </div>\n <div class=\"col-span-6 @md:col-span-3 @2xl:col-span-2\">\n <label for=\"configuration\" translate\n >formula-builder.custom-value</label\n >\n <p-input-group>\n <mt-text-field\n #customInput\n type=\"text\"\n [field]=\"false\"\n [placeholder]=\"'formula-builder.custom-value'\"\n style=\"width: 100%\"\n ></mt-text-field>\n <p-inputgroup-addon>\n <mt-button\n class=\"\"\n type=\"button\"\n (click)=\"onAddValue(customInput)\"\n [disabled]=\"disabled() || !customInput.value()\"\n label=\"\"\n icon=\"general.plus\"\n ></mt-button>\n </p-inputgroup-addon>\n </p-input-group>\n </div>\n </div>\n }\n <div>\n <label for=\"configuration\" translate>formula-builder.formula</label>\n <div\n dir=\"ltr\"\n cdkDropList=\"\"\n cdkDropListOrientation=\"mixed\"\n [cdkDropListData]=\"formula()\"\n (cdkDropListDropped)=\"drop($event)\"\n [cdkDropListDisabled]=\"disabled()\"\n class=\"flex flex-wrap gap-1 rounded-lg border-1 border-gray-500 bg-gray-50 p-2 formula-preview\"\n >\n @for (item of formula(); track item; let i = $index) {\n <p-chip\n [style]=\"{\n background: types[item.type]?.bg ?? 'var(--p-gary-50)',\n borderColor: types[item.type]?.border ?? 'var(--p-gary-500)',\n }\"\n styleClass=\"text-black-alpha-90 border-1 border-round cursor-grab\"\n [label]=\"item.name\"\n [removable]=\"!disabled()\"\n (onRemove)=\"onRemove(i)\"\n [cdkDragDisabled]=\"disabled()\"\n cdkDrag=\"\"\n ></p-chip>\n }\n </div>\n </div>\n</div>\n","/**\n * Generated bundle index. Do not edit.\n */\n\nexport * from './public-api';\n"],"names":[],"mappings":"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"}
|
|
@@ -1,69 +0,0 @@
|
|
|
1
|
-
import * as _angular_core from '@angular/core';
|
|
2
|
-
import { ControlValueAccessor, AbstractControl, ValidationErrors } from '@angular/forms';
|
|
3
|
-
import { CdkDragDrop } from '@angular/cdk/drag-drop';
|
|
4
|
-
import { HttpClient } from '@angular/common/http';
|
|
5
|
-
import { Observable } from 'rxjs';
|
|
6
|
-
import { SelectField } from '@masterteam/components/select-field';
|
|
7
|
-
import { TextField } from '@masterteam/components/text-field';
|
|
8
|
-
|
|
9
|
-
interface FormulaBuilderProperty {
|
|
10
|
-
key: string;
|
|
11
|
-
name: string;
|
|
12
|
-
dataType: string;
|
|
13
|
-
}
|
|
14
|
-
declare class FormulaBuilder implements ControlValueAccessor {
|
|
15
|
-
hideTitle: _angular_core.InputSignalWithTransform<boolean, unknown>;
|
|
16
|
-
properties: _angular_core.InputSignal<FormulaBuilderProperty[]>;
|
|
17
|
-
validationUrl: _angular_core.InputSignal<string | undefined>;
|
|
18
|
-
httpClient: HttpClient;
|
|
19
|
-
protected readonly functions: any[];
|
|
20
|
-
selectedLookup: _angular_core.WritableSignal<any>;
|
|
21
|
-
formula: _angular_core.WritableSignal<any[]>;
|
|
22
|
-
disabled: _angular_core.WritableSignal<boolean>;
|
|
23
|
-
touched: _angular_core.WritableSignal<boolean>;
|
|
24
|
-
types: {
|
|
25
|
-
function: {
|
|
26
|
-
bg: string;
|
|
27
|
-
border: string;
|
|
28
|
-
};
|
|
29
|
-
value: {
|
|
30
|
-
bg: string;
|
|
31
|
-
border: string;
|
|
32
|
-
};
|
|
33
|
-
field: {
|
|
34
|
-
bg: string;
|
|
35
|
-
border: string;
|
|
36
|
-
};
|
|
37
|
-
operator: {
|
|
38
|
-
bg: string;
|
|
39
|
-
border: string;
|
|
40
|
-
};
|
|
41
|
-
};
|
|
42
|
-
operators: {
|
|
43
|
-
key: string;
|
|
44
|
-
name: string;
|
|
45
|
-
type: string;
|
|
46
|
-
}[];
|
|
47
|
-
formulaText: _angular_core.Signal<string>;
|
|
48
|
-
onChange(_formula: string): void;
|
|
49
|
-
onTouched(): void;
|
|
50
|
-
emitChange(): void;
|
|
51
|
-
onAdd(item: any): void;
|
|
52
|
-
onRemove(index: number): void;
|
|
53
|
-
onAddProperty(property: any, dropdown: SelectField): void;
|
|
54
|
-
onAddValue(el: TextField): void;
|
|
55
|
-
onAddFunction(func: any, dropdown: SelectField): void;
|
|
56
|
-
writeValue(formulaString: string): void;
|
|
57
|
-
registerOnChange(onChange: any): void;
|
|
58
|
-
registerOnTouched(onTouched: any): void;
|
|
59
|
-
setDisabledState(isDisabled: boolean): void;
|
|
60
|
-
markAsTouched(): void;
|
|
61
|
-
validate(control: AbstractControl): Observable<ValidationErrors | null>;
|
|
62
|
-
drop(event: CdkDragDrop<any[]>): void;
|
|
63
|
-
parseStringToItems(strValue: string): any[];
|
|
64
|
-
static ɵfac: _angular_core.ɵɵFactoryDeclaration<FormulaBuilder, never>;
|
|
65
|
-
static ɵcmp: _angular_core.ɵɵComponentDeclaration<FormulaBuilder, "mt-formula-builder", never, { "hideTitle": { "alias": "hideTitle"; "required": false; "isSignal": true; }; "properties": { "alias": "properties"; "required": false; "isSignal": true; }; "validationUrl": { "alias": "validationUrl"; "required": false; "isSignal": true; }; }, {}, never, never, true, never>;
|
|
66
|
-
}
|
|
67
|
-
|
|
68
|
-
export { FormulaBuilder };
|
|
69
|
-
export type { FormulaBuilderProperty };
|