@steedos/service-pages 2.2.11 → 2.2.14

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.
Files changed (30) hide show
  1. package/main/default/client/builder.client.js +127 -10
  2. package/main/default/objects/page_versions/fields/description.field.yml +5 -0
  3. package/main/default/objects/page_versions/fields/is_active.field.yml +3 -1
  4. package/main/default/objects/page_versions/listviews/all.listview.yml +1 -0
  5. package/main/default/objects/pages/buttons/deploy.button.js +25 -0
  6. package/main/default/objects/pages/buttons/deploy.button.yml +5 -0
  7. package/main/default/objects/pages/buttons/disable.button.js +30 -0
  8. package/main/default/objects/pages/buttons/disable.button.yml +5 -0
  9. package/main/default/objects/pages/buttons/enable.button.js +30 -0
  10. package/main/default/objects/pages/buttons/enable.button.yml +5 -0
  11. package/main/default/objects/pages/fields/description.field.yml +5 -0
  12. package/main/default/objects/pages/fields/is_active.field.yml +2 -1
  13. package/main/default/objects/pages/fields/is_system.field.yml +1 -1
  14. package/main/default/objects/pages/fields/version.field.yml +4 -5
  15. package/main/default/objects/pages/listviews/all.listview.yml +2 -0
  16. package/main/default/objects/pages/listviews/recent.listview.yml +3 -1
  17. package/main/default/routes/design.html +3 -3
  18. package/main/default/services/page.service.js +50 -14
  19. package/main/default/triggers/page_versions.enable.trigger.js +3 -2
  20. package/main/default/triggers/page_versions_check.trigger.js +5 -3
  21. package/main/default/triggers/pages_check.trigger.js +1 -1
  22. package/package.json +2 -2
  23. package/public/js/requirejs/@steedos-builder/react.js +8 -0
  24. package/public/js/requirejs/@steedos-builder/sdk.js +8 -0
  25. package/public/js/requirejs/builder-react.js +4 -0
  26. package/public/js/requirejs/builder-sdk.js +3 -0
  27. package/public/js/requirejs/lodash.js +3 -0
  28. package/public/js/requirejs/react-dom.js +3 -0
  29. package/public/js/requirejs/react.js +3 -0
  30. package/public/js/requirejs/require.js +2147 -0
@@ -1,11 +1,128 @@
1
- ;(function() {
2
- try {
3
- var hm = document.createElement("script");
4
- hm.src = "/requirejs/require.js";
5
- var s = document.getElementsByTagName("script")[0];
6
- s.parentNode.insertBefore(hm, s);
7
- } catch (error) {
8
- console.log(error);
9
- }
1
+ /*
2
+ * @Author: baozhoutao@steedos.com
3
+ * @Date: 2022-03-28 09:44:02
4
+ * @Description:
5
+ */
6
+ ; (function () {
7
+ // window.SteedosMonacoEnvironment = window.MonacoEnvironment = {
8
+ // getWorkerUrl: function (moduleId, label) {
9
+ // console.log(`getWorkerUrl===`, moduleId, label)
10
+ // const urlPath = '/unpkg.com/monaco-editor/min/vs';
11
+ // let filePath = '/base/worker/workerMain.js';
12
+ // if (label === 'json') {
13
+ // file = '/language/json/jsonWorker.js';
14
+ // }
15
+ // if (label === 'css') {
16
+ // file = '/language/css/cssWorker.js';
17
+ // }
18
+ // if (label === 'html') {
19
+ // file = '/language/html/htmlWorker.js';
20
+ // }
21
+ // if (label === 'typescript' || label === 'javascript') {
22
+ // file = '/language/typescript/tsWorker.js';
23
+ // }
24
+ // return `${urlPath}${filePath}`;
25
+ // }
26
+ // }
27
+ window.SteedosMonacoEnvironment = window.MonacoEnvironment = {
28
+ getWorkerUrl: function(workerId, label) {
29
+ return `data:text/javascript;charset=utf-8,${encodeURIComponent(`
30
+ self.MonacoEnvironment = {
31
+ baseUrl: '${window.location.origin}/unpkg.com/monaco-editor/min/'
32
+ };
33
+ importScripts('${window.location.origin}/unpkg.com/monaco-editor/min/vs/base/worker/workerMain.js');`
34
+ )}`;
35
+ }
36
+ };
37
+
38
+
39
+
10
40
  })();
11
- Builder.set({rootUrl: __meteor_runtime_config__.ROOT_URL})
41
+
42
+ function injectScript(src) {
43
+ return new Promise((resolve, reject) => {
44
+ const script = document.createElement('script');
45
+ script.src = src;
46
+ script.addEventListener('load', resolve);
47
+ script.addEventListener('error', e => reject(e.error));
48
+ document.head.appendChild(script);
49
+ });
50
+ }
51
+
52
+ injectScript('/unpkg.com/@steedos-builder/react/dist/builder-react.unpkg.js')
53
+ .then(() => {
54
+ console.log('Builder loaded!');
55
+ const BuilderSDK = BuilderReact;
56
+
57
+ window.BuilderReact = BuilderReact;
58
+ window.BuilderSDK = BuilderSDK;
59
+
60
+ window.Builder = BuilderReact.Builder;
61
+ window.BuilderComponent = BuilderReact.BuilderComponent;
62
+ window.builder = BuilderReact.builder;
63
+
64
+ Builder.set({rootUrl: __meteor_runtime_config__.ROOT_URL, unpkgUrl: Meteor.settings.public.unpkgUrl || 'https://npm.elemecdn.com'})
65
+ window['React'] = require('react');
66
+ window['ReactDOM'] = require('react-dom');
67
+ // window['lodash'] = require('lodash');
68
+
69
+ Builder.registerImportMap({
70
+ "lodash": '/js/requirejs/lodash',
71
+ "react": '/js/requirejs/react',
72
+ "react-dom": '/js/requirejs/react-dom',
73
+ "@steedos-builder/sdk": '/js/requirejs/builder-sdk',
74
+ "@steedos-builder/react": '/js/requirejs/builder-react',
75
+ })
76
+ Builder.require(['lodash',"react", "react-dom"])
77
+
78
+ Builder.requirejs.config(
79
+ {
80
+ waitSeconds: 60,
81
+ baseUrl: '',
82
+ paths: {
83
+ 'vs': '/unpkg.com/monaco-editor/min/vs',
84
+ "vs/language/css/cssMode":"/unpkg.com/monaco-editor/min/vs/language/css/cssMode",
85
+ "vs/language/html/htmlMode":"/unpkg.com/monaco-editor/min/vs/language/html/htmlMode",
86
+ "vs/language/typescript/tsMode":"/unpkg.com/monaco-editor/min/vs/language/typescript/tsMode",
87
+ "vs/language/json/jsonMode":"/unpkg.com/monaco-editor/min/vs/language/json/jsonMode"
88
+ }
89
+ }
90
+ );
91
+ Builder.requirejs(['vs/editor/editor.main'], () => {
92
+ return monaco = window['monaco'];
93
+ });
94
+
95
+
96
+
97
+ }).catch(error => {
98
+ console.error(error);
99
+ });
100
+
101
+ // import("https://unpkg.com/@steedos-builder/react@0.2.11/dist/builder-react.umd.js").then(function(BuilderReact) {
102
+
103
+ // console.log('Builder loaded!');
104
+ // const BuilderSDK = BuilderReact;
105
+
106
+ // window.BuilderReact = BuilderReact;
107
+ // window.BuilderSDK = BuilderSDK;
108
+
109
+ // window.Builder = BuilderReact.Builder;
110
+ // window.BuilderComponent = BuilderReact.BuilderComponent;
111
+ // window.builder = BuilderReact.builder;
112
+
113
+ // Builder.set({rootUrl: __meteor_runtime_config__.ROOT_URL})
114
+ // window['React'] = require('react');
115
+ // window['ReactDOM'] = require('react-dom');
116
+ // // window['lodash'] = require('lodash');
117
+
118
+ // Builder.registerImportMap({
119
+ // // "lodash": '/requirejs/lodash',
120
+ // "react": '/requirejs/react',
121
+ // "react-dom": '/requirejs/react-dom',
122
+ // "@steedos-builder/sdk": '/requirejs/builder-sdk',
123
+ // "@steedos-builder/react": '/requirejs/builder-react',
124
+ // })
125
+ // Builder.require(['lodash',"react", "react-dom"])
126
+
127
+ // });
128
+
@@ -0,0 +1,5 @@
1
+ name: description
2
+ label: 描述
3
+ type: textarea
4
+ is_wide: true
5
+ sort_no: 480
@@ -1,4 +1,6 @@
1
1
  name: is_active
2
2
  label: 已发布
3
3
  sort_no: 130
4
- type: toggle
4
+ readonly: true
5
+ omit: true
6
+ type: boolean
@@ -3,6 +3,7 @@ columns:
3
3
  - field: page
4
4
  - field: version
5
5
  - field: is_active
6
+ - field: description
6
7
  - field: created
7
8
  - field: modified
8
9
  - field: is_system
@@ -0,0 +1,25 @@
1
+ module.exports = {
2
+ deploy: function (object_name, record_id) {
3
+ $(document.body).addClass('loading');
4
+ let url = `/service/api/page/deploy`;
5
+ let options = {
6
+ type: 'post',
7
+ async: true,
8
+ data: JSON.stringify({ pageId: record_id }),
9
+ success: function (data) {
10
+ toastr.success('页面已发布。');
11
+ SteedosUI.reloadRecord(object_name, record_id);
12
+ FlowRouter.reload();
13
+ $(document.body).removeClass('loading');
14
+ },
15
+ error: function (XMLHttpRequest, textStatus, errorThrown) {
16
+ toastr.error(t(XMLHttpRequest.responseJSON.error))
17
+ $(document.body).removeClass('loading');
18
+ }
19
+ };
20
+ Steedos.authRequest(url, options);
21
+ },
22
+ deployVisible: function () {
23
+ return true
24
+ }
25
+ }
@@ -0,0 +1,5 @@
1
+ name: deploy
2
+ is_enable: true
3
+ label: 发布
4
+ 'on': record_only
5
+ visible: true
@@ -0,0 +1,30 @@
1
+ /*
2
+ * @Author: baozhoutao@steedos.com
3
+ * @Date: 2022-03-29 19:19:01
4
+ * @Description:
5
+ */
6
+ module.exports = {
7
+ disable: function (object_name, record_id) {
8
+ $(document.body).addClass('loading');
9
+ let url = `/service/api/page/disable`;
10
+ let options = {
11
+ type: 'post',
12
+ async: true,
13
+ data: JSON.stringify({ pageId: record_id }),
14
+ success: function (data) {
15
+ toastr.success('页面已禁用。');
16
+ SteedosUI.reloadRecord(object_name, record_id);
17
+ FlowRouter.reload();
18
+ $(document.body).removeClass('loading');
19
+ },
20
+ error: function (XMLHttpRequest, textStatus, errorThrown) {
21
+ toastr.error(t(XMLHttpRequest.responseJSON.error))
22
+ $(document.body).removeClass('loading');
23
+ }
24
+ };
25
+ Steedos.authRequest(url, options);
26
+ },
27
+ disableVisible: function (object_name, record_id, permission, record) {
28
+ return record && record.is_active
29
+ }
30
+ }
@@ -0,0 +1,5 @@
1
+ name: disable
2
+ is_enable: true
3
+ label: 禁用
4
+ 'on': record_only
5
+ visible: true
@@ -0,0 +1,30 @@
1
+ /*
2
+ * @Author: baozhoutao@steedos.com
3
+ * @Date: 2022-03-29 19:19:01
4
+ * @Description:
5
+ */
6
+ module.exports = {
7
+ enable: function (object_name, record_id) {
8
+ $(document.body).addClass('loading');
9
+ let url = `/service/api/page/enable`;
10
+ let options = {
11
+ type: 'post',
12
+ async: true,
13
+ data: JSON.stringify({ pageId: record_id }),
14
+ success: function (data) {
15
+ toastr.success('页面已启用。');
16
+ SteedosUI.reloadRecord(object_name, record_id);
17
+ FlowRouter.reload();
18
+ $(document.body).removeClass('loading');
19
+ },
20
+ error: function (XMLHttpRequest, textStatus, errorThrown) {
21
+ toastr.error(t(XMLHttpRequest.responseJSON.error))
22
+ $(document.body).removeClass('loading');
23
+ }
24
+ };
25
+ Steedos.authRequest(url, options);
26
+ },
27
+ enableVisible: function (object_name, record_id, permission, record) {
28
+ return record && !record.is_active
29
+ }
30
+ }
@@ -0,0 +1,5 @@
1
+ name: enable
2
+ is_enable: true
3
+ label: 启用
4
+ 'on': record_only
5
+ visible: true
@@ -0,0 +1,5 @@
1
+ name: description
2
+ label: 描述
3
+ type: textarea
4
+ is_wide: true
5
+ sort_no: 480
@@ -1,5 +1,6 @@
1
1
  name: is_active
2
- label: 启用
2
+ label: 状态
3
3
  sort_no: 130
4
4
  type: toggle
5
+ defaultValue: true
5
6
  visible_on: "{{'redash' != formData.render_engine ? true: false}}"
@@ -1,6 +1,6 @@
1
1
  name: is_system
2
2
  type: boolean
3
- label: System
3
+ label: 系统
4
4
  omit: true
5
5
  hidden: true
6
6
  disabled: true
@@ -1,7 +1,6 @@
1
1
  name: version
2
- label: version
3
- precision: 18
4
- scale: 0
5
- sort_no: 170
6
2
  type: number
7
- hidden: true
3
+ label: 版本号
4
+ scale: 0
5
+ omit: true
6
+ readonly: true
@@ -4,6 +4,8 @@ columns:
4
4
  - field: label
5
5
  - field: render_engine
6
6
  - field: type
7
+ - field: is_active
8
+ - field: version
7
9
  - field: is_system
8
10
  wrap: false
9
11
  filter_scope: space
@@ -2,8 +2,10 @@ name: recent
2
2
  columns:
3
3
  - field: name
4
4
  - field: label
5
- - field: type
6
5
  - field: render_engine
6
+ - field: type
7
+ - field: is_active
8
+ - field: version
7
9
  - field: is_system
8
10
  wrap: false
9
11
  filter_scope: space
@@ -15,8 +15,8 @@
15
15
  var pageId = params.get("pageId");
16
16
  // /pageVersion/:pageId/latest
17
17
 
18
- axios.get(`/service/api/page/pageVersion/${params.get("pageId")}/latest/`).then(function (response) {
19
- let schema = response.data.schema;
18
+ axios.get(`/service/api/page/pageVersion/${params.get("pageId")}/latest`).then(function (response) {
19
+ let schema = response.data?.schema;
20
20
  if (typeof schema === "string") {
21
21
  schema = JSON.parse(schema)
22
22
  }
@@ -37,7 +37,7 @@
37
37
  if (data) {
38
38
  if (data.type === 'builder.saveContent') {
39
39
  axios.put(`/service/api/page/pageVersion/${params.get("pageId")}`, {
40
- schema: JSON.stringify(data.data.AmisSchema) //直接存储json格式会导致react form异常。
40
+ schema: JSON.stringify(data.data.AmisSchema, null, 4) //直接存储json格式会导致react form异常。
41
41
  }).then(function (response) {
42
42
  window.postMessage(
43
43
  {
@@ -28,20 +28,54 @@ module.exports = {
28
28
  return await this.getMeSchema(type, app, objectApiName, recordId, pageId, formFactor, userSession);
29
29
  }
30
30
  },
31
- // enablePageVersion:{
32
- // rest: {
33
- // method: "GET",
34
- // path: "/pageSchema/enable/:pageVersionId"
35
- // },
36
- // params: {
37
- // pageVersionId: { type: "any" }
38
- // },
39
- // async handler(ctx) {
40
- // const userSession = ctx.meta.user;
41
- // const { pageVersionId } = ctx.params;
42
- // return await this.enablePageVersion(pageVersionId, userSession);
43
- // }
44
- // },
31
+ //发布最新版
32
+ deploy: {
33
+ rest: {
34
+ method: "POST",
35
+ path: "/deploy"
36
+ },
37
+ params: {
38
+ pageId: { type: 'string' }
39
+ },
40
+ handler: async function (ctx) {
41
+ const { pageId } = ctx.params;
42
+ const userSession = ctx.meta.user;
43
+ const lastVersion = await this.getLatestPageVersion(pageId);
44
+ return await objectql.getObject('page_versions').update(lastVersion._id, { is_active: true }, userSession);
45
+ }
46
+ },
47
+
48
+ // 启用Page
49
+ enable: {
50
+ rest: {
51
+ method: "POST",
52
+ path: "/enable"
53
+ },
54
+ params: {
55
+ pageId: { type: 'string' }
56
+ },
57
+ handler: async function (ctx) {
58
+ const { pageId } = ctx.params;
59
+ const userSession = ctx.meta.user;
60
+ return await objectql.getObject('pages').update(pageId, { is_active: true }, userSession)
61
+ }
62
+ },
63
+
64
+ // 禁用Page
65
+ disable: {
66
+ rest: {
67
+ method: "POST",
68
+ path: "/disable"
69
+ },
70
+ params: {
71
+ pageId: { type: 'string' }
72
+ },
73
+ handler: async function (ctx) {
74
+ const { pageId } = ctx.params;
75
+ const userSession = ctx.meta.user;
76
+ return await objectql.getObject('pages').update(pageId, { is_active: false }, userSession)
77
+ }
78
+ },
45
79
  getLatestPageVersion:{
46
80
  rest: {
47
81
  method: "GET",
@@ -233,6 +267,8 @@ module.exports = {
233
267
  const pageVersions = await objectql.getObject('page_versions').find({filters: filters, sort: 'version desc', top: 1});
234
268
  if(pageVersions.length === 1){
235
269
  return pageVersions[0]
270
+ }else{
271
+ return {}
236
272
  }
237
273
  }
238
274
  },
@@ -5,10 +5,11 @@ module.exports = {
5
5
  listenTo: 'page_versions',
6
6
  afterUpdate: async function(){
7
7
  const {id, doc, previousDoc} = this;
8
- if(_.has(doc, 'is_archived') && doc.is_archived && previousDoc.is_archived != doc.is_archived ){
8
+ if(_.has(doc, 'is_active') && doc.is_active && previousDoc.is_active != doc.is_active ){
9
9
  const record = await objectql.getObject('page_versions').findOne(id)
10
10
  await objectql.getObject('pages').directUpdate(record.page, {
11
- is_archived: true
11
+ is_active: true,
12
+ version: record.version,
12
13
  })
13
14
  }
14
15
  }
@@ -1,3 +1,8 @@
1
+ /*
2
+ * @Author: baozhoutao@steedos.com
3
+ * @Date: 2022-03-28 09:44:02
4
+ * @Description:
5
+ */
1
6
  const objectql = require('@steedos/objectql');
2
7
  const _ = require('underscore');
3
8
 
@@ -14,8 +19,5 @@ module.exports = {
14
19
  throw new Error('禁止修改非最新版');
15
20
  }
16
21
  }
17
- // if(_.has(doc, 'is_archived') && !doc.is_archived){
18
-
19
- // }
20
22
  }
21
23
  }
@@ -14,7 +14,7 @@ module.exports = {
14
14
  }
15
15
  }
16
16
 
17
- if(_.has(doc, 'is_archived') && !doc.is_archived){
17
+ if(_.has(doc, 'is_active') && !doc.is_active){
18
18
  let type = null;
19
19
  if(_.has(doc, 'type')){
20
20
  type = doc.type
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@steedos/service-pages",
3
- "version": "2.2.11",
3
+ "version": "2.2.14",
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": "0eaf63bc2efddbc85f98eb5091c0545f3304ae9d"
14
+ "gitHead": "de074b6e2d790b7e63edd8cf2917664dd13bbade"
15
15
  }
@@ -0,0 +1,8 @@
1
+ /*
2
+ * @Author: steedos
3
+ * @Date: 2022-03-25 16:15:21
4
+ * @Description:
5
+ */
6
+ define(function () {
7
+ return BuilderReact
8
+ });
@@ -0,0 +1,8 @@
1
+ /*
2
+ * @Author: steedos
3
+ * @Date: 2022-03-26 16:16:01
4
+ * @Description:
5
+ */
6
+ define(function () {
7
+ return BuilderSDK
8
+ });
@@ -0,0 +1,4 @@
1
+ define("@steedos-builder/react", [], function () {
2
+ //Do setup work here
3
+ return BuilderReact
4
+ });
@@ -0,0 +1,3 @@
1
+ define("@steedos-builder/sdk", [], function () {
2
+ return BuilderSDK
3
+ });
@@ -0,0 +1,3 @@
1
+ define("lodash", [], function () {
2
+ return lodash
3
+ });
@@ -0,0 +1,3 @@
1
+ define("react-dom", [], function () {
2
+ return ReactDOM
3
+ });
@@ -0,0 +1,3 @@
1
+ define("react", [], function () {
2
+ return React
3
+ });