@builder6/server 0.2.0
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/dist/app.controller.d.ts +3 -0
- package/dist/app.controller.js +29 -0
- package/dist/app.controller.js.map +1 -0
- package/dist/app.express.d.ts +2 -0
- package/dist/app.express.js +45 -0
- package/dist/app.express.js.map +1 -0
- package/dist/app.module.d.ts +2 -0
- package/dist/app.module.js +48 -0
- package/dist/app.module.js.map +1 -0
- package/dist/auth/admin.guard.d.ts +8 -0
- package/dist/auth/admin.guard.js +47 -0
- package/dist/auth/admin.guard.js.map +1 -0
- package/dist/auth/auth.controller.d.ts +7 -0
- package/dist/auth/auth.controller.js +80 -0
- package/dist/auth/auth.controller.js.map +1 -0
- package/dist/auth/auth.guard.d.ts +7 -0
- package/dist/auth/auth.guard.js +41 -0
- package/dist/auth/auth.guard.js.map +1 -0
- package/dist/auth/auth.module.d.ts +2 -0
- package/dist/auth/auth.module.js +34 -0
- package/dist/auth/auth.module.js.map +1 -0
- package/dist/auth/auth.service.d.ts +22 -0
- package/dist/auth/auth.service.js +172 -0
- package/dist/auth/auth.service.js.map +1 -0
- package/dist/auth/index.d.ts +5 -0
- package/dist/auth/index.js +22 -0
- package/dist/auth/index.js.map +1 -0
- package/dist/b6.config.d.ts +0 -0
- package/dist/b6.config.js +6 -0
- package/dist/b6.config.js.map +1 -0
- package/dist/b6.server.d.ts +2 -0
- package/dist/b6.server.js +276 -0
- package/dist/b6.server.js.map +1 -0
- package/dist/files/files.controller.d.ts +8 -0
- package/dist/files/files.controller.js +110 -0
- package/dist/files/files.controller.js.map +1 -0
- package/dist/files/files.module.d.ts +2 -0
- package/dist/files/files.module.js +25 -0
- package/dist/files/files.module.js.map +1 -0
- package/dist/files/files.service.d.ts +30 -0
- package/dist/files/files.service.js +206 -0
- package/dist/files/files.service.js.map +1 -0
- package/dist/files/index.d.ts +3 -0
- package/dist/files/index.js +20 -0
- package/dist/files/index.js.map +1 -0
- package/dist/index.d.ts +5 -0
- package/dist/index.js +28 -0
- package/dist/index.js.map +1 -0
- package/dist/main.d.ts +1 -0
- package/dist/main.js +10 -0
- package/dist/main.js.map +1 -0
- package/dist/microsoft365/microsoft365.controller.d.ts +8 -0
- package/dist/microsoft365/microsoft365.controller.js +83 -0
- package/dist/microsoft365/microsoft365.controller.js.map +1 -0
- package/dist/microsoft365/microsoft365.module.d.ts +2 -0
- package/dist/microsoft365/microsoft365.module.js +22 -0
- package/dist/microsoft365/microsoft365.module.js.map +1 -0
- package/dist/microsoft365/microsoft365.service.d.ts +3 -0
- package/dist/microsoft365/microsoft365.service.js +32 -0
- package/dist/microsoft365/microsoft365.service.js.map +1 -0
- package/dist/moleculer/env.config.d.ts +2 -0
- package/dist/moleculer/env.config.js +38 -0
- package/dist/moleculer/env.config.js.map +1 -0
- package/dist/moleculer/moleculer.config.d.ts +2 -0
- package/dist/moleculer/moleculer.config.js +78 -0
- package/dist/moleculer/moleculer.config.js.map +1 -0
- package/dist/moleculer/moleculer.module.d.ts +2 -0
- package/dist/moleculer/moleculer.module.js +20 -0
- package/dist/moleculer/moleculer.module.js.map +1 -0
- package/dist/moleculer/moleculer.service.d.ts +11 -0
- package/dist/moleculer/moleculer.service.js +95 -0
- package/dist/moleculer/moleculer.service.js.map +1 -0
- package/dist/mongodb/index.d.ts +2 -0
- package/dist/mongodb/index.js +19 -0
- package/dist/mongodb/index.js.map +1 -0
- package/dist/mongodb/mongodb.module.d.ts +2 -0
- package/dist/mongodb/mongodb.module.js +21 -0
- package/dist/mongodb/mongodb.module.js.map +1 -0
- package/dist/mongodb/mongodb.service.d.ts +17 -0
- package/dist/mongodb/mongodb.service.js +113 -0
- package/dist/mongodb/mongodb.service.js.map +1 -0
- package/dist/oidc/oidc.controller.d.ts +7 -0
- package/dist/oidc/oidc.controller.js +93 -0
- package/dist/oidc/oidc.controller.js.map +1 -0
- package/dist/oidc/oidc.module.d.ts +2 -0
- package/dist/oidc/oidc.module.js +22 -0
- package/dist/oidc/oidc.module.js.map +1 -0
- package/dist/oidc/oidc.service.d.ts +15 -0
- package/dist/oidc/oidc.service.js +38 -0
- package/dist/oidc/oidc.service.js.map +1 -0
- package/dist/rooms/globals/augmentation.d.ts +25 -0
- package/dist/rooms/globals/augmentation.js +3 -0
- package/dist/rooms/globals/augmentation.js.map +1 -0
- package/dist/rooms/lib/DateToString.d.ts +3 -0
- package/dist/rooms/lib/DateToString.js +3 -0
- package/dist/rooms/lib/DateToString.js.map +1 -0
- package/dist/rooms/lib/Json.d.ts +9 -0
- package/dist/rooms/lib/Json.js +18 -0
- package/dist/rooms/lib/Json.js.map +1 -0
- package/dist/rooms/lib/utils.d.ts +33 -0
- package/dist/rooms/lib/utils.js +122 -0
- package/dist/rooms/lib/utils.js.map +1 -0
- package/dist/rooms/protocol/AuthToken.d.ts +50 -0
- package/dist/rooms/protocol/AuthToken.js +49 -0
- package/dist/rooms/protocol/AuthToken.js.map +1 -0
- package/dist/rooms/protocol/Authentication.d.ts +22 -0
- package/dist/rooms/protocol/Authentication.js +3 -0
- package/dist/rooms/protocol/Authentication.js.map +1 -0
- package/dist/rooms/protocol/BaseActivitiesData.d.ts +4 -0
- package/dist/rooms/protocol/BaseActivitiesData.js +3 -0
- package/dist/rooms/protocol/BaseActivitiesData.js.map +1 -0
- package/dist/rooms/protocol/BaseRoomInfo.d.ts +6 -0
- package/dist/rooms/protocol/BaseRoomInfo.js +3 -0
- package/dist/rooms/protocol/BaseRoomInfo.js.map +1 -0
- package/dist/rooms/protocol/BaseUserMeta.d.ts +10 -0
- package/dist/rooms/protocol/BaseUserMeta.js +3 -0
- package/dist/rooms/protocol/BaseUserMeta.js.map +1 -0
- package/dist/rooms/protocol/ClientMsg.d.ts +41 -0
- package/dist/rooms/protocol/ClientMsg.js +13 -0
- package/dist/rooms/protocol/ClientMsg.js.map +1 -0
- package/dist/rooms/protocol/Comments.d.ts +146 -0
- package/dist/rooms/protocol/Comments.js +3 -0
- package/dist/rooms/protocol/Comments.js.map +1 -0
- package/dist/rooms/protocol/InboxNotifications.d.ts +49 -0
- package/dist/rooms/protocol/InboxNotifications.js +3 -0
- package/dist/rooms/protocol/InboxNotifications.js.map +1 -0
- package/dist/rooms/protocol/Op.d.ts +82 -0
- package/dist/rooms/protocol/Op.js +28 -0
- package/dist/rooms/protocol/Op.js.map +1 -0
- package/dist/rooms/protocol/SerializedCrdt.d.ts +40 -0
- package/dist/rooms/protocol/SerializedCrdt.js +19 -0
- package/dist/rooms/protocol/SerializedCrdt.js.map +1 -0
- package/dist/rooms/protocol/ServerMsg.d.ts +128 -0
- package/dist/rooms/protocol/ServerMsg.js +25 -0
- package/dist/rooms/protocol/ServerMsg.js.map +1 -0
- package/dist/rooms/protocol/VersionHistory.d.ts +9 -0
- package/dist/rooms/protocol/VersionHistory.js +3 -0
- package/dist/rooms/protocol/VersionHistory.js.map +1 -0
- package/dist/rooms/rooms.controller.d.ts +64 -0
- package/dist/rooms/rooms.controller.js +401 -0
- package/dist/rooms/rooms.controller.js.map +1 -0
- package/dist/rooms/rooms.gateway.d.ts +30 -0
- package/dist/rooms/rooms.gateway.js +189 -0
- package/dist/rooms/rooms.gateway.js.map +1 -0
- package/dist/rooms/rooms.guard.d.ts +9 -0
- package/dist/rooms/rooms.guard.js +48 -0
- package/dist/rooms/rooms.guard.js.map +1 -0
- package/dist/rooms/rooms.module.d.ts +2 -0
- package/dist/rooms/rooms.module.js +36 -0
- package/dist/rooms/rooms.module.js.map +1 -0
- package/dist/rooms/rooms.service.d.ts +51 -0
- package/dist/rooms/rooms.service.js +223 -0
- package/dist/rooms/rooms.service.js.map +1 -0
- package/dist/steedos/mongodb.controller.d.ts +13 -0
- package/dist/steedos/mongodb.controller.js +355 -0
- package/dist/steedos/mongodb.controller.js.map +1 -0
- package/dist/steedos/object.service.d.ts +6 -0
- package/dist/steedos/object.service.js +34 -0
- package/dist/steedos/object.service.js.map +1 -0
- package/dist/steedos/steedos.module.d.ts +2 -0
- package/dist/steedos/steedos.module.js +27 -0
- package/dist/steedos/steedos.module.js.map +1 -0
- package/dist/tables/meta.service.d.ts +6 -0
- package/dist/tables/meta.service.js +82 -0
- package/dist/tables/meta.service.js.map +1 -0
- package/dist/tables/records.service.d.ts +13 -0
- package/dist/tables/records.service.js +73 -0
- package/dist/tables/records.service.js.map +1 -0
- package/dist/tables/tables.controller.d.ts +24 -0
- package/dist/tables/tables.controller.js +414 -0
- package/dist/tables/tables.controller.js.map +1 -0
- package/dist/tables/tables.module.d.ts +2 -0
- package/dist/tables/tables.module.js +28 -0
- package/dist/tables/tables.module.js.map +1 -0
- package/package.json +112 -0
- package/public/ag-grid/locale_zh.js +595 -0
- package/public/grid/index.html +25 -0
- package/public/grid/index.js +207 -0
- package/public/grid/styles.css +4 -0
- package/public/pivot/index.html +30 -0
- package/public/pivot/index.js +109 -0
- package/public/pivot/styles.css +7 -0
- package/views/ag-grid/README.md +15 -0
- package/views/ag-grid/ag-grid.hbs +1099 -0
- package/views/devextreme/datagrid.hbs +240 -0
|
@@ -0,0 +1,207 @@
|
|
|
1
|
+
async function initializeGrid(baseId = 'test', tableId='test') {
|
|
2
|
+
const tableResponse = await fetch(`/b6/v0/meta/bases/${baseId}/tables/${tableId}`);
|
|
3
|
+
const table = await tableResponse.json();
|
|
4
|
+
|
|
5
|
+
console.log(table)
|
|
6
|
+
|
|
7
|
+
function isNotEmpty(value) {
|
|
8
|
+
return value !== undefined && value !== null && value !== "";
|
|
9
|
+
}
|
|
10
|
+
|
|
11
|
+
var customDataSource = new DevExpress.data.CustomStore({
|
|
12
|
+
key: "_id",
|
|
13
|
+
load: function(loadOptions) {
|
|
14
|
+
var d = $.Deferred();
|
|
15
|
+
var params = {};
|
|
16
|
+
|
|
17
|
+
[
|
|
18
|
+
"filter",
|
|
19
|
+
"group",
|
|
20
|
+
"groupSummary",
|
|
21
|
+
"parentIds",
|
|
22
|
+
"requireGroupCount",
|
|
23
|
+
"requireTotalCount",
|
|
24
|
+
"searchExpr",
|
|
25
|
+
"searchOperation",
|
|
26
|
+
"searchValue",
|
|
27
|
+
"select",
|
|
28
|
+
"sort",
|
|
29
|
+
"skip",
|
|
30
|
+
"take",
|
|
31
|
+
"totalSummary",
|
|
32
|
+
"userData"
|
|
33
|
+
].forEach(function(i) {
|
|
34
|
+
if(i in loadOptions && isNotEmpty(loadOptions[i])) {
|
|
35
|
+
params[i] = JSON.stringify(loadOptions[i]);
|
|
36
|
+
}
|
|
37
|
+
});
|
|
38
|
+
|
|
39
|
+
$.getJSON(`/b6/v0/${baseId}/${tableId}`, params)
|
|
40
|
+
.done(function(response) {
|
|
41
|
+
d.resolve(response.data, {
|
|
42
|
+
totalCount: response.totalCount,
|
|
43
|
+
summary: response.summary,
|
|
44
|
+
groupCount: response.groupCount
|
|
45
|
+
});
|
|
46
|
+
})
|
|
47
|
+
.fail(function() { throw "Data loading error" });
|
|
48
|
+
return d.promise();
|
|
49
|
+
},
|
|
50
|
+
|
|
51
|
+
insert: function(values) {
|
|
52
|
+
var deferred = $.Deferred();
|
|
53
|
+
$.ajax({
|
|
54
|
+
url: `/b6/v0/${baseId}/${tableId}`,
|
|
55
|
+
method: "POST",
|
|
56
|
+
contentType: "application/json",
|
|
57
|
+
data: JSON.stringify(values)
|
|
58
|
+
})
|
|
59
|
+
.done(deferred.resolve)
|
|
60
|
+
.fail(function(e){
|
|
61
|
+
deferred.reject("Insertion failed");
|
|
62
|
+
});
|
|
63
|
+
return deferred.promise();
|
|
64
|
+
},
|
|
65
|
+
remove: function(key) {
|
|
66
|
+
var deferred = $.Deferred();
|
|
67
|
+
$.ajax({
|
|
68
|
+
url: `/b6/v0/${baseId}/${tableId}/` + encodeURIComponent(key),
|
|
69
|
+
method: "DELETE"
|
|
70
|
+
})
|
|
71
|
+
.done(deferred.resolve)
|
|
72
|
+
.fail(function(e){
|
|
73
|
+
deferred.reject("Deletion failed");
|
|
74
|
+
});
|
|
75
|
+
return deferred.promise();
|
|
76
|
+
},
|
|
77
|
+
update: function(key, values) {
|
|
78
|
+
var deferred = $.Deferred();
|
|
79
|
+
$.ajax({
|
|
80
|
+
url: `/b6/v0/${baseId}/${tableId}/` + encodeURIComponent(key),
|
|
81
|
+
method: "PUT",
|
|
82
|
+
contentType: "application/json",
|
|
83
|
+
data: JSON.stringify(values)
|
|
84
|
+
})
|
|
85
|
+
.done(deferred.resolve)
|
|
86
|
+
.fail(function(e){
|
|
87
|
+
deferred.reject("Update failed");
|
|
88
|
+
});
|
|
89
|
+
return deferred.promise();
|
|
90
|
+
}
|
|
91
|
+
// Needed to process selected value(s) in the SelectBox, Lookup, Autocomplete, and DropDownBox
|
|
92
|
+
// byKey: function(key) {
|
|
93
|
+
// var d = new $.Deferred();
|
|
94
|
+
// $.get('https://mydomain.com/MyDataService?id=' + key)
|
|
95
|
+
// .done(function(result) {
|
|
96
|
+
// d.resolve(result);
|
|
97
|
+
// });
|
|
98
|
+
// return d.promise();
|
|
99
|
+
// }
|
|
100
|
+
});
|
|
101
|
+
|
|
102
|
+
|
|
103
|
+
const columns = table.fields.map(field => {
|
|
104
|
+
let dataType;
|
|
105
|
+
|
|
106
|
+
// 根据字段类型设置 dataType
|
|
107
|
+
switch (field.type) {
|
|
108
|
+
case 'text':
|
|
109
|
+
dataType = 'string';
|
|
110
|
+
break;
|
|
111
|
+
case 'number':
|
|
112
|
+
dataType = 'number';
|
|
113
|
+
break;
|
|
114
|
+
case 'date':
|
|
115
|
+
dataType = 'date';
|
|
116
|
+
break;
|
|
117
|
+
case 'datetime':
|
|
118
|
+
dataType = 'datetime';
|
|
119
|
+
break;
|
|
120
|
+
case 'boolean':
|
|
121
|
+
dataType = 'boolean';
|
|
122
|
+
break;
|
|
123
|
+
default:
|
|
124
|
+
dataType = 'string'; // 默认类型
|
|
125
|
+
}
|
|
126
|
+
|
|
127
|
+
return {
|
|
128
|
+
dataField: field.name.toLowerCase(), // 假设字段名需要小写
|
|
129
|
+
caption: field.name,
|
|
130
|
+
dataType: dataType,
|
|
131
|
+
};
|
|
132
|
+
});
|
|
133
|
+
|
|
134
|
+
$('#gridContainer').dxDataGrid({
|
|
135
|
+
dataSource: customDataSource,
|
|
136
|
+
paging: {
|
|
137
|
+
pageSize: 10,
|
|
138
|
+
},
|
|
139
|
+
pager: {
|
|
140
|
+
visible: true,
|
|
141
|
+
showPageSizeSelector: true,
|
|
142
|
+
allowedPageSizes: [10, 25, 50, 100],
|
|
143
|
+
},
|
|
144
|
+
remoteOperations: true,
|
|
145
|
+
searchPanel: {
|
|
146
|
+
visible: true,
|
|
147
|
+
highlightCaseSensitive: true,
|
|
148
|
+
},
|
|
149
|
+
groupPanel: { visible: true },
|
|
150
|
+
grouping: {
|
|
151
|
+
autoExpandAll: false,
|
|
152
|
+
},
|
|
153
|
+
editing: {
|
|
154
|
+
mode: 'popup',
|
|
155
|
+
allowUpdating: true,
|
|
156
|
+
allowAdding: true,
|
|
157
|
+
allowDeleting: true,
|
|
158
|
+
popup: {
|
|
159
|
+
title: 'Employee Info',
|
|
160
|
+
showTitle: true,
|
|
161
|
+
width: 700,
|
|
162
|
+
height: 525,
|
|
163
|
+
},
|
|
164
|
+
},
|
|
165
|
+
filterPanel: { visible: true },
|
|
166
|
+
headerFilter: { visible: true },
|
|
167
|
+
selection: {
|
|
168
|
+
mode: 'multiple',
|
|
169
|
+
},
|
|
170
|
+
allowColumnReordering: true,
|
|
171
|
+
allowColumnResizing: true,
|
|
172
|
+
columnAutoWidth: true,
|
|
173
|
+
columnChooser: {
|
|
174
|
+
enabled: true,
|
|
175
|
+
},
|
|
176
|
+
columnFixing: {
|
|
177
|
+
enabled: true,
|
|
178
|
+
},
|
|
179
|
+
rowAlternationEnabled: true,
|
|
180
|
+
showBorders: true,
|
|
181
|
+
width: '100%',
|
|
182
|
+
columns: columns,
|
|
183
|
+
export: {
|
|
184
|
+
enabled: true,
|
|
185
|
+
allowExportSelectedData: true,
|
|
186
|
+
},
|
|
187
|
+
onExporting(e) {
|
|
188
|
+
const workbook = new ExcelJS.Workbook();
|
|
189
|
+
const worksheet = workbook.addWorksheet(table.name);
|
|
190
|
+
|
|
191
|
+
DevExpress.excelExporter.exportDataGrid({
|
|
192
|
+
component: e.component,
|
|
193
|
+
worksheet,
|
|
194
|
+
autoFilterEnabled: true,
|
|
195
|
+
}).then(() => {
|
|
196
|
+
workbook.xlsx.writeBuffer().then((buffer) => {
|
|
197
|
+
saveAs(new Blob([buffer], { type: 'application/octet-stream' }),`${table.name}.xlsx`);
|
|
198
|
+
});
|
|
199
|
+
});
|
|
200
|
+
},
|
|
201
|
+
onContentReady(e) {
|
|
202
|
+
},
|
|
203
|
+
});
|
|
204
|
+
}
|
|
205
|
+
|
|
206
|
+
$(() => {initializeGrid()})
|
|
207
|
+
|
|
@@ -0,0 +1,30 @@
|
|
|
1
|
+
<!DOCTYPE html>
|
|
2
|
+
<html xmlns="http://www.w3.org/1999/xhtml" lang="en">
|
|
3
|
+
<head>
|
|
4
|
+
<title>Pivot Grid</title>
|
|
5
|
+
<meta http-equiv="X-UA-Compatible" content="IE=edge" />
|
|
6
|
+
<meta http-equiv="Content-Type" content="text/html; charset=utf-8" />
|
|
7
|
+
<meta name="viewport" content="width=device-width, initial-scale=1.0, maximum-scale=5.0" />
|
|
8
|
+
<script src="https://cdn.jsdelivr.net/npm/jquery@3.5.1/dist/jquery.min.js"></script>
|
|
9
|
+
<script src="https://cdn.jsdelivr.net/npm/cldrjs@0.4.4/dist/cldr.min.js"></script>
|
|
10
|
+
<script src="https://cdn.jsdelivr.net/npm/cldrjs@0.4.4/dist/cldr/event.js"></script>
|
|
11
|
+
<script src="https://cdn.jsdelivr.net/npm/cldrjs@0.4.4/dist/cldr/supplemental.min.js"></script>
|
|
12
|
+
<script src="https://cdn.jsdelivr.net/npm/cldrjs@0.4.4/dist/cldr/unresolved.min.js"></script>
|
|
13
|
+
<script src="https://cdn.jsdelivr.net/npm/exceljs@4.4.0/dist/exceljs.min.js"></script>
|
|
14
|
+
<script src="https://cdn.jsdelivr.net/npm/filesaver.js@1.3.4/FileSaver.js"></script>
|
|
15
|
+
<link rel="stylesheet" type="text/css" href="https://cdn.jsdelivr.net/npm/devextreme@22.2.14/dist/css/dx.material.blue.light.css" />
|
|
16
|
+
<script src="https://cdn.jsdelivr.net/npm/devextreme@22.2.14/dist/js/dx.all.js"></script>
|
|
17
|
+
<!-- <script src="https://cdn.jsdelivr.net/npm/devextreme-aspnet-data@4.0.2/js/dx.aspnet.data.js"></script> -->
|
|
18
|
+
|
|
19
|
+
<link rel="stylesheet" type="text/css" href="styles.css" />
|
|
20
|
+
<script src="index.js"></script>
|
|
21
|
+
</head>
|
|
22
|
+
<body class="dx-viewport">
|
|
23
|
+
<div class="demo-container">
|
|
24
|
+
<div id="pivotgrid-demo">
|
|
25
|
+
<div id="pivotgrid-chart"></div>
|
|
26
|
+
<div id="pivotgrid"></div>
|
|
27
|
+
</div>
|
|
28
|
+
</div>
|
|
29
|
+
</body>
|
|
30
|
+
</html>
|
|
@@ -0,0 +1,109 @@
|
|
|
1
|
+
async function initializeGrid(baseId = 'test', tableId='test') {
|
|
2
|
+
const tableResponse = await fetch(`/b6/v0/meta/bases/${baseId}/tables/${tableId}`);
|
|
3
|
+
const table = await tableResponse.json();
|
|
4
|
+
|
|
5
|
+
console.log(table)
|
|
6
|
+
|
|
7
|
+
function isNotEmpty(value) {
|
|
8
|
+
return value !== undefined && value !== null && value !== "";
|
|
9
|
+
}
|
|
10
|
+
|
|
11
|
+
var customDataSource = {
|
|
12
|
+
key: "_id",
|
|
13
|
+
remoteOperations: true,
|
|
14
|
+
load: function(loadOptions) {
|
|
15
|
+
var d = $.Deferred();
|
|
16
|
+
var params = {};
|
|
17
|
+
|
|
18
|
+
[
|
|
19
|
+
"filter",
|
|
20
|
+
"group",
|
|
21
|
+
"groupSummary",
|
|
22
|
+
"parentIds",
|
|
23
|
+
"requireGroupCount",
|
|
24
|
+
"requireTotalCount",
|
|
25
|
+
"searchExpr",
|
|
26
|
+
"searchOperation",
|
|
27
|
+
"searchValue",
|
|
28
|
+
"select",
|
|
29
|
+
"sort",
|
|
30
|
+
"skip",
|
|
31
|
+
"take",
|
|
32
|
+
"totalSummary",
|
|
33
|
+
"userData"
|
|
34
|
+
].forEach(function(i) {
|
|
35
|
+
if(i in loadOptions && isNotEmpty(loadOptions[i])) {
|
|
36
|
+
params[i] = JSON.stringify(loadOptions[i]);
|
|
37
|
+
}
|
|
38
|
+
});
|
|
39
|
+
|
|
40
|
+
$.getJSON(`/b6/v0/${baseId}/${tableId}`, params)
|
|
41
|
+
.done(function(response) {
|
|
42
|
+
d.resolve(response.data, {
|
|
43
|
+
totalCount: response.totalCount,
|
|
44
|
+
summary: response.summary,
|
|
45
|
+
groupCount: response.groupCount
|
|
46
|
+
});
|
|
47
|
+
})
|
|
48
|
+
.fail(function() { throw "Data loading error" });
|
|
49
|
+
return d.promise();
|
|
50
|
+
},
|
|
51
|
+
};
|
|
52
|
+
|
|
53
|
+
const pivotGridChart = $('#pivotgrid-chart').dxChart({
|
|
54
|
+
commonSeriesSettings: {
|
|
55
|
+
type: 'bar',
|
|
56
|
+
},
|
|
57
|
+
tooltip: {
|
|
58
|
+
enabled: true,
|
|
59
|
+
format: 'currency',
|
|
60
|
+
customizeTooltip(args) {
|
|
61
|
+
return {
|
|
62
|
+
html: `${args.seriesName} | Total<div class='currency'>${args.valueText}</div>`,
|
|
63
|
+
};
|
|
64
|
+
},
|
|
65
|
+
},
|
|
66
|
+
size: {
|
|
67
|
+
height: 200,
|
|
68
|
+
},
|
|
69
|
+
adaptiveLayout: {
|
|
70
|
+
width: 450,
|
|
71
|
+
},
|
|
72
|
+
}).dxChart('instance');
|
|
73
|
+
|
|
74
|
+
const pivotGrid = $('#pivotgrid').dxPivotGrid({
|
|
75
|
+
allowSortingBySummary: true,
|
|
76
|
+
allowFiltering: true,
|
|
77
|
+
showBorders: true,
|
|
78
|
+
showColumnGrandTotals: false,
|
|
79
|
+
showRowGrandTotals: false,
|
|
80
|
+
showRowTotals: false,
|
|
81
|
+
showColumnTotals: false,
|
|
82
|
+
fieldChooser: {
|
|
83
|
+
enabled: true,
|
|
84
|
+
allowSearch: true,
|
|
85
|
+
height: 600,
|
|
86
|
+
},
|
|
87
|
+
headerFilter: {
|
|
88
|
+
search: {
|
|
89
|
+
enabled: true,
|
|
90
|
+
},
|
|
91
|
+
showRelevantValues: true,
|
|
92
|
+
width: 300,
|
|
93
|
+
height: 400,
|
|
94
|
+
},
|
|
95
|
+
fieldPanel: {
|
|
96
|
+
visible: true,
|
|
97
|
+
},
|
|
98
|
+
dataSource: customDataSource,
|
|
99
|
+
}).dxPivotGrid('instance');
|
|
100
|
+
|
|
101
|
+
pivotGrid.bindChart(pivotGridChart, {
|
|
102
|
+
dataFieldsDisplayMode: 'splitPanes',
|
|
103
|
+
alternateDataFields: false,
|
|
104
|
+
});
|
|
105
|
+
}
|
|
106
|
+
|
|
107
|
+
|
|
108
|
+
$(() => {initializeGrid()})
|
|
109
|
+
|
|
@@ -0,0 +1,15 @@
|
|
|
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
|
+
|