@mixd-id/web-scaffold 0.1.230406270 → 0.1.230406271
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/package.json
CHANGED
package/src/components/List.vue
CHANGED
|
@@ -57,6 +57,12 @@
|
|
|
57
57
|
<Radio :name="value.key" :value="false" v-model="value.value" @change="apply">False</Radio>
|
|
58
58
|
</div>
|
|
59
59
|
|
|
60
|
+
<div v-else-if="type === 'component'">
|
|
61
|
+
<component :is="column.component"
|
|
62
|
+
:value="value"
|
|
63
|
+
@change="apply" />
|
|
64
|
+
</div>
|
|
65
|
+
|
|
60
66
|
<div v-else class="flex flex-row gap-2">
|
|
61
67
|
<Dropdown v-model="value.operator" class="w-[100px]"
|
|
62
68
|
@change="apply">
|
|
@@ -89,6 +95,10 @@ export default{
|
|
|
89
95
|
|
|
90
96
|
props: {
|
|
91
97
|
|
|
98
|
+
column: {
|
|
99
|
+
type: Object,
|
|
100
|
+
default: {}
|
|
101
|
+
},
|
|
92
102
|
type: String,
|
|
93
103
|
value: Object,
|
|
94
104
|
|
|
@@ -304,12 +304,12 @@ const getValue = (filter, opt) => {
|
|
|
304
304
|
case 'in':
|
|
305
305
|
withoutKey ?
|
|
306
306
|
whereObj = {
|
|
307
|
-
[Op.in]: filter.value.split(',')
|
|
307
|
+
[Op.in]: (!Array.isArray(filter.value) ? filter.value.split(',') : filter.value)
|
|
308
308
|
.map(_ => parseInt(_))
|
|
309
309
|
.filter(_ => !isNaN(_))
|
|
310
310
|
} :
|
|
311
311
|
whereObj[key] = {
|
|
312
|
-
[Op.in]: filter.value.split(',')
|
|
312
|
+
[Op.in]: (!Array.isArray(filter.value) ? filter.value.split(',') : filter.value)
|
|
313
313
|
.map(_ => parseInt(_))
|
|
314
314
|
.filter(_ => !isNaN(_))
|
|
315
315
|
}
|
|
@@ -342,12 +342,15 @@ const getValue = (filter, opt) => {
|
|
|
342
342
|
break
|
|
343
343
|
}
|
|
344
344
|
|
|
345
|
+
|
|
346
|
+
console.log('getValue', filter, key, type, operator, util.inspect(whereObj, false, null, true /* enable colors */))
|
|
347
|
+
|
|
345
348
|
return whereObj
|
|
346
349
|
}
|
|
347
350
|
|
|
348
351
|
|
|
349
352
|
const filtersToSequelizeWhere = async(filters, opt) => {
|
|
350
|
-
if(!Array.isArray(filters)){
|
|
353
|
+
if(!Array.isArray(filters) || filters.length < 1){
|
|
351
354
|
return {
|
|
352
355
|
where: {},
|
|
353
356
|
replacements: []
|
|
@@ -361,9 +364,9 @@ const filtersToSequelizeWhere = async(filters, opt) => {
|
|
|
361
364
|
for(let filter of filters) {
|
|
362
365
|
if (filter.enabled === false) continue
|
|
363
366
|
|
|
364
|
-
const { key, value } = filter
|
|
367
|
+
const { key, value, operator } = filter
|
|
365
368
|
|
|
366
|
-
if(Array.isArray(value)){
|
|
369
|
+
if(Array.isArray(value) && !operator){
|
|
367
370
|
const { modifier = 'and' } = filter
|
|
368
371
|
|
|
369
372
|
if(![ 'and', 'or' ].includes(modifier)) continue
|
|
@@ -173,7 +173,13 @@
|
|
|
173
173
|
|
|
174
174
|
<div v-for="(filter, idx) in preset.filters" class="p-6">
|
|
175
175
|
|
|
176
|
-
<
|
|
176
|
+
<component v-if="column(filter.key).type === 'component'"
|
|
177
|
+
:is="column(filter.key).component"
|
|
178
|
+
:filter="filter"
|
|
179
|
+
@remove="preset.filters.splice(idx, 1)">
|
|
180
|
+
</component>
|
|
181
|
+
|
|
182
|
+
<div v-else class="flex flex-row items-start gap-2">
|
|
177
183
|
<Checkbox v-model="filter.enabled" :default="true" />
|
|
178
184
|
<div class="flex-1 flex flex-col gap-3">
|
|
179
185
|
<div class="flex-1 flex flex-row gap-3">
|
|
@@ -189,12 +195,14 @@
|
|
|
189
195
|
</div>
|
|
190
196
|
<div v-if="Array.isArray(filter.value)" class="flex flex-col gap-2">
|
|
191
197
|
<PresetSelectorFilterItem v-for="(filterVal, filterIdx) in filter.value"
|
|
198
|
+
:column="column(filter.key)"
|
|
192
199
|
:type="typeOf(column(filter.key).type)"
|
|
193
200
|
:value="filterVal"
|
|
194
201
|
:index="filterIdx"
|
|
195
202
|
@remove="filter.value.splice(filterIdx, 1)" />
|
|
196
203
|
</div>
|
|
197
204
|
<PresetSelectorFilterItem v-else
|
|
205
|
+
:column="column(filter.key)"
|
|
198
206
|
:type="typeOf(column(filter.key).type)"
|
|
199
207
|
:value="filter" />
|
|
200
208
|
</div>
|
|
@@ -565,10 +573,11 @@ export default{
|
|
|
565
573
|
|
|
566
574
|
methods: {
|
|
567
575
|
|
|
568
|
-
add(
|
|
576
|
+
add(column){
|
|
569
577
|
if(!Array.isArray(this.preset.filters))
|
|
570
578
|
this.preset.filters = []
|
|
571
|
-
|
|
579
|
+
|
|
580
|
+
this.preset.filters.push({ key:column.key, value:column.type !== 'component' ? [{}] : null })
|
|
572
581
|
},
|
|
573
582
|
|
|
574
583
|
addPivot(type, obj){
|