@steedos/service-pages 2.2.20 → 2.2.23
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 +34 -41
- package/main/default/client/onWindowMessage.client.js +1 -21
- package/main/default/client/page.render.client.js +23 -12
- package/main/default/objects/pages/buttons/showDesign.button.js +2 -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/package.json +2 -2
|
@@ -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;
|
|
@@ -50,47 +54,36 @@
|
|
|
50
54
|
|
|
51
55
|
// Object.defineProperty(window, 'MonacoEnvironment', {set: ()=>{}, get: ()=>window.SteedosMonacoEnvironment})
|
|
52
56
|
|
|
57
|
+
|
|
58
|
+
if (window.define)
|
|
59
|
+
window.define.amd = undefined;
|
|
60
|
+
|
|
61
|
+
window.ReactDOM = ReactDom;
|
|
62
|
+
|
|
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" })
|
|
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: '/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,9 @@ 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
|
-
|
|
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,
|
|
132
|
+
"name": page.name
|
|
127
133
|
}
|
|
128
134
|
},
|
|
129
135
|
}
|
|
@@ -143,7 +149,7 @@ Steedos.Page.render = function (root, page, data) {
|
|
|
143
149
|
}
|
|
144
150
|
}, root)
|
|
145
151
|
|
|
146
|
-
|
|
152
|
+
Promise.all([
|
|
147
153
|
waitForThing(window, 'BuilderComponent'),
|
|
148
154
|
waitForThing(Builder.components, upperFirst(page.render_engine), findComponent)
|
|
149
155
|
]).then(()=>{
|
|
@@ -155,6 +161,8 @@ Steedos.Page.render = function (root, page, data) {
|
|
|
155
161
|
}, root)
|
|
156
162
|
});
|
|
157
163
|
}
|
|
164
|
+
|
|
165
|
+
return root;
|
|
158
166
|
};
|
|
159
167
|
|
|
160
168
|
Steedos.Page.App.render = function (template, pageName, app_id) {
|
|
@@ -172,10 +180,12 @@ Steedos.Page.App.render = function (template, pageName, app_id) {
|
|
|
172
180
|
$(".page-template-root")[0].appendChild(modalRoot);
|
|
173
181
|
}
|
|
174
182
|
|
|
183
|
+
const container = $("#" + rootId)[0];
|
|
184
|
+
|
|
175
185
|
const page = Steedos.Page.getPage('app', app_id, null, null, pageName);
|
|
176
186
|
if (page) {
|
|
177
187
|
if (page.render_engine && page.render_engine != 'redash') {
|
|
178
|
-
return Steedos.Page.render(
|
|
188
|
+
return Steedos.Page.render(container, page, {
|
|
179
189
|
appId: app_id
|
|
180
190
|
});
|
|
181
191
|
}
|
|
@@ -183,7 +193,8 @@ Steedos.Page.App.render = function (template, pageName, app_id) {
|
|
|
183
193
|
|
|
184
194
|
SteedosUI.render(stores.ComponentRegistry.components.PublicPage, {
|
|
185
195
|
token: pageName
|
|
186
|
-
},
|
|
196
|
+
}, container);
|
|
197
|
+
return container
|
|
187
198
|
};
|
|
188
199
|
|
|
189
200
|
Steedos.Page.Listview.render = function (template, objectApiName) {
|
|
@@ -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:{
|
package/package.json
CHANGED
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "@steedos/service-pages",
|
|
3
|
-
"version": "2.2.
|
|
3
|
+
"version": "2.2.23",
|
|
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": "830698bdc5c848858d24ba536d9eff0fa51c22f0"
|
|
15
15
|
}
|