@steedos/service-pages 2.2.18 → 2.2.21

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.
@@ -37,18 +37,18 @@
37
37
  return _innerWaitForThing(obj, path, func);
38
38
  };
39
39
 
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
- };
40
+ // window.SteedosMonacoEnvironment = window.MonacoEnvironment = {
41
+ // getWorkerUrl: function(workerId, label) {
42
+ // return `data:text/javascript;charset=utf-8,${encodeURIComponent(`
43
+ // self.MonacoEnvironment = {
44
+ // baseUrl: '/unpkg.com/monaco-editor/min/'
45
+ // };
46
+ // importScripts('/unpkg.com/monaco-editor/min/vs/base/worker/workerMain.js');`
47
+ // )}`;
48
+ // }
49
+ // };
50
50
 
51
- Object.defineProperty(window, 'MonacoEnvironment', {set: ()=>{}, get: ()=>window.SteedosMonacoEnvironment})
51
+ // Object.defineProperty(window, 'MonacoEnvironment', {set: ()=>{}, get: ()=>window.SteedosMonacoEnvironment})
52
52
 
53
53
  })();
54
54
 
@@ -65,7 +65,8 @@ function injectScript(src) {
65
65
  injectScript('/unpkg.com/@steedos-builder/react/dist/builder-react.unpkg.js')
66
66
  .then(() => {
67
67
  console.log('Builder React loaded!');
68
- window.define.amd = undefined;
68
+ if (window.define)
69
+ window.define.amd = undefined;
69
70
  window.ReactDOM = ReactDom;
70
71
 
71
72
  const BuilderSDK = BuilderReact;
@@ -79,7 +80,7 @@ injectScript('/unpkg.com/@steedos-builder/react/dist/builder-react.unpkg.js')
79
80
 
80
81
  Builder.set({
81
82
  rootUrl: __meteor_runtime_config__.ROOT_URL,
82
- unpkgUrl: Meteor.settings.public.unpkgUrl || 'https://unpkg.com'
83
+ unpkgUrl: '/unpkg.com'
83
84
  })
84
85
 
85
86
  if(Meteor.settings.public.page && Meteor.settings.public.page.assetUrls){
@@ -36,4 +36,24 @@ window.addEventListener('message', function (event) {
36
36
  }
37
37
 
38
38
  }
39
- });
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
+ })
@@ -57,7 +57,7 @@ Steedos.Page.render = function (root, page, data) {
57
57
 
58
58
  const loadingContentData = {
59
59
  "inputs": [],
60
- "title": "loading",
60
+ // "title": "loading",
61
61
  "blocks": [
62
62
  {
63
63
  "@type": "@builder.io/sdk:Element",
@@ -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
  }
@@ -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=modified&$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
+ });
59
+ const data = {
60
+ AmisSchema: schema
61
+ };
62
+ console.log("record data", data)
63
+ comp.data = data;
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);
@@ -17,13 +17,18 @@ router.get('/api/pageDesign', core.requireAuthentication, async function (req, r
17
17
  const assetUrls = process.env.STEEDOS_PUBLIC_PAGE_ASSETURLS.split(',');
18
18
  assetUrl = `assetUrl=${assetUrls.join("&assetUrl=")}&`;
19
19
  }
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
20
 
22
- let data = fs.readFileSync(__dirname+'/design.html', 'utf8');
23
- res.send(data.replace('SteedosBuilderHost',steedosBuilderHost));
21
+ const dataContext = {
22
+ rootUrl: __meteor_runtime_config__.ROOT_URL,
23
+ tenantId: userSession.spaceId,
24
+ userId: userSession.userId,
25
+ authToken: userSession.authToken
26
+ }
24
27
 
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=`;
25
29
 
26
- res.sendFile(__dirname+'/design.html')
30
+ let data = fs.readFileSync(__dirname+'/design.html', 'utf8');
31
+ res.send(data.replace('SteedosBuilderHost',steedosBuilderHost).replace('DataContext', JSON.stringify(dataContext)));
27
32
  } catch (error) {
28
33
  res.status(500).send({ message: error.message });
29
34
  }
@@ -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.18",
3
+ "version": "2.2.21",
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": "4b9d49b8610ad4b0e18f71d0db33cf4f2f1b58e9"
14
+ "gitHead": "39204e6e65ded584d76363cebfdcbcb061238d38"
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
  /**