@steedos/service-pages 2.4.14 → 2.4.15-beta.1

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.
@@ -6,6 +6,9 @@
6
6
  ;(function(){
7
7
  Steedos.Page = {
8
8
  App: {},
9
+ Object: {
10
+ Template: {}
11
+ },
9
12
  Record: {},
10
13
  Listview: {},
11
14
  Header: {},
@@ -35,6 +38,23 @@
35
38
  return modalRoot;
36
39
  }
37
40
 
41
+ Steedos.Page.getDisplay = (objectName)=>{
42
+
43
+ let display = FlowRouter.current().queryParams.display;
44
+ // console.log('=====getDisplay====>', display)
45
+ // const key = `tab.${objectName}.display`;
46
+ const key = 'page_display'
47
+ if(display){
48
+ // console.log('=====getDisplay===setItem=>', key, display)
49
+ localStorage.setItem(key, display)
50
+ }else{
51
+ display = localStorage.getItem(key);
52
+ }
53
+
54
+ return display;
55
+
56
+ }
57
+
38
58
  Steedos.Page.getPage = function (type, appId, objectApiName, recordId, pageId) {
39
59
  let objectInfo = null;
40
60
  let searchParams = FlowRouter.current().queryParams;
@@ -65,32 +85,42 @@
65
85
  if(type === 'list'){
66
86
  return {
67
87
  render_engine: 'amis',
68
- name: 'steedosListviewPage',
69
- schema:{
70
- "name": `${objectApiName}-listview-${listViewId}`,
71
- "type": "steedos-page-listview",
72
- "showHeader": true,
73
- "objectApiName": objectApiName,
74
- "appId": appId,
75
- "display": display,
76
- "columnsTogglable": false,
77
- "listName": "all",
88
+ name: "steedosPageObjectControl",
89
+ schema: {
90
+ "type": "steedos-page-object-control",
91
+ "name": "steedosPageObjectControl"
78
92
  }
93
+ // name: 'steedosListviewPage',
94
+ // schema:{
95
+ // "name": `${objectApiName}-listview-${listViewId}`,
96
+ // "type": "steedos-page-listview",
97
+ // "showHeader": true,
98
+ // "objectApiName": objectApiName,
99
+ // "appId": appId,
100
+ // "display": display,
101
+ // "columnsTogglable": false,
102
+ // // "listName": "all",
103
+ // }
79
104
  }
80
105
  }else if(type === 'record'){
81
106
  return {
82
107
  render_engine: 'amis',
83
- name: 'steedosRecordPage',
108
+ name: "steedosPageObjectControl",
84
109
  schema: {
85
- "name": `${objectApiName}-recordDetail-${recordId}`,
86
- "type": "steedos-page-record-detail",
87
- "objectApiName": objectApiName,
88
- "sideObject": sideObject,
89
- "sideListviewId": sideListviewId,
90
- "recordId": recordId,
91
- "display": display,
92
- "appId": appId,
110
+ "type": "steedos-page-object-control",
111
+ "name": "steedosPageObjectControl"
93
112
  }
113
+ // name: 'steedosRecordPage',
114
+ // schema: {
115
+ // "name": `${objectApiName}-recordDetail-${recordId}`,
116
+ // "type": "steedos-page-record-detail",
117
+ // "objectApiName": objectApiName,
118
+ // "sideObject": sideObject,
119
+ // "sideListviewId": sideListviewId,
120
+ // // "recordId": recordId,
121
+ // "display": display,
122
+ // "appId": appId,
123
+ // }
94
124
  }
95
125
 
96
126
  }else if(type === 'related_list'){
@@ -206,12 +236,12 @@
206
236
  }
207
237
 
208
238
  Steedos.Page.render = function (root, page, data, options = {}) {
209
- // console.log(`Steedos.Page.render`, root, page)
239
+ // console.log(`Steedos.Page.render`, root, page, data)
210
240
  if (page.render_engine && page.render_engine != 'redash') {
211
241
 
212
242
  let schema = typeof page.schema === 'string' ? JSON.parse(page.schema) : page.schema;
213
243
  const rootUrl = __meteor_runtime_config__.ROOT_URL;
214
- const defData = lodash.defaultsDeep({}, data , {data: data} , {
244
+ const defData = lodash.defaultsDeep({}, {data: data} , {
215
245
  data: {
216
246
  app_id: data.appId,
217
247
  object_name: data.objectName,
@@ -237,6 +267,10 @@
237
267
 
238
268
  schema = lodash.defaultsDeep(defData , schema);
239
269
 
270
+ delete schema.data.recordId
271
+ delete schema.data.record_id
272
+
273
+
240
274
  const findComponent = (obj, componentName)=>{
241
275
  return lodash.find(obj, {name : componentName})
242
276
  }
@@ -297,6 +331,134 @@
297
331
  return container
298
332
  };
299
333
 
334
+ Steedos.Page.Object.Template.onRendered = function(){
335
+ var objectName, recordId, self;
336
+ self = this;
337
+ objectName = Session.get("object_name");
338
+ this.containerList = [];
339
+ this.pageName = null;
340
+ return this.autorun(function(computation) {
341
+ // console.log('autorun=====>computation:', computation)
342
+ // Session.get("record_id");
343
+ var container, e, lastData, ref, ref1, ref2, regions, schema, updateProps, updatePropsData;
344
+ regions = self.data.regions();
345
+ // console.log('regions====>', regions, this.lastRegions);
346
+ updateProps = true;
347
+ if (regions.objectName !== ((ref = this.lastRegions) != null ? ref.objectName : void 0)) {
348
+ updateProps = false;
349
+ }
350
+ this.lastRegions = regions;
351
+ if (updateProps && self.pageName) {
352
+ try {
353
+ if (SteedosUI.refs[self.pageName]) {
354
+ updatePropsData = {
355
+ objectName: objectName,
356
+ pageType: regions.pageType,
357
+ listViewId: regions.listViewId,
358
+ ...FlowRouter.current().queryParams
359
+ };
360
+ if(FlowRouter.current().queryParams.side_listview_id){
361
+ updatePropsData.listName=FlowRouter.current().queryParams.side_listview_id
362
+ }else if(regions.listViewId){
363
+ updatePropsData.listName=regions.listViewId
364
+ }
365
+
366
+ updatePropsData.display = Steedos.Page.getDisplay()
367
+
368
+ updatePropsData.recordId = Tracker.nonreactive(function() {
369
+ return Session.get("record_id");
370
+ });
371
+ lastData = ((ref1 = SteedosUI.refs[self.pageName]) != null ? (ref2 = ref1.__$schema) != null ? ref2.data : void 0 : void 0) || {};
372
+ // console.log("page_object Steedos.Page.Record.updateProps", {
373
+ // data: window._.defaultsDeep(updatePropsData, lastData)
374
+ // });
375
+ return SteedosUI.refs[self.pageName].updateProps({
376
+ data: window._.defaultsDeep(updatePropsData, lastData)
377
+ });
378
+ }
379
+ } catch (error) {
380
+ e = error;
381
+ console.error(self.pageName + ": " + e);
382
+ }
383
+ }
384
+ if (!updateProps && self.pageName && SteedosUI.refs[self.pageName]) {
385
+ try {
386
+ SteedosUI.refs[self.pageName].unmount();
387
+ } catch (error) {
388
+ e = error;
389
+ console.error(self.pageName + ": " + e);
390
+ }
391
+ }
392
+ if (self.data.regions) {
393
+ regions = Tracker.nonreactive(self.data.regions);
394
+ this.lastRegions = regions;
395
+ if (regions && regions.page && regions.page.schema) {
396
+ schema = regions.page.schema;
397
+ if (_.isString(schema)) {
398
+ schema = JSON.parse(schema);
399
+ }
400
+ self.pageName = schema.name;
401
+ }
402
+ }
403
+ objectName = Tracker.nonreactive(function() {
404
+ return Session.get("object_name");
405
+ });
406
+ recordId = Tracker.nonreactive(function() {
407
+ return Session.get("record_id");
408
+ });
409
+ container = Steedos.Page.Object.render(self, objectName, recordId);
410
+ // console.log("page_object Steedos.Page.Object.render");
411
+ if (container) {
412
+ return self.containerList.push(container);
413
+ }
414
+ });
415
+ };
416
+ Steedos.Page.Object.Template.onDestroyed = function(){
417
+ var e, self;
418
+ self = this;
419
+ try {
420
+ SteedosUI.refs[this.pageName].unmount();
421
+ } catch (error) {
422
+ e = error;
423
+ console.error(this.pageName + ": " + e);
424
+ }
425
+ return _.each(this.containerList, function(container) {
426
+ if (container) {
427
+ return ReactDOM.unmountComponentAtNode(container);
428
+ }
429
+ });
430
+ };
431
+ Steedos.Page.Object.render = function(template, objectApiName, recordId = null, options){
432
+ try {
433
+ if (!template.data.regions || !objectApiName) {
434
+ return;
435
+ }
436
+ const { page, ...data } = Tracker.nonreactive(template.data.regions);
437
+ var rootId = "steedosPageObjetRoot";
438
+ var modalRoot = document.getElementById(rootId);
439
+ // if(modalRoot){
440
+ // modalRoot.remove();
441
+ // }
442
+ if (!modalRoot) {
443
+ modalRoot = document.createElement('div');
444
+ modalRoot.setAttribute('id', rootId);
445
+ modalRoot.setAttribute('class', 'h-full')
446
+ $(".page-object-root")[0].appendChild(modalRoot);
447
+ }
448
+
449
+ if (page.render_engine && page.render_engine != 'redash') {
450
+ if(FlowRouter.current().queryParams.side_listview_id){
451
+ data.listName = FlowRouter.current().queryParams.side_listview_id;
452
+ }else if(data.listViewId){
453
+ data.listName = data.listViewId;
454
+ }
455
+ return Steedos.Page.render($("#" + rootId)[0], page, Object.assign({}, options, data, {recordId}));
456
+ }
457
+ } catch (error) {
458
+
459
+ }
460
+ }
461
+
300
462
  Steedos.Page.Listview.getDefaultName = function (objectApiName, listViewName) {
301
463
  return `listview_${objectApiName}_${listViewName}`;
302
464
  };
@@ -334,7 +496,7 @@
334
496
  if (!template.data.regions || !objectApiName || !recordId) {
335
497
  return;
336
498
  }
337
- const { page, ...data } = template.data.regions();
499
+ const { page, ...data } = Tracker.nonreactive(template.data.regions);
338
500
  var rootId = "steedosPageRecordRoot";
339
501
  var modalRoot = document.getElementById(rootId);
340
502
  // if(modalRoot){
@@ -348,7 +510,7 @@
348
510
  }
349
511
 
350
512
  if (page.render_engine && page.render_engine != 'redash') {
351
- return Steedos.Page.render($("#" + rootId)[0], page, Object.assign({}, options, data));
513
+ return Steedos.Page.render($("#" + rootId)[0], page, Object.assign({}, options, data, {recordId}));
352
514
  }
353
515
  } catch (error) {
354
516
 
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@steedos/service-pages",
3
- "version": "2.4.14",
3
+ "version": "2.4.15-beta.1",
4
4
  "main": "package.service.js",
5
5
  "scripts": {},
6
6
  "license": "MIT",
@@ -8,7 +8,7 @@
8
8
  "publishConfig": {
9
9
  "access": "public"
10
10
  },
11
- "gitHead": "4a6e702d9416a27901ebd6af26d0d5a399ea49b1",
11
+ "gitHead": "dfdfa3789aed2115bec637d8b98a8ee9960fe9a0",
12
12
  "dependencies": {
13
13
  "ejs": "^3.1.8"
14
14
  }