@steedos/service-pages 2.2.19 → 2.2.22
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/main/default/client/builder.client.js +45 -52
- package/main/default/client/onWindowMessage.client.js +1 -21
- package/main/default/client/page.render.client.js +22 -12
- package/main/default/objects/page_assignments/fields/is_system.field.yml +1 -1
- package/main/default/objects/pages/buttons/deploy.button.js +9 -2
- package/main/default/objects/pages/buttons/disable.button.js +1 -1
- package/main/default/objects/pages/buttons/enable.button.js +1 -1
- package/main/default/objects/pages/buttons/showDesign.button.js +2 -1
- package/main/default/objects/pages/fields/is_system.field.yml +1 -1
- package/main/default/routes/design.html +52 -7
- package/main/default/routes/page_design.ejs +44 -0
- package/main/default/routes/page_design.router.js +31 -4
- package/main/default/services/page.service.js +2 -1
- package/main/default/triggers/page_assignments_metadata.trigger.js +102 -0
- package/main/default/triggers/page_versions_metadata.trigger.js +96 -0
- package/main/default/triggers/pages_metadata.trigger.js +50 -14
- package/package.json +2 -2
- package/package.service.js +4 -28
|
@@ -3,6 +3,10 @@
|
|
|
3
3
|
* @Date: 2022-03-28 09:44:02
|
|
4
4
|
* @Description:
|
|
5
5
|
*/
|
|
6
|
+
|
|
7
|
+
//window.MonacoEnvironment 始终返回undefined
|
|
8
|
+
; Object.defineProperty(window, 'MonacoEnvironment', {set: ()=>{}, get: ()=>undefined});
|
|
9
|
+
|
|
6
10
|
; (function () {
|
|
7
11
|
function _innerWaitForThing(obj, path, func){
|
|
8
12
|
const timeGap = 100;
|
|
@@ -37,60 +41,49 @@
|
|
|
37
41
|
return _innerWaitForThing(obj, path, func);
|
|
38
42
|
};
|
|
39
43
|
|
|
40
|
-
window.SteedosMonacoEnvironment = window.MonacoEnvironment = {
|
|
41
|
-
|
|
42
|
-
|
|
43
|
-
|
|
44
|
-
|
|
45
|
-
|
|
46
|
-
|
|
47
|
-
|
|
48
|
-
|
|
49
|
-
};
|
|
44
|
+
// window.SteedosMonacoEnvironment = window.MonacoEnvironment = {
|
|
45
|
+
// getWorkerUrl: function(workerId, label) {
|
|
46
|
+
// return `data:text/javascript;charset=utf-8,${encodeURIComponent(`
|
|
47
|
+
// self.MonacoEnvironment = {
|
|
48
|
+
// baseUrl: '/unpkg.com/monaco-editor/min/'
|
|
49
|
+
// };
|
|
50
|
+
// importScripts('/unpkg.com/monaco-editor/min/vs/base/worker/workerMain.js');`
|
|
51
|
+
// )}`;
|
|
52
|
+
// }
|
|
53
|
+
// };
|
|
54
|
+
|
|
55
|
+
// Object.defineProperty(window, 'MonacoEnvironment', {set: ()=>{}, get: ()=>window.SteedosMonacoEnvironment})
|
|
56
|
+
|
|
57
|
+
|
|
58
|
+
if (window.define)
|
|
59
|
+
window.define.amd = undefined;
|
|
60
|
+
|
|
61
|
+
window.ReactDOM = ReactDom;
|
|
50
62
|
|
|
51
|
-
|
|
63
|
+
// const BuilderSDK = BuilderReact;
|
|
64
|
+
|
|
65
|
+
// window.BuilderReact = BuilderReact;
|
|
66
|
+
// window.BuilderSDK = BuilderSDK;
|
|
67
|
+
|
|
68
|
+
window.Builder = BuilderReact.Builder;
|
|
69
|
+
|
|
70
|
+
window.BuilderComponent = BuilderReact.BuilderComponent;
|
|
71
|
+
|
|
72
|
+
// window.builder = BuilderReact.builder;
|
|
73
|
+
|
|
74
|
+
Builder.set({
|
|
75
|
+
rootUrl: __meteor_runtime_config__.ROOT_URL,
|
|
76
|
+
unpkgUrl: '/unpkg.com'
|
|
77
|
+
})
|
|
78
|
+
|
|
79
|
+
if(Meteor.settings.public.page && Meteor.settings.public.page.assetUrls){
|
|
80
|
+
const defaultAssetsUrls = Meteor.settings.public.page.assetUrls.split(',')
|
|
81
|
+
Builder.registerRemoteAssets(defaultAssetsUrls)
|
|
82
|
+
}
|
|
83
|
+
|
|
84
|
+
window.postMessage({ type: "Builder.loaded" })
|
|
52
85
|
|
|
53
86
|
})();
|
|
54
87
|
|
|
55
|
-
|
|
56
|
-
return new Promise((resolve, reject) => {
|
|
57
|
-
const script = document.createElement('script');
|
|
58
|
-
script.src = src;
|
|
59
|
-
script.addEventListener('load', resolve);
|
|
60
|
-
script.addEventListener('error', e => reject(e.error));
|
|
61
|
-
document.head.appendChild(script);
|
|
62
|
-
});
|
|
63
|
-
}
|
|
64
|
-
|
|
65
|
-
injectScript('/unpkg.com/@steedos-builder/react/dist/builder-react.unpkg.js')
|
|
66
|
-
.then(() => {
|
|
67
|
-
console.log('Builder React loaded!');
|
|
68
|
-
if (window.define)
|
|
69
|
-
window.define.amd = undefined;
|
|
70
|
-
window.ReactDOM = ReactDom;
|
|
71
|
-
|
|
72
|
-
const BuilderSDK = BuilderReact;
|
|
73
|
-
|
|
74
|
-
window.BuilderReact = BuilderReact;
|
|
75
|
-
window.BuilderSDK = BuilderSDK;
|
|
76
|
-
|
|
77
|
-
window.Builder = BuilderReact.Builder;
|
|
78
|
-
window.BuilderComponent = BuilderReact.BuilderComponent;
|
|
79
|
-
window.builder = BuilderReact.builder;
|
|
80
|
-
|
|
81
|
-
Builder.set({
|
|
82
|
-
rootUrl: __meteor_runtime_config__.ROOT_URL,
|
|
83
|
-
unpkgUrl: Meteor.settings.public.unpkgUrl || 'https://unpkg.com'
|
|
84
|
-
})
|
|
85
|
-
|
|
86
|
-
if(Meteor.settings.public.page && Meteor.settings.public.page.assetUrls){
|
|
87
|
-
const defaultAssetsUrls = Meteor.settings.public.page.assetUrls.split(',')
|
|
88
|
-
Builder.registerRemoteAssets(defaultAssetsUrls)
|
|
89
|
-
}
|
|
90
|
-
|
|
91
|
-
window.postMessage({ type: "Builder.loaded" })
|
|
92
|
-
|
|
93
|
-
}).catch(error => {
|
|
94
|
-
console.error(error);
|
|
95
|
-
});
|
|
88
|
+
|
|
96
89
|
|
|
@@ -36,24 +36,4 @@ window.addEventListener('message', function (event) {
|
|
|
36
36
|
}
|
|
37
37
|
|
|
38
38
|
}
|
|
39
|
-
});
|
|
40
|
-
|
|
41
|
-
|
|
42
|
-
window.addEventListener('message', function (event) {
|
|
43
|
-
const { data } = event;
|
|
44
|
-
if (data.type === 'builder.assetsLoaded') {
|
|
45
|
-
waitForThing(window, 'Builder').then(()=>{
|
|
46
|
-
Builder.initMonaco({
|
|
47
|
-
waitSeconds: 60,
|
|
48
|
-
baseUrl: '',
|
|
49
|
-
paths: {
|
|
50
|
-
'vs': '/unpkg.com/monaco-editor/min/vs',
|
|
51
|
-
"vs/language/css/cssMode":"/unpkg.com/monaco-editor/min/vs/language/css/cssMode",
|
|
52
|
-
"vs/language/html/htmlMode":"/unpkg.com/monaco-editor/min/vs/language/html/htmlMode",
|
|
53
|
-
"vs/language/typescript/tsMode":"/unpkg.com/monaco-editor/min/vs/language/typescript/tsMode",
|
|
54
|
-
"vs/language/json/jsonMode":"/unpkg.com/monaco-editor/min/vs/language/json/jsonMode"
|
|
55
|
-
}
|
|
56
|
-
})
|
|
57
|
-
})
|
|
58
|
-
}
|
|
59
|
-
})
|
|
39
|
+
});
|
|
@@ -106,6 +106,18 @@ Steedos.Page.render = function (root, page, data) {
|
|
|
106
106
|
|
|
107
107
|
if (page.render_engine && page.render_engine != 'redash') {
|
|
108
108
|
|
|
109
|
+
let schema = typeof page.schema === 'string' ? JSON.parse(page.schema) : page.schema;
|
|
110
|
+
const defData = Object.assign({}, data, {
|
|
111
|
+
context: {
|
|
112
|
+
rootUrl: __meteor_runtime_config__.ROOT_URL,
|
|
113
|
+
tenantId: Creator.USER_CONTEXT.spaceId,
|
|
114
|
+
userId: Creator.USER_CONTEXT.userId,
|
|
115
|
+
authToken: Creator.USER_CONTEXT.user.authToken
|
|
116
|
+
}
|
|
117
|
+
})
|
|
118
|
+
|
|
119
|
+
schema = lodash.defaultsDeep(defData , schema);
|
|
120
|
+
|
|
109
121
|
const pageContentData = {
|
|
110
122
|
"blocks": [
|
|
111
123
|
{
|
|
@@ -115,15 +127,8 @@ Steedos.Page.render = function (root, page, data) {
|
|
|
115
127
|
"component": {
|
|
116
128
|
"name": upperFirst(page.render_engine),
|
|
117
129
|
"options": {
|
|
118
|
-
"schema":
|
|
119
|
-
"data":
|
|
120
|
-
context: {
|
|
121
|
-
rootUrl: __meteor_runtime_config__.ROOT_URL,
|
|
122
|
-
tenantId: Creator.USER_CONTEXT.spaceId,
|
|
123
|
-
userId: Creator.USER_CONTEXT.userId,
|
|
124
|
-
authToken: Creator.USER_CONTEXT.user.authToken
|
|
125
|
-
}
|
|
126
|
-
})
|
|
130
|
+
"schema": schema,
|
|
131
|
+
"data": data
|
|
127
132
|
}
|
|
128
133
|
},
|
|
129
134
|
}
|
|
@@ -143,7 +148,7 @@ Steedos.Page.render = function (root, page, data) {
|
|
|
143
148
|
}
|
|
144
149
|
}, root)
|
|
145
150
|
|
|
146
|
-
|
|
151
|
+
Promise.all([
|
|
147
152
|
waitForThing(window, 'BuilderComponent'),
|
|
148
153
|
waitForThing(Builder.components, upperFirst(page.render_engine), findComponent)
|
|
149
154
|
]).then(()=>{
|
|
@@ -155,6 +160,8 @@ Steedos.Page.render = function (root, page, data) {
|
|
|
155
160
|
}, root)
|
|
156
161
|
});
|
|
157
162
|
}
|
|
163
|
+
|
|
164
|
+
return root;
|
|
158
165
|
};
|
|
159
166
|
|
|
160
167
|
Steedos.Page.App.render = function (template, pageName, app_id) {
|
|
@@ -172,10 +179,12 @@ Steedos.Page.App.render = function (template, pageName, app_id) {
|
|
|
172
179
|
$(".page-template-root")[0].appendChild(modalRoot);
|
|
173
180
|
}
|
|
174
181
|
|
|
182
|
+
const container = $("#" + rootId)[0];
|
|
183
|
+
|
|
175
184
|
const page = Steedos.Page.getPage('app', app_id, null, null, pageName);
|
|
176
185
|
if (page) {
|
|
177
186
|
if (page.render_engine && page.render_engine != 'redash') {
|
|
178
|
-
return Steedos.Page.render(
|
|
187
|
+
return Steedos.Page.render(container, page, {
|
|
179
188
|
appId: app_id
|
|
180
189
|
});
|
|
181
190
|
}
|
|
@@ -183,7 +192,8 @@ Steedos.Page.App.render = function (template, pageName, app_id) {
|
|
|
183
192
|
|
|
184
193
|
SteedosUI.render(stores.ComponentRegistry.components.PublicPage, {
|
|
185
194
|
token: pageName
|
|
186
|
-
},
|
|
195
|
+
}, container);
|
|
196
|
+
return container
|
|
187
197
|
};
|
|
188
198
|
|
|
189
199
|
Steedos.Page.Listview.render = function (template, objectApiName) {
|
|
@@ -1,3 +1,10 @@
|
|
|
1
|
+
/*
|
|
2
|
+
* @Author: baozhoutaon@hotoa.com
|
|
3
|
+
* @Date: 2022-03-29 20:33:44
|
|
4
|
+
* @LastEditors: sunhaolin@hotoa.com
|
|
5
|
+
* @LastEditTime: 2022-04-10 14:20:32
|
|
6
|
+
* @Description:
|
|
7
|
+
*/
|
|
1
8
|
module.exports = {
|
|
2
9
|
deploy: function (object_name, record_id) {
|
|
3
10
|
$(document.body).addClass('loading');
|
|
@@ -19,7 +26,7 @@ module.exports = {
|
|
|
19
26
|
};
|
|
20
27
|
Steedos.authRequest(url, options);
|
|
21
28
|
},
|
|
22
|
-
deployVisible: function () {
|
|
23
|
-
return
|
|
29
|
+
deployVisible: function (object_name, record_id, permission, record) {
|
|
30
|
+
return record && !record.is_system;
|
|
24
31
|
}
|
|
25
32
|
}
|
|
@@ -1,6 +1,7 @@
|
|
|
1
1
|
module.exports = {
|
|
2
2
|
showDesign: function (object_name, record_id) {
|
|
3
|
-
Steedos.openWindow(
|
|
3
|
+
// Steedos.openWindow();
|
|
4
|
+
document.location = Steedos.absoluteUrl(`/api/pageDesign?pageId=${record_id}`);
|
|
4
5
|
},
|
|
5
6
|
showDesignVisible: function (object_name, record_id, record_permissions) {
|
|
6
7
|
var perms, record;
|
|
@@ -14,17 +14,62 @@
|
|
|
14
14
|
var params = new URLSearchParams(location.search);
|
|
15
15
|
var pageId = params.get("pageId");
|
|
16
16
|
// /pageVersion/:pageId/latest
|
|
17
|
-
|
|
17
|
+
const dataContext = DataContext;
|
|
18
18
|
axios.get(`/service/api/page/pageVersion/${params.get("pageId")}/latest`).then(function (response) {
|
|
19
|
-
let
|
|
19
|
+
let result = response.data;
|
|
20
|
+
|
|
21
|
+
let schema = result?.schema;
|
|
22
|
+
let objectName = result?.object_name;
|
|
23
|
+
let pageType = result?.type;
|
|
20
24
|
if (typeof schema === "string") {
|
|
21
25
|
schema = JSON.parse(schema)
|
|
22
26
|
}
|
|
23
|
-
|
|
24
|
-
|
|
25
|
-
|
|
26
|
-
|
|
27
|
-
|
|
27
|
+
if(!schema){
|
|
28
|
+
schema = {
|
|
29
|
+
"type": "page",
|
|
30
|
+
"body": [],
|
|
31
|
+
"regions": [
|
|
32
|
+
"body"
|
|
33
|
+
]
|
|
34
|
+
};
|
|
35
|
+
}
|
|
36
|
+
|
|
37
|
+
if(!schema.data){
|
|
38
|
+
schema.data = {}
|
|
39
|
+
}
|
|
40
|
+
|
|
41
|
+
if(!schema.data.context){
|
|
42
|
+
schema.data.context = {}
|
|
43
|
+
}
|
|
44
|
+
|
|
45
|
+
schema.data.objectName = objectName;
|
|
46
|
+
|
|
47
|
+
schema.data.context.rootUrl = dataContext.rootUrl;
|
|
48
|
+
schema.data.context.tenantId = dataContext.tenantId;
|
|
49
|
+
schema.data.context.userId = dataContext.userId;
|
|
50
|
+
schema.data.context.authToken = dataContext.authToken;
|
|
51
|
+
|
|
52
|
+
if(objectName && pageType === 'record'){
|
|
53
|
+
axios.get(`/api/v4/${objectName}?$orderby=created desc&$top=1`).then(function (response) {
|
|
54
|
+
const value = response.data?.value;
|
|
55
|
+
if(value.length > 0){
|
|
56
|
+
schema.data.recordId = value[0]._id;
|
|
57
|
+
}
|
|
58
|
+
const data = {
|
|
59
|
+
AmisSchema: schema
|
|
60
|
+
};
|
|
61
|
+
console.log("record data", data)
|
|
62
|
+
comp.data = data;
|
|
63
|
+
});
|
|
64
|
+
}else{
|
|
65
|
+
const data = {
|
|
66
|
+
AmisSchema: schema
|
|
67
|
+
};
|
|
68
|
+
console.log("record data", data)
|
|
69
|
+
comp.data = data;
|
|
70
|
+
}
|
|
71
|
+
|
|
72
|
+
|
|
28
73
|
}).catch(function (error) {
|
|
29
74
|
// handle error
|
|
30
75
|
console.log(error);
|
|
@@ -0,0 +1,44 @@
|
|
|
1
|
+
<html>
|
|
2
|
+
<head>
|
|
3
|
+
<script src="https://npm.elemecdn.com/@steedos-builder/fiddle@0.0.5/dist/builder-fiddle.umd.js"></script>
|
|
4
|
+
</head>
|
|
5
|
+
|
|
6
|
+
<body>
|
|
7
|
+
|
|
8
|
+
<builder-fiddle host="<%=builderHost%>"></builder-fiddle>
|
|
9
|
+
|
|
10
|
+
<script>
|
|
11
|
+
let comp = document.querySelector( 'builder-fiddle' )
|
|
12
|
+
const data = {
|
|
13
|
+
AmisSchema: {
|
|
14
|
+
"type": "page",
|
|
15
|
+
"title": "Steedos Form Page",
|
|
16
|
+
"body": [
|
|
17
|
+
{
|
|
18
|
+
"type": "form",
|
|
19
|
+
"body": [
|
|
20
|
+
{
|
|
21
|
+
"type": "input-text",
|
|
22
|
+
"name": "a",
|
|
23
|
+
"label": "Name"
|
|
24
|
+
}
|
|
25
|
+
]
|
|
26
|
+
}
|
|
27
|
+
]
|
|
28
|
+
}
|
|
29
|
+
};
|
|
30
|
+
// comp.data = data;
|
|
31
|
+
|
|
32
|
+
const settings = {
|
|
33
|
+
assetUrls: '<%=assetUrls%>',
|
|
34
|
+
rootUrl: '<%=rootUrl%>',
|
|
35
|
+
userId: '<%=userId%>',
|
|
36
|
+
tenantId: '<%=tenantId%>',
|
|
37
|
+
authToken: '<%=authToken%>',
|
|
38
|
+
pageId: '<%=pageId%>',
|
|
39
|
+
}
|
|
40
|
+
console.log(settings)
|
|
41
|
+
comp.settings = settings
|
|
42
|
+
</script>
|
|
43
|
+
</body>
|
|
44
|
+
</html>
|
|
@@ -6,6 +6,7 @@
|
|
|
6
6
|
const express = require("express");
|
|
7
7
|
const router = express.Router();
|
|
8
8
|
const core = require('@steedos/core');
|
|
9
|
+
const ejs = require('ejs');
|
|
9
10
|
const fs = require('fs');
|
|
10
11
|
const _ = require('lodash');
|
|
11
12
|
router.get('/api/pageDesign', core.requireAuthentication, async function (req, res) {
|
|
@@ -14,13 +15,39 @@ router.get('/api/pageDesign', core.requireAuthentication, async function (req, r
|
|
|
14
15
|
const userSession = req.user;
|
|
15
16
|
let assetUrl = "";
|
|
16
17
|
if(process.env.STEEDOS_PUBLIC_PAGE_ASSETURLS && _.isString(process.env.STEEDOS_PUBLIC_PAGE_ASSETURLS)){
|
|
17
|
-
|
|
18
|
+
assetUrls = process.env.STEEDOS_PUBLIC_PAGE_ASSETURLS.split(',');
|
|
18
19
|
assetUrl = `assetUrl=${assetUrls.join("&assetUrl=")}&`;
|
|
19
20
|
}
|
|
20
|
-
const steedosBuilderHost = `https://builder.steedos.com/amis?${assetUrl}rootUrl=${__meteor_runtime_config__.ROOT_URL}&authToken=${userSession.authToken}&userId=${userSession.userId}&tenantId=${userSession.spaceId}&__q=`;
|
|
21
21
|
|
|
22
|
-
|
|
23
|
-
|
|
22
|
+
// const dataContext = {
|
|
23
|
+
// rootUrl: __meteor_runtime_config__.ROOT_URL,
|
|
24
|
+
// tenantId: userSession.spaceId,
|
|
25
|
+
// userId: userSession.userId,
|
|
26
|
+
// authToken: userSession.authToken
|
|
27
|
+
// }
|
|
28
|
+
|
|
29
|
+
const retUrl = __meteor_runtime_config__.ROOT_URL + '/app/admin/pages/view/' + req.query.pageId
|
|
30
|
+
const builderHost = `https://builder.steedos.com/amis?${assetUrl}&retUrl=${retUrl}`;
|
|
31
|
+
|
|
32
|
+
// let data = fs.readFileSync(__dirname+'/design.html', 'utf8');
|
|
33
|
+
// res.send(data.replace('SteedosBuilderHost',steedosBuilderHost).replace('DataContext', JSON.stringify(dataContext)));
|
|
34
|
+
|
|
35
|
+
const filename = __dirname+'/page_design.ejs'
|
|
36
|
+
const data = {
|
|
37
|
+
builderHost,
|
|
38
|
+
assetUrls,
|
|
39
|
+
rootUrl: __meteor_runtime_config__.ROOT_URL,
|
|
40
|
+
tenantId: userSession.spaceId,
|
|
41
|
+
userId: userSession.userId,
|
|
42
|
+
authToken: userSession.authToken,
|
|
43
|
+
pageId: req.query.pageId,
|
|
44
|
+
}
|
|
45
|
+
const options = {}
|
|
46
|
+
ejs.renderFile(filename, data, options, function(err, str){
|
|
47
|
+
// str => Rendered HTML string
|
|
48
|
+
res.send(str);
|
|
49
|
+
});
|
|
50
|
+
|
|
24
51
|
} catch (error) {
|
|
25
52
|
res.status(500).send({ message: error.message });
|
|
26
53
|
}
|
|
@@ -90,7 +90,8 @@ module.exports = {
|
|
|
90
90
|
// const userSession = ctx.meta.user;
|
|
91
91
|
const { pageId } = ctx.params;
|
|
92
92
|
const pageVersion = await this.getLatestPageVersion(pageId);
|
|
93
|
-
|
|
93
|
+
const page = await objectql.getObject('pages').findOne(pageId)
|
|
94
|
+
return Object.assign(pageVersion || {}, {object_name: page.object_name, type: page.type})
|
|
94
95
|
}
|
|
95
96
|
},
|
|
96
97
|
changePageVersion:{
|
|
@@ -0,0 +1,102 @@
|
|
|
1
|
+
/*
|
|
2
|
+
* @Author: sunhaolin@hotoa.com
|
|
3
|
+
* @Date: 2022-04-10 14:34:08
|
|
4
|
+
* @LastEditors: sunhaolin@hotoa.com
|
|
5
|
+
* @LastEditTime: 2022-04-10 15:24:17
|
|
6
|
+
* @Description:
|
|
7
|
+
*/
|
|
8
|
+
const objectql = require('@steedos/objectql');
|
|
9
|
+
const auth = require('@steedos/auth');
|
|
10
|
+
const _ = require('underscore');
|
|
11
|
+
async function getAll() {
|
|
12
|
+
const schema = objectql.getSteedosSchema();
|
|
13
|
+
const configs = await objectql.registerPage.getAll(schema.broker)
|
|
14
|
+
const dataList = _.pluck(configs, 'metadata');
|
|
15
|
+
let assignments = [];
|
|
16
|
+
_.each(dataList, function (item) {
|
|
17
|
+
if (!item._id) {
|
|
18
|
+
item._id = `${item.name}`
|
|
19
|
+
}
|
|
20
|
+
if (item.pageAssignments) {
|
|
21
|
+
for (const assignment of item.pageAssignments) {
|
|
22
|
+
assignments.push({
|
|
23
|
+
_id: assignment._id,
|
|
24
|
+
app: assignment.app,
|
|
25
|
+
desktop: assignment.desktop,
|
|
26
|
+
is_system: assignment.is_system || false,
|
|
27
|
+
mobile: assignment.mobile,
|
|
28
|
+
page: item._id,
|
|
29
|
+
profile: assignment.profile,
|
|
30
|
+
record_type: assignment.record_type,
|
|
31
|
+
});
|
|
32
|
+
}
|
|
33
|
+
}
|
|
34
|
+
})
|
|
35
|
+
return assignments;
|
|
36
|
+
}
|
|
37
|
+
|
|
38
|
+
module.exports = {
|
|
39
|
+
listenTo: 'page_assignments',
|
|
40
|
+
|
|
41
|
+
beforeFind: async function () {
|
|
42
|
+
delete this.query.fields;
|
|
43
|
+
},
|
|
44
|
+
|
|
45
|
+
beforeAggregate: async function () {
|
|
46
|
+
delete this.query.fields;
|
|
47
|
+
},
|
|
48
|
+
|
|
49
|
+
afterFind: async function () {
|
|
50
|
+
const { spaceId } = this;
|
|
51
|
+
let dataList = await getAll();
|
|
52
|
+
if (dataList) {
|
|
53
|
+
dataList.forEach((doc) => {
|
|
54
|
+
if (!_.find(this.data.values, (value) => {
|
|
55
|
+
return value._id === doc._id
|
|
56
|
+
})) {
|
|
57
|
+
this.data.values.push(doc);
|
|
58
|
+
}
|
|
59
|
+
})
|
|
60
|
+
const records = objectql.getSteedosSchema().metadataDriver.find(this.data.values, this.query, spaceId);
|
|
61
|
+
if (records.length > 0) {
|
|
62
|
+
this.data.values = records;
|
|
63
|
+
} else {
|
|
64
|
+
this.data.values.length = 0;
|
|
65
|
+
}
|
|
66
|
+
}
|
|
67
|
+
|
|
68
|
+
},
|
|
69
|
+
afterAggregate: async function () {
|
|
70
|
+
const { spaceId } = this;
|
|
71
|
+
let dataList = await getAll();
|
|
72
|
+
if (dataList) {
|
|
73
|
+
dataList.forEach((doc) => {
|
|
74
|
+
if (!_.find(this.data.values, (value) => {
|
|
75
|
+
return value._id === doc._id
|
|
76
|
+
})) {
|
|
77
|
+
this.data.values.push(doc);
|
|
78
|
+
}
|
|
79
|
+
})
|
|
80
|
+
const records = objectql.getSteedosSchema().metadataDriver.find(this.data.values, this.query, spaceId);
|
|
81
|
+
if (records.length > 0) {
|
|
82
|
+
this.data.values = records;
|
|
83
|
+
} else {
|
|
84
|
+
this.data.values.length = 0;
|
|
85
|
+
}
|
|
86
|
+
}
|
|
87
|
+
},
|
|
88
|
+
afterCount: async function () {
|
|
89
|
+
delete this.query.fields;
|
|
90
|
+
let result = await objectql.getObject(this.object_name).find(this.query, await auth.getSessionByUserId(this.userId, this.spaceId))
|
|
91
|
+
this.data.values = result.length;
|
|
92
|
+
},
|
|
93
|
+
afterFindOne: async function () {
|
|
94
|
+
if (_.isEmpty(this.data.values)) {
|
|
95
|
+
const all = await getAll();
|
|
96
|
+
const id = this.id;
|
|
97
|
+
this.data.values = _.find(all, function (item) {
|
|
98
|
+
return item._id === id
|
|
99
|
+
});
|
|
100
|
+
}
|
|
101
|
+
}
|
|
102
|
+
}
|
|
@@ -0,0 +1,96 @@
|
|
|
1
|
+
/*
|
|
2
|
+
* @Author: sunhaolin@hotoa.com
|
|
3
|
+
* @Date: 2022-04-10 14:27:24
|
|
4
|
+
* @LastEditors: sunhaolin@hotoa.com
|
|
5
|
+
* @LastEditTime: 2022-04-10 14:33:55
|
|
6
|
+
* @Description:
|
|
7
|
+
*/
|
|
8
|
+
const objectql = require('@steedos/objectql');
|
|
9
|
+
const auth = require('@steedos/auth');
|
|
10
|
+
const _ = require('underscore');
|
|
11
|
+
async function getAll(){
|
|
12
|
+
const schema = objectql.getSteedosSchema();
|
|
13
|
+
const configs = await objectql.registerPage.getAll(schema.broker)
|
|
14
|
+
const dataList = _.pluck(configs, 'metadata');
|
|
15
|
+
let versions = [];
|
|
16
|
+
_.each(dataList, function(item){
|
|
17
|
+
if(!item._id){
|
|
18
|
+
item._id = `${item.name}`
|
|
19
|
+
}
|
|
20
|
+
versions.push({
|
|
21
|
+
_id: item._id,
|
|
22
|
+
description: item.description,
|
|
23
|
+
is_active: false,
|
|
24
|
+
page: item._id,
|
|
25
|
+
schema: item.schema,
|
|
26
|
+
version: 1,
|
|
27
|
+
});
|
|
28
|
+
})
|
|
29
|
+
return versions;
|
|
30
|
+
}
|
|
31
|
+
|
|
32
|
+
module.exports = {
|
|
33
|
+
listenTo: 'page_versions',
|
|
34
|
+
|
|
35
|
+
beforeFind: async function () {
|
|
36
|
+
delete this.query.fields;
|
|
37
|
+
},
|
|
38
|
+
|
|
39
|
+
beforeAggregate: async function () {
|
|
40
|
+
delete this.query.fields;
|
|
41
|
+
},
|
|
42
|
+
|
|
43
|
+
afterFind: async function(){
|
|
44
|
+
const { spaceId } = this;
|
|
45
|
+
let dataList = await getAll();
|
|
46
|
+
if (dataList) {
|
|
47
|
+
dataList.forEach((doc) => {
|
|
48
|
+
if (!_.find(this.data.values, (value) => {
|
|
49
|
+
return value._id === doc._id
|
|
50
|
+
})) {
|
|
51
|
+
this.data.values.push(doc);
|
|
52
|
+
}
|
|
53
|
+
})
|
|
54
|
+
const records = objectql.getSteedosSchema().metadataDriver.find(this.data.values, this.query, spaceId);
|
|
55
|
+
if (records.length > 0) {
|
|
56
|
+
this.data.values = records;
|
|
57
|
+
} else {
|
|
58
|
+
this.data.values.length = 0;
|
|
59
|
+
}
|
|
60
|
+
}
|
|
61
|
+
|
|
62
|
+
},
|
|
63
|
+
afterAggregate: async function(){
|
|
64
|
+
const { spaceId } = this;
|
|
65
|
+
let dataList = await getAll();
|
|
66
|
+
if (dataList) {
|
|
67
|
+
dataList.forEach((doc) => {
|
|
68
|
+
if (!_.find(this.data.values, (value) => {
|
|
69
|
+
return value._id === doc._id
|
|
70
|
+
})) {
|
|
71
|
+
this.data.values.push(doc);
|
|
72
|
+
}
|
|
73
|
+
})
|
|
74
|
+
const records = objectql.getSteedosSchema().metadataDriver.find(this.data.values, this.query, spaceId);
|
|
75
|
+
if (records.length > 0) {
|
|
76
|
+
this.data.values = records;
|
|
77
|
+
} else {
|
|
78
|
+
this.data.values.length = 0;
|
|
79
|
+
}
|
|
80
|
+
}
|
|
81
|
+
},
|
|
82
|
+
afterCount: async function(){
|
|
83
|
+
delete this.query.fields;
|
|
84
|
+
let result = await objectql.getObject(this.object_name).find(this.query, await auth.getSessionByUserId(this.userId, this.spaceId))
|
|
85
|
+
this.data.values = result.length;
|
|
86
|
+
},
|
|
87
|
+
afterFindOne: async function(){
|
|
88
|
+
if(_.isEmpty(this.data.values)){
|
|
89
|
+
const all = await getAll();
|
|
90
|
+
const id = this.id;
|
|
91
|
+
this.data.values = _.find(all, function(item){
|
|
92
|
+
return item._id === id
|
|
93
|
+
});
|
|
94
|
+
}
|
|
95
|
+
}
|
|
96
|
+
}
|
|
@@ -1,3 +1,10 @@
|
|
|
1
|
+
/*
|
|
2
|
+
* @Author: baozhoutao@hotoa.com
|
|
3
|
+
* @Date: 2022-03-28 17:09:20
|
|
4
|
+
* @LastEditors: sunhaolin@hotoa.com
|
|
5
|
+
* @LastEditTime: 2022-04-11 15:23:26
|
|
6
|
+
* @Description:
|
|
7
|
+
*/
|
|
1
8
|
const objectql = require('@steedos/objectql');
|
|
2
9
|
const auth = require('@steedos/auth');
|
|
3
10
|
const _ = require('underscore');
|
|
@@ -14,29 +21,58 @@ async function getAll(){
|
|
|
14
21
|
return dataList;
|
|
15
22
|
}
|
|
16
23
|
|
|
17
|
-
async function get(apiName){
|
|
18
|
-
const schema =objectql.getSteedosSchema();
|
|
19
|
-
const config = await objectql.registerPage.get(schema.broker, apiName)
|
|
20
|
-
return config ? config.metadata : null;
|
|
21
|
-
}
|
|
22
|
-
|
|
23
24
|
module.exports = {
|
|
24
25
|
listenTo: 'pages',
|
|
25
26
|
|
|
26
|
-
|
|
27
|
-
|
|
28
|
-
|
|
27
|
+
beforeFind: async function () {
|
|
28
|
+
delete this.query.fields;
|
|
29
|
+
},
|
|
30
|
+
|
|
31
|
+
beforeAggregate: async function () {
|
|
32
|
+
delete this.query.fields;
|
|
33
|
+
},
|
|
29
34
|
|
|
30
|
-
|
|
35
|
+
afterFind: async function(){
|
|
36
|
+
const { spaceId } = this;
|
|
37
|
+
let dataList = await getAll();
|
|
38
|
+
if (!_.isEmpty(dataList)) {
|
|
39
|
+
dataList.forEach((doc) => {
|
|
40
|
+
if (!_.find(this.data.values, (value) => {
|
|
41
|
+
return value.name === doc.name
|
|
42
|
+
})) {
|
|
43
|
+
this.data.values.push(doc);
|
|
44
|
+
}
|
|
45
|
+
})
|
|
46
|
+
const records = objectql.getSteedosSchema().metadataDriver.find(this.data.values, this.query, spaceId);
|
|
47
|
+
if (records.length > 0) {
|
|
48
|
+
this.data.values = records;
|
|
49
|
+
} else {
|
|
50
|
+
this.data.values.length = 0;
|
|
51
|
+
}
|
|
52
|
+
}
|
|
31
53
|
|
|
32
54
|
},
|
|
33
55
|
afterAggregate: async function(){
|
|
34
|
-
|
|
35
|
-
|
|
36
|
-
|
|
37
|
-
|
|
56
|
+
const { spaceId } = this;
|
|
57
|
+
let dataList = await getAll();
|
|
58
|
+
if (!_.isEmpty(dataList)) {
|
|
59
|
+
dataList.forEach((doc) => {
|
|
60
|
+
if (!_.find(this.data.values, (value) => {
|
|
61
|
+
return value.name === doc.name
|
|
62
|
+
})) {
|
|
63
|
+
this.data.values.push(doc);
|
|
64
|
+
}
|
|
65
|
+
})
|
|
66
|
+
const records = objectql.getSteedosSchema().metadataDriver.find(this.data.values, this.query, spaceId);
|
|
67
|
+
if (records.length > 0) {
|
|
68
|
+
this.data.values = records;
|
|
69
|
+
} else {
|
|
70
|
+
this.data.values.length = 0;
|
|
71
|
+
}
|
|
72
|
+
}
|
|
38
73
|
},
|
|
39
74
|
afterCount: async function(){
|
|
75
|
+
delete this.query.fields;
|
|
40
76
|
let result = await objectql.getObject(this.object_name).find(this.query, await auth.getSessionByUserId(this.userId, this.spaceId))
|
|
41
77
|
this.data.values = result.length;
|
|
42
78
|
},
|
package/package.json
CHANGED
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "@steedos/service-pages",
|
|
3
|
-
"version": "2.2.
|
|
3
|
+
"version": "2.2.22",
|
|
4
4
|
"main": "package.service.js",
|
|
5
5
|
"scripts": {},
|
|
6
6
|
"license": "MIT",
|
|
@@ -11,5 +11,5 @@
|
|
|
11
11
|
"dependencies": {
|
|
12
12
|
"@builder.io/react": "^1.1.50"
|
|
13
13
|
},
|
|
14
|
-
"gitHead": "
|
|
14
|
+
"gitHead": "af4ea8ed034854c8de1ff8b9d5db241183524417"
|
|
15
15
|
}
|
package/package.service.js
CHANGED
|
@@ -37,8 +37,7 @@ module.exports = {
|
|
|
37
37
|
path: __dirname,
|
|
38
38
|
name: this.name,
|
|
39
39
|
isPackage: false
|
|
40
|
-
}
|
|
41
|
-
initBuilderRouter: false
|
|
40
|
+
}
|
|
42
41
|
},
|
|
43
42
|
|
|
44
43
|
/**
|
|
@@ -147,37 +146,14 @@ module.exports = {
|
|
|
147
146
|
* Events
|
|
148
147
|
*/
|
|
149
148
|
events: {
|
|
150
|
-
|
|
151
|
-
this.initBuilderRouter();
|
|
152
|
-
}
|
|
149
|
+
|
|
153
150
|
},
|
|
154
151
|
|
|
155
152
|
/**
|
|
156
153
|
* Methods
|
|
157
154
|
*/
|
|
158
155
|
methods: {
|
|
159
|
-
|
|
160
|
-
handler() {
|
|
161
|
-
// if (this.settings.initBuilderRouter) {
|
|
162
|
-
// return;
|
|
163
|
-
// }
|
|
164
|
-
// this.settings.initBuilderRouter = true;
|
|
165
|
-
// try {
|
|
166
|
-
// const router = express.Router();
|
|
167
|
-
// let publicPath = path.join(__dirname, 'public');
|
|
168
|
-
// let routerPath = "";
|
|
169
|
-
// if (__meteor_runtime_config__.ROOT_URL_PATH_PREFIX) {
|
|
170
|
-
// routerPath = __meteor_runtime_config__.ROOT_URL_PATH_PREFIX;
|
|
171
|
-
// }
|
|
172
|
-
// const cacheTime = 86400000 * 1; // one day
|
|
173
|
-
// router.use(routerPath, express.static(publicPath, { maxAge: cacheTime }));
|
|
174
|
-
// WebApp.rawConnectHandlers.use(router);
|
|
175
|
-
// } catch (error) {
|
|
176
|
-
// console.error(error)
|
|
177
|
-
// this.settings.initBuilderRouter = false;
|
|
178
|
-
// }
|
|
179
|
-
}
|
|
180
|
-
},
|
|
156
|
+
|
|
181
157
|
},
|
|
182
158
|
|
|
183
159
|
/**
|
|
@@ -191,7 +167,7 @@ module.exports = {
|
|
|
191
167
|
* Service started lifecycle event handler
|
|
192
168
|
*/
|
|
193
169
|
async started() {
|
|
194
|
-
|
|
170
|
+
|
|
195
171
|
},
|
|
196
172
|
|
|
197
173
|
/**
|