@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.
@@ -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,9 @@ 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,
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
- return Promise.all([
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($("#" + rootId)[0], page, {
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
- }, $("#" + rootId)[0]);
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(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;
@@ -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 schema = response.data?.schema;
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
- const data = {
24
- AmisSchema: schema || {}
25
- };
26
- console.log("record data", data)
27
- comp.data = data;
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
- 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
- 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
- let data = fs.readFileSync(__dirname+'/design.html', 'utf8');
23
- res.send(data.replace('SteedosBuilderHost',steedosBuilderHost));
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
- return pageVersion || {}
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.20",
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": "a0462d803860690b47487ece88a0bbb380ba0f17"
14
+ "gitHead": "830698bdc5c848858d24ba536d9eff0fa51c22f0"
15
15
  }