@datarailsshared/dr_renderer 1.2.98 → 1.2.99

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.
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@datarailsshared/dr_renderer",
3
- "version": "1.2.98",
3
+ "version": "1.2.99",
4
4
  "description": "DataRails charts and tables renderer",
5
5
  "keywords": [
6
6
  "datarails",
@@ -18,74 +18,78 @@ let getPublishedItemsRenderer = function (publishedItemsRenderer) {
18
18
  return false;
19
19
  }
20
20
 
21
- publishedItemsRenderer.resizeTable = function (options, window) {
21
+ publishedItemsRenderer.resizeTable = function (options, iframeWindow) {
22
22
  options.alreadySetTimeout = null;
23
- const publish_item_image = window.document.getElementById('publish_item_image');
24
- const table = window.document.getElementsByTagName("table")[0];
25
- const body = window.document.getElementsByTagName("body")[0];
26
- let body_zoom = body.style.zoom;
27
- body_zoom = parseFloat(body_zoom);
23
+ const publish_item_image = iframeWindow.document.getElementById('publish_item_image');
24
+ const table = iframeWindow.document.getElementsByTagName("table")[0];
25
+ const body = iframeWindow.document.getElementsByTagName("body")[0];
28
26
 
29
- if (!body_zoom) {
30
- body_zoom = 1;
27
+ if (table && options.responsive) {
28
+ publishedItemsRenderer.zoomTable(iframeWindow, table, body);
31
29
  }
32
30
 
33
- if (table && options.autoResize) {
34
- let zoom = table.style.zoom;
35
- zoom = parseFloat(zoom);
31
+ publishedItemsRenderer.resizePublishedImage(publish_item_image, iframeWindow, body);
32
+ }
36
33
 
37
- if (!zoom) {
38
- zoom = 1;
39
- }
34
+ publishedItemsRenderer.zoomTable = function(iframeWindow, table, body) {
35
+ let body_zoom = body.style.zoom;
36
+ body_zoom = parseFloat(body_zoom) || 1;
40
37
 
41
- const positionInfo = table.getBoundingClientRect();
42
- let height = (positionInfo.height + positionInfo.y * 2) * zoom * body_zoom;
43
- let width = (positionInfo.width + positionInfo.x * 2) * zoom * body_zoom;
44
-
45
- if (height < window.innerHeight && width < window.innerWidth) {
46
- zoom += 0.05;
47
- height = (positionInfo.height + positionInfo.y * 2) * zoom * body_zoom;
48
- width = (positionInfo.width + positionInfo.x * 2) * zoom * body_zoom;
49
- if (height < window.innerHeight && width < window.innerWidth) {
50
- table.style.zoom = zoom;
51
- setTimeout(function () {
52
- publishedItemsRenderer.resizeTable(options, window);
53
- }, 10);
54
- }
55
- } else if (height >= window.innerHeight || width >= window.innerWidth) {
56
- zoom -= 0.05;
57
- height = (positionInfo.height + positionInfo.y * 2) * zoom * body_zoom;
58
- width = (positionInfo.width + positionInfo.x * 2) * zoom * body_zoom;
38
+ let zoom = table.style.zoom;
39
+ zoom = parseFloat(zoom) || 1;
40
+
41
+ const positionInfo = table.getBoundingClientRect();
42
+ let width = Math.ceil((positionInfo.width + iframeWindow.innerWidth - iframeWindow.document.body.offsetWidth) * zoom * body_zoom);
43
+
44
+ if (width < iframeWindow.innerWidth) {
45
+ zoom += 0.05;
46
+
47
+ width = Math.ceil((positionInfo.width + iframeWindow.innerWidth - iframeWindow.document.body.offsetWidth) * zoom * body_zoom);
48
+ if (width < iframeWindow.innerWidth) {
59
49
  table.style.zoom = zoom;
60
- if (height >= window.innerHeight || width >= window.innerWidth) {
61
- setTimeout(function () {
62
- publishedItemsRenderer.resizeTable(options, window);
63
- }, 10);
64
- }
65
- }
66
- }
67
- if (publish_item_image) {
68
- if (publish_item_image.style.height === '100%') {
69
- publish_item_image.style.height = 'auto';
70
- publish_item_image.style.width = '100%';
71
- publish_item_image.style.marginTop = "";
72
50
  setTimeout(function () {
73
- publishedItemsRenderer.resizeTable(options, window);
51
+ publishedItemsRenderer.zoomTable(iframeWindow, table, body);
74
52
  }, 10);
75
53
  }
54
+ } else if (width >= iframeWindow.innerWidth) {
55
+ zoom -= 0.05;
76
56
 
77
- const imgPositionInfo = publish_item_image.getBoundingClientRect();
78
- const height = (imgPositionInfo.height + imgPositionInfo.y * 2) * body_zoom;
79
- if (height > window.innerHeight) {
80
- publish_item_image.style.height = '100%';
81
- publish_item_image.style.width = 'auto';
82
- } else if (height < window.innerHeight) {
83
- const temp = (window.innerHeight - height) / 2;
84
- publish_item_image.style.marginTop = (temp / body_zoom + imgPositionInfo.y) + "px";
57
+ width = Math.ceil((positionInfo.width + iframeWindow.innerWidth - iframeWindow.document.body.offsetWidth) * zoom * body_zoom);
58
+ table.style.zoom = zoom;
59
+ if (width >= iframeWindow.innerWidth) {
60
+ setTimeout(function () {
61
+ publishedItemsRenderer.zoomTable(iframeWindow, table, body);
62
+ }, 10);
85
63
  }
86
64
  }
87
65
  }
88
66
 
67
+ publishedItemsRenderer.resizePublishedImage = function(publish_item_image, iframeWindow, body) {
68
+ if (!publish_item_image) return;
69
+
70
+ let body_zoom = body.style.zoom;
71
+ body_zoom = parseFloat(body_zoom) || 1;
72
+
73
+ if (publish_item_image.style.height === '100%') {
74
+ publish_item_image.style.height = 'auto';
75
+ publish_item_image.style.width = '100%';
76
+ publish_item_image.style.marginTop = "";
77
+ setTimeout(function () {
78
+ publishedItemsRenderer.resizePublishedImage(publish_item_image, iframeWindow, body);
79
+ }, 10);
80
+ }
81
+
82
+ const imgPositionInfo = publish_item_image.getBoundingClientRect();
83
+ const height = (imgPositionInfo.height + imgPositionInfo.y * 2) * body_zoom;
84
+ if (height > iframeWindow.innerHeight) {
85
+ publish_item_image.style.height = '100%';
86
+ publish_item_image.style.width = 'auto';
87
+ } else if (height < iframeWindow.innerHeight) {
88
+ const temp = (iframeWindow.innerHeight - height) / 2;
89
+ publish_item_image.style.marginTop = (temp / body_zoom + imgPositionInfo.y) + "px";
90
+ }
91
+ }
92
+
89
93
  publishedItemsRenderer.resetTableZoom = function (document) {
90
94
  const table = document.getElementsByTagName("table")[0];
91
95
  if (table) {
@@ -93,16 +97,22 @@ let getPublishedItemsRenderer = function (publishedItemsRenderer) {
93
97
  }
94
98
  }
95
99
 
96
- publishedItemsRenderer.changedAutoResize = function (options, window, document) {
97
- if (!options.autoResize) {
98
- publishedItemsRenderer.resetTableZoom(document);
99
- } else {
100
- if (!options.alreadySetTimeout) {
101
- options.alreadySetTimeout = setTimeout(function () {
102
- publishedItemsRenderer.resizeTable(options, window);
103
- }, 100);
104
- }
100
+ publishedItemsRenderer.changedAutoResize = function (options, iframeWindow, document) {
101
+ Object.assign(iframeWindow.__options__, options);
102
+ const table = document.getElementsByTagName("table")[0];
103
+ if (table) {
104
+ table.style.margin = options.responsive ? '0 auto' : '';
105
+ }
106
+
107
+ if (!options.responsive) {
108
+ publishedItemsRenderer.resetTableZoom(document);
109
+ } else {
110
+ if (!options.alreadySetTimeout) {
111
+ options.alreadySetTimeout = setTimeout(function () {
112
+ publishedItemsRenderer.resizeTable(options, iframeWindow);
113
+ }, 100);
105
114
  }
115
+ }
106
116
  }
107
117
 
108
118
  publishedItemsRenderer.changedInputValue = function (firstTime, scope, options) {
@@ -312,18 +322,18 @@ let getPublishedItemsRenderer = function (publishedItemsRenderer) {
312
322
  }
313
323
  }
314
324
 
315
- publishedItemsRenderer.addEventListeners = function (document, window, scope, options) {
325
+ publishedItemsRenderer.addEventListeners = function (document, iframeWindow, scope, options) {
316
326
  document.addEventListener("DOMContentLoaded", function () {
317
327
  if (!options.alreadySetTimeout) {
318
328
  options.alreadySetTimeout = setTimeout(function () {
319
- publishedItemsRenderer.resizeTable(options, window);
329
+ publishedItemsRenderer.resizeTable(options, iframeWindow);
320
330
  }, 50);
321
331
  }
322
332
  });
323
- window.addEventListener("resize", function () {
333
+ iframeWindow.addEventListener("resize", function () {
324
334
  if (!options.alreadySetTimeout) {
325
335
  options.alreadySetTimeout = setTimeout(function () {
326
- publishedItemsRenderer.resizeTable(options, window);
336
+ publishedItemsRenderer.resizeTable(iframeWindow.__options__, iframeWindow);
327
337
  }, 100);
328
338
  }
329
339
  });
@@ -334,7 +344,7 @@ let getPublishedItemsRenderer = function (publishedItemsRenderer) {
334
344
  let td_elem = all_a_hrefs[i].closest('td');
335
345
  td_elem.classList.add("apply_hover");
336
346
  td_elem.addEventListener('click', function (event) {
337
- publishedItemsRenderer.formulaCellClicked(event, scope, options, window)
347
+ publishedItemsRenderer.formulaCellClicked(event, scope, options, iframeWindow)
338
348
  });
339
349
  }
340
350
  }
@@ -348,17 +358,30 @@ let getPublishedItemsRenderer = function (publishedItemsRenderer) {
348
358
  return this.options.inputValuesData;
349
359
  }
350
360
 
351
- publishedItemsRenderer.initPublishedItem = function (document, window, scope, options) {
361
+ publishedItemsRenderer.initPublishedItem = function (document, iframeWindow, scope, options) {
352
362
  this.document = document;
353
363
  this.scope = scope;
354
364
  this.options = options;
365
+ iframeWindow.__options__ = options;
355
366
  publishedItemsRenderer.prepareInputCells(document, scope, options, this.isScenarioMode);
356
- publishedItemsRenderer.addEventListeners(document, window, scope, options);
367
+ publishedItemsRenderer.applyInitDocumentStyles(document, iframeWindow);
368
+ publishedItemsRenderer.addEventListeners(document, iframeWindow, scope, options);
357
369
 
358
370
  setTimeout(function () {
359
371
  publishedItemsRenderer.changedInputValue(true, scope, options);
360
372
  }, 500);
361
373
  }
374
+
375
+ publishedItemsRenderer.applyInitDocumentStyles = function(document, iframeWindow) {
376
+ const table = document.getElementsByTagName('table')[0];
377
+ if (table) {
378
+ table.style.overflow = 'hidden';
379
+ table.style.margin = iframeWindow.__options__.responsive ? '0 auto' : '';
380
+ }
381
+
382
+ const body = document.body;
383
+ body.style.margin = '0';
384
+ }
362
385
  }
363
386
 
364
387
  module.exports = getPublishedItemsRenderer;