@steedos/service-pages 2.2.3 → 2.2.6

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 (58) hide show
  1. package/docs//350/207/252/345/256/232/344/271/211form/347/273/204/344/273/266.md +39 -0
  2. package/main/default/applications/app_charts.app.yml +1 -1
  3. package/main/default/client/builder.client.js +10 -4
  4. package/main/default/client/onWindowMessage.client.js +39 -0
  5. package/main/default/client/page.render.client.js +234 -30
  6. package/main/default/objects/page_assignments/fields/app.field.yml +8 -0
  7. package/main/default/objects/page_assignments/fields/desktop.field.yml +5 -0
  8. package/main/default/objects/page_assignments/fields/is_system.field.yml +6 -0
  9. package/main/default/objects/page_assignments/fields/mobile.field.yml +5 -0
  10. package/main/default/objects/page_assignments/fields/page.field.yml +5 -0
  11. package/main/default/objects/page_assignments/fields/profile.field.yml +8 -0
  12. package/main/default/objects/page_assignments/fields/record_type.field.yml +4 -0
  13. package/main/default/objects/page_assignments/listviews/all.listview.yml +15 -0
  14. package/main/default/objects/page_assignments/listviews/recent.listview.yml +15 -0
  15. package/main/default/objects/page_assignments/page_assignments.object.yml +20 -0
  16. package/main/default/objects/page_assignments/permissions/admin.permission.yml +10 -0
  17. package/main/default/objects/page_assignments/permissions/user.permission.yml +10 -0
  18. package/main/default/objects/page_versions/buttons/standard_delete.button.js +5 -0
  19. package/main/default/objects/page_versions/buttons/standard_delete.button.yml +4 -0
  20. package/main/default/objects/page_versions/buttons/standard_delete_many.button.js +5 -0
  21. package/main/default/objects/page_versions/buttons/standard_delete_many.button.yml +4 -0
  22. package/main/default/objects/page_versions/buttons/standard_new.button.js +5 -0
  23. package/main/default/objects/page_versions/buttons/standard_new.button.yml +5 -0
  24. package/main/default/objects/page_versions/fields/is_active.field.yml +4 -0
  25. package/main/default/objects/page_versions/fields/page.field.yml +5 -0
  26. package/main/default/objects/page_versions/fields/schema.field.yml +7 -0
  27. package/main/default/objects/page_versions/fields/version.field.yml +6 -0
  28. package/main/default/objects/page_versions/listviews/all.listview.yml +18 -0
  29. package/main/default/objects/page_versions/listviews/recent.listview.yml +15 -0
  30. package/main/default/objects/page_versions/page_versions.object.yml +20 -0
  31. package/main/default/objects/page_versions/permissions/admin.permission.yml +10 -0
  32. package/main/default/objects/page_versions/permissions/user.permission.yml +10 -0
  33. package/main/default/objects/pages/fields/is_active.field.yml +5 -0
  34. package/main/default/objects/pages/fields/is_archived.field.yml +1 -1
  35. package/main/default/objects/pages/fields/object_name.field.yml +2 -2
  36. package/main/default/objects/pages/fields/type.field.yml +4 -4
  37. package/main/default/objects/pages/listviews/all.listview.yml +1 -0
  38. package/main/default/objects/pages/listviews/recent.listview.yml +1 -0
  39. package/main/default/objects/pages/pages.object.yml +5 -1
  40. package/main/default/objects/pages/permissions/user.permission.yml +2 -2
  41. package/main/default/routes/design.html +15 -6
  42. package/main/default/routes/page_design.router.js +10 -1
  43. package/main/default/routes/page_schema.router.js +33 -0
  44. package/main/default/services/page.service.js +281 -0
  45. package/main/default/triggers/page_assignments_check.trigger.js +23 -0
  46. package/main/default/triggers/page_versions.enable.trigger.js +15 -0
  47. package/main/default/triggers/page_versions_check.trigger.js +21 -0
  48. package/main/default/triggers/pages_check.trigger.js +30 -0
  49. package/main/default/triggers/pages_metadata.trigger.js +12 -47
  50. package/package.json +2 -2
  51. package/package.service.js +18 -18
  52. package/main/default/client/amis.client.js +0 -47
  53. package/main/default/client/style.client.js +0 -12
  54. package/main/default/objects/pages/fields/is_default.field.yml +0 -5
  55. package/public/amis/amis.css +0 -29
  56. package/public/amis/sdk/sdk.css +0 -48783
  57. package/public/amis/sdk/sdk.js +0 -3467
  58. package/public/builder.io/react/dist/builder-react.browser.js +0 -21
@@ -1,5 +1,5 @@
1
1
  name: is_archived
2
- label: is_archived
2
+ label: 已归档
3
3
  sort_no: 130
4
4
  type: toggle
5
5
  hidden: true
@@ -9,5 +9,5 @@ optionsFunction: !!js/function |
9
9
  return Steedos.getObjectsOptions()
10
10
  }
11
11
  filterable: true
12
- required: "{{'record' == formData.type && 'list' == formData.type && 'form' == formData.type ? true: false}}"
13
- visible_on: "{{'record' == formData.type && 'list' == formData.type && 'form' == formData.type ? true: false}}"
12
+ required: "{{'record' == formData.type || 'list' == formData.type || 'form' == formData.type ? true: false}}"
13
+ visible_on: "{{'record' == formData.type || 'list' == formData.type || 'form' == formData.type ? true: false}}"
@@ -4,13 +4,13 @@ type: select
4
4
  defaultValue: app
5
5
  required: true
6
6
  options:
7
- - label: 自定义页面
7
+ - label: 应用程序页面
8
8
  value: app
9
- - label: 记录详细
9
+ - label: 记录页面
10
10
  value: record
11
- - label: 自定义列表
11
+ - label: 列表页面
12
12
  value: list
13
- - label: 新建、编辑页面
13
+ - label: 表单
14
14
  value: form
15
15
  sort_no: 130
16
16
  visible_on: "{{'redash' != formData.render_engine ? true: false}}"
@@ -2,6 +2,7 @@ name: all
2
2
  columns:
3
3
  - field: name
4
4
  - field: label
5
+ - field: render_engine
5
6
  - field: type
6
7
  - field: is_system
7
8
  wrap: false
@@ -3,6 +3,7 @@ columns:
3
3
  - field: name
4
4
  - field: label
5
5
  - field: type
6
+ - field: render_engine
6
7
  - field: is_system
7
8
  wrap: false
8
9
  filter_scope: space
@@ -22,6 +22,10 @@ form:
22
22
  afterView: !!js/function |
23
23
  function(){
24
24
  if(this.doc.name && (this.doc.render_engine === 'redash' || !this.doc.render_engine)){
25
- SteedosUI.render(stores.ComponentRegistry.components.Page, { pageId: this.doc.name }, $(".slds-template__container")[0])
25
+ return SteedosUI.render(stores.ComponentRegistry.components.Page, { pageId: this.doc.name }, $(".slds-template__container")[0])
26
26
  }
27
+ if(this.doc.type === 'app'){
28
+ $('[data-object-name="page_assignments"]').hide()
29
+ }
30
+ $('[data-object-name="page_versions"]').hide()
27
31
  }
@@ -6,5 +6,5 @@ allowRead: true
6
6
  modifyAllRecords: false
7
7
  modifyCompanyRecords: false
8
8
  permission_set_id: user
9
- viewAllRecords: true
10
- viewCompanyRecords: true
9
+ viewAllRecords: false
10
+ viewCompanyRecords: false
@@ -5,15 +5,17 @@
5
5
  <script src="https://builder.steedos.com/js/builder-fiddle/builder-fiddle.umd.js"></script>
6
6
  </head>
7
7
 
8
- <body>
8
+ <body style="margin: 0;padding: 0;">
9
9
 
10
- <builder-fiddle host="https://builder.steedos.com/amis"></builder-fiddle>
10
+ <builder-fiddle host="SteedosBuilderHost"></builder-fiddle>
11
11
 
12
12
  <script>
13
13
  let comp = document.querySelector('builder-fiddle')
14
14
  var params = new URLSearchParams(location.search);
15
15
  var pageId = params.get("pageId");
16
- axios.get("/api/v4/pages/" + params.get("pageId")).then(function (response) {
16
+ // /pageVersion/:pageId/latest
17
+
18
+ axios.get(`/service/api/page/pageVersion/${params.get("pageId")}/latest/`).then(function (response) {
17
19
  let schema = response.data.schema;
18
20
  if (typeof schema === "string") {
19
21
  schema = JSON.parse(schema)
@@ -34,7 +36,7 @@
34
36
  const { data } = event;
35
37
  if (data) {
36
38
  if (data.type === 'builder.saveContent') {
37
- axios.put("/api/v4/pages/" + params.get("pageId"), {
39
+ axios.put(`/service/api/page/pageVersion/${params.get("pageId")}`, {
38
40
  schema: JSON.stringify(data.data.AmisSchema) //直接存储json格式会导致react form异常。
39
41
  }).then(function (response) {
40
42
  window.postMessage(
@@ -43,6 +45,15 @@
43
45
  },
44
46
  '*'
45
47
  );
48
+
49
+ try {
50
+ //保存时, 刷新父页面
51
+ if(window.opener){
52
+ window.opener.postMessage(Object.assign({type: "record.edited"}, {objectName: 'pages'}, {record: {}}), "*")
53
+ }
54
+ } catch (error) {
55
+ console.error(error)
56
+ }
46
57
  }).catch(function (error) {
47
58
  // handle error
48
59
  console.log(error);
@@ -55,8 +66,6 @@
55
66
 
56
67
  window.addEventListener('message', onWindowMessage);
57
68
 
58
-
59
-
60
69
  </script>
61
70
  </body>
62
71
 
@@ -1,9 +1,18 @@
1
1
  const express = require("express");
2
2
  const router = express.Router();
3
+ const core = require('@steedos/core');
4
+ const fs = require('fs');
3
5
 
4
- router.get('/api/pageDesign', async function (req, res) {
6
+ router.get('/api/pageDesign', core.requireAuthentication, async function (req, res) {
5
7
  try {
6
8
  res.set('Content-Type', 'text/html');
9
+ const userSession = req.user;
10
+ const steedosBuilderHost = `https://builder.steedos.com/amis?assetUrl=https://unpkg.com/@steedos-ui/builder-widgets/dist/assets.js&rootUrl=${__meteor_runtime_config__.ROOT_URL}&authToken=${userSession.authToken}&userId=${userSession.userId}&tenantId=${userSession.spaceId}&__q=`;
11
+
12
+ let data = fs.readFileSync(__dirname+'/design.html', 'utf8');
13
+ res.send(data.replace('SteedosBuilderHost',steedosBuilderHost));
14
+
15
+
7
16
  res.sendFile(__dirname+'/design.html')
8
17
  } catch (error) {
9
18
  res.status(500).send({ message: error.message });
@@ -0,0 +1,33 @@
1
+ const express = require("express");
2
+ const router = express.Router();
3
+ const objectql = require('@steedos/objectql');
4
+ const core = require('@steedos/core');
5
+
6
+ router.get('/api/pageSchema/:type', core.requireAuthentication, async function (req, res) {
7
+ try {
8
+
9
+ const userSession = req.user;
10
+
11
+ const { app, objectApiName, recordId, pageId, formFactor} = req.query;
12
+ const { type } = req.params;
13
+
14
+ const pageSchema = await objectql.getSteedosSchema().broker.call(`page.getMeSchema`, {
15
+ type,
16
+ app,
17
+ objectApiName,
18
+ recordId,
19
+ pageId,
20
+ formFactor
21
+ }, {
22
+ meta: {
23
+ user: userSession
24
+ }
25
+ });
26
+
27
+ res.send(pageSchema || {});
28
+ } catch (error) {
29
+ res.status(500).send({ message: error.message });
30
+ }
31
+
32
+ });
33
+ exports.default = router;
@@ -0,0 +1,281 @@
1
+ const objectql = require('@steedos/objectql');
2
+
3
+ const _ = require('lodash');
4
+
5
+ module.exports = {
6
+ name: "page",
7
+ mixins: [],
8
+ /**
9
+ * Settings
10
+ */
11
+ settings: {
12
+
13
+ },
14
+
15
+ /**
16
+ * Dependencies
17
+ */
18
+ dependencies: [],
19
+
20
+ /**
21
+ * Actions
22
+ */
23
+ actions: {
24
+ getMeSchema: {
25
+ async handler(ctx) {
26
+ const userSession = ctx.meta.user;
27
+ const { type, app, objectApiName, recordId, pageId, formFactor } = ctx.params;
28
+ return await this.getMeSchema(type, app, objectApiName, recordId, pageId, formFactor, userSession);
29
+ }
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
+ // },
45
+ getLatestPageVersion:{
46
+ rest: {
47
+ method: "GET",
48
+ path: "/pageVersion/:pageId/latest"
49
+ },
50
+ params: {
51
+ pageId: { type: "any" }
52
+ },
53
+ async handler(ctx){
54
+ // const userSession = ctx.meta.user;
55
+ const { pageId } = ctx.params;
56
+ return await this.getLatestPageVersion(pageId);
57
+ }
58
+ },
59
+ changePageVersion:{
60
+ rest: {
61
+ method: "PUT",
62
+ path: "/pageVersion/:pageId"
63
+ },
64
+ params: {
65
+ pageId: { type: "any" },
66
+ schema: { type: "any" }
67
+ },
68
+ async handler(ctx){
69
+ const userSession = ctx.meta.user;
70
+ const { pageId, schema } = ctx.params;
71
+ return await this.changePageVersion(pageId, schema, userSession);
72
+ }
73
+ }
74
+ },
75
+
76
+ /**
77
+ * Events
78
+ */
79
+ events: {
80
+
81
+ },
82
+
83
+ /**
84
+ * Methods
85
+ */
86
+ methods: {
87
+ getDefaultSchema: {
88
+ async handler(type, app, objectApiName, recordId, formFactor, userSession) {
89
+ if (process.env.DEFAULT_PAGE_RENDER) {
90
+ return await this.broker.call(`${process.env.DEFAULT_PAGE_RENDER}.getDefaultSchema`, {type, app, objectApiName, recordId, formFactor}, {
91
+ meta: {
92
+ user: userSession
93
+ }
94
+ })
95
+ }
96
+ return;
97
+ }
98
+ },
99
+ getTypePages: {
100
+ async handler(type, objectApiName, userSession) {
101
+ const filters = [['type', '=', type], ['is_active', '=', true]];
102
+ if (type === 'list' || type === 'record' || type === 'form') {
103
+ filters.push(['object_name', '=', objectApiName]);
104
+ }
105
+ return await objectql.getObject('pages').find({ filters: filters, sort: 'modified desc' });
106
+ }
107
+ },
108
+ getAssignments: {
109
+ async handler(formFactor, typePages) {
110
+ if(!typePages || typePages.length < 1){
111
+ return ;
112
+ }
113
+ const filters = [['page', 'in', _.map(typePages, '_id')]];
114
+ if(formFactor === 'SMALL'){
115
+ filters.push(['mobile','=', true])
116
+ }else{
117
+ filters.push(['desktop','=', true])
118
+ }
119
+ return await objectql.getObject("page_assignments").find({ filters: filters, sort: 'modified desc' });
120
+ }
121
+ },
122
+ getAppProfileAssignment: {
123
+ async handler(app, assignments, userSession) {
124
+ return _.filter(assignments, (assignment) => {
125
+ //TODO Record Type
126
+ return assignment.app === app && arguments.profile === userSession.profile;
127
+ });
128
+ }
129
+ },
130
+ getAppDefaultAssignment: {
131
+ async handler(app, assignments) {
132
+ return _.filter(assignments, (assignment) => {
133
+ return assignment.app === app;
134
+ });
135
+ }
136
+ },
137
+ getOrgDefaultAssignment: {
138
+ async handler(assignments) {
139
+ return _.filter(assignments, (assignment) => {
140
+ return !assignment.app && !assignment.profile
141
+ })
142
+ }
143
+ },
144
+ getAssignmentPage: {
145
+ async handler(assignment, typePages) {
146
+ const page = _.find(typePages, (typePage) => {
147
+ return typePage.name == assignment.page || typePage._id == assignment.page
148
+ })
149
+ if (page) {
150
+ return page;
151
+ }
152
+ // else {
153
+ // throw new Error(`not find assignment page ${assignment.desktop}`)
154
+ // }
155
+ }
156
+ },
157
+ getUserPage: {
158
+ /**
159
+ * 自定义记录页面可在不同层面上分配:
160
+ * 1 组织默认设置 记录页面会为对象显示,除非已进行更多特定分配。
161
+ * 2 如果已指定,则应用程序默认设置 页面分配会覆盖组织默认设置。
162
+ * 3 应用程序、记录类型和简档, 分配会覆盖组织和应用程序默认设置。
163
+ *
164
+ */
165
+ async handler(type, app, objectApiName, recordId, formFactor, userSession) {
166
+
167
+ try {
168
+ const typePages = await this.getTypePages(type, objectApiName, userSession);
169
+
170
+ //如果是app 类型,则直接返回最新的.
171
+ if(type === 'app'){
172
+ return typePages.length > 0 ? typePages[0] : null;
173
+ }
174
+
175
+ const assignments = await this.getAssignments(formFactor, typePages);
176
+
177
+ const appProfileassignment = await this.getAppProfileAssignment(app, assignments, userSession);
178
+ if (appProfileassignment && appProfileassignment.length > 0) {
179
+ return await this.getAssignmentPage(appProfileassignment[0], typePages)
180
+ }
181
+
182
+ const appDefaultAssignment = await this.getAppDefaultAssignment(app, assignments);
183
+ if (appDefaultAssignment && appDefaultAssignment.length > 0) {
184
+ return await this.getAssignmentPage(appDefaultAssignment[0], typePages)
185
+ }
186
+
187
+ const orgDefaultAssignment = await this.getOrgDefaultAssignment(assignments);
188
+ if (orgDefaultAssignment && orgDefaultAssignment.length > 0) {
189
+ return await this.getAssignmentPage(orgDefaultAssignment[0], typePages)
190
+ }
191
+ } catch (error) {
192
+ console.error(`error`, error);
193
+ return ;
194
+ }
195
+ }
196
+ },
197
+ getMeSchema: {
198
+ async handler(type, app, objectApiName, recordId, pageId, formFactor, userSession) {
199
+ if(pageId){
200
+ const records = await objectql.getObject('pages').find({filters: [['name', '=', pageId]]});
201
+ let pageInfo = {};
202
+ if(records.length > 0){
203
+ pageInfo = records[0];
204
+ const pageVersion = await this.getLatestPageVersion(pageInfo._id, true);
205
+ if(pageVersion && pageVersion.schema){
206
+ return Object.assign({}, pageInfo, {schema: pageVersion.schema});
207
+ }
208
+ }
209
+ return ;
210
+
211
+ }
212
+ // 计算 userSchema
213
+ const userPage = await this.getUserPage(type, app, objectApiName, recordId, formFactor, userSession);
214
+ if (userPage) {
215
+ const pageVersion = await this.getLatestPageVersion(userPage._id, true);
216
+ if(pageVersion && pageVersion.schema){
217
+ return Object.assign({}, userPage, {schema: pageVersion.schema});
218
+ }
219
+ }
220
+ const defaultSchema = await this.getDefaultSchema(type, app, objectApiName, recordId, formFactor, userSession);
221
+ if(defaultSchema){
222
+ return { render_engine: process.env.DEFAULT_PAGE_RENDER , schema: defaultSchema}
223
+ }
224
+ }
225
+ },
226
+ getLatestPageVersion:{
227
+ async handler(pageId, isArchived) {
228
+ const filters = [['page', '=', pageId]];
229
+ if(isArchived){
230
+ filters.push(['is_active','=',true])
231
+ }
232
+ // 根据pageId 获取 page version
233
+ const pageVersions = await objectql.getObject('page_versions').find({filters: filters, sort: 'version desc', top: 1});
234
+ if(pageVersions.length === 1){
235
+ return pageVersions[0]
236
+ }
237
+ }
238
+ },
239
+ changePageVersion: {
240
+ async handler(pageId, schema, userSession) {
241
+ // 根据pageId 获取 pageversions
242
+ const pageVersion = await this.getLatestPageVersion(pageId);
243
+ let version = pageVersion ? pageVersion.version :0;
244
+ if(pageVersion && !pageVersion.is_active){
245
+ return await objectql.getObject('page_versions').update(pageVersion._id, {
246
+ schema: schema
247
+ }, userSession);
248
+ }else{
249
+ return await objectql.getObject('page_versions').insert({
250
+ page: pageId,
251
+ is_active: false,
252
+ schema: schema,
253
+ version: ++version,
254
+ space: userSession.spaceId
255
+ }, userSession)
256
+ }
257
+ }
258
+ },
259
+ },
260
+
261
+ /**
262
+ * Service created lifecycle event handler
263
+ */
264
+ async created() {
265
+
266
+ },
267
+
268
+ /**
269
+ * Service started lifecycle event handler
270
+ */
271
+ async started() {
272
+
273
+ },
274
+
275
+ /**
276
+ * Service stopped lifecycle event handler
277
+ */
278
+ async stopped() {
279
+
280
+ }
281
+ };
@@ -0,0 +1,23 @@
1
+ const objectql = require('@steedos/objectql');
2
+
3
+ module.exports = {
4
+ listenTo: 'page_assignments',
5
+ beforeInsert: async function(){
6
+ const {doc, spaceId} = this;
7
+ if(doc.page){
8
+ const record = await objectql.getObject('pages').findOne(doc.page);
9
+ if(record.type === 'app'){
10
+ throw new Error('禁止给应用程序页面分配权限');
11
+ }
12
+ }
13
+ },
14
+ beforeUpdate: async function(){
15
+ const {object_name, doc, spaceId, id} = this;
16
+ if(doc.page){
17
+ const record = await objectql.getObject('pages').findOne(doc.page);
18
+ if(record.type === 'app'){
19
+ throw new Error('禁止给应用程序页面分配权限');
20
+ }
21
+ }
22
+ }
23
+ }
@@ -0,0 +1,15 @@
1
+ const objectql = require('@steedos/objectql');
2
+ const _ = require('underscore');
3
+
4
+ module.exports = {
5
+ listenTo: 'page_versions',
6
+ afterUpdate: async function(){
7
+ const {id, doc, previousDoc} = this;
8
+ if(_.has(doc, 'is_archived') && doc.is_archived && previousDoc.is_archived != doc.is_archived ){
9
+ const record = await objectql.getObject('page_versions').findOne(id)
10
+ await objectql.getObject('pages').directUpdate(record.page, {
11
+ is_archived: true
12
+ })
13
+ }
14
+ }
15
+ }
@@ -0,0 +1,21 @@
1
+ const objectql = require('@steedos/objectql');
2
+ const _ = require('underscore');
3
+
4
+ module.exports = {
5
+ listenTo: 'page_versions',
6
+ beforeUpdate: async function(){
7
+ const {id, doc} = this;
8
+ const record = await objectql.getObject('page_versions').findOne(id);
9
+ if(record){
10
+ const getLatestPageVersion = await objectql.getSteedosSchema().broker.call('page.getLatestPageVersion', {
11
+ pageId: record.page
12
+ })
13
+ if(getLatestPageVersion._id != id){
14
+ throw new Error('禁止修改非最新版');
15
+ }
16
+ }
17
+ // if(_.has(doc, 'is_archived') && !doc.is_archived){
18
+
19
+ // }
20
+ }
21
+ }
@@ -0,0 +1,30 @@
1
+ const objectql = require('@steedos/objectql');
2
+ const _ = require('lodash');
3
+ module.exports = {
4
+ listenTo: 'pages',
5
+ beforeUpdate: async function(){
6
+ const {object_name, doc, spaceId, id} = this;
7
+ if(_.has(doc, 'type') || _.has(doc, 'render_engine')){
8
+ const record = await objectql.getObject('pages').findOne(id);
9
+ if(_.has(doc, 'type') && doc.type != record.type){
10
+ throw new Error('禁止修改页面类型');
11
+ }
12
+ if(_.has(doc, 'render_engine') && doc.render_engine != record.render_engine){
13
+ throw new Error('禁止修改页面渲染器');
14
+ }
15
+ }
16
+
17
+ if(_.has(doc, 'is_archived') && !doc.is_archived){
18
+ let type = null;
19
+ if(_.has(doc, 'type')){
20
+ type = doc.type
21
+ }else{
22
+ const record = await objectql.getObject('pages').findOne(id);
23
+ type = record.type;
24
+ }
25
+ if(type === 'app'){
26
+ throw new Error('禁止停用应用程序页面');
27
+ }
28
+ }
29
+ }
30
+ }
@@ -24,52 +24,17 @@ module.exports = {
24
24
  listenTo: 'pages',
25
25
 
26
26
  afterFind: async function(){
27
- let filters = objectql.parserFilters(this.query.filters)
28
- let dataList = []
29
- if(filters._id && !filters._id.$ne){
30
- let id = filters._id
31
- id = id.replace(/\\/g, '');
32
- let data = await get(id);
33
- if(data){
34
- dataList = [data]
35
- }
36
- }else{
37
- dataList = await getAll();
38
- if(filters.name){
39
- dataList = _.filter(dataList, (item)=>{
40
- return item.name == filters.name
41
- })
42
- }
43
- }
27
+ let spaceId = this.spaceId;
28
+ this.data.values = this.data.values.concat(await getAll());
29
+
30
+ this.data.values = objectql.getSteedosSchema().metadataDriver.find(this.data.values, this.query, spaceId);
44
31
 
45
- if(dataList){
46
- const dbRecrodsName = _.pluck(this.data.values, 'name');
47
- this.data.values = this.data.values.concat(_.filter(dataList, function(data){return data._id == data.name && !_.include(dbRecrodsName, data.name) }))
48
- }
49
32
  },
50
33
  afterAggregate: async function(){
51
- let filters = objectql.parserFilters(this.query.filters)
52
- let dataList = []
53
- if(filters._id && !filters._id.$ne){
54
- let id = filters._id
55
- id = id.replace(/\\/g, '');
56
- let data = await get(id);
57
- if(data){
58
- dataList = [data]
59
- }
60
- }else{
61
- dataList = await getAll();
62
- if(filters.name){
63
- dataList = _.filter(dataList, (item)=>{
64
- return item.name == filters.name
65
- })
66
- }
67
- }
34
+ let spaceId = this.spaceId;
35
+ this.data.values = this.data.values.concat(await getAll());
68
36
 
69
- if(dataList){
70
- const dbRecrodsName = _.pluck(this.data.values, 'name');
71
- this.data.values = this.data.values.concat(_.filter(dataList, function(data){return data._id == data.name && !_.include(dbRecrodsName, data.name) }))
72
- }
37
+ this.data.values = objectql.getSteedosSchema().metadataDriver.find(this.data.values, this.query, spaceId);
73
38
  },
74
39
  afterCount: async function(){
75
40
  let result = await objectql.getObject(this.object_name).find(this.query, await auth.getSessionByUserId(this.userId, this.spaceId))
@@ -77,11 +42,11 @@ module.exports = {
77
42
  },
78
43
  afterFindOne: async function(){
79
44
  if(_.isEmpty(this.data.values)){
80
- let id = this.id
81
- let data = await get(id);
82
- if(data){
83
- this.data.values = data;
84
- }
45
+ const all = await getAll();
46
+ const id = this.id;
47
+ this.data.values = _.find(all, function(item){
48
+ return item._id === id
49
+ });
85
50
  }
86
51
  }
87
52
  }
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@steedos/service-pages",
3
- "version": "2.2.3",
3
+ "version": "2.2.6",
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": "57dfca5cd66528b2fbe6878f73f2e84b915d5e32"
14
+ "gitHead": "1742aab217ef9d96dc3514cac617db9863956f93"
15
15
  }