@builder6/tables 0.8.3 → 0.9.1
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 +25 -1
- package/dist/tables/app.controller.d.ts +11 -2
- package/dist/tables/app.controller.js +35 -14
- package/dist/tables/app.controller.js.map +1 -1
- package/dist/tables/liquid.service.d.ts +5 -0
- package/dist/tables/liquid.service.js +32 -0
- package/dist/tables/liquid.service.js.map +1 -0
- package/dist/tables/tables.module.js +2 -1
- package/dist/tables/tables.module.js.map +1 -1
- package/package.json +5 -4
- package/views/{ag-grid/ag-grid.hbs → ag-grid.liquid} +1 -2
- package/views/ag-grid/README.md +0 -15
- /package/views/{devextreme/datagrid.hbs → grid.liquid} +0 -0
package/README.md
CHANGED
|
@@ -17,4 +17,28 @@ objects:
|
|
|
17
17
|
"url": "mongodb://127.0.0.1:27017/tables"
|
|
18
18
|
}
|
|
19
19
|
},
|
|
20
|
-
```
|
|
20
|
+
```
|
|
21
|
+
|
|
22
|
+
## DevExtreme DataGrid
|
|
23
|
+
|
|
24
|
+
http://localhost:5100/b6/tables/grid/test/test
|
|
25
|
+
|
|
26
|
+
## Ag-Grid
|
|
27
|
+
|
|
28
|
+
http://localhost:5100/b6/tables/ag-grid/test/test
|
|
29
|
+
|
|
30
|
+
## 数据校验
|
|
31
|
+
|
|
32
|
+
先校验字段值有效性,校验合法的各种字段类型值,再校验用户配置的校验规则,最终把所有校验错误信息合并提示给用户。
|
|
33
|
+
|
|
34
|
+
### 字段类型校验
|
|
35
|
+
|
|
36
|
+
各种字段类型校验规则:
|
|
37
|
+
|
|
38
|
+
- number: 合法number,小数位数
|
|
39
|
+
- date: 合法的日期格式,YYYY-MM-DD、YYYY/MM/DD,兼容前导0省略情况,另外兼容了 YYYY-MM-DDTHH:MM:SS.SSSZ 这种服务端返回的格式(复制其它字段列保存时,是保存整行数据,日期列会自动取这种格式提交)
|
|
40
|
+
- select: 数据类型只支持字符串,且必须是字段定义过的选项范围内值
|
|
41
|
+
- boolean: true/false TRUE/FALSE
|
|
42
|
+
|
|
43
|
+
其它逻辑:每种字段类型校验失败都不会去主动变更转换字段值,以原始值交给ag-grid显示以明显告知用户数据不合法。
|
|
44
|
+
|
|
@@ -1,6 +1,15 @@
|
|
|
1
1
|
import { Response } from 'express';
|
|
2
|
+
import { LiquidService } from './liquid.service';
|
|
2
3
|
export declare class TablesAppController {
|
|
4
|
+
private readonly liquidService;
|
|
5
|
+
constructor(liquidService: LiquidService);
|
|
3
6
|
Hello(): Promise<string>;
|
|
4
|
-
getDemo(baseId: string, tableId: string, res: Response): Promise<
|
|
5
|
-
|
|
7
|
+
getDemo(baseId: string, tableId: string, res: Response): Promise<{
|
|
8
|
+
error: string;
|
|
9
|
+
details: any;
|
|
10
|
+
}>;
|
|
11
|
+
AgGrid(baseId: string, tableId: string, res: Response): Promise<{
|
|
12
|
+
error: string;
|
|
13
|
+
details: any;
|
|
14
|
+
}>;
|
|
6
15
|
}
|
|
@@ -15,24 +15,44 @@ Object.defineProperty(exports, "__esModule", { value: true });
|
|
|
15
15
|
exports.TablesAppController = void 0;
|
|
16
16
|
const common_1 = require("@nestjs/common");
|
|
17
17
|
const core_1 = require("@builder6/core");
|
|
18
|
-
const
|
|
18
|
+
const core_2 = require("@builder6/core");
|
|
19
|
+
const liquid_service_1 = require("./liquid.service");
|
|
19
20
|
let TablesAppController = class TablesAppController {
|
|
21
|
+
constructor(liquidService) {
|
|
22
|
+
this.liquidService = liquidService;
|
|
23
|
+
}
|
|
20
24
|
async Hello() {
|
|
21
25
|
return 'Welcome to Builder6 Tables!';
|
|
22
26
|
}
|
|
23
27
|
async getDemo(baseId, tableId, res) {
|
|
24
|
-
const
|
|
25
|
-
|
|
26
|
-
|
|
27
|
-
|
|
28
|
-
|
|
28
|
+
const config = (0, core_2.getConfigs)();
|
|
29
|
+
try {
|
|
30
|
+
const rendered = await this.liquidService.render('grid', {
|
|
31
|
+
baseId,
|
|
32
|
+
tableId,
|
|
33
|
+
config,
|
|
34
|
+
});
|
|
35
|
+
res.status(200).send(rendered);
|
|
36
|
+
}
|
|
37
|
+
catch (error) {
|
|
38
|
+
console.log(error);
|
|
39
|
+
return { error: 'Template rendering failed', details: error.message };
|
|
40
|
+
}
|
|
29
41
|
}
|
|
30
42
|
async AgGrid(baseId, tableId, res) {
|
|
31
|
-
const
|
|
32
|
-
|
|
33
|
-
|
|
34
|
-
|
|
35
|
-
|
|
43
|
+
const config = (0, core_2.getConfigs)();
|
|
44
|
+
try {
|
|
45
|
+
const rendered = await this.liquidService.render('ag-grid', {
|
|
46
|
+
baseId,
|
|
47
|
+
tableId,
|
|
48
|
+
config,
|
|
49
|
+
});
|
|
50
|
+
res.status(200).send(rendered);
|
|
51
|
+
}
|
|
52
|
+
catch (error) {
|
|
53
|
+
console.log(error);
|
|
54
|
+
return { error: 'Template rendering failed', details: error.message };
|
|
55
|
+
}
|
|
36
56
|
}
|
|
37
57
|
};
|
|
38
58
|
exports.TablesAppController = TablesAppController;
|
|
@@ -43,7 +63,7 @@ __decorate([
|
|
|
43
63
|
__metadata("design:returntype", Promise)
|
|
44
64
|
], TablesAppController.prototype, "Hello", null);
|
|
45
65
|
__decorate([
|
|
46
|
-
(0, common_1.Get)('
|
|
66
|
+
(0, common_1.Get)('grid/:baseId/:tableId'),
|
|
47
67
|
__param(0, (0, common_1.Param)('baseId')),
|
|
48
68
|
__param(1, (0, common_1.Param)('tableId')),
|
|
49
69
|
__param(2, (0, common_1.Res)()),
|
|
@@ -52,7 +72,7 @@ __decorate([
|
|
|
52
72
|
__metadata("design:returntype", Promise)
|
|
53
73
|
], TablesAppController.prototype, "getDemo", null);
|
|
54
74
|
__decorate([
|
|
55
|
-
(0, common_1.Get)('ag-grid
|
|
75
|
+
(0, common_1.Get)('ag-grid/:baseId/:tableId'),
|
|
56
76
|
__param(0, (0, common_1.Param)('baseId')),
|
|
57
77
|
__param(1, (0, common_1.Param)('tableId')),
|
|
58
78
|
__param(2, (0, common_1.Res)()),
|
|
@@ -62,6 +82,7 @@ __decorate([
|
|
|
62
82
|
], TablesAppController.prototype, "AgGrid", null);
|
|
63
83
|
exports.TablesAppController = TablesAppController = __decorate([
|
|
64
84
|
(0, common_1.Controller)('b6/tables/'),
|
|
65
|
-
(0, common_1.UseGuards)(core_1.AuthGuard)
|
|
85
|
+
(0, common_1.UseGuards)(core_1.AuthGuard),
|
|
86
|
+
__metadata("design:paramtypes", [liquid_service_1.LiquidService])
|
|
66
87
|
], TablesAppController);
|
|
67
88
|
//# sourceMappingURL=app.controller.js.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"app.controller.js","sourceRoot":"","sources":["../../src/tables/app.controller.ts"],"names":[],"mappings":";;;;;;;;;;;;;;;AAAA,2CAewB;AAUxB,yCAA2C;
|
|
1
|
+
{"version":3,"file":"app.controller.js","sourceRoot":"","sources":["../../src/tables/app.controller.ts"],"names":[],"mappings":";;;;;;;;;;;;;;;AAAA,2CAewB;AAUxB,yCAA2C;AAG3C,yCAA4C;AAC5C,qDAAiD;AAK1C,IAAM,mBAAmB,GAAzB,MAAM,mBAAmB;IAE9B,YAA6B,aAA4B;QAA5B,kBAAa,GAAb,aAAa,CAAe;IAAG,CAAC;IAGvD,AAAN,KAAK,CAAC,KAAK;QACT,OAAO,6BAA6B,CAAC;IACvC,CAAC;IAGK,AAAN,KAAK,CAAC,OAAO,CACM,MAAc,EACb,OAAe,EAC1B,GAAa;QAEpB,MAAM,MAAM,GAAG,IAAA,iBAAU,GAAE,CAAC;QAC5B,IAAI,CAAC;YACH,MAAM,QAAQ,GAAG,MAAM,IAAI,CAAC,aAAa,CAAC,MAAM,CAAC,MAAM,EAAE;gBACvD,MAAM;gBACN,OAAO;gBACP,MAAM;aACP,CAAC,CAAC;YAEH,GAAG,CAAC,MAAM,CAAC,GAAG,CAAC,CAAC,IAAI,CAAC,QAAQ,CAAC,CAAC;QACjC,CAAC;QAAC,OAAO,KAAK,EAAE,CAAC;YACf,OAAO,CAAC,GAAG,CAAC,KAAK,CAAC,CAAA;YAClB,OAAO,EAAE,KAAK,EAAE,2BAA2B,EAAE,OAAO,EAAE,KAAK,CAAC,OAAO,EAAE,CAAC;QACxE,CAAC;IACH,CAAC;IAGK,AAAN,KAAK,CAAC,MAAM,CACO,MAAc,EACb,OAAe,EAC1B,GAAa;QAGpB,MAAM,MAAM,GAAG,IAAA,iBAAU,GAAE,CAAC;QAC5B,IAAI,CAAC;YACH,MAAM,QAAQ,GAAG,MAAM,IAAI,CAAC,aAAa,CAAC,MAAM,CAAC,SAAS,EAAE;gBAC1D,MAAM;gBACN,OAAO;gBACP,MAAM;aACP,CAAC,CAAC;YAEH,GAAG,CAAC,MAAM,CAAC,GAAG,CAAC,CAAC,IAAI,CAAC,QAAQ,CAAC,CAAC;QACjC,CAAC;QAAC,OAAO,KAAK,EAAE,CAAC;YACf,OAAO,CAAC,GAAG,CAAC,KAAK,CAAC,CAAA;YAClB,OAAO,EAAE,KAAK,EAAE,2BAA2B,EAAE,OAAO,EAAE,KAAK,CAAC,OAAO,EAAE,CAAC;QACxE,CAAC;IACH,CAAC;CACF,CAAA;AAnDY,kDAAmB;AAKxB;IADL,IAAA,YAAG,EAAC,EAAE,CAAC;;;;gDAGP;AAGK;IADL,IAAA,YAAG,EAAC,uBAAuB,CAAC;IAE1B,WAAA,IAAA,cAAK,EAAC,QAAQ,CAAC,CAAA;IACf,WAAA,IAAA,cAAK,EAAC,SAAS,CAAC,CAAA;IAChB,WAAA,IAAA,YAAG,GAAE,CAAA;;;;kDAeP;AAGK;IADL,IAAA,YAAG,EAAC,0BAA0B,CAAC;IAE7B,WAAA,IAAA,cAAK,EAAC,QAAQ,CAAC,CAAA;IACf,WAAA,IAAA,cAAK,EAAC,SAAS,CAAC,CAAA;IAChB,WAAA,IAAA,YAAG,GAAE,CAAA;;;;iDAgBP;8BAlDU,mBAAmB;IAF/B,IAAA,mBAAU,EAAC,YAAY,CAAC;IACxB,IAAA,kBAAS,EAAC,gBAAS,CAAC;qCAGyB,8BAAa;GAF9C,mBAAmB,CAmD/B"}
|
|
@@ -0,0 +1,32 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
var __decorate = (this && this.__decorate) || function (decorators, target, key, desc) {
|
|
3
|
+
var c = arguments.length, r = c < 3 ? target : desc === null ? desc = Object.getOwnPropertyDescriptor(target, key) : desc, d;
|
|
4
|
+
if (typeof Reflect === "object" && typeof Reflect.decorate === "function") r = Reflect.decorate(decorators, target, key, desc);
|
|
5
|
+
else for (var i = decorators.length - 1; i >= 0; i--) if (d = decorators[i]) r = (c < 3 ? d(r) : c > 3 ? d(target, key, r) : d(target, key)) || r;
|
|
6
|
+
return c > 3 && r && Object.defineProperty(target, key, r), r;
|
|
7
|
+
};
|
|
8
|
+
var __metadata = (this && this.__metadata) || function (k, v) {
|
|
9
|
+
if (typeof Reflect === "object" && typeof Reflect.metadata === "function") return Reflect.metadata(k, v);
|
|
10
|
+
};
|
|
11
|
+
Object.defineProperty(exports, "__esModule", { value: true });
|
|
12
|
+
exports.LiquidService = void 0;
|
|
13
|
+
const common_1 = require("@nestjs/common");
|
|
14
|
+
const path = require("path");
|
|
15
|
+
const liquidjs_1 = require("liquidjs");
|
|
16
|
+
let LiquidService = class LiquidService {
|
|
17
|
+
constructor() {
|
|
18
|
+
this.engine = new liquidjs_1.Liquid({
|
|
19
|
+
root: path.resolve(__dirname, '../../views'),
|
|
20
|
+
extname: '.liquid',
|
|
21
|
+
});
|
|
22
|
+
}
|
|
23
|
+
async render(template, data) {
|
|
24
|
+
return this.engine.renderFile(template, data);
|
|
25
|
+
}
|
|
26
|
+
};
|
|
27
|
+
exports.LiquidService = LiquidService;
|
|
28
|
+
exports.LiquidService = LiquidService = __decorate([
|
|
29
|
+
(0, common_1.Injectable)(),
|
|
30
|
+
__metadata("design:paramtypes", [])
|
|
31
|
+
], LiquidService);
|
|
32
|
+
//# sourceMappingURL=liquid.service.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"liquid.service.js","sourceRoot":"","sources":["../../src/tables/liquid.service.ts"],"names":[],"mappings":";;;;;;;;;;;;AAAA,2CAA4C;AAC5C,6BAA6B;AAC7B,uCAAkC;AAG3B,IAAM,aAAa,GAAnB,MAAM,aAAa;IAIxB;QACE,IAAI,CAAC,MAAM,GAAG,IAAI,iBAAM,CAAC;YACvB,IAAI,EAAE,IAAI,CAAC,OAAO,CAAC,SAAS,EAAE,aAAa,CAAC;YAC5C,OAAO,EAAE,SAAS;SACnB,CAAC,CAAC;IACL,CAAC;IAED,KAAK,CAAC,MAAM,CAAC,QAAgB,EAAE,IAAyB;QACtD,OAAO,IAAI,CAAC,MAAM,CAAC,UAAU,CAAC,QAAQ,EAAE,IAAI,CAAC,CAAC;IAChD,CAAC;CACF,CAAA;AAdY,sCAAa;wBAAb,aAAa;IADzB,IAAA,mBAAU,GAAE;;GACA,aAAa,CAczB"}
|
|
@@ -15,6 +15,7 @@ const core_1 = require("@builder6/core");
|
|
|
15
15
|
const core_2 = require("@builder6/core");
|
|
16
16
|
const tables_moleculer_1 = require("./tables.moleculer");
|
|
17
17
|
const app_controller_1 = require("./app.controller");
|
|
18
|
+
const liquid_service_1 = require("./liquid.service");
|
|
18
19
|
let TablesModule = class TablesModule {
|
|
19
20
|
};
|
|
20
21
|
exports.TablesModule = TablesModule;
|
|
@@ -22,7 +23,7 @@ exports.TablesModule = TablesModule = __decorate([
|
|
|
22
23
|
(0, common_1.Module)({
|
|
23
24
|
imports: [core_2.AuthModule, core_1.MongodbModule],
|
|
24
25
|
controllers: [tables_controller_1.TablesController, app_controller_1.TablesAppController],
|
|
25
|
-
providers: [meta_service_1.MetaService, tables_service_1.TablesService, tables_moleculer_1.TablesMoleculer],
|
|
26
|
+
providers: [meta_service_1.MetaService, tables_service_1.TablesService, tables_moleculer_1.TablesMoleculer, liquid_service_1.LiquidService],
|
|
26
27
|
})
|
|
27
28
|
], TablesModule);
|
|
28
29
|
//# sourceMappingURL=tables.module.js.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"tables.module.js","sourceRoot":"","sources":["../../src/tables/tables.module.ts"],"names":[],"mappings":";;;;;;;;;AAAA,2CAAwC;AACxC,2DAAuD;AACvD,qDAAiD;AACjD,iDAA6C;AAC7C,yCAA+C;AAC/C,yCAA4C;AAC5C,yDAAqD;AACrD,qDAAuD;
|
|
1
|
+
{"version":3,"file":"tables.module.js","sourceRoot":"","sources":["../../src/tables/tables.module.ts"],"names":[],"mappings":";;;;;;;;;AAAA,2CAAwC;AACxC,2DAAuD;AACvD,qDAAiD;AACjD,iDAA6C;AAC7C,yCAA+C;AAC/C,yCAA4C;AAC5C,yDAAqD;AACrD,qDAAuD;AACvD,qDAAiD;AAO1C,IAAM,YAAY,GAAlB,MAAM,YAAY;CAAG,CAAA;AAAf,oCAAY;uBAAZ,YAAY;IALxB,IAAA,eAAM,EAAC;QACN,OAAO,EAAE,CAAC,iBAAU,EAAE,oBAAa,CAAC;QACpC,WAAW,EAAE,CAAC,oCAAgB,EAAE,oCAAmB,CAAC;QACpD,SAAS,EAAE,CAAC,0BAAW,EAAE,8BAAa,EAAE,kCAAe,EAAE,8BAAa,CAAC;KACxE,CAAC;GACW,YAAY,CAAG"}
|
package/package.json
CHANGED
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "@builder6/tables",
|
|
3
|
-
"version": "0.
|
|
3
|
+
"version": "0.9.1",
|
|
4
4
|
"main": "dist/plugin.module.js",
|
|
5
5
|
"license": "MIT",
|
|
6
6
|
"files": [
|
|
@@ -12,11 +12,12 @@
|
|
|
12
12
|
"build:watch": "rm -rf dist && tsc --watch"
|
|
13
13
|
},
|
|
14
14
|
"dependencies": {
|
|
15
|
-
"@builder6/core": "^0.
|
|
16
|
-
"dataloader": "^2.2.3"
|
|
15
|
+
"@builder6/core": "^0.9.1",
|
|
16
|
+
"dataloader": "^2.2.3",
|
|
17
|
+
"liquidjs": "^10.19.0"
|
|
17
18
|
},
|
|
18
19
|
"publishConfig": {
|
|
19
20
|
"access": "public"
|
|
20
21
|
},
|
|
21
|
-
"gitHead": "
|
|
22
|
+
"gitHead": "a20e7b82c563a95d55d5afe6ea066f7d80fa4312"
|
|
22
23
|
}
|
|
@@ -77,7 +77,7 @@
|
|
|
77
77
|
</body>
|
|
78
78
|
<script>
|
|
79
79
|
|
|
80
|
-
const B6_TABLES_API = '/api/tables
|
|
80
|
+
const B6_TABLES_API = '/api/v6/tables';
|
|
81
81
|
const baseId = '{{ baseId }}';
|
|
82
82
|
const tableId = '{{ tableId }}';
|
|
83
83
|
|
|
@@ -1094,6 +1094,5 @@
|
|
|
1094
1094
|
});
|
|
1095
1095
|
</script>
|
|
1096
1096
|
|
|
1097
|
-
</body>
|
|
1098
1097
|
|
|
1099
1098
|
</html>
|
package/views/ag-grid/README.md
DELETED
|
@@ -1,15 +0,0 @@
|
|
|
1
|
-
## 数据校验
|
|
2
|
-
|
|
3
|
-
先校验字段值有效性,校验合法的各种字段类型值,再校验用户配置的校验规则,最终把所有校验错误信息合并提示给用户。
|
|
4
|
-
|
|
5
|
-
### 字段类型校验
|
|
6
|
-
|
|
7
|
-
各种字段类型校验规则:
|
|
8
|
-
|
|
9
|
-
- number: 合法number,小数位数
|
|
10
|
-
- date: 合法的日期格式,YYYY-MM-DD、YYYY/MM/DD,兼容前导0省略情况,另外兼容了 YYYY-MM-DDTHH:MM:SS.SSSZ 这种服务端返回的格式(复制其它字段列保存时,是保存整行数据,日期列会自动取这种格式提交)
|
|
11
|
-
- select: 数据类型只支持字符串,且必须是字段定义过的选项范围内值
|
|
12
|
-
- boolean: true/false TRUE/FALSE
|
|
13
|
-
|
|
14
|
-
其它逻辑:每种字段类型校验失败都不会去主动变更转换字段值,以原始值交给ag-grid显示以明显告知用户数据不合法。
|
|
15
|
-
|
|
File without changes
|