@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.
@@ -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
- getWorkerUrl: function(workerId, label) {
42
- return `data:text/javascript;charset=utf-8,${encodeURIComponent(`
43
- self.MonacoEnvironment = {
44
- baseUrl: '${window.location.origin}/unpkg.com/monaco-editor/min/'
45
- };
46
- importScripts('${window.location.origin}/unpkg.com/monaco-editor/min/vs/base/worker/workerMain.js');`
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
- Object.defineProperty(window, 'MonacoEnvironment', {set: ()=>{}, get: ()=>window.SteedosMonacoEnvironment})
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
- 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: 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": 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) {
@@ -2,5 +2,5 @@ name: is_system
2
2
  type: boolean
3
3
  label: System
4
4
  omit: true
5
- hidden: true
5
+ readonly: true
6
6
  disabled: true
@@ -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 true
29
+ deployVisible: function (object_name, record_id, permission, record) {
30
+ return record && !record.is_system;
24
31
  }
25
32
  }
@@ -25,6 +25,6 @@ module.exports = {
25
25
  Steedos.authRequest(url, options);
26
26
  },
27
27
  disableVisible: function (object_name, record_id, permission, record) {
28
- return record && record.is_active
28
+ return record && record.is_active && !record.is_system
29
29
  }
30
30
  }
@@ -25,6 +25,6 @@ module.exports = {
25
25
  Steedos.authRequest(url, options);
26
26
  },
27
27
  enableVisible: function (object_name, record_id, permission, record) {
28
- return record && !record.is_active
28
+ return record && !record.is_active && !record.is_system
29
29
  }
30
30
  }
@@ -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;
@@ -2,5 +2,5 @@ name: is_system
2
2
  type: boolean
3
3
  label: 系统
4
4
  omit: true
5
- hidden: true
5
+ readonly: true
6
6
  disabled: true
@@ -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:{
@@ -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
- afterFind: async function(){
27
- let spaceId = this.spaceId;
28
- this.data.values = this.data.values.concat(await getAll());
27
+ beforeFind: async function () {
28
+ delete this.query.fields;
29
+ },
30
+
31
+ beforeAggregate: async function () {
32
+ delete this.query.fields;
33
+ },
29
34
 
30
- this.data.values = objectql.getSteedosSchema().metadataDriver.find(this.data.values, this.query, spaceId);
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
- let spaceId = this.spaceId;
35
- this.data.values = this.data.values.concat(await getAll());
36
-
37
- this.data.values = objectql.getSteedosSchema().metadataDriver.find(this.data.values, this.query, spaceId);
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.19",
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": "952067d4517fd07335b75c63fec4700f18db73ec"
14
+ "gitHead": "af4ea8ed034854c8de1ff8b9d5db241183524417"
15
15
  }
@@ -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
- 'steedos-server.started': async function (ctx) {
151
- this.initBuilderRouter();
152
- }
149
+
153
150
  },
154
151
 
155
152
  /**
156
153
  * Methods
157
154
  */
158
155
  methods: {
159
- initBuilderRouter: {
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
- this.initBuilderRouter();
170
+
195
171
  },
196
172
 
197
173
  /**