flameresttable 1.0.18 → 1.0.19
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 +2 -2
- package/src/App.vue +4 -0
- package/src/Table/Columns.ts +17 -0
- package/src/Table/FlameTable.ts +10 -1
- package/src/Table/TableFilters.vue +8 -0
- package/src/Table/TableLoadParams.ts +2 -1
- package/src/Table/TableOpts.ts +11 -0
package/package.json
CHANGED
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "flameresttable",
|
|
3
|
-
"version": "1.0.
|
|
3
|
+
"version": "1.0.19",
|
|
4
4
|
"main": "./src/plugin.ts",
|
|
5
5
|
"repository": {
|
|
6
6
|
"type": "git",
|
|
@@ -16,7 +16,7 @@
|
|
|
16
16
|
},
|
|
17
17
|
"dependencies": {
|
|
18
18
|
"@vuepic/vue-datepicker": "^7.2.0",
|
|
19
|
-
"flamerest": "^1.0.
|
|
19
|
+
"flamerest": "^1.0.93",
|
|
20
20
|
"lodash-es": "^4.17.21",
|
|
21
21
|
"pinia": "^2.1.7",
|
|
22
22
|
"pug": "github:FlameArt/pug-tailwind-only",
|
package/src/App.vue
CHANGED
package/src/Table/Columns.ts
CHANGED
|
@@ -1,3 +1,6 @@
|
|
|
1
|
+
// Подгрузчик типа класса
|
|
2
|
+
type Class<T> = new (...args: any[]) => T
|
|
3
|
+
|
|
1
4
|
export class Column implements IColumn {
|
|
2
5
|
|
|
3
6
|
/**
|
|
@@ -11,6 +14,11 @@ export class Column implements IColumn {
|
|
|
11
14
|
*/
|
|
12
15
|
public title: string = "";
|
|
13
16
|
|
|
17
|
+
/**
|
|
18
|
+
* Поддержка виртуальных столбцов для кастомных запросов
|
|
19
|
+
*/
|
|
20
|
+
public isVirtual: boolean = false;
|
|
21
|
+
|
|
14
22
|
/**
|
|
15
23
|
* Параметры таблицы
|
|
16
24
|
*/
|
|
@@ -64,6 +72,11 @@ export class Column implements IColumn {
|
|
|
64
72
|
*/
|
|
65
73
|
loader: () => [],
|
|
66
74
|
|
|
75
|
+
/**
|
|
76
|
+
* Модель, с которой выгружать значения
|
|
77
|
+
*/
|
|
78
|
+
model: null as Class<any> | null,
|
|
79
|
+
|
|
67
80
|
/**
|
|
68
81
|
* Здесь список готовых значений
|
|
69
82
|
*/
|
|
@@ -225,6 +238,10 @@ export interface IColumn {
|
|
|
225
238
|
*/
|
|
226
239
|
title?: string,
|
|
227
240
|
|
|
241
|
+
/**
|
|
242
|
+
* Поддержка виртуальных столбцов для кастомных запросов
|
|
243
|
+
*/
|
|
244
|
+
isVirtual?: boolean,
|
|
228
245
|
|
|
229
246
|
/**
|
|
230
247
|
* Параметры таблицы
|
package/src/Table/FlameTable.ts
CHANGED
|
@@ -149,10 +149,18 @@ export default class FlameTable<T> {
|
|
|
149
149
|
|
|
150
150
|
public applyFiltersParams() {
|
|
151
151
|
const customFilters: ITableLoadParams = {
|
|
152
|
-
where: {}
|
|
152
|
+
where: {},
|
|
153
|
+
params: {}
|
|
153
154
|
};
|
|
154
155
|
for (const key in this.columns) {
|
|
155
156
|
const el = this.columns[key].Filter;
|
|
157
|
+
|
|
158
|
+
// Виртуальные элементы не фильтруем, но добавляем в массив
|
|
159
|
+
if (this.columns[key].isVirtual) {
|
|
160
|
+
customFilters.params[key] = el.valueString;
|
|
161
|
+
continue;
|
|
162
|
+
}
|
|
163
|
+
|
|
156
164
|
switch (el.type) {
|
|
157
165
|
|
|
158
166
|
// Частичное совпадение
|
|
@@ -160,6 +168,7 @@ export default class FlameTable<T> {
|
|
|
160
168
|
|
|
161
169
|
if (el.valueString.trim() === '') continue;
|
|
162
170
|
customFilters.where[key] = ['LIKE', key, el.valueString];
|
|
171
|
+
|
|
163
172
|
break;
|
|
164
173
|
|
|
165
174
|
// Фуллтекстовый поиск
|
|
@@ -9,6 +9,14 @@
|
|
|
9
9
|
<input class="outline-none border border-slate-500 px-2 py-1 mx-2" :placeholder="col.title ?? col.name"
|
|
10
10
|
type="text" @keyup="update()" v-model="col.Filter.valueString" />
|
|
11
11
|
</div>
|
|
12
|
+
<div v-if="col.Filter.type === 'selector'">
|
|
13
|
+
<select class="outline-none border border-slate-500 px-2 py-1 mx-2" :placeholder="col.title ?? col.name"
|
|
14
|
+
@change="update()" v-model="col.Filter.valueString">
|
|
15
|
+
<option v-for="item in col.Selector.values" :key="item[0]">
|
|
16
|
+
|
|
17
|
+
</option>
|
|
18
|
+
</select>
|
|
19
|
+
</div>
|
|
12
20
|
</div>
|
|
13
21
|
|
|
14
22
|
</div>
|
package/src/Table/TableOpts.ts
CHANGED
|
@@ -26,6 +26,17 @@ export default class TableOpts {
|
|
|
26
26
|
*/
|
|
27
27
|
public onRowClickOpenSlot: boolean = false;
|
|
28
28
|
|
|
29
|
+
/**
|
|
30
|
+
* Добавить виртуальный столбец (не будет учтён в запросах, но будет передан на бек для кастомизации фильтров)
|
|
31
|
+
* @param ColumnName
|
|
32
|
+
* @param mergingOpts
|
|
33
|
+
*/
|
|
34
|
+
public addVirtual(ColumnName: string, mergingOpts: IColumn) {
|
|
35
|
+
this.columnsOpts[ColumnName] = new Column as any
|
|
36
|
+
merge(this.columnsOpts[ColumnName], mergingOpts)
|
|
37
|
+
this.columnsOpts[ColumnName].isVirtual = true;
|
|
38
|
+
}
|
|
39
|
+
|
|
29
40
|
public set(ColumnName: string, mergingOpts: IColumn) {
|
|
30
41
|
// TODO: ЕСТЬ ОШИБКА???
|
|
31
42
|
if (this.columnsOpts[ColumnName] === undefined) this.columnsOpts[ColumnName] = new Column as any
|