@steedos/service-pages 2.2.21 → 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.
@@ -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
- function injectScript(src) {
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,8 @@ Steedos.Page.render = function (root, page, data) {
115
127
  "component": {
116
128
  "name": upperFirst(page.render_engine),
117
129
  "options": {
118
- "schema": typeof page.schema === 'string' ? JSON.parse(page.schema) : page.schema,
119
- "data": Object.assign({}, 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
- return Promise.all([
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($("#" + rootId)[0], page, {
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
- }, $("#" + rootId)[0]);
195
+ }, container);
196
+ return container
187
197
  };
188
198
 
189
199
  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(Steedos.absoluteUrl(`/api/pageDesign?pageId=${record_id}`));
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;
@@ -50,17 +50,17 @@
50
50
  schema.data.context.authToken = dataContext.authToken;
51
51
 
52
52
  if(objectName && pageType === 'record'){
53
- axios.get(`/api/v4/${objectName}?$orderby=modified&$top=1`).then(function (response) {
53
+ axios.get(`/api/v4/${objectName}?$orderby=created desc&$top=1`).then(function (response) {
54
54
  const value = response.data?.value;
55
55
  if(value.length > 0){
56
56
  schema.data.recordId = value[0]._id;
57
57
  }
58
+ const data = {
59
+ AmisSchema: schema
60
+ };
61
+ console.log("record data", data)
62
+ comp.data = data;
58
63
  });
59
- const data = {
60
- AmisSchema: schema
61
- };
62
- console.log("record data", data)
63
- comp.data = data;
64
64
  }else{
65
65
  const data = {
66
66
  AmisSchema: schema
@@ -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,21 +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
- const assetUrls = process.env.STEEDOS_PUBLIC_PAGE_ASSETURLS.split(',');
18
+ assetUrls = process.env.STEEDOS_PUBLIC_PAGE_ASSETURLS.split(',');
18
19
  assetUrl = `assetUrl=${assetUrls.join("&assetUrl=")}&`;
19
20
  }
20
21
 
21
- const dataContext = {
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,
22
39
  rootUrl: __meteor_runtime_config__.ROOT_URL,
23
40
  tenantId: userSession.spaceId,
24
41
  userId: userSession.userId,
25
- authToken: userSession.authToken
42
+ authToken: userSession.authToken,
43
+ pageId: req.query.pageId,
26
44
  }
45
+ const options = {}
46
+ ejs.renderFile(filename, data, options, function(err, str){
47
+ // str => Rendered HTML string
48
+ res.send(str);
49
+ });
27
50
 
28
- const steedosBuilderHost = `https://builder.steedos.com/amis?${assetUrl}rootUrl=${__meteor_runtime_config__.ROOT_URL}&authToken=${userSession.authToken}&userId=${userSession.userId}&tenantId=${userSession.spaceId}&__q=`;
29
-
30
- let data = fs.readFileSync(__dirname+'/design.html', 'utf8');
31
- res.send(data.replace('SteedosBuilderHost',steedosBuilderHost).replace('DataContext', JSON.stringify(dataContext)));
32
51
  } catch (error) {
33
52
  res.status(500).send({ message: error.message });
34
53
  }
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@steedos/service-pages",
3
- "version": "2.2.21",
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": "39204e6e65ded584d76363cebfdcbcb061238d38"
14
+ "gitHead": "af4ea8ed034854c8de1ff8b9d5db241183524417"
15
15
  }