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

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,177 @@
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
+ let queryParams = FlowRouter.current().queryParams
355
+
356
+ if(_.isArray(queryParams.side_object)){
357
+ if(queryParams.side_object.length >= 1){
358
+ queryParams.side_object = queryParams.side_object[0]
359
+ }else{
360
+ queryParams.side_object = ''
361
+ }
362
+ }
363
+
364
+ if(_.isArray(queryParams.side_listview_id)){
365
+ if(queryParams.side_listview_id.length >= 1){
366
+ queryParams.side_listview_id = queryParams.side_listview_id[0]
367
+ }else{
368
+ queryParams.side_listview_id = ''
369
+ }
370
+ };
371
+
372
+ updatePropsData = {
373
+ objectName: objectName,
374
+ pageType: regions.pageType,
375
+ listViewId: regions.listViewId,
376
+ ...queryParams
377
+ };
378
+ if(queryParams.side_listview_id){
379
+ updatePropsData.listName=queryParams.side_listview_id
380
+ }else if(regions.listViewId){
381
+ updatePropsData.listName=regions.listViewId
382
+ }
383
+
384
+ updatePropsData.display = Steedos.Page.getDisplay()
385
+
386
+ updatePropsData.recordId = Tracker.nonreactive(function() {
387
+ return Session.get("record_id");
388
+ });
389
+ lastData = ((ref1 = SteedosUI.refs[self.pageName]) != null ? (ref2 = ref1.__$schema) != null ? ref2.data : void 0 : void 0) || {};
390
+ // console.log("page_object Steedos.Page.Record.updateProps", {
391
+ // data: window._.defaultsDeep(updatePropsData, lastData)
392
+ // });
393
+ return SteedosUI.refs[self.pageName].updateProps({
394
+ data: window._.defaultsDeep(updatePropsData, lastData)
395
+ });
396
+ }
397
+ } catch (error) {
398
+ e = error;
399
+ console.error(self.pageName + ": " + e);
400
+ }
401
+ }
402
+ if (!updateProps && self.pageName && SteedosUI.refs[self.pageName]) {
403
+ try {
404
+ SteedosUI.refs[self.pageName].unmount();
405
+ } catch (error) {
406
+ e = error;
407
+ console.error(self.pageName + ": " + e);
408
+ }
409
+ }
410
+ if (self.data.regions) {
411
+ regions = Tracker.nonreactive(self.data.regions);
412
+ this.lastRegions = regions;
413
+ if (regions && regions.page && regions.page.schema) {
414
+ schema = regions.page.schema;
415
+ if (_.isString(schema)) {
416
+ schema = JSON.parse(schema);
417
+ }
418
+ self.pageName = schema.name;
419
+ }
420
+ }
421
+ objectName = Tracker.nonreactive(function() {
422
+ return Session.get("object_name");
423
+ });
424
+ recordId = Tracker.nonreactive(function() {
425
+ return Session.get("record_id");
426
+ });
427
+ container = Steedos.Page.Object.render(self, objectName, recordId);
428
+ // console.log("page_object Steedos.Page.Object.render");
429
+ if (container) {
430
+ return self.containerList.push(container);
431
+ }
432
+ });
433
+ };
434
+ Steedos.Page.Object.Template.onDestroyed = function(){
435
+ var e, self;
436
+ self = this;
437
+ try {
438
+ SteedosUI.refs[this.pageName].unmount();
439
+ } catch (error) {
440
+ e = error;
441
+ console.error(this.pageName + ": " + e);
442
+ }
443
+ return _.each(this.containerList, function(container) {
444
+ if (container) {
445
+ return ReactDOM.unmountComponentAtNode(container);
446
+ }
447
+ });
448
+ };
449
+ Steedos.Page.Object.render = function(template, objectApiName, recordId = null, options){
450
+ try {
451
+ if (!template.data.regions || !objectApiName) {
452
+ return;
453
+ }
454
+ const { page, ...data } = Tracker.nonreactive(template.data.regions);
455
+ var rootId = "steedosPageObjetRoot";
456
+ var modalRoot = document.getElementById(rootId);
457
+ // if(modalRoot){
458
+ // modalRoot.remove();
459
+ // }
460
+ if (!modalRoot) {
461
+ modalRoot = document.createElement('div');
462
+ modalRoot.setAttribute('id', rootId);
463
+ modalRoot.setAttribute('class', 'h-full')
464
+ $(".page-object-root")[0].appendChild(modalRoot);
465
+ }
466
+
467
+ if (page.render_engine && page.render_engine != 'redash') {
468
+ if(_.isArray(data.side_object)){
469
+ if(data.side_object.length >= 1){
470
+ data.side_object = data.side_object[0]
471
+ }else{
472
+ data.side_object = ''
473
+ }
474
+ }
475
+
476
+ if(_.isArray(data.side_listview_id)){
477
+ if(data.side_listview_id.length >= 1){
478
+ data.side_listview_id = data.side_listview_id[0]
479
+ }else{
480
+ data.side_listview_id = ''
481
+ }
482
+ }
483
+
484
+ if(FlowRouter.current().queryParams.side_listview_id){
485
+ data.listName = FlowRouter.current().queryParams.side_listview_id;
486
+ }else if(data.listViewId){
487
+ data.listName = data.listViewId;
488
+ }
489
+
490
+ if(_.isArray(data.listName)){
491
+ if(data.listName.length >= 1){
492
+ data.listName = data.listName[0]
493
+ }else{
494
+ data.listName = ''
495
+ }
496
+ }
497
+
498
+ return Steedos.Page.render($("#" + rootId)[0], page, Object.assign({}, options, data, {recordId}));
499
+ }
500
+ } catch (error) {
501
+
502
+ }
503
+ }
504
+
300
505
  Steedos.Page.Listview.getDefaultName = function (objectApiName, listViewName) {
301
506
  return `listview_${objectApiName}_${listViewName}`;
302
507
  };
@@ -334,7 +539,7 @@
334
539
  if (!template.data.regions || !objectApiName || !recordId) {
335
540
  return;
336
541
  }
337
- const { page, ...data } = template.data.regions();
542
+ const { page, ...data } = Tracker.nonreactive(template.data.regions);
338
543
  var rootId = "steedosPageRecordRoot";
339
544
  var modalRoot = document.getElementById(rootId);
340
545
  // if(modalRoot){
@@ -348,7 +553,7 @@
348
553
  }
349
554
 
350
555
  if (page.render_engine && page.render_engine != 'redash') {
351
- return Steedos.Page.render($("#" + rootId)[0], page, Object.assign({}, options, data));
556
+ return Steedos.Page.render($("#" + rootId)[0], page, Object.assign({}, options, data, {recordId}));
352
557
  }
353
558
  } catch (error) {
354
559
 
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.2",
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": "12a38495b498f270c96d571e9fb4216d3df64d49",
12
12
  "dependencies": {
13
13
  "ejs": "^3.1.8"
14
14
  }