logitude-dashboard-library 1.2.53 → 1.2.56

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.
@@ -33,6 +33,11 @@ $dark-grey: #717585;
33
33
 
34
34
  flex-direction: row;
35
35
  }
36
+ .dl-flex-row-end{
37
+ display: flex;
38
+ justify-content: flex-end;
39
+
40
+ }
36
41
  .dl-title-1{
37
42
  text-transform: capitalize;
38
43
  font-size: 20px;
@@ -307,4 +312,7 @@ $dark-grey: #717585;
307
312
  }
308
313
  .dl-m-r-s{
309
314
  margin-right: 10px;
315
+ }
316
+ .dl-m-t-8{
317
+ margin-top: 8px;
310
318
  }
@@ -3,6 +3,7 @@ import { Layouts } from "react-grid-layout";
3
3
  import ColumnChartComponent from "./ChartsComponents/ColumnChartComponent";
4
4
  import { ReactWidgetPM } from "../../types/widget";
5
5
  declare type DashboardDesignerProps = {
6
+ editMode: boolean;
6
7
  dashboardLayouts: {
7
8
  lg: ReactWidgetPM[];
8
9
  };
@@ -6,6 +6,7 @@ declare type WidgetCardProps = {
6
6
  widget: ReactWidgetPM | null;
7
7
  el: any;
8
8
  dateFilter: any;
9
+ isInEditMode: boolean;
9
10
  };
10
11
  declare const WidgetCard: (props: WidgetCardProps, state: any) => JSX.Element;
11
12
  export default WidgetCard;
package/dist/index.js CHANGED
@@ -207,7 +207,7 @@ var WidgetCard = function WidgetCard(props, state) {
207
207
  return React__default.createElement("div", {
208
208
  className: "panel",
209
209
  key: props.el.i
210
- }, React__default.createElement("header", null, React__default.createElement("h1", null, ((_props$widget = props.widget) === null || _props$widget === void 0 ? void 0 : _props$widget.Title) || "not set"), React__default.createElement(button.Button, {
210
+ }, React__default.createElement("header", null, React__default.createElement("h1", null, ((_props$widget = props.widget) === null || _props$widget === void 0 ? void 0 : _props$widget.Title) || "not set"), props.isInEditMode ? React__default.createElement(button.Button, {
211
211
  icon: "pi pi-ellipsis-v",
212
212
  className: "p-button-lg p-button-rounded p-button-text",
213
213
  onClick: function onClick(e) {
@@ -215,7 +215,7 @@ var WidgetCard = function WidgetCard(props, state) {
215
215
 
216
216
  return (_moreBtnToggle$curren = moreBtnToggle.current) === null || _moreBtnToggle$curren === void 0 ? void 0 : _moreBtnToggle$curren.toggle(e);
217
217
  }
218
- }), React__default.createElement(overlaypanel.OverlayPanel, {
218
+ }) : null, React__default.createElement(overlaypanel.OverlayPanel, {
219
219
  ref: moreBtnToggle,
220
220
  className: "buttons-overlay"
221
221
  }, React__default.createElement("div", {
@@ -240,39 +240,33 @@ var WidgetCard = function WidgetCard(props, state) {
240
240
  var ResponsiveReactGridLayout = reactGridLayout.WidthProvider(reactGridLayout.Responsive);
241
241
 
242
242
  var DashboardDesigner = function DashboardDesigner(props) {
243
- var createLayout = function createLayout() {
244
- var layout = {
245
- lg: props.dashboardLayouts.lg.map(function (w) {
246
- return w.Layout;
247
- })
248
- };
249
- return layout;
250
- };
251
-
252
243
  var array12 = Array.from({
253
244
  length: 12
254
245
  }).fill(null);
255
246
  var minimumPlaceholderRowsCount = 12;
256
- var layouts = React.useRef(createLayout() || {
247
+
248
+ var _useState = React.useState({
257
249
  lg: []
258
- });
250
+ }),
251
+ layouts = _useState[0],
252
+ setLayouts = _useState[1];
259
253
 
260
- var _useState = React.useState(Array.from({
254
+ var _useState2 = React.useState(Array.from({
261
255
  length: minimumPlaceholderRowsCount
262
256
  }).fill(null)),
263
- placeholderRowsArray = _useState[0],
264
- setplaceholderRowsArray = _useState[1];
257
+ placeholderRowsArray = _useState2[0],
258
+ setplaceholderRowsArray = _useState2[1];
265
259
 
266
- var _useState2 = React.useState(true),
267
- firstChange = _useState2[0],
268
- setFirstChange = _useState2[1];
260
+ var _useState3 = React.useState(true),
261
+ firstChange = _useState3[0],
262
+ setFirstChange = _useState3[1];
269
263
 
270
- var _useState3 = React.useState(undefined),
271
- dateFilter = _useState3[0];
272
-
273
- var _useState4 = React.useState(false);
264
+ var _useState4 = React.useState(undefined),
265
+ dateFilter = _useState4[0];
274
266
 
275
- var _useState5 = React.useState("");
267
+ var _useState5 = React.useState(false),
268
+ isInEditMode = _useState5[0],
269
+ setisInEditMode = _useState5[1];
276
270
 
277
271
  var _useState6 = React.useState({
278
272
  lg: []
@@ -280,16 +274,30 @@ var DashboardDesigner = function DashboardDesigner(props) {
280
274
  widgets = _useState6[0],
281
275
  setWidgets = _useState6[1];
282
276
 
283
- var _useState7 = React.useState(minimumPlaceholderRowsCount),
284
- setPlaceholderRows = _useState7[1];
285
-
286
277
  React.useEffect(function () {
287
278
  setFirstChange(true);
288
279
  console.log('useEffect setLayouts');
289
- layouts.current = createLayout();
280
+ setLayouts({});
281
+ setLayouts(createLayout());
290
282
  setWidgets(props.dashboardLayouts);
291
283
  }, [props.dashboardLayouts]);
292
284
 
285
+ var createLayout = function createLayout() {
286
+ var layout = {
287
+ lg: []
288
+ };
289
+ props.dashboardLayouts.lg.map(function (w) {
290
+ return w.Layout;
291
+ }).forEach(function (e) {
292
+ layout.lg.push(e);
293
+ });
294
+ return layout;
295
+ };
296
+
297
+ React.useEffect(function () {
298
+ setisInEditMode(props.editMode);
299
+ }, [props.editMode]);
300
+
293
301
  function _onLayoutChange(layout, changedLayouts) {
294
302
  console.log(layout, layouts);
295
303
 
@@ -298,7 +306,7 @@ var DashboardDesigner = function DashboardDesigner(props) {
298
306
  return;
299
307
  }
300
308
 
301
- layouts.current = changedLayouts;
309
+ setLayouts(changedLayouts);
302
310
  UpdatePlaceholderDimensions();
303
311
  props.onLayoutChange(changedLayouts);
304
312
  }
@@ -306,11 +314,11 @@ var DashboardDesigner = function DashboardDesigner(props) {
306
314
  function deletePanel(id) {
307
315
  console.log('deletePanel(id)', id);
308
316
  var newLayouts = {
309
- lg: layouts.current.lg.filter(function (e) {
317
+ lg: layouts.lg.filter(function (e) {
310
318
  return e.i != id;
311
319
  })
312
320
  };
313
- layouts.current = newLayouts;
321
+ setLayouts(newLayouts);
314
322
  var newWidgets = {
315
323
  lg: widgets.lg.filter(function (e) {
316
324
  return e.key != id;
@@ -327,12 +335,12 @@ var DashboardDesigner = function DashboardDesigner(props) {
327
335
  function UpdatePlaceholderDimensions() {
328
336
  var _gridLayout$;
329
337
 
338
+ console.log('UpdatePlaceholderDimensions', layouts);
330
339
  var gridLayout = document.getElementsByClassName('react-grid-layout');
331
340
  if (!gridLayout) return;
332
341
  var gridElementHeight = (_gridLayout$ = gridLayout[0]) === null || _gridLayout$ === void 0 ? void 0 : _gridLayout$.clientHeight;
333
342
  var newPlaceholderRows = Math.floor(gridElementHeight / layoutGridProps.rowHeight);
334
343
  newPlaceholderRows = newPlaceholderRows < minimumPlaceholderRowsCount ? minimumPlaceholderRowsCount : newPlaceholderRows;
335
- setPlaceholderRows(newPlaceholderRows);
336
344
  setplaceholderRowsArray(Array.from({
337
345
  length: newPlaceholderRows
338
346
  }).fill(null));
@@ -348,7 +356,7 @@ var DashboardDesigner = function DashboardDesigner(props) {
348
356
  className: "dl-grid-container"
349
357
  }, React__default.createElement("div", {
350
358
  className: "dl-grid dl-grid--bordered"
351
- }, placeholderRowsArray.map(function (e, i) {
359
+ }, props.editMode ? placeholderRowsArray.map(function (e, i) {
352
360
  return array12.map(function (e, i) {
353
361
  return React__default.createElement("div", {
354
362
  key: i,
@@ -357,9 +365,11 @@ var DashboardDesigner = function DashboardDesigner(props) {
357
365
  }
358
366
  });
359
367
  });
360
- })), React__default.createElement(ResponsiveReactGridLayout, Object.assign({}, layoutGridProps, {
361
- layouts: layouts.current,
368
+ }) : null), React__default.createElement(ResponsiveReactGridLayout, Object.assign({}, layoutGridProps, {
369
+ layouts: layouts,
362
370
  compactType: "vertical",
371
+ isDraggable: isInEditMode,
372
+ isResizable: isInEditMode,
363
373
  onWidthChange: function onWidthChange() {
364
374
  return UpdatePlaceholderDimensions();
365
375
  },
@@ -372,6 +382,7 @@ var DashboardDesigner = function DashboardDesigner(props) {
372
382
  return React__default.createElement("div", {
373
383
  key: (_widget$Layout = widget.Layout) === null || _widget$Layout === void 0 ? void 0 : _widget$Layout.i
374
384
  }, React__default.createElement(WidgetCard, {
385
+ isInEditMode: isInEditMode,
375
386
  key: (_widget$Layout2 = widget.Layout) === null || _widget$Layout2 === void 0 ? void 0 : _widget$Layout2.i,
376
387
  widget: widget,
377
388
  el: widget,
@@ -600,19 +611,19 @@ var Dashboard = function Dashboard(props) {
600
611
  return e.Layout;
601
612
  });
602
613
  var maxY = layout.reduce(function (max, widget) {
603
- if (widget.y > max) max = widget.y;
614
+ if (widget && widget.y > max) max = widget.y;
604
615
  return max;
605
616
  }, 0);
606
617
 
607
618
  var _loop = function _loop(y) {
608
619
  var widgetsRow = layout.filter(function (d) {
609
- return d.y == y;
620
+ return (d === null || d === void 0 ? void 0 : d.y) == y;
610
621
  });
611
622
  var lastWidgetStartXPosition = Math.max.apply(Math, widgetsRow.map(function (a) {
612
- return a.x;
623
+ return a === null || a === void 0 ? void 0 : a.x;
613
624
  }));
614
625
  var lastWidget = widgetsRow.find(function (a) {
615
- return a.x == lastWidgetStartXPosition;
626
+ return (a === null || a === void 0 ? void 0 : a.x) == lastWidgetStartXPosition;
616
627
  });
617
628
 
618
629
  if (lastWidget) {
@@ -652,7 +663,7 @@ var Dashboard = function Dashboard(props) {
652
663
  };
653
664
  };
654
665
 
655
- var editDesign = function editDesign() {
666
+ var editLayout = function editLayout() {
656
667
  var _dashboardMoreButtonT2;
657
668
 
658
669
  setIsInEditMode(true);
@@ -744,7 +755,9 @@ var Dashboard = function Dashboard(props) {
744
755
  };
745
756
 
746
757
  var renderCancelConfirmDialogFooter = function renderCancelConfirmDialogFooter() {
747
- return React.createElement("div", null, React.createElement(button.Button, {
758
+ return React.createElement("div", {
759
+ className: 'dl-flex-row-end'
760
+ }, React.createElement(button.Button, {
748
761
  label: "Cancel",
749
762
  onClick: function onClick() {
750
763
  return onHide();
@@ -796,8 +809,8 @@ var Dashboard = function Dashboard(props) {
796
809
  return EditDashBoard();
797
810
  }
798
811
  }, "Edit"), React.createElement("div", {
799
- onClick: editDesign
800
- }, "Edit Design")))), React.createElement("div", {
812
+ onClick: editLayout
813
+ }, "Edit Layout")))), React.createElement("div", {
801
814
  className: 'dl-flex-row'
802
815
  }, !isInEditMode ? React.createElement("div", {
803
816
  className: 'dl-flex-row'
@@ -829,7 +842,7 @@ var Dashboard = function Dashboard(props) {
829
842
  className: 'dl-flex-row'
830
843
  }, React.createElement(button.Button, {
831
844
  label: "Cancel",
832
- className: "p-button-secondary dl-m-r-s",
845
+ className: "p-button-secondary dl-m-r-s dl-m-t-8",
833
846
  onClick: cancelSave
834
847
  }), React.createElement(dialog.Dialog, {
835
848
  header: "Unsaved Changes",
@@ -844,7 +857,7 @@ var Dashboard = function Dashboard(props) {
844
857
  form: "frm",
845
858
  onClick: save,
846
859
  autoFocus: true,
847
- className: hasChanges ? "p-button-warning" : "p-button-secondary"
860
+ className: hasChanges ? "p-button-warning dl-m-t-8" : "p-button-secondary dl-m-t-8"
848
861
  }), React.createElement("div", {
849
862
  style: {
850
863
  width: '192px',
@@ -865,6 +878,7 @@ var Dashboard = function Dashboard(props) {
865
878
  }))) : null)), React.createElement("div", {
866
879
  className: 'dl-dashboard-body'
867
880
  }, React.createElement(DashboardDesigner, {
881
+ editMode: isInEditMode,
868
882
  onLayoutChange: updateWidgets,
869
883
  dashboardLayouts: layouts,
870
884
  openEditWidget: function openEditWidget(widget) {
package/dist/index.js.map CHANGED
@@ -1 +1 @@
1
- {"version":3,"file":"index.js","sources":["../src/services/tools.ts","../src/features/Dashboard/ChartsComponents/ApexChart.tsx","../src/features/Dashboard/WidgetCard.tsx","../src/features/Dashboard/DashboardDesigner.tsx","../src/services/ApiServices.ts","../src/services/DashBoardService.ts","../src/services/WidgetTypeListService.ts","../src/services/clone.ts","../src/index.tsx"],"sourcesContent":["export class Tools{\r\n public static GetLogitudeURL() {\r\n\r\n var logitude_url = location.href.replace('index.html', '');\r\n\r\n if (location.href.indexOf('localhost') > -1) {\r\n logitude_url = 'http://localhost:9996';//localhost:9996//';//\r\n }\r\n\r\n else {\r\n var urlArr = location.href.split(\"/index.html\");\r\n var url = urlArr[0];\r\n url = url.replace(url.substring(url.lastIndexOf('/'), url.length), \"\");\r\n logitude_url = url ;\r\n }\r\n\r\n return logitude_url;\r\n }\r\n}","import React, { useEffect, useRef } from \"react\";\r\nimport ReactApexChart from \"react-apexcharts\";\r\nimport { ReactWidgetPM } from \"../../../types/widget\";\r\n\r\ntype ApexChartProps = {\r\n widget: ReactWidgetPM|null\r\n};\r\nconst ApexChart = (props: ApexChartProps) => {\r\n\r\n const lineOptoins = () => {\r\n\r\n return {\r\n\r\n series: [{\r\n name: \"Desktops\",\r\n data: [10, 41, 35, 51, 49, 62, 69, 91, 148]\r\n }],\r\n options: {\r\n chart: {\r\n height: 350,\r\n type: 'line',\r\n zoom: {\r\n enabled: false\r\n }\r\n },\r\n dataLabels: {\r\n enabled: false\r\n },\r\n stroke: {\r\n curve: 'straight'\r\n },\r\n title: {\r\n text: 'Product Trends by Month',\r\n align: 'left'\r\n },\r\n grid: {\r\n row: {\r\n colors: ['#f3f3f3', 'transparent'], // takes an array which will be repeated on columns\r\n opacity: 0.5\r\n },\r\n },\r\n xaxis: {\r\n categories: ['Jan', 'Feb', 'Mar', 'Apr', 'May', 'Jun', 'Jul', 'Aug', 'Sep'],\r\n }\r\n },\r\n\r\n\r\n };\r\n }\r\n const barOptoins = () => {\r\n\r\n return {\r\n series: [{\r\n data: [44, 55, 41, 64, 22, 43, 21]\r\n }, {\r\n data: [53, 32, 33, 52, 13, 44, 32]\r\n }],\r\n options: {\r\n chart: {\r\n type: 'bar',\r\n height: 430\r\n },\r\n plotOptions: {\r\n bar: {\r\n horizontal: true,\r\n dataLabels: {\r\n position: 'top',\r\n },\r\n }\r\n },\r\n dataLabels: {\r\n enabled: true,\r\n offsetX: -6,\r\n style: {\r\n fontSize: '12px',\r\n colors: ['#fff']\r\n }\r\n },\r\n stroke: {\r\n show: true,\r\n width: 1,\r\n colors: ['#fff']\r\n },\r\n tooltip: {\r\n shared: true,\r\n intersect: false\r\n },\r\n xaxis: {\r\n categories: [2001, 2002, 2003, 2004, 2005, 2006, 2007],\r\n },\r\n },\r\n\r\n\r\n };\r\n }\r\n const pieOptoins = (): ApexChartArgs => {\r\n\r\n return {\r\n\r\n series: [44, 55, 13, 43, 22],\r\n options: {\r\n chart: {\r\n type: 'pie',\r\n },\r\n labels: ['Team A', 'Team B', 'Team C', 'Team D', 'Team E'],\r\n \r\n },\r\n \r\n\r\n\r\n };\r\n }\r\n const donutOptoins = (): ApexChartArgs => {\r\n\r\n return {\r\n\r\n series: [44, 55, 13, 33],\r\n options: {\r\n chart: {\r\n width: 380,\r\n type: 'donut',\r\n },\r\n dataLabels: {\r\n enabled: false\r\n },\r\n responsive: [{\r\n breakpoint: 480,\r\n options: {\r\n chart: {\r\n width: 200\r\n },\r\n legend: {\r\n show: false\r\n }\r\n }\r\n }],\r\n legend: {\r\n position: 'right',\r\n offsetY: 0,\r\n height: 230,\r\n }\r\n },\r\n\r\n\r\n };\r\n }\r\n const getChartOptions = () => {\r\n switch (props.widget?.TypeCode) {\r\n case 'bar':\r\n return barOptoins();\r\n break;\r\n case 'line':\r\n return lineOptoins();\r\n break;\r\n case 'pie':\r\n return pieOptoins();\r\n break;\r\n case 'donut':\r\n return donutOptoins();\r\n break;\r\n default:\r\n break;\r\n }\r\n return barOptoins();\r\n };\r\n const args = getChartOptions();\r\n return (\r\n <ReactApexChart \r\n options={args?.options }\r\n series={args?.series}\r\n type={props.widget?.TypeCode}\r\n height={\"100%\"}\r\n width={\"100%\"}\r\n />\r\n )\r\n}\r\nexport type ApexChartArgs = {\r\n options: any;\r\n series: any;\r\n}\r\n\r\nexport default ApexChart;\r\n\r\n","import { stat } from \"fs\";\r\nimport { Button } from \"primereact/button\";\r\nimport { OverlayPanel } from \"primereact/overlaypanel\";\r\nimport React, { useRef, useState,useEffect } from \"react\";\r\nimport { ReactWidgetPM } from \"../../types/widget\";\r\nimport ApexChart from \"./ChartsComponents/ApexChart\";\r\nimport AreaChartComponent from \"./ChartsComponents/AreaChartComponent\";\r\nimport BarChartComponent from \"./ChartsComponents/BarChartComponent\";\r\nimport CandleChartComponent from \"./ChartsComponents/CandleChartComponent\";\r\nimport ColumnChartComponent from \"./ChartsComponents/ColumnChartComponent\";\r\nimport MixedChartComponent from \"./ChartsComponents/MixedChartComponent\";\r\nimport PieChartComponent from \"./ChartsComponents/PieChartComponent\";\r\nimport TimelineChartComponent from \"./ChartsComponents/TimelineChartComponent\";\r\n\r\n\r\ntype WidgetCardProps = {\r\n editBtnClicked(widget: any):any;\r\n deleteBtnClicked(i: any):any;\r\n widget: ReactWidgetPM | null;\r\n el: any;\r\n dateFilter: any;\r\n}\r\n\r\n\r\nconst WidgetCard = (props: WidgetCardProps, state: any) => {\r\n const moreBtnToggle = useRef<OverlayPanel>(null);\r\n const [loading,setLoading] = useState(true);\r\n useEffect(()=>{\r\n setTimeout(function () {\r\n setLoading(false);\r\n },200);\r\n },[])\r\n\r\n const widgetComponents: any[] = [\r\n { type: \"Bar\", component: BarChartComponent },\r\n { type: \"Column\", component: ColumnChartComponent },\r\n { type: \"Pie\", component: PieChartComponent },\r\n { type: \"Mixed\", component: MixedChartComponent },\r\n { type: \"Timeline\", component: TimelineChartComponent },\r\n { type: \"Candle\", component: CandleChartComponent },\r\n { type: \"Area\", component: AreaChartComponent },\r\n ];\r\n return (\r\n <div className=\"panel\" key={props.el.i}>\r\n <header>\r\n <h1>{props.widget?.Title || \"not set\"}</h1>\r\n <Button\r\n icon=\"pi pi-ellipsis-v\"\r\n className=\"p-button-lg p-button-rounded p-button-text\"\r\n onClick={(e) => moreBtnToggle.current?.toggle(e)}\r\n />\r\n\r\n <OverlayPanel ref={moreBtnToggle} className=\"buttons-overlay\">\r\n <div className=\"buttons-list\">\r\n <div onClick={() => props.editBtnClicked(props.widget)} > Edit </div>\r\n <div onClick={() => props.deleteBtnClicked(props.widget?.key)} >Remove</div>\r\n </div>\r\n </OverlayPanel>\r\n </header>\r\n\r\n <div className=\"dl-dashboard-widget\">\r\n {loading ? null : <ApexChart widget={props.widget} />}\r\n </div>\r\n </div>\r\n );\r\n};\r\n\r\nexport default WidgetCard;\r\n","\r\n\r\nimport { WidthProvider, Responsive, Layout, Layouts } from \"react-grid-layout\";\r\n\r\nimport React, { createRef, useEffect, useRef, useState } from \"react\";\r\nimport { Button } from \"primereact/button\";\r\nimport _, { find } from \"lodash\";\r\nimport { Ripple } from \"primereact/ripple\";\r\nimport { OverlayPanel } from \"primereact/overlaypanel\";\r\nimport { Dropdown } from \"primereact/dropdown\";\r\n\r\n\r\nimport ColumnChartComponent from \"./ChartsComponents/ColumnChartComponent\";\r\nimport PieChartComponent from \"./ChartsComponents/PieChartComponent\";\r\nimport MixedChartComponent from \"./ChartsComponents/MixedChartComponent\";\r\nimport AreaChartComponent from \"./ChartsComponents/AreaChartComponent\";\r\nimport TimelineChartComponent from \"./ChartsComponents/TimelineChartComponent\";\r\nimport CandleChartComponent from \"./ChartsComponents/CandleChartComponent\";\r\nimport BarChartComponent from \"./ChartsComponents/BarChartComponent\";\r\nimport { WidgetComponent } from \"../../types/WidgetComponent\";\r\nimport { ReactWidgetPM } from \"../../types/widget\";\r\nimport WidgetCard from \"./WidgetCard\";\r\nimport { TRUE } from \"sass\";\r\n\r\nconst ResponsiveReactGridLayout = WidthProvider(Responsive);\r\nconst newWidgetWidth = 3;\r\n\r\ntype DashboardDesignerProps = {\r\n dashboardLayouts: { lg: ReactWidgetPM[] },\r\n openEditWidget: (widget: ReactWidgetPM) => void\r\n onLayoutChange: (layouts: Layouts) => void\r\n};\r\nconst DashboardDesigner = (props: DashboardDesignerProps) => {\r\n const createLayout = (): Layouts => {\r\n var layout = { lg: props.dashboardLayouts.lg.map(w => w.Layout as Layout) };\r\n return layout;\r\n }\r\n\r\n const array12 = Array.from({ length: 12 }).fill(null);\r\n const minimumPlaceholderRowsCount = 12;\r\n const layouts = useRef<Layouts>(createLayout() || { lg: [] });\r\n const [placeholderRowsArray, setplaceholderRowsArray] = useState(Array.from({ length: minimumPlaceholderRowsCount }).fill(null));\r\n const [firstChange, setFirstChange] = useState(true);\r\n const [dateFilter, setDateFilter] = useState<Date | Date[] | undefined>(undefined);\r\n const [displayDialog, setDisplayDialog] = useState(false);\r\n const [dashboardTitle, setDashboardTitle] = useState(\"\");\r\n const [widgets, setWidgets] = useState<{ lg: ReactWidgetPM[] }>({ lg: [] });\r\n const [placeholderRows, setPlaceholderRows] = useState(minimumPlaceholderRowsCount);\r\n\r\n\r\n useEffect(() => {\r\n setFirstChange(true);\r\n console.log('useEffect setLayouts')\r\n layouts.current = createLayout();\r\n setWidgets(props.dashboardLayouts);\r\n }, [props.dashboardLayouts]);\r\n\r\n\r\n\r\n function reset() {\r\n window.localStorage.clear();\r\n window.location.reload();\r\n }\r\n\r\n function onLayoutChange(layout: any, changedLayouts: Layouts) {\r\n console.log(layout, layouts);\r\n if(firstChange){\r\n setFirstChange(false);\r\n return;\r\n }\r\n layouts.current = changedLayouts;\r\n UpdatePlaceholderDimensions();\r\n props.onLayoutChange(changedLayouts)\r\n }\r\n\r\n function deletePanel(id) {\r\n console.log('deletePanel(id)', id)\r\n var newLayouts = { lg: layouts.current.lg.filter(e => e.i != id) }\r\n layouts.current = newLayouts;\r\n var newWidgets = { lg: widgets.lg.filter(e => e.key != id) }\r\n setWidgets(newWidgets);\r\n props.onLayoutChange(newLayouts)\r\n };\r\n\r\n function editWidget(widget: ReactWidgetPM) {\r\n props.openEditWidget(widget);\r\n };\r\n\r\n\r\n function UpdatePlaceholderDimensions() {\r\n\r\n var gridLayout = document.getElementsByClassName('react-grid-layout')\r\n if (!gridLayout)\r\n return;\r\n const gridElementHeight = gridLayout[0]?.clientHeight;\r\n\r\n let newPlaceholderRows = Math.floor(gridElementHeight / layoutGridProps.rowHeight);\r\n newPlaceholderRows = newPlaceholderRows < minimumPlaceholderRowsCount ? minimumPlaceholderRowsCount : newPlaceholderRows;\r\n setPlaceholderRows(newPlaceholderRows)\r\n setplaceholderRowsArray(Array.from({ length: newPlaceholderRows }).fill(null));\r\n }\r\n return (<div className=\"dl-full-hight\">\r\n <div className=\"dl-box\">\r\n {/* <div className=\"dl-row dl-header\">\r\n {renderPageHeader()}\r\n </div> */}\r\n <div className=\"dl-row dl-content\">\r\n <div className=\"dl-grid-container\">\r\n {/* {renderGridWidgetsPlaceholder()} */}\r\n <div className=\"dl-grid dl-grid--bordered\">\r\n {placeholderRowsArray.map((e, i) =>\r\n array12.map((e, i) => (\r\n <div key={i}\r\n style={{\r\n height: layoutGridProps.rowHeight,\r\n }}\r\n ></div>\r\n ))\r\n )}\r\n </div>\r\n\r\n\r\n <ResponsiveReactGridLayout\r\n {...layoutGridProps}\r\n layouts={layouts.current}\r\n compactType=\"vertical\"\r\n\r\n onWidthChange={() => UpdatePlaceholderDimensions()}\r\n onLayoutChange={(layout, layouts) =>\r\n onLayoutChange(layout, layouts)\r\n }\r\n >\r\n {widgets.lg.map((widget) =>\r\n\r\n <div key={widget.Layout?.i}>\r\n <WidgetCard\r\n key={widget.Layout?.i}\r\n widget={widget}\r\n el={widget}\r\n dateFilter={dateFilter}\r\n editBtnClicked={editWidget}\r\n deleteBtnClicked={deletePanel}\r\n />\r\n </div>\r\n )}\r\n </ResponsiveReactGridLayout>\r\n </div>\r\n\r\n </div>\r\n {/* <div className=\"dl-row dl-footer\">\r\n <p><b>footer</b> (fixed height)</p>\r\n </div> */}\r\n </div>\r\n {/* {renderNewWidgetDialog()} */}\r\n\r\n\r\n\r\n\r\n\r\n </div>);\r\n\r\n}\r\n\r\n\r\nexport const layoutGridProps = {\r\n rowHeight: 50,\r\n className: \"layout\",\r\n cols: { lg: 12, md: 6, sm: 2, xs: 1, xxs: 1 },\r\n useCSSTransforms: true,\r\n}\r\n\r\n\r\n\r\n\r\nexport const WidgetTypes = [\r\n { Name: \"Filter\", Disabled: true },\r\n { Name: \"Chart\", Disabled: false },\r\n { Name: \"Data Table\", Disabled: true },\r\n { Name: \"Pivot Table\", Disabled: true },\r\n { Name: \"KPI\", Disabled: true },\r\n { Name: \"Gauge\", Disabled: true },\r\n];\r\nexport const widgetComponents = [\r\n { type: \"Bar\", component: BarChartComponent },\r\n { type: \"Column\", component: ColumnChartComponent },\r\n { type: \"Pie\", component: PieChartComponent },\r\n { type: \"Mixed\", component: MixedChartComponent },\r\n { type: \"Timeline\", component: TimelineChartComponent },\r\n { type: \"Candle\", component: CandleChartComponent },\r\n { type: \"Area\", component: AreaChartComponent },\r\n];\r\n\r\n\r\nexport default DashboardDesigner;\r\n","import axios from \"axios\";\r\nimport { ApiQueryFilters } from \"../common/data-contracts/ApiQueryFilter\";\r\nimport { APIResult } from \"../types/APIResult\";\r\nimport { Tools } from './tools';\r\n\r\n\r\nexport class ApiServices{ \r\n private _apiUrl: string;\r\n constructor(){\r\n this._apiUrl = Tools.GetLogitudeURL() ;\r\n }\r\n getByFilters<T>(api,filters: ApiQueryFilters) {\r\n \r\n let token: string = this.getTokenFromStorage();\r\n\t\tvar apiURL = `${this._apiUrl}${api}`;\r\n\t\tapiURL = this.ConcatFiltersToURL(filters, apiURL);\r\n\r\n return axios.get<APIResult<T>>(apiURL, { headers: { 'Content-Type': 'application/json', 'Token': token } });\r\n }\r\n get<T>(api) {\r\n \r\n let token: string = this.getTokenFromStorage();\r\n\t\tvar apiURL = `${this._apiUrl}${api}`;\r\n return axios.get<T>(apiURL, { headers: { 'Content-Type': 'application/json', 'Token': token } });\r\n }\r\n post<T>(api,date:T){\r\n let token: string = this.getTokenFromStorage();\r\n\t\tvar apiURL = `${this._apiUrl}${api}`;\r\n return axios.post<T>(apiURL,date, { headers: { 'Content-Type': 'application/json', 'Token': token } });\r\n }\r\n\r\n getTokenFromStorage(){\r\n return window.localStorage.getItem(\"token\") || '';\r\n }\r\n private ConcatFiltersToURL(filters: ApiQueryFilters, urlparameters: string)\r\n {\r\n var mykeys = Object.keys(filters);\r\n var addtionalFiltersValues: string | null = null;\r\n\r\n for (var i in mykeys) {\r\n var propName = mykeys[i];\r\n var propValue = filters[propName];\r\n var ignoreFilter = ((propName.indexOf(\"Operator\") > 0 && propValue == \"Equals\") || propName == \"AdditionalFilters\");\r\n\r\n if (urlparameters != \"?\") {\r\n urlparameters = urlparameters.concat('&');\r\n }\r\n\r\n if (!ignoreFilter) {\r\n propValue = propValue ? encodeURIComponent(propValue) : '';\r\n urlparameters = urlparameters.concat(propName.concat('=').concat(propValue));\r\n }\r\n\r\n if (propName == \"AdditionalFilters\" && propValue.length > 0) {\r\n addtionalFiltersValues = JSON.stringify(propValue);\r\n }\r\n }\r\n\r\n if (addtionalFiltersValues) {\r\n urlparameters = urlparameters.concat(\"&AdditionalFilters=\").concat(addtionalFiltersValues);\r\n }\r\n return urlparameters;\r\n }\r\n}","import axios from \"axios\";\r\nimport { ApiQueryFilters } from \"../common/data-contracts/ApiQueryFilter\";\r\nimport { ReactDashboardPM } from \"../types/Dashboard\";\r\nimport { ApiServices } from \"./ApiServices\";\r\nimport { Tools } from './tools';\r\n\r\n\r\nexport class DashBoardService{ \r\n _ApiServices:ApiServices;\r\n tableName = 'DashBoard';\r\n constructor(){\r\n this._ApiServices = new ApiServices();\r\n }\r\n \r\n\r\n getDataByFilters(filters: ApiQueryFilters) {\r\n return this._ApiServices.getByFilters<ReactDashboardPM>(`/api/${this.tableName}Views/getbyfilters?`,filters);\r\n }\r\n\r\n add(data:ReactDashboardPM){\r\n return this._ApiServices.post(`/api/DashBoards`,data);\r\n }\r\n \r\n}","import axios from \"axios\";\r\nimport { ApiQueryFilters } from \"../common/data-contracts/ApiQueryFilter\";\r\nimport { ReactDashboardPM } from \"../types/Dashboard\";\r\nimport { WidgetType } from \"../types/WidgetType\";\r\nimport { ApiServices } from \"./ApiServices\";\r\nimport { Tools } from './tools';\r\n\r\n\r\nexport class WidgetTypeListService{ \r\n _ApiServices:ApiServices;\r\n\r\n constructor(){\r\n this._ApiServices = new ApiServices();\r\n }\r\n \r\n\r\n getDataByFilters(filters: ApiQueryFilters) {\r\n return this._ApiServices.getByFilters<WidgetType>(`/api/WidgetTypeViews/getbyfilters?`,filters);\r\n }\r\n\r\n getAll() {\r\n return this._ApiServices.get<WidgetType[]>(`/api/WidgetTypeViews/getall`);\r\n }\r\n\r\n \r\n}","export function deepClone (obj){\r\n return JSON.parse(JSON.stringify(obj))\r\n}","import * as React from 'react'\r\nimport { Card } from 'primereact/card';\r\nimport { Button } from \"primereact/button\";\r\nimport DashboardDesigner, { layoutGridProps } from './features/Dashboard/DashboardDesigner'\r\nimport \"./styles.module.css\"\r\nimport { Dropdown } from 'primereact/dropdown';\r\nimport { createRef, useEffect, useRef, useState } from \"react\";\r\nimport { DashBoardService } from './services/DashBoardService';\r\nimport { ApiQueryFilters } from './common/data-contracts/ApiQueryFilter';\r\nimport { ReactDashboardPM } from './types/Dashboard';\r\nimport { Dialog } from 'primereact/dialog';\r\nimport DashboardDialogComponent from './features/Dashboard/dashboard-dialog/dashboard-dialog-component';\r\nimport { Session } from './services/session';\r\nimport { WidgetTypeListService } from './services/WidgetTypeListService';\r\nimport { WidgetType } from './types/WidgetType';\r\nimport { ReactWidgetPM } from './types/widget';\r\nimport { OverlayPanel } from 'primereact/overlaypanel';\r\nimport { Ripple } from 'primereact/ripple';\r\nimport { DashboardDataBinding } from './types/DashboardDataBinding';\r\nimport { Layout, Layouts } from 'react-grid-layout';\r\nimport { v4 as uuidv4 } from 'uuid';\r\nimport { deepClone } from './services/clone';\r\n\r\ntype DashboardProps = {\r\n token: string,\r\n tenant: number,\r\n userId: string,\r\n dataBinding: DashboardDataBinding,\r\n openAddEditWidget: (widget: ReactWidgetPM | undefined) => void,\r\n openAddEditDashboard: (dashboard: ReactDashboardPM | undefined) => void,\r\n onChangeDashboard: (dashboard: ReactDashboardPM | undefined) => void,\r\n onSaveDashboard: (dashboard: ReactDashboardPM | undefined) => void,\r\n};\r\nconst Dashboard = (props: DashboardProps) => {\r\n const newWidgetWidth = 3;\r\n const newWidgetHeight = 5;\r\n\r\n const [dashbords, setDashbords] = useState<ReactDashboardPM[]>([]);\r\n const [currentDashbord, setCurrentDashbord] = useState<ReactDashboardPM | undefined>(undefined);\r\n const [beforEditDashbord, setBeforEditDashbord] = useState<ReactDashboardPM | undefined>(undefined);\r\n const [hasChanges, setHasChanges] = useState(false);\r\n const [isInEditMode, setIsInEditMode] = useState<boolean>(false);\r\n const [WidgetTypes, setWidgetTypes] = useState<WidgetType[]>();\r\n const [layouts, setLayouts] = useState<{ lg: any[] }>({ lg: [] });\r\n const [cancelConfirmDialog, setCancelConfirmDialog] = useState(false);\r\n const dashboardMoreButtonToggle = createRef<OverlayPanel>();\r\n const dashboardService = new DashBoardService();\r\n const widgetTypeListService = new WidgetTypeListService();\r\n useEffect(() => {\r\n getWidgetTypes();\r\n\r\n props.dataBinding.onGetDashboard.subscribe(e => {\r\n console.log('onGetDashboard.subscribe', e)\r\n setCurrentDashbord(e);\r\n applyLayouts(e);\r\n })\r\n props.dataBinding.onGetAllDashboards.subscribe(e => {\r\n console.log('onGetAllDashboard.subscribe', e)\r\n\r\n setDashbords(e);\r\n })\r\n\r\n }, [])\r\n\r\n Session.CurrentUserId = props.userId;\r\n Session.Tenant = props.tenant;\r\n Session.Token = props.token;\r\n if (props?.token?.length > 0)\r\n localStorage.setItem(\"token\", props?.token);\r\n\r\n\r\n const getWidgetTypes = () => {\r\n widgetTypeListService.getAll().then(data => {\r\n setWidgetTypes(data.data);\r\n });\r\n }\r\n const EditDashBoard = () => {\r\n props.openAddEditDashboard(currentDashbord);\r\n dashboardMoreButtonToggle?.current?.hide();\r\n\r\n }\r\n const addWidget = (widgetCode) => {\r\n var position = EvaluateNewWidgetPosition();\r\n props.openAddEditWidget({ TypeCode: widgetCode, StartPotistion: `${position.x},${position.y}`, EndPosition: `${position.w},${position.h}` } as ReactWidgetPM);\r\n\r\n }\r\n const EvaluateNewWidgetPosition = () => {\r\n let widgetYPosition = 0;\r\n let widgetXPosition = 0;\r\n let layout: { x: number, y: number, w: number }[] = layouts[\"lg\"].map(e => e.Layout);\r\n const maxY = layout.reduce((max, widget) => {\r\n if (widget.y > max) max = widget.y;\r\n return max;\r\n }, 0);\r\n\r\n for (let y = 0; y <= maxY; y++) {\r\n const widgetsRow = layout.filter(d => d.y == y);\r\n const lastWidgetStartXPosition = Math.max.apply(Math, widgetsRow.map(a => a.x));\r\n const lastWidget: any = widgetsRow.find(a => a.x == lastWidgetStartXPosition);\r\n if (lastWidget) {\r\n const lastWidgetEndXPosition = lastWidgetStartXPosition + lastWidget.w;\r\n const availableHorizontalSlots = layoutGridProps.cols.lg - lastWidgetEndXPosition;\r\n if (availableHorizontalSlots >= newWidgetWidth) {\r\n widgetYPosition = y;\r\n widgetXPosition = lastWidgetEndXPosition;\r\n return { x: widgetXPosition, y: widgetYPosition, w: newWidgetWidth, h: newWidgetHeight };\r\n\r\n } else {\r\n widgetYPosition = y + 1;\r\n }\r\n } else {\r\n widgetYPosition = y + 1;\r\n }\r\n }\r\n\r\n return { x: widgetXPosition, y: widgetYPosition, w: newWidgetWidth, h: newWidgetHeight };\r\n }\r\n const editDesign = () => {\r\n setIsInEditMode(true)\r\n dashboardMoreButtonToggle?.current?.hide();\r\n\r\n setBeforEditDashbord(deepClone(currentDashbord));\r\n }\r\n const save = () => {\r\n setIsInEditMode(false)\r\n console.log('onSaveDashboard > ', currentDashbord)\r\n props.onSaveDashboard(currentDashbord);\r\n onHide();\r\n setHasChanges(false);\r\n }\r\n\r\n const cancelSave = () => {\r\n if (!hasChanges) {\r\n setIsInEditMode(false)\r\n setHasChanges(false)\r\n } else {\r\n setCancelConfirmDialog(true);\r\n }\r\n\r\n\r\n }\r\n\r\n const dontSave = () => {\r\n setHasChanges(false)\r\n setIsInEditMode(false)\r\n props.dataBinding.onGetDashboard.next(beforEditDashbord);\r\n setCancelConfirmDialog(false);\r\n }\r\n const changeDashboard = (event) => {\r\n if (event.value == currentDashbord?.Id)\r\n return;\r\n var dasboard = dashbords.find(e => e.Id == event.value);\r\n\r\n props.onChangeDashboard(dasboard);\r\n props.dataBinding.onGetDashboard.next(dasboard);\r\n\r\n }\r\n\r\n const applyLayouts = (dashbord: ReactDashboardPM | undefined) => {\r\n if ((!dashbord?.Widgets))\r\n return;\r\n var layout: { lg: ReactWidgetPM[] } = { lg: [] };\r\n dashbord?.Widgets.map(widget => {\r\n if (widget.Id && widget.Id.length > 0)\r\n widget.key = widget.Id;\r\n else\r\n widget.key = uuidv4();\r\n widget.Layout = {\r\n minH: 5,\r\n minW: 3,\r\n i: widget.key,\r\n w: +widget.EndPosition.split(',')[0],\r\n h: +widget.EndPosition.split(',')[1],\r\n x: +widget.StartPotistion.split(',')[0],\r\n y: +widget.StartPotistion.split(',')[1],\r\n }\r\n layout.lg.push(widget\r\n\r\n )\r\n });\r\n console.log('setLayouts -- > ', layout)\r\n setLayouts(layout);\r\n\r\n }\r\n const updateWidgets = (layouts: Layouts) => {\r\n console.log('updateWidgets = (layouts:Layouts', layouts)\r\n var layoutsDic: { [key: string]: Layout } = {};\r\n Object.keys(layouts).forEach(sizeType => {\r\n if (layouts[sizeType].length > 0) {\r\n layouts[sizeType].map(layout => {\r\n layoutsDic[layout.i] = layout;\r\n })\r\n return;\r\n }\r\n })\r\n var widgets: ReactWidgetPM[] = [];\r\n currentDashbord?.Widgets.forEach(widget => {\r\n if (layoutsDic[widget.key]) {\r\n widget.StartPotistion = `${layoutsDic[widget.key].x},${layoutsDic[widget.key].y}`;\r\n widget.EndPosition = `${layoutsDic[widget.key].w},${layoutsDic[widget.key].h}`;\r\n widgets.push(widget)\r\n }\r\n\r\n });\r\n if (currentDashbord) {\r\n currentDashbord.Widgets = widgets;\r\n }\r\n console.log('after update widget', currentDashbord)\r\n setHasChanges(true);\r\n }\r\n\r\n const renderCancelConfirmDialogFooter = () => {\r\n return (\r\n <div>\r\n <Button label=\"Cancel\" onClick={() => onHide()} className=\"p-button-secondary\" />\r\n <Button label=\"Don't Save\" onClick={() => dontSave()} className=\"p-button-secondary\" />\r\n <Button label=\"Save\" onClick={() => save()} autoFocus className=\"p-button-warning\" />\r\n </div>\r\n );\r\n }\r\n const onHide = () => {\r\n setCancelConfirmDialog(false)\r\n }\r\n return (\r\n <div className='dl-full-hight'>\r\n\r\n <div className='dl-dashboard-header dl-card'>\r\n <div className='dl-flex-row dl-custom-btn'>\r\n <div className='dl-title-1'>{currentDashbord?.Name}</div>\r\n <Button\r\n icon=\"pi pi-ellipsis-v\"\r\n onClick={(e) => dashboardMoreButtonToggle?.current?.toggle(e)}\r\n className=\"p-button p-button-icon-only p-button-rounded p-button-text\"\r\n >\r\n <Ripple />\r\n </Button>\r\n <OverlayPanel ref={dashboardMoreButtonToggle} className=\"buttons-overlay\">\r\n <div className=\"buttons-list\">\r\n <div onClick={() => EditDashBoard()}>Edit</div>\r\n <div onClick={editDesign}>Edit Design</div>\r\n\r\n </div>\r\n </OverlayPanel >\r\n </div>\r\n <div className='dl-flex-row'>\r\n {!isInEditMode ?\r\n <div className='dl-flex-row'>\r\n\r\n\r\n <div style={{ width: \"161px\" }}>\r\n <Dropdown\r\n value={[]}\r\n options={dashbords}\r\n optionValue=\"Id\"\r\n optionLabel=\"Name\"\r\n onChange={changeDashboard}\r\n placeholder=\"Choose Dashboard\"\r\n optionDisabled={(option) => {\r\n return option?.Disabled;\r\n }}\r\n scrollHeight=\"300px\"\r\n style={{ width: '100%' }}\r\n />\r\n </div>\r\n <Button icon=\"pi pi-plus\" onClick={() => props.openAddEditDashboard(undefined)}\r\n className=\"dl-dashboard-add p-button-rounded p-button-success\" />\r\n </div>\r\n : null}\r\n {/* <DashboardDialogComponent display={displayAddDashboard} onClose={onDashboardDialogClose}></DashboardDialogComponent> */}\r\n\r\n\r\n\r\n {isInEditMode ?\r\n <div className='dl-flex-row'>\r\n\r\n <Button\r\n label=\"Cancel\"\r\n className=\"p-button-secondary dl-m-r-s\"\r\n onClick={cancelSave}\r\n />\r\n\r\n <Dialog header=\"Unsaved Changes\" visible={cancelConfirmDialog} style={{ width: '50vw' }} footer={renderCancelConfirmDialogFooter()} onHide={onHide}>\r\n <p>This Dashboard has unsaved changes do you want to save it?</p>\r\n </Dialog>\r\n\r\n <Button\r\n label=\"Save\"\r\n form=\"frm\"\r\n // icon=\"pi pi-check\"\r\n onClick={save}\r\n autoFocus\r\n className={hasChanges ? \"p-button-warning\" : \"p-button-secondary\"}\r\n />\r\n\r\n <div style={{ width: '192px', marginLeft: '15px' }}>\r\n <Dropdown\r\n options={WidgetTypes}\r\n optionValue=\"Code\"\r\n optionLabel=\"Name\"\r\n onChange={(e) => addWidget(e.value)}\r\n placeholder=\"Add Component\"\r\n optionDisabled={(option) => {\r\n return option?.Disabled;\r\n }}\r\n scrollHeight=\"300px\"\r\n />\r\n </div>\r\n </div>\r\n : null}\r\n </div>\r\n\r\n\r\n </div>\r\n\r\n <div className='dl-dashboard-body'>\r\n <DashboardDesigner onLayoutChange={updateWidgets} dashboardLayouts={layouts} openEditWidget={(widget: ReactWidgetPM) => props.openAddEditWidget(widget)} ></DashboardDesigner>\r\n </div>\r\n </div >\r\n\r\n )\r\n}\r\nexport default Dashboard;\r\n\r\n"],"names":["Tools","GetLogitudeURL","logitude_url","location","href","replace","indexOf","urlArr","split","url","substring","lastIndexOf","length","ApexChart","props","lineOptoins","series","name","data","options","chart","height","type","zoom","enabled","dataLabels","stroke","curve","title","text","align","grid","row","colors","opacity","xaxis","categories","barOptoins","plotOptions","bar","horizontal","position","offsetX","style","fontSize","show","width","tooltip","shared","intersect","pieOptoins","labels","donutOptoins","responsive","breakpoint","legend","offsetY","getChartOptions","widget","TypeCode","args","React","ReactApexChart","WidgetCard","state","moreBtnToggle","useRef","useState","loading","setLoading","useEffect","setTimeout","className","key","el","i","Title","Button","icon","onClick","e","current","toggle","OverlayPanel","ref","editBtnClicked","deleteBtnClicked","ResponsiveReactGridLayout","WidthProvider","Responsive","DashboardDesigner","createLayout","layout","lg","dashboardLayouts","map","w","Layout","array12","Array","from","fill","minimumPlaceholderRowsCount","layouts","placeholderRowsArray","setplaceholderRowsArray","firstChange","setFirstChange","undefined","dateFilter","widgets","setWidgets","placeholderRows","setPlaceholderRows","console","log","onLayoutChange","changedLayouts","UpdatePlaceholderDimensions","deletePanel","id","newLayouts","filter","newWidgets","editWidget","openEditWidget","gridLayout","document","getElementsByClassName","gridElementHeight","clientHeight","newPlaceholderRows","Math","floor","layoutGridProps","rowHeight","compactType","onWidthChange","cols","md","sm","xs","xxs","useCSSTransforms","ApiServices","_apiUrl","getByFilters","api","filters","token","getTokenFromStorage","apiURL","ConcatFiltersToURL","axios","get","headers","post","date","window","localStorage","getItem","urlparameters","mykeys","Object","keys","addtionalFiltersValues","propName","propValue","ignoreFilter","concat","encodeURIComponent","JSON","stringify","DashBoardService","_ApiServices","getDataByFilters","tableName","add","WidgetTypeListService","getAll","deepClone","obj","parse","Dashboard","newWidgetWidth","newWidgetHeight","dashbords","setDashbords","currentDashbord","setCurrentDashbord","beforEditDashbord","setBeforEditDashbord","hasChanges","setHasChanges","isInEditMode","setIsInEditMode","WidgetTypes","setWidgetTypes","setLayouts","cancelConfirmDialog","setCancelConfirmDialog","dashboardMoreButtonToggle","createRef","dashboardService","widgetTypeListService","getWidgetTypes","dataBinding","onGetDashboard","subscribe","applyLayouts","onGetAllDashboards","setItem","then","EditDashBoard","openAddEditDashboard","hide","addWidget","widgetCode","EvaluateNewWidgetPosition","openAddEditWidget","StartPotistion","x","y","EndPosition","h","widgetYPosition","widgetXPosition","maxY","reduce","max","widgetsRow","d","lastWidgetStartXPosition","apply","a","lastWidget","find","lastWidgetEndXPosition","availableHorizontalSlots","editDesign","save","onSaveDashboard","onHide","cancelSave","dontSave","next","changeDashboard","event","value","Id","dasboard","onChangeDashboard","dashbord","Widgets","uuidv4","minH","minW","push","updateWidgets","layoutsDic","forEach","sizeType","renderCancelConfirmDialogFooter","label","autoFocus","Name","Ripple","Dropdown","optionValue","optionLabel","onChange","placeholder","optionDisabled","option","Disabled","scrollHeight","Dialog","header","visible","footer","form","marginLeft"],"mappings":"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"}
1
+ {"version":3,"file":"index.js","sources":["../src/services/tools.ts","../src/features/Dashboard/ChartsComponents/ApexChart.tsx","../src/features/Dashboard/WidgetCard.tsx","../src/features/Dashboard/DashboardDesigner.tsx","../src/services/ApiServices.ts","../src/services/DashBoardService.ts","../src/services/WidgetTypeListService.ts","../src/services/clone.ts","../src/index.tsx"],"sourcesContent":["export class Tools{\r\n public static GetLogitudeURL() {\r\n\r\n var logitude_url = location.href.replace('index.html', '');\r\n\r\n if (location.href.indexOf('localhost') > -1) {\r\n logitude_url = 'http://localhost:9996';//localhost:9996//';//\r\n }\r\n\r\n else {\r\n var urlArr = location.href.split(\"/index.html\");\r\n var url = urlArr[0];\r\n url = url.replace(url.substring(url.lastIndexOf('/'), url.length), \"\");\r\n logitude_url = url ;\r\n }\r\n\r\n return logitude_url;\r\n }\r\n}","import React, { useEffect, useRef } from \"react\";\r\nimport ReactApexChart from \"react-apexcharts\";\r\nimport { ReactWidgetPM } from \"../../../types/widget\";\r\n\r\ntype ApexChartProps = {\r\n widget: ReactWidgetPM|null\r\n};\r\nconst ApexChart = (props: ApexChartProps) => {\r\n\r\n const lineOptoins = () => {\r\n\r\n return {\r\n\r\n series: [{\r\n name: \"Desktops\",\r\n data: [10, 41, 35, 51, 49, 62, 69, 91, 148]\r\n }],\r\n options: {\r\n chart: {\r\n height: 350,\r\n type: 'line',\r\n zoom: {\r\n enabled: false\r\n }\r\n },\r\n dataLabels: {\r\n enabled: false\r\n },\r\n stroke: {\r\n curve: 'straight'\r\n },\r\n title: {\r\n text: 'Product Trends by Month',\r\n align: 'left'\r\n },\r\n grid: {\r\n row: {\r\n colors: ['#f3f3f3', 'transparent'], // takes an array which will be repeated on columns\r\n opacity: 0.5\r\n },\r\n },\r\n xaxis: {\r\n categories: ['Jan', 'Feb', 'Mar', 'Apr', 'May', 'Jun', 'Jul', 'Aug', 'Sep'],\r\n }\r\n },\r\n\r\n\r\n };\r\n }\r\n const barOptoins = () => {\r\n\r\n return {\r\n series: [{\r\n data: [44, 55, 41, 64, 22, 43, 21]\r\n }, {\r\n data: [53, 32, 33, 52, 13, 44, 32]\r\n }],\r\n options: {\r\n chart: {\r\n type: 'bar',\r\n height: 430\r\n },\r\n plotOptions: {\r\n bar: {\r\n horizontal: true,\r\n dataLabels: {\r\n position: 'top',\r\n },\r\n }\r\n },\r\n dataLabels: {\r\n enabled: true,\r\n offsetX: -6,\r\n style: {\r\n fontSize: '12px',\r\n colors: ['#fff']\r\n }\r\n },\r\n stroke: {\r\n show: true,\r\n width: 1,\r\n colors: ['#fff']\r\n },\r\n tooltip: {\r\n shared: true,\r\n intersect: false\r\n },\r\n xaxis: {\r\n categories: [2001, 2002, 2003, 2004, 2005, 2006, 2007],\r\n },\r\n },\r\n\r\n\r\n };\r\n }\r\n const pieOptoins = (): ApexChartArgs => {\r\n\r\n return {\r\n\r\n series: [44, 55, 13, 43, 22],\r\n options: {\r\n chart: {\r\n type: 'pie',\r\n },\r\n labels: ['Team A', 'Team B', 'Team C', 'Team D', 'Team E'],\r\n \r\n },\r\n \r\n\r\n\r\n };\r\n }\r\n const donutOptoins = (): ApexChartArgs => {\r\n\r\n return {\r\n\r\n series: [44, 55, 13, 33],\r\n options: {\r\n chart: {\r\n width: 380,\r\n type: 'donut',\r\n },\r\n dataLabels: {\r\n enabled: false\r\n },\r\n responsive: [{\r\n breakpoint: 480,\r\n options: {\r\n chart: {\r\n width: 200\r\n },\r\n legend: {\r\n show: false\r\n }\r\n }\r\n }],\r\n legend: {\r\n position: 'right',\r\n offsetY: 0,\r\n height: 230,\r\n }\r\n },\r\n\r\n\r\n };\r\n }\r\n const getChartOptions = () => {\r\n switch (props.widget?.TypeCode) {\r\n case 'bar':\r\n return barOptoins();\r\n break;\r\n case 'line':\r\n return lineOptoins();\r\n break;\r\n case 'pie':\r\n return pieOptoins();\r\n break;\r\n case 'donut':\r\n return donutOptoins();\r\n break;\r\n default:\r\n break;\r\n }\r\n return barOptoins();\r\n };\r\n const args = getChartOptions();\r\n return (\r\n <ReactApexChart \r\n options={args?.options }\r\n series={args?.series}\r\n type={props.widget?.TypeCode}\r\n height={\"100%\"}\r\n width={\"100%\"}\r\n />\r\n )\r\n}\r\nexport type ApexChartArgs = {\r\n options: any;\r\n series: any;\r\n}\r\n\r\nexport default ApexChart;\r\n\r\n","import { stat } from \"fs\";\r\nimport { Button } from \"primereact/button\";\r\nimport { OverlayPanel } from \"primereact/overlaypanel\";\r\nimport React, { useRef, useState, useEffect } from \"react\";\r\nimport { ReactWidgetPM } from \"../../types/widget\";\r\nimport ApexChart from \"./ChartsComponents/ApexChart\";\r\nimport AreaChartComponent from \"./ChartsComponents/AreaChartComponent\";\r\nimport BarChartComponent from \"./ChartsComponents/BarChartComponent\";\r\nimport CandleChartComponent from \"./ChartsComponents/CandleChartComponent\";\r\nimport ColumnChartComponent from \"./ChartsComponents/ColumnChartComponent\";\r\nimport MixedChartComponent from \"./ChartsComponents/MixedChartComponent\";\r\nimport PieChartComponent from \"./ChartsComponents/PieChartComponent\";\r\nimport TimelineChartComponent from \"./ChartsComponents/TimelineChartComponent\";\r\n\r\n\r\ntype WidgetCardProps = {\r\n editBtnClicked(widget: any): any;\r\n deleteBtnClicked(i: any): any;\r\n widget: ReactWidgetPM | null;\r\n el: any;\r\n dateFilter: any;\r\n isInEditMode: boolean;\r\n}\r\n\r\n\r\nconst WidgetCard = (props: WidgetCardProps, state: any) => {\r\n const moreBtnToggle = useRef<OverlayPanel>(null);\r\n const [loading, setLoading] = useState(true);\r\n useEffect(() => {\r\n setTimeout(function () {\r\n setLoading(false);\r\n }, 200);\r\n }, [])\r\n\r\n const widgetComponents: any[] = [\r\n { type: \"Bar\", component: BarChartComponent },\r\n { type: \"Column\", component: ColumnChartComponent },\r\n { type: \"Pie\", component: PieChartComponent },\r\n { type: \"Mixed\", component: MixedChartComponent },\r\n { type: \"Timeline\", component: TimelineChartComponent },\r\n { type: \"Candle\", component: CandleChartComponent },\r\n { type: \"Area\", component: AreaChartComponent },\r\n ];\r\n return (\r\n <div className=\"panel\" key={props.el.i}>\r\n <header>\r\n <h1>{props.widget?.Title || \"not set\"}</h1>\r\n {\r\n props.isInEditMode ? \r\n <Button\r\n icon=\"pi pi-ellipsis-v\"\r\n className=\"p-button-lg p-button-rounded p-button-text\"\r\n onClick={(e) => moreBtnToggle.current?.toggle(e)}\r\n /> \r\n : null\r\n }\r\n\r\n\r\n <OverlayPanel ref={moreBtnToggle} className=\"buttons-overlay\">\r\n <div className=\"buttons-list\">\r\n <div onClick={() => props.editBtnClicked(props.widget)} > Edit </div>\r\n <div onClick={() => props.deleteBtnClicked(props.widget?.key)} >Remove</div>\r\n </div>\r\n </OverlayPanel>\r\n </header>\r\n\r\n <div className=\"dl-dashboard-widget\">\r\n {loading ? null : <ApexChart widget={props.widget} />}\r\n </div>\r\n </div>\r\n );\r\n};\r\n\r\nexport default WidgetCard;\r\n","\r\n\r\nimport { WidthProvider, Responsive, Layout, Layouts } from \"react-grid-layout\";\r\n\r\nimport React, { createRef, useEffect, useRef, useState } from \"react\";\r\nimport { Button } from \"primereact/button\";\r\nimport _, { find } from \"lodash\";\r\nimport { Ripple } from \"primereact/ripple\";\r\nimport { OverlayPanel } from \"primereact/overlaypanel\";\r\nimport { Dropdown } from \"primereact/dropdown\";\r\n\r\n\r\nimport ColumnChartComponent from \"./ChartsComponents/ColumnChartComponent\";\r\nimport PieChartComponent from \"./ChartsComponents/PieChartComponent\";\r\nimport MixedChartComponent from \"./ChartsComponents/MixedChartComponent\";\r\nimport AreaChartComponent from \"./ChartsComponents/AreaChartComponent\";\r\nimport TimelineChartComponent from \"./ChartsComponents/TimelineChartComponent\";\r\nimport CandleChartComponent from \"./ChartsComponents/CandleChartComponent\";\r\nimport BarChartComponent from \"./ChartsComponents/BarChartComponent\";\r\nimport { WidgetComponent } from \"../../types/WidgetComponent\";\r\nimport { ReactWidgetPM } from \"../../types/widget\";\r\nimport WidgetCard from \"./WidgetCard\";\r\nimport { TRUE } from \"sass\";\r\n\r\nconst ResponsiveReactGridLayout = WidthProvider(Responsive);\r\nconst newWidgetWidth = 3;\r\n\r\ntype DashboardDesignerProps = {\r\n editMode: boolean,\r\n dashboardLayouts: { lg: ReactWidgetPM[] },\r\n openEditWidget: (widget: ReactWidgetPM) => void\r\n onLayoutChange: (layouts: Layouts) => void\r\n};\r\nconst DashboardDesigner = (props: DashboardDesignerProps) => {\r\n\r\n\r\n const array12 = Array.from({ length: 12 }).fill(null);\r\n const minimumPlaceholderRowsCount = 12;\r\n const [layouts, setLayouts] = useState<Layouts>({ lg: [] });\r\n const [placeholderRowsArray, setplaceholderRowsArray] = useState(Array.from({ length: minimumPlaceholderRowsCount }).fill(null));\r\n const [firstChange, setFirstChange] = useState(true);\r\n const [dateFilter, setDateFilter] = useState<Date | Date[] | undefined>(undefined);\r\n const [isInEditMode, setisInEditMode] = useState(false);\r\n const [widgets, setWidgets] = useState<{ lg: ReactWidgetPM[] }>({ lg: [] });\r\n\r\n\r\n useEffect(() => {\r\n setFirstChange(true);\r\n console.log('useEffect setLayouts')\r\n setLayouts({});\r\n setLayouts(createLayout());\r\n setWidgets(props.dashboardLayouts);\r\n }, [props.dashboardLayouts]);\r\n\r\n const createLayout = (): Layouts => {\r\n var layout: any = { lg: [] };\r\n props.dashboardLayouts.lg.map(w => w.Layout as Layout).forEach(e => {\r\n layout.lg.push(e)\r\n })\r\n return layout;\r\n }\r\n useEffect(() => {\r\n setisInEditMode(props.editMode);\r\n }, [props.editMode]);\r\n\r\n\r\n // const applyModeSetting = () => {\r\n // layouts.current.lg.forEach(element => {\r\n // element.isDraggable = props.editMode;\r\n // element.isResizable = props.editMode;\r\n\r\n // });\r\n // }\r\n\r\n function reset() {\r\n window.localStorage.clear();\r\n window.location.reload();\r\n }\r\n\r\n function onLayoutChange(layout: any, changedLayouts: Layouts) {\r\n console.log(layout, layouts);\r\n if (firstChange) {\r\n setFirstChange(false);\r\n return;\r\n }\r\n setLayouts(changedLayouts);\r\n UpdatePlaceholderDimensions();\r\n props.onLayoutChange(changedLayouts)\r\n }\r\n\r\n function deletePanel(id) {\r\n console.log('deletePanel(id)', id)\r\n var newLayouts = { lg: layouts.lg.filter(e => e.i != id) }\r\n\r\n setLayouts(newLayouts);\r\n\r\n var newWidgets = { lg: widgets.lg.filter(e => e.key != id) }\r\n setWidgets(newWidgets);\r\n props.onLayoutChange(newLayouts)\r\n };\r\n\r\n function editWidget(widget: ReactWidgetPM) {\r\n props.openEditWidget(widget);\r\n };\r\n\r\n\r\n function UpdatePlaceholderDimensions() {\r\n console.log('UpdatePlaceholderDimensions', layouts)\r\n var gridLayout = document.getElementsByClassName('react-grid-layout')\r\n if (!gridLayout)\r\n return;\r\n const gridElementHeight = gridLayout[0]?.clientHeight;\r\n\r\n let newPlaceholderRows = Math.floor(gridElementHeight / layoutGridProps.rowHeight);\r\n newPlaceholderRows = newPlaceholderRows < minimumPlaceholderRowsCount ? minimumPlaceholderRowsCount : newPlaceholderRows;\r\n setplaceholderRowsArray(Array.from({ length: newPlaceholderRows }).fill(null));\r\n }\r\n return (<div className=\"dl-full-hight\">\r\n <div className=\"dl-box\">\r\n {/* <div className=\"dl-row dl-header\">\r\n {renderPageHeader()}\r\n </div> */}\r\n <div className=\"dl-row dl-content\">\r\n <div className=\"dl-grid-container\">\r\n <div className=\"dl-grid dl-grid--bordered\">\r\n {props.editMode ? placeholderRowsArray.map((e, i) =>\r\n array12.map((e, i) => (\r\n <div key={i}\r\n style={{\r\n height: layoutGridProps.rowHeight,\r\n }}\r\n ></div>\r\n ))\r\n ) : null}\r\n </div>\r\n\r\n\r\n <ResponsiveReactGridLayout\r\n {...layoutGridProps}\r\n layouts={layouts}\r\n compactType=\"vertical\"\r\n isDraggable={isInEditMode}\r\n isResizable={isInEditMode}\r\n onWidthChange={() => UpdatePlaceholderDimensions()}\r\n onLayoutChange={(layout, layouts) =>\r\n onLayoutChange(layout, layouts)\r\n }\r\n >\r\n {widgets.lg.map((widget) =>\r\n\r\n <div key={widget.Layout?.i}>\r\n <WidgetCard\r\n isInEditMode={isInEditMode}\r\n key={widget.Layout?.i}\r\n widget={widget}\r\n el={widget}\r\n dateFilter={dateFilter}\r\n editBtnClicked={editWidget}\r\n deleteBtnClicked={deletePanel}\r\n />\r\n </div>\r\n )}\r\n </ResponsiveReactGridLayout>\r\n </div>\r\n\r\n </div>\r\n {/* <div className=\"dl-row dl-footer\">\r\n <p><b>footer</b> (fixed height)</p>\r\n </div> */}\r\n </div>\r\n {/* {renderNewWidgetDialog()} */}\r\n\r\n\r\n\r\n\r\n\r\n </div>);\r\n\r\n}\r\n\r\n\r\nexport const layoutGridProps = {\r\n rowHeight: 50,\r\n className: \"layout\",\r\n cols: { lg: 12, md: 6, sm: 2, xs: 1, xxs: 1 },\r\n useCSSTransforms: true,\r\n}\r\n\r\n\r\n\r\n\r\nexport const WidgetTypes = [\r\n { Name: \"Filter\", Disabled: true },\r\n { Name: \"Chart\", Disabled: false },\r\n { Name: \"Data Table\", Disabled: true },\r\n { Name: \"Pivot Table\", Disabled: true },\r\n { Name: \"KPI\", Disabled: true },\r\n { Name: \"Gauge\", Disabled: true },\r\n];\r\nexport const widgetComponents = [\r\n { type: \"Bar\", component: BarChartComponent },\r\n { type: \"Column\", component: ColumnChartComponent },\r\n { type: \"Pie\", component: PieChartComponent },\r\n { type: \"Mixed\", component: MixedChartComponent },\r\n { type: \"Timeline\", component: TimelineChartComponent },\r\n { type: \"Candle\", component: CandleChartComponent },\r\n { type: \"Area\", component: AreaChartComponent },\r\n];\r\n\r\n\r\nexport default DashboardDesigner;\r\n","import axios from \"axios\";\r\nimport { ApiQueryFilters } from \"../common/data-contracts/ApiQueryFilter\";\r\nimport { APIResult } from \"../types/APIResult\";\r\nimport { Tools } from './tools';\r\n\r\n\r\nexport class ApiServices{ \r\n private _apiUrl: string;\r\n constructor(){\r\n this._apiUrl = Tools.GetLogitudeURL() ;\r\n }\r\n getByFilters<T>(api,filters: ApiQueryFilters) {\r\n \r\n let token: string = this.getTokenFromStorage();\r\n\t\tvar apiURL = `${this._apiUrl}${api}`;\r\n\t\tapiURL = this.ConcatFiltersToURL(filters, apiURL);\r\n\r\n return axios.get<APIResult<T>>(apiURL, { headers: { 'Content-Type': 'application/json', 'Token': token } });\r\n }\r\n get<T>(api) {\r\n \r\n let token: string = this.getTokenFromStorage();\r\n\t\tvar apiURL = `${this._apiUrl}${api}`;\r\n return axios.get<T>(apiURL, { headers: { 'Content-Type': 'application/json', 'Token': token } });\r\n }\r\n post<T>(api,date:T){\r\n let token: string = this.getTokenFromStorage();\r\n\t\tvar apiURL = `${this._apiUrl}${api}`;\r\n return axios.post<T>(apiURL,date, { headers: { 'Content-Type': 'application/json', 'Token': token } });\r\n }\r\n\r\n getTokenFromStorage(){\r\n return window.localStorage.getItem(\"token\") || '';\r\n }\r\n private ConcatFiltersToURL(filters: ApiQueryFilters, urlparameters: string)\r\n {\r\n var mykeys = Object.keys(filters);\r\n var addtionalFiltersValues: string | null = null;\r\n\r\n for (var i in mykeys) {\r\n var propName = mykeys[i];\r\n var propValue = filters[propName];\r\n var ignoreFilter = ((propName.indexOf(\"Operator\") > 0 && propValue == \"Equals\") || propName == \"AdditionalFilters\");\r\n\r\n if (urlparameters != \"?\") {\r\n urlparameters = urlparameters.concat('&');\r\n }\r\n\r\n if (!ignoreFilter) {\r\n propValue = propValue ? encodeURIComponent(propValue) : '';\r\n urlparameters = urlparameters.concat(propName.concat('=').concat(propValue));\r\n }\r\n\r\n if (propName == \"AdditionalFilters\" && propValue.length > 0) {\r\n addtionalFiltersValues = JSON.stringify(propValue);\r\n }\r\n }\r\n\r\n if (addtionalFiltersValues) {\r\n urlparameters = urlparameters.concat(\"&AdditionalFilters=\").concat(addtionalFiltersValues);\r\n }\r\n return urlparameters;\r\n }\r\n}","import axios from \"axios\";\r\nimport { ApiQueryFilters } from \"../common/data-contracts/ApiQueryFilter\";\r\nimport { ReactDashboardPM } from \"../types/Dashboard\";\r\nimport { ApiServices } from \"./ApiServices\";\r\nimport { Tools } from './tools';\r\n\r\n\r\nexport class DashBoardService{ \r\n _ApiServices:ApiServices;\r\n tableName = 'DashBoard';\r\n constructor(){\r\n this._ApiServices = new ApiServices();\r\n }\r\n \r\n\r\n getDataByFilters(filters: ApiQueryFilters) {\r\n return this._ApiServices.getByFilters<ReactDashboardPM>(`/api/${this.tableName}Views/getbyfilters?`,filters);\r\n }\r\n\r\n add(data:ReactDashboardPM){\r\n return this._ApiServices.post(`/api/DashBoards`,data);\r\n }\r\n \r\n}","import axios from \"axios\";\r\nimport { ApiQueryFilters } from \"../common/data-contracts/ApiQueryFilter\";\r\nimport { ReactDashboardPM } from \"../types/Dashboard\";\r\nimport { WidgetType } from \"../types/WidgetType\";\r\nimport { ApiServices } from \"./ApiServices\";\r\nimport { Tools } from './tools';\r\n\r\n\r\nexport class WidgetTypeListService{ \r\n _ApiServices:ApiServices;\r\n\r\n constructor(){\r\n this._ApiServices = new ApiServices();\r\n }\r\n \r\n\r\n getDataByFilters(filters: ApiQueryFilters) {\r\n return this._ApiServices.getByFilters<WidgetType>(`/api/WidgetTypeViews/getbyfilters?`,filters);\r\n }\r\n\r\n getAll() {\r\n return this._ApiServices.get<WidgetType[]>(`/api/WidgetTypeViews/getall`);\r\n }\r\n\r\n \r\n}","export function deepClone (obj){\r\n return JSON.parse(JSON.stringify(obj))\r\n}","import * as React from 'react'\r\nimport { Card } from 'primereact/card';\r\nimport { Button } from \"primereact/button\";\r\nimport DashboardDesigner, { layoutGridProps } from './features/Dashboard/DashboardDesigner'\r\nimport \"./styles.module.css\"\r\nimport { Dropdown } from 'primereact/dropdown';\r\nimport { createRef, useEffect, useRef, useState } from \"react\";\r\nimport { DashBoardService } from './services/DashBoardService';\r\nimport { ApiQueryFilters } from './common/data-contracts/ApiQueryFilter';\r\nimport { ReactDashboardPM } from './types/Dashboard';\r\nimport { Dialog } from 'primereact/dialog';\r\nimport DashboardDialogComponent from './features/Dashboard/dashboard-dialog/dashboard-dialog-component';\r\nimport { Session } from './services/session';\r\nimport { WidgetTypeListService } from './services/WidgetTypeListService';\r\nimport { WidgetType } from './types/WidgetType';\r\nimport { ReactWidgetPM } from './types/widget';\r\nimport { OverlayPanel } from 'primereact/overlaypanel';\r\nimport { Ripple } from 'primereact/ripple';\r\nimport { DashboardDataBinding } from './types/DashboardDataBinding';\r\nimport { Layout, Layouts } from 'react-grid-layout';\r\nimport { v4 as uuidv4 } from 'uuid';\r\nimport { deepClone } from './services/clone';\r\n\r\ntype DashboardProps = {\r\n token: string,\r\n tenant: number,\r\n userId: string,\r\n dataBinding: DashboardDataBinding,\r\n openAddEditWidget: (widget: ReactWidgetPM | undefined) => void,\r\n openAddEditDashboard: (dashboard: ReactDashboardPM | undefined) => void,\r\n onChangeDashboard: (dashboard: ReactDashboardPM | undefined) => void,\r\n onSaveDashboard: (dashboard: ReactDashboardPM | undefined) => void,\r\n};\r\nconst Dashboard = (props: DashboardProps) => {\r\n const newWidgetWidth = 3;\r\n const newWidgetHeight = 5;\r\n\r\n const [dashbords, setDashbords] = useState<ReactDashboardPM[]>([]);\r\n const [currentDashbord, setCurrentDashbord] = useState<ReactDashboardPM | undefined>(undefined);\r\n const [beforEditDashbord, setBeforEditDashbord] = useState<ReactDashboardPM | undefined>(undefined);\r\n const [hasChanges, setHasChanges] = useState(false);\r\n const [isInEditMode, setIsInEditMode] = useState<boolean>(false);\r\n const [WidgetTypes, setWidgetTypes] = useState<WidgetType[]>();\r\n const [layouts, setLayouts] = useState<{ lg: ReactWidgetPM[] }>({ lg: [] });\r\n const [cancelConfirmDialog, setCancelConfirmDialog] = useState(false);\r\n const dashboardMoreButtonToggle = createRef<OverlayPanel>();\r\n const dashboardService = new DashBoardService();\r\n const widgetTypeListService = new WidgetTypeListService();\r\n useEffect(() => {\r\n getWidgetTypes();\r\n\r\n props.dataBinding.onGetDashboard.subscribe(e => {\r\n console.log('onGetDashboard.subscribe', e)\r\n setCurrentDashbord(e);\r\n applyLayouts(e);\r\n })\r\n props.dataBinding.onGetAllDashboards.subscribe(e => {\r\n console.log('onGetAllDashboard.subscribe', e)\r\n\r\n setDashbords(e);\r\n })\r\n\r\n }, [])\r\n\r\n Session.CurrentUserId = props.userId;\r\n Session.Tenant = props.tenant;\r\n Session.Token = props.token;\r\n if (props?.token?.length > 0)\r\n localStorage.setItem(\"token\", props?.token);\r\n\r\n\r\n const getWidgetTypes = () => {\r\n widgetTypeListService.getAll().then(data => {\r\n setWidgetTypes(data.data);\r\n });\r\n }\r\n const EditDashBoard = () => {\r\n props.openAddEditDashboard(currentDashbord);\r\n dashboardMoreButtonToggle?.current?.hide();\r\n\r\n }\r\n const addWidget = (widgetCode) => {\r\n var position = EvaluateNewWidgetPosition();\r\n props.openAddEditWidget({ TypeCode: widgetCode, StartPotistion: `${position.x},${position.y}`, EndPosition: `${position.w},${position.h}` } as ReactWidgetPM);\r\n\r\n }\r\n const EvaluateNewWidgetPosition = () => {\r\n let widgetYPosition = 0;\r\n let widgetXPosition = 0;\r\n let layout = layouts[\"lg\"].map(e => e.Layout);\r\n const maxY = layout.reduce((max, widget) => {\r\n if (widget && widget.y > max) max = widget.y;\r\n return max;\r\n }, 0);\r\n\r\n for (let y = 0; y <= maxY; y++) {\r\n const widgetsRow = layout.filter(d => d?.y == y);\r\n const lastWidgetStartXPosition = Math.max.apply(Math, widgetsRow.map(a => a?.x));\r\n const lastWidget: any = widgetsRow.find(a => a?.x == lastWidgetStartXPosition);\r\n if (lastWidget) {\r\n const lastWidgetEndXPosition = lastWidgetStartXPosition + lastWidget.w;\r\n const availableHorizontalSlots = layoutGridProps.cols.lg - lastWidgetEndXPosition;\r\n if (availableHorizontalSlots >= newWidgetWidth) {\r\n widgetYPosition = y;\r\n widgetXPosition = lastWidgetEndXPosition;\r\n return { x: widgetXPosition, y: widgetYPosition, w: newWidgetWidth, h: newWidgetHeight };\r\n\r\n } else {\r\n widgetYPosition = y + 1;\r\n }\r\n } else {\r\n widgetYPosition = y + 1;\r\n }\r\n }\r\n\r\n return { x: widgetXPosition, y: widgetYPosition, w: newWidgetWidth, h: newWidgetHeight };\r\n }\r\n const editLayout = () => {\r\n setIsInEditMode(true)\r\n dashboardMoreButtonToggle?.current?.hide();\r\n\r\n setBeforEditDashbord(deepClone(currentDashbord));\r\n }\r\n const save = () => {\r\n setIsInEditMode(false)\r\n console.log('onSaveDashboard > ', currentDashbord)\r\n props.onSaveDashboard(currentDashbord);\r\n onHide();\r\n setHasChanges(false);\r\n }\r\n\r\n const cancelSave = () => {\r\n if (!hasChanges) {\r\n setIsInEditMode(false);\r\n setHasChanges(false);\r\n } else {\r\n setCancelConfirmDialog(true);\r\n }\r\n\r\n\r\n }\r\n\r\n const dontSave = () => {\r\n setHasChanges(false);\r\n setIsInEditMode(false);\r\n props.dataBinding.onGetDashboard.next(beforEditDashbord);\r\n setCancelConfirmDialog(false);\r\n }\r\n const changeDashboard = (event) => {\r\n if (event.value == currentDashbord?.Id)\r\n return;\r\n var dasboard = dashbords.find(e => e.Id == event.value);\r\n\r\n props.onChangeDashboard(dasboard);\r\n props.dataBinding.onGetDashboard.next(dasboard);\r\n\r\n }\r\n\r\n const applyLayouts = (dashbord: ReactDashboardPM | undefined) => {\r\n if ((!dashbord?.Widgets))\r\n return;\r\n var layout: { lg: ReactWidgetPM[] } = { lg: [] };\r\n dashbord?.Widgets.map(widget => {\r\n if (widget.Id && widget.Id.length > 0)\r\n widget.key = widget.Id;\r\n else\r\n widget.key = uuidv4();\r\n widget.Layout = {\r\n minH: 5,\r\n minW: 3,\r\n i: widget.key,\r\n w: +widget.EndPosition.split(',')[0],\r\n h: +widget.EndPosition.split(',')[1],\r\n x: +widget.StartPotistion.split(',')[0],\r\n y: +widget.StartPotistion.split(',')[1],\r\n }\r\n layout.lg.push(widget\r\n\r\n )\r\n });\r\n console.log('setLayouts -- > ', layout)\r\n setLayouts(layout);\r\n\r\n }\r\n const updateWidgets = (layouts: Layouts) => {\r\n console.log('updateWidgets = (layouts:Layouts', layouts)\r\n var layoutsDic: { [key: string]: Layout } = {};\r\n Object.keys(layouts).forEach(sizeType => {\r\n if (layouts[sizeType].length > 0) {\r\n layouts[sizeType].map(layout => {\r\n layoutsDic[layout.i] = layout;\r\n })\r\n return;\r\n }\r\n })\r\n var widgets: ReactWidgetPM[] = [];\r\n currentDashbord?.Widgets.forEach(widget => {\r\n if (layoutsDic[widget.key]) {\r\n widget.StartPotistion = `${layoutsDic[widget.key].x},${layoutsDic[widget.key].y}`;\r\n widget.EndPosition = `${layoutsDic[widget.key].w},${layoutsDic[widget.key].h}`;\r\n widgets.push(widget)\r\n }\r\n\r\n });\r\n if (currentDashbord) {\r\n currentDashbord.Widgets = widgets;\r\n }\r\n console.log('after update widget', currentDashbord)\r\n setHasChanges(true);\r\n }\r\n\r\n const renderCancelConfirmDialogFooter = () => {\r\n return (\r\n <div className='dl-flex-row-end' >\r\n <Button label=\"Cancel\" onClick={() => onHide()} className=\"p-button-secondary\" />\r\n <Button label=\"Don't Save\" onClick={() => dontSave()} className=\"p-button-secondary\" />\r\n <Button label=\"Save\" onClick={() => save()} autoFocus className=\"p-button-warning\" />\r\n </div>\r\n );\r\n }\r\n const onHide = () => {\r\n setCancelConfirmDialog(false)\r\n }\r\n return (\r\n <div className='dl-full-hight'>\r\n\r\n <div className='dl-dashboard-header dl-card'>\r\n <div className='dl-flex-row dl-custom-btn'>\r\n <div className='dl-title-1'>{currentDashbord?.Name}</div>\r\n <Button\r\n icon=\"pi pi-ellipsis-v\"\r\n onClick={(e) => dashboardMoreButtonToggle?.current?.toggle(e)}\r\n className=\"p-button p-button-icon-only p-button-rounded p-button-text\"\r\n >\r\n <Ripple />\r\n </Button>\r\n <OverlayPanel ref={dashboardMoreButtonToggle} className=\"buttons-overlay\">\r\n <div className=\"buttons-list\">\r\n <div onClick={() => EditDashBoard()}>Edit</div>\r\n <div onClick={editLayout}>Edit Layout</div>\r\n\r\n </div>\r\n </OverlayPanel >\r\n </div>\r\n <div className='dl-flex-row'>\r\n {!isInEditMode ?\r\n <div className='dl-flex-row'>\r\n\r\n\r\n <div style={{ width: \"161px\" }}>\r\n <Dropdown\r\n value={[]}\r\n options={dashbords}\r\n optionValue=\"Id\"\r\n optionLabel=\"Name\"\r\n onChange={changeDashboard}\r\n placeholder=\"Choose Dashboard\"\r\n optionDisabled={(option) => {\r\n return option?.Disabled;\r\n }}\r\n scrollHeight=\"300px\"\r\n style={{ width: '100%' }}\r\n />\r\n </div>\r\n <Button icon=\"pi pi-plus\" onClick={() => props.openAddEditDashboard(undefined)}\r\n className=\"dl-dashboard-add p-button-rounded p-button-success\" />\r\n </div>\r\n : null}\r\n {/* <DashboardDialogComponent display={displayAddDashboard} onClose={onDashboardDialogClose}></DashboardDialogComponent> */}\r\n\r\n\r\n\r\n {isInEditMode ?\r\n <div className='dl-flex-row'>\r\n\r\n <Button\r\n label=\"Cancel\"\r\n className=\"p-button-secondary dl-m-r-s dl-m-t-8\"\r\n onClick={cancelSave}\r\n />\r\n\r\n <Dialog header=\"Unsaved Changes\" visible={cancelConfirmDialog} style={{ width: '50vw' }} footer={renderCancelConfirmDialogFooter()} onHide={onHide}>\r\n <p>This Dashboard has unsaved changes do you want to save it?</p>\r\n </Dialog>\r\n\r\n <Button\r\n label=\"Save\"\r\n form=\"frm\"\r\n // icon=\"pi pi-check\"\r\n onClick={save}\r\n autoFocus\r\n className={hasChanges ? \"p-button-warning dl-m-t-8\" : \"p-button-secondary dl-m-t-8\"}\r\n />\r\n\r\n <div style={{ width: '192px', marginLeft: '15px' }}>\r\n <Dropdown\r\n options={WidgetTypes}\r\n optionValue=\"Code\"\r\n optionLabel=\"Name\"\r\n onChange={(e) => addWidget(e.value)}\r\n placeholder=\"Add Component\"\r\n optionDisabled={(option) => {\r\n return option?.Disabled;\r\n }}\r\n scrollHeight=\"300px\"\r\n />\r\n </div>\r\n </div>\r\n : null}\r\n </div>\r\n\r\n\r\n </div>\r\n\r\n <div className='dl-dashboard-body'>\r\n <DashboardDesigner editMode={isInEditMode} onLayoutChange={updateWidgets} dashboardLayouts={layouts} openEditWidget={(widget: ReactWidgetPM) => props.openAddEditWidget(widget)} ></DashboardDesigner>\r\n </div>\r\n </div >\r\n\r\n )\r\n}\r\nexport default Dashboard;\r\n\r\n"],"names":["Tools","GetLogitudeURL","logitude_url","location","href","replace","indexOf","urlArr","split","url","substring","lastIndexOf","length","ApexChart","props","lineOptoins","series","name","data","options","chart","height","type","zoom","enabled","dataLabels","stroke","curve","title","text","align","grid","row","colors","opacity","xaxis","categories","barOptoins","plotOptions","bar","horizontal","position","offsetX","style","fontSize","show","width","tooltip","shared","intersect","pieOptoins","labels","donutOptoins","responsive","breakpoint","legend","offsetY","getChartOptions","widget","TypeCode","args","React","ReactApexChart","WidgetCard","state","moreBtnToggle","useRef","useState","loading","setLoading","useEffect","setTimeout","className","key","el","i","Title","isInEditMode","Button","icon","onClick","e","current","toggle","OverlayPanel","ref","editBtnClicked","deleteBtnClicked","ResponsiveReactGridLayout","WidthProvider","Responsive","DashboardDesigner","array12","Array","from","fill","minimumPlaceholderRowsCount","lg","layouts","setLayouts","placeholderRowsArray","setplaceholderRowsArray","firstChange","setFirstChange","undefined","dateFilter","setisInEditMode","widgets","setWidgets","console","log","createLayout","dashboardLayouts","layout","map","w","Layout","forEach","push","editMode","onLayoutChange","changedLayouts","UpdatePlaceholderDimensions","deletePanel","id","newLayouts","filter","newWidgets","editWidget","openEditWidget","gridLayout","document","getElementsByClassName","gridElementHeight","clientHeight","newPlaceholderRows","Math","floor","layoutGridProps","rowHeight","compactType","isDraggable","isResizable","onWidthChange","cols","md","sm","xs","xxs","useCSSTransforms","ApiServices","_apiUrl","getByFilters","api","filters","token","getTokenFromStorage","apiURL","ConcatFiltersToURL","axios","get","headers","post","date","window","localStorage","getItem","urlparameters","mykeys","Object","keys","addtionalFiltersValues","propName","propValue","ignoreFilter","concat","encodeURIComponent","JSON","stringify","DashBoardService","_ApiServices","getDataByFilters","tableName","add","WidgetTypeListService","getAll","deepClone","obj","parse","Dashboard","newWidgetWidth","newWidgetHeight","dashbords","setDashbords","currentDashbord","setCurrentDashbord","beforEditDashbord","setBeforEditDashbord","hasChanges","setHasChanges","setIsInEditMode","WidgetTypes","setWidgetTypes","cancelConfirmDialog","setCancelConfirmDialog","dashboardMoreButtonToggle","createRef","dashboardService","widgetTypeListService","getWidgetTypes","dataBinding","onGetDashboard","subscribe","applyLayouts","onGetAllDashboards","setItem","then","EditDashBoard","openAddEditDashboard","hide","addWidget","widgetCode","EvaluateNewWidgetPosition","openAddEditWidget","StartPotistion","x","y","EndPosition","h","widgetYPosition","widgetXPosition","maxY","reduce","max","widgetsRow","d","lastWidgetStartXPosition","apply","a","lastWidget","find","lastWidgetEndXPosition","availableHorizontalSlots","editLayout","save","onSaveDashboard","onHide","cancelSave","dontSave","next","changeDashboard","event","value","Id","dasboard","onChangeDashboard","dashbord","Widgets","uuidv4","minH","minW","updateWidgets","layoutsDic","sizeType","renderCancelConfirmDialogFooter","label","autoFocus","Name","Ripple","Dropdown","optionValue","optionLabel","onChange","placeholder","optionDisabled","option","Disabled","scrollHeight","Dialog","header","visible","footer","form","marginLeft"],"mappings":";;;;;;;;;;;;;;IAAaA,KAAb;EAAA;;EAAA,MACkBC,cADlB,GACW;IAEH,IAAIC,YAAY,GAAGC,QAAQ,CAACC,IAAT,CAAcC,OAAd,CAAsB,YAAtB,EAAoC,EAApC,CAAnB;;IAEA,IAAIF,QAAQ,CAACC,IAAT,CAAcE,OAAd,CAAsB,WAAtB,IAAqC,CAAC,CAA1C,EAA6C;MACzCJ,YAAY,GAAG,uBAAf;KADJ,MAIK;MACD,IAAIK,MAAM,GAAGJ,QAAQ,CAACC,IAAT,CAAcI,KAAd,CAAoB,aAApB,CAAb;MACA,IAAIC,GAAG,GAAGF,MAAM,CAAC,CAAD,CAAhB;MACAE,GAAG,GAAGA,GAAG,CAACJ,OAAJ,CAAYI,GAAG,CAACC,SAAJ,CAAcD,GAAG,CAACE,WAAJ,CAAgB,GAAhB,CAAd,EAAoCF,GAAG,CAACG,MAAxC,CAAZ,EAA6D,EAA7D,CAAN;MACAV,YAAY,GAAGO,GAAf;;;IAGJ,OAAOP,YAAP;GAhBR;;EAAA;AAAA;;ACOA,IAAMW,SAAS,GAAG,SAAZA,SAAY,CAACC,KAAD;;;EAEd,IAAMC,WAAW,GAAG,SAAdA,WAAc;IAEhB,OAAO;MAEHC,MAAM,EAAE,CAAC;QACLC,IAAI,EAAE,UADD;QAELC,IAAI,EAAE,CAAC,EAAD,EAAK,EAAL,EAAS,EAAT,EAAa,EAAb,EAAiB,EAAjB,EAAqB,EAArB,EAAyB,EAAzB,EAA6B,EAA7B,EAAiC,GAAjC;OAFF,CAFL;MAMHC,OAAO,EAAE;QACLC,KAAK,EAAE;UACHC,MAAM,EAAE,GADL;UAEHC,IAAI,EAAE,MAFH;UAGHC,IAAI,EAAE;YACFC,OAAO,EAAE;;SALZ;QAQLC,UAAU,EAAE;UACRD,OAAO,EAAE;SATR;QAWLE,MAAM,EAAE;UACJC,KAAK,EAAE;SAZN;QAcLC,KAAK,EAAE;UACHC,IAAI,EAAE,yBADH;UAEHC,KAAK,EAAE;SAhBN;QAkBLC,IAAI,EAAE;UACFC,GAAG,EAAE;YACDC,MAAM,EAAE,CAAC,SAAD,EAAY,aAAZ,CADP;YAEDC,OAAO,EAAE;;SArBZ;QAwBLC,KAAK,EAAE;UACHC,UAAU,EAAE,CAAC,KAAD,EAAQ,KAAR,EAAe,KAAf,EAAsB,KAAtB,EAA6B,KAA7B,EAAoC,KAApC,EAA2C,KAA3C,EAAkD,KAAlD,EAAyD,KAAzD;;;KA/BxB;GAFJ;;EAwCA,IAAMC,UAAU,GAAG,SAAbA,UAAa;IAEf,OAAO;MACHrB,MAAM,EAAE,CAAC;QACLE,IAAI,EAAE,CAAC,EAAD,EAAK,EAAL,EAAS,EAAT,EAAa,EAAb,EAAiB,EAAjB,EAAqB,EAArB,EAAyB,EAAzB;OADF,EAEL;QACCA,IAAI,EAAE,CAAC,EAAD,EAAK,EAAL,EAAS,EAAT,EAAa,EAAb,EAAiB,EAAjB,EAAqB,EAArB,EAAyB,EAAzB;OAHF,CADL;MAMHC,OAAO,EAAE;QACLC,KAAK,EAAE;UACHE,IAAI,EAAE,KADH;UAEHD,MAAM,EAAE;SAHP;QAKLiB,WAAW,EAAE;UACTC,GAAG,EAAE;YACDC,UAAU,EAAE,IADX;YAEDf,UAAU,EAAE;cACRgB,QAAQ,EAAE;;;SATjB;QAaLhB,UAAU,EAAE;UACRD,OAAO,EAAE,IADD;UAERkB,OAAO,EAAE,CAAC,CAFF;UAGRC,KAAK,EAAE;YACHC,QAAQ,EAAE,MADP;YAEHX,MAAM,EAAE,CAAC,MAAD;;SAlBX;QAqBLP,MAAM,EAAE;UACJmB,IAAI,EAAE,IADF;UAEJC,KAAK,EAAE,CAFH;UAGJb,MAAM,EAAE,CAAC,MAAD;SAxBP;QA0BLc,OAAO,EAAE;UACLC,MAAM,EAAE,IADH;UAELC,SAAS,EAAE;SA5BV;QA8BLd,KAAK,EAAE;UACHC,UAAU,EAAE,CAAC,IAAD,EAAO,IAAP,EAAa,IAAb,EAAmB,IAAnB,EAAyB,IAAzB,EAA+B,IAA/B,EAAqC,IAArC;;;KArCxB;GAFJ;;EA8CA,IAAMc,UAAU,GAAG,SAAbA,UAAa;IAEf,OAAO;MAEHlC,MAAM,EAAE,CAAC,EAAD,EAAK,EAAL,EAAS,EAAT,EAAa,EAAb,EAAiB,EAAjB,CAFL;MAGHG,OAAO,EAAE;QACLC,KAAK,EAAE;UACHE,IAAI,EAAE;SAFL;QAIL6B,MAAM,EAAE,CAAC,QAAD,EAAW,QAAX,EAAqB,QAArB,EAA+B,QAA/B,EAAyC,QAAzC;;KAPhB;GAFJ;;EAiBA,IAAMC,YAAY,GAAG,SAAfA,YAAe;IAEjB,OAAO;MAEHpC,MAAM,EAAE,CAAC,EAAD,EAAK,EAAL,EAAS,EAAT,EAAa,EAAb,CAFL;MAGHG,OAAO,EAAE;QACLC,KAAK,EAAE;UACH0B,KAAK,EAAE,GADJ;UAEHxB,IAAI,EAAE;SAHL;QAKLG,UAAU,EAAE;UACRD,OAAO,EAAE;SANR;QAQL6B,UAAU,EAAE,CAAC;UACTC,UAAU,EAAE,GADH;UAETnC,OAAO,EAAE;YACLC,KAAK,EAAE;cACH0B,KAAK,EAAE;aAFN;YAILS,MAAM,EAAE;cACJV,IAAI,EAAE;;;SAPN,CARP;QAmBLU,MAAM,EAAE;UACJd,QAAQ,EAAE,OADN;UAEJe,OAAO,EAAE,CAFL;UAGJnC,MAAM,EAAE;;;KAzBpB;GAFJ;;EAkCA,IAAMoC,eAAe,GAAG,SAAlBA,eAAkB;;;IACpB,yBAAQ3C,KAAK,CAAC4C,MAAd,kDAAQ,cAAcC,QAAtB;MACI,KAAK,KAAL;QACI,OAAOtB,UAAU,EAAjB;;MAEJ,KAAK,MAAL;QACI,OAAOtB,WAAW,EAAlB;;MAEJ,KAAK,KAAL;QACI,OAAOmC,UAAU,EAAjB;;MAEJ,KAAK,OAAL;QACI,OAAOE,YAAY,EAAnB;;;IAKR,OAAOf,UAAU,EAAjB;GAjBJ;;EAmBA,IAAMuB,IAAI,GAAGH,eAAe,EAA5B;EACA,OACII,4BAAA,CAACC,cAAD;IACI3C,OAAO,EAAEyC,IAAF,aAAEA,IAAF,uBAAEA,IAAI,CAAEzC;IACfH,MAAM,EAAE4C,IAAF,aAAEA,IAAF,uBAAEA,IAAI,CAAE5C;IACdM,IAAI,oBAAER,KAAK,CAAC4C,MAAR,mDAAE,eAAcC;IACpBtC,MAAM,EAAE;IACRyB,KAAK,EAAE;GALX,CADJ;AASH,CAxKD;;ACkBA,IAAMiB,UAAU,GAAG,SAAbA,UAAa,CAACjD,KAAD,EAAyBkD,KAAzB;;;EACjB,IAAMC,aAAa,GAAGC,YAAM,CAAe,IAAf,CAA5B;;EACA,gBAA8BC,cAAQ,CAAC,IAAD,CAAtC;MAAOC,OAAP;MAAgBC,UAAhB;;EACAC,eAAS,CAAC;IACRC,UAAU,CAAC;MACTF,UAAU,CAAC,KAAD,CAAV;KADQ,EAEP,GAFO,CAAV;GADO,EAIN,EAJM,CAAT;EAeA,OACER,4BAAA,MAAA;IAAKW,SAAS,EAAC;IAAQC,GAAG,EAAE3D,KAAK,CAAC4D,EAAN,CAASC;GAArC,EACEd,4BAAA,SAAA,MAAA,EACEA,4BAAA,KAAA,MAAA,EAAK,kBAAA/C,KAAK,CAAC4C,MAAN,gEAAckB,KAAd,KAAuB,SAA5B,CADF,EAGI9D,KAAK,CAAC+D,YAAN,GACAhB,4BAAA,CAACiB,aAAD;IACEC,IAAI,EAAC;IACLP,SAAS,EAAC;IACVQ,OAAO,EAAE,iBAACC,CAAD;MAAA;;MAAA,gCAAOhB,aAAa,CAACiB,OAArB,0DAAO,sBAAuBC,MAAvB,CAA8BF,CAA9B,CAAP;;GAHX,CADA,GAME,IATN,EAaEpB,4BAAA,CAACuB,yBAAD;IAAcC,GAAG,EAAEpB;IAAeO,SAAS,EAAC;GAA5C,EACEX,4BAAA,MAAA;IAAKW,SAAS,EAAC;GAAf,EACEX,4BAAA,MAAA;IAAKmB,OAAO,EAAE;MAAA,OAAMlE,KAAK,CAACwE,cAAN,CAAqBxE,KAAK,CAAC4C,MAA3B,CAAN;;GAAd,UAAA,CADF,EAEEG,4BAAA,MAAA;IAAKmB,OAAO,EAAE;MAAA;;MAAA,OAAMlE,KAAK,CAACyE,gBAAN,mBAAuBzE,KAAK,CAAC4C,MAA7B,mDAAuB,eAAce,GAArC,CAAN;;GAAd,UAAA,CAFF,CADF,CAbF,CADF,EAsBEZ,4BAAA,MAAA;IAAKW,SAAS,EAAC;GAAf,EACGJ,OAAO,GAAG,IAAH,GAAUP,4BAAA,CAAChD,SAAD;IAAW6C,MAAM,EAAE5C,KAAK,CAAC4C;GAAzB,CADpB,CAtBF,CADF;AA4BD,CA9CD;;ACDA,IAAM8B,yBAAyB,GAAGC,6BAAa,CAACC,0BAAD,CAA/C;AACA;AAQA,IAAMC,iBAAiB,GAAG,SAApBA,iBAAoB,CAAC7E,KAAD;EAGxB,IAAM8E,OAAO,GAAGC,KAAK,CAACC,IAAN,CAAW;IAAElF,MAAM,EAAE;GAArB,EAA2BmF,IAA3B,CAAgC,IAAhC,CAAhB;EACA,IAAMC,2BAA2B,GAAG,EAApC;;EACA,gBAA8B7B,cAAQ,CAAU;IAAE8B,EAAE,EAAE;GAAhB,CAAtC;MAAOC,OAAP;MAAgBC,UAAhB;;EACA,iBAAwDhC,cAAQ,CAAC0B,KAAK,CAACC,IAAN,CAAW;IAAElF,MAAM,EAAEoF;GAArB,EAAoDD,IAApD,CAAyD,IAAzD,CAAD,CAAhE;MAAOK,oBAAP;MAA6BC,uBAA7B;;EACA,iBAAsClC,cAAQ,CAAC,IAAD,CAA9C;MAAOmC,WAAP;MAAoBC,cAApB;;EACA,iBAAoCpC,cAAQ,CAA4BqC,SAA5B,CAA5C;MAAOC,UAAP;;EACA,iBAAwCtC,cAAQ,CAAC,KAAD,CAAhD;MAAOU,YAAP;MAAqB6B,eAArB;;EACA,iBAA8BvC,cAAQ,CAA0B;IAAE8B,EAAE,EAAE;GAAhC,CAAtC;MAAOU,OAAP;MAAgBC,UAAhB;;EAGAtC,eAAS,CAAC;IACRiC,cAAc,CAAC,IAAD,CAAd;IACAM,OAAO,CAACC,GAAR,CAAY,sBAAZ;IACAX,UAAU,CAAC,EAAD,CAAV;IACAA,UAAU,CAACY,YAAY,EAAb,CAAV;IACAH,UAAU,CAAC9F,KAAK,CAACkG,gBAAP,CAAV;GALO,EAMN,CAAClG,KAAK,CAACkG,gBAAP,CANM,CAAT;;EAQA,IAAMD,YAAY,GAAG,SAAfA,YAAe;IACnB,IAAIE,MAAM,GAAQ;MAAEhB,EAAE,EAAE;KAAxB;IACAnF,KAAK,CAACkG,gBAAN,CAAuBf,EAAvB,CAA0BiB,GAA1B,CAA8B,UAAAC,CAAC;MAAA,OAAIA,CAAC,CAACC,MAAN;KAA/B,EAAuDC,OAAvD,CAA+D,UAAApC,CAAC;MAC9DgC,MAAM,CAAChB,EAAP,CAAUqB,IAAV,CAAerC,CAAf;KADF;IAGA,OAAOgC,MAAP;GALF;;EAOA3C,eAAS,CAAC;IACRoC,eAAe,CAAC5F,KAAK,CAACyG,QAAP,CAAf;GADO,EAEN,CAACzG,KAAK,CAACyG,QAAP,CAFM,CAAT;;EAkBA,SAASC,eAAT,CAAwBP,MAAxB,EAAqCQ,cAArC;IACEZ,OAAO,CAACC,GAAR,CAAYG,MAAZ,EAAoBf,OAApB;;IACA,IAAII,WAAJ,EAAiB;MACfC,cAAc,CAAC,KAAD,CAAd;MACA;;;IAEFJ,UAAU,CAACsB,cAAD,CAAV;IACAC,2BAA2B;IAC3B5G,KAAK,CAAC0G,cAAN,CAAqBC,cAArB;;;EAGF,SAASE,WAAT,CAAqBC,EAArB;IACEf,OAAO,CAACC,GAAR,CAAY,iBAAZ,EAA+Bc,EAA/B;IACA,IAAIC,UAAU,GAAG;MAAE5B,EAAE,EAAEC,OAAO,CAACD,EAAR,CAAW6B,MAAX,CAAkB,UAAA7C,CAAC;QAAA,OAAIA,CAAC,CAACN,CAAF,IAAOiD,EAAX;OAAnB;KAAvB;IAEAzB,UAAU,CAAC0B,UAAD,CAAV;IAEA,IAAIE,UAAU,GAAG;MAAE9B,EAAE,EAAEU,OAAO,CAACV,EAAR,CAAW6B,MAAX,CAAkB,UAAA7C,CAAC;QAAA,OAAIA,CAAC,CAACR,GAAF,IAASmD,EAAb;OAAnB;KAAvB;IACAhB,UAAU,CAACmB,UAAD,CAAV;IACAjH,KAAK,CAAC0G,cAAN,CAAqBK,UAArB;;;EAGF,SAASG,UAAT,CAAoBtE,MAApB;IACE5C,KAAK,CAACmH,cAAN,CAAqBvE,MAArB;;;EAIF,SAASgE,2BAAT;;;IACEb,OAAO,CAACC,GAAR,CAAY,6BAAZ,EAA2CZ,OAA3C;IACA,IAAIgC,UAAU,GAAGC,QAAQ,CAACC,sBAAT,CAAgC,mBAAhC,CAAjB;IACA,IAAI,CAACF,UAAL,EACE;IACF,IAAMG,iBAAiB,mBAAGH,UAAU,CAAC,CAAD,CAAb,iDAAG,aAAeI,YAAzC;IAEA,IAAIC,kBAAkB,GAAGC,IAAI,CAACC,KAAL,CAAWJ,iBAAiB,GAAGK,eAAe,CAACC,SAA/C,CAAzB;IACAJ,kBAAkB,GAAGA,kBAAkB,GAAGvC,2BAArB,GAAmDA,2BAAnD,GAAiFuC,kBAAtG;IACAlC,uBAAuB,CAACR,KAAK,CAACC,IAAN,CAAW;MAAElF,MAAM,EAAE2H;KAArB,EAA2CxC,IAA3C,CAAgD,IAAhD,CAAD,CAAvB;;;EAEF,OAAQlC,4BAAA,MAAA;IAAKW,SAAS,EAAC;GAAf,EACNX,4BAAA,MAAA;IAAKW,SAAS,EAAC;GAAf,EAIEX,4BAAA,MAAA;IAAKW,SAAS,EAAC;GAAf,EACEX,4BAAA,MAAA;IAAKW,SAAS,EAAC;GAAf,EACEX,4BAAA,MAAA;IAAKW,SAAS,EAAC;GAAf,EACG1D,KAAK,CAACyG,QAAN,GAAiBnB,oBAAoB,CAACc,GAArB,CAAyB,UAACjC,CAAD,EAAIN,CAAJ;IAAA,OACzCiB,OAAO,CAACsB,GAAR,CAAY,UAACjC,CAAD,EAAIN,CAAJ;MAAA,OACVd,4BAAA,MAAA;QAAKY,GAAG,EAAEE;QACRhC,KAAK,EAAE;UACLtB,MAAM,EAAEqH,eAAe,CAACC;;OAF5B,CADU;KAAZ,CADyC;GAAzB,CAAjB,GAQG,IATN,CADF,EAcE9E,4BAAA,CAAC2B,yBAAD,oBACMkD;IACJxC,OAAO,EAAEA;IACT0C,WAAW,EAAC;IACZC,WAAW,EAAEhE;IACbiE,WAAW,EAAEjE;IACbkE,aAAa,EAAE;MAAA,OAAMrB,2BAA2B,EAAjC;;IACfF,cAAc,EAAE,wBAACP,MAAD,EAASf,OAAT;MAAA,OACdsB,eAAc,CAACP,MAAD,EAASf,OAAT,CADA;;IAPlB,EAWGS,OAAO,CAACV,EAAR,CAAWiB,GAAX,CAAe,UAACxD,MAAD;IAAA;;IAAA,OAEdG,4BAAA,MAAA;MAAKY,GAAG,oBAAEf,MAAM,CAAC0D,MAAT,mDAAE,eAAezC;KAAzB,EACEd,4BAAA,CAACE,UAAD;MACEc,YAAY,EAAEA;MACdJ,GAAG,qBAAEf,MAAM,CAAC0D,MAAT,oDAAE,gBAAezC;MACpBjB,MAAM,EAAEA;MACRgB,EAAE,EAAEhB;MACJ+C,UAAU,EAAEA;MACZnB,cAAc,EAAE0C;MAChBzC,gBAAgB,EAAEoC;KAPpB,CADF,CAFc;GAAf,CAXH,CAdF,CADF,CAJF,CADM,CAAR;AA6DD,CAjJD;;AAoJA,AAAO,IAAMe,eAAe,GAAG;EAC7BC,SAAS,EAAE,EADkB;EAE7BnE,SAAS,EAAE,QAFkB;EAG7BwE,IAAI,EAAE;IAAE/C,EAAE,EAAE,EAAN;IAAUgD,EAAE,EAAE,CAAd;IAAiBC,EAAE,EAAE,CAArB;IAAwBC,EAAE,EAAE,CAA5B;IAA+BC,GAAG,EAAE;GAHb;EAI7BC,gBAAgB,EAAE;AAJW,CAAxB;;IC/KMC,WAAb;EAEI;IACI,KAAKC,OAAL,GAAevJ,KAAK,CAACC,cAAN,EAAf;;;EAHR;;EAAA,OAKIuJ,YALJ,GAKI,sBAAgBC,GAAhB,EAAoBC,OAApB;IAEI,IAAIC,KAAK,GAAW,KAAKC,mBAAL,EAApB;IACN,IAAIC,MAAM,QAAM,KAAKN,OAAX,GAAqBE,GAA/B;IACAI,MAAM,GAAG,KAAKC,kBAAL,CAAwBJ,OAAxB,EAAiCG,MAAjC,CAAT;IAEM,OAAOE,KAAK,CAACC,GAAN,CAAwBH,MAAxB,EAAgC;MAAEI,OAAO,EAAE;QAAE,gBAAgB,kBAAlB;QAAsC,SAASN;;KAA1F,CAAP;GAXR;;EAAA,OAaIK,GAbJ,GAaI,aAAOP,GAAP;IAEI,IAAIE,KAAK,GAAW,KAAKC,mBAAL,EAApB;IACN,IAAIC,MAAM,QAAM,KAAKN,OAAX,GAAqBE,GAA/B;IACM,OAAOM,KAAK,CAACC,GAAN,CAAaH,MAAb,EAAqB;MAAEI,OAAO,EAAE;QAAE,gBAAgB,kBAAlB;QAAsC,SAASN;;KAA/E,CAAP;GAjBR;;EAAA,OAmBIO,IAnBJ,GAmBI,cAAQT,GAAR,EAAYU,IAAZ;IACI,IAAIR,KAAK,GAAW,KAAKC,mBAAL,EAApB;IACN,IAAIC,MAAM,QAAM,KAAKN,OAAX,GAAqBE,GAA/B;IACM,OAAOM,KAAK,CAACG,IAAN,CAAcL,MAAd,EAAqBM,IAArB,EAA2B;MAAEF,OAAO,EAAE;QAAE,gBAAgB,kBAAlB;QAAsC,SAASN;;KAArF,CAAP;GAtBR;;EAAA,OAyBIC,mBAzBJ,GAyBI;IACI,OAAOQ,MAAM,CAACC,YAAP,CAAoBC,OAApB,CAA4B,OAA5B,KAAwC,EAA/C;GA1BR;;EAAA,OA4BYR,kBA5BZ,GA4BY,4BAAmBJ,OAAnB,EAA6Ca,aAA7C;IAEJ,IAAIC,MAAM,GAAGC,MAAM,CAACC,IAAP,CAAYhB,OAAZ,CAAb;IACA,IAAIiB,sBAAsB,GAAkB,IAA5C;;IAEA,KAAK,IAAIhG,CAAT,IAAc6F,MAAd,EAAsB;MAClB,IAAII,QAAQ,GAAGJ,MAAM,CAAC7F,CAAD,CAArB;MACA,IAAIkG,SAAS,GAAGnB,OAAO,CAACkB,QAAD,CAAvB;MACA,IAAIE,YAAY,GAAKF,QAAQ,CAACtK,OAAT,CAAiB,UAAjB,IAA+B,CAA/B,IAAoCuK,SAAS,IAAI,QAAlD,IAA+DD,QAAQ,IAAI,mBAA/F;;MAEA,IAAIL,aAAa,IAAI,GAArB,EAA0B;QACtBA,aAAa,GAAGA,aAAa,CAACQ,MAAd,CAAqB,GAArB,CAAhB;;;MAGJ,IAAI,CAACD,YAAL,EAAmB;QACfD,SAAS,GAAGA,SAAS,GAAGG,kBAAkB,CAACH,SAAD,CAArB,GAAmC,EAAxD;QACAN,aAAa,GAAGA,aAAa,CAACQ,MAAd,CAAqBH,QAAQ,CAACG,MAAT,CAAgB,GAAhB,EAAqBA,MAArB,CAA4BF,SAA5B,CAArB,CAAhB;;;MAGJ,IAAID,QAAQ,IAAI,mBAAZ,IAAmCC,SAAS,CAACjK,MAAV,GAAmB,CAA1D,EAA6D;QACzD+J,sBAAsB,GAAGM,IAAI,CAACC,SAAL,CAAeL,SAAf,CAAzB;;;;IAIR,IAAIF,sBAAJ,EAA4B;MACxBJ,aAAa,GAAGA,aAAa,CAACQ,MAAd,CAAqB,qBAArB,EAA4CA,MAA5C,CAAmDJ,sBAAnD,CAAhB;;;IAEJ,OAAOJ,aAAP;GAvDR;;EAAA;AAAA;;ICCaY,gBAAb;EAGI;IADA,cAAA,GAAY,WAAZ;IAEI,KAAKC,YAAL,GAAoB,IAAI9B,WAAJ,EAApB;;;EAJR;;EAAA,OAQI+B,gBARJ,GAQI,0BAAiB3B,OAAjB;IACI,OAAO,KAAK0B,YAAL,CAAkB5B,YAAlB,WAAyD,KAAK8B,SAA9D,0BAA6F5B,OAA7F,CAAP;GATR;;EAAA,OAYI6B,GAZJ,GAYI,aAAIrK,IAAJ;IACI,OAAO,KAAKkK,YAAL,CAAkBlB,IAAlB,oBAAyChJ,IAAzC,CAAP;GAbR;;EAAA;AAAA;;ICCasK,qBAAb;EAGI;IACI,KAAKJ,YAAL,GAAoB,IAAI9B,WAAJ,EAApB;;;EAJR;;EAAA,OAQI+B,gBARJ,GAQI,0BAAiB3B,OAAjB;IACI,OAAO,KAAK0B,YAAL,CAAkB5B,YAAlB,uCAAgFE,OAAhF,CAAP;GATR;;EAAA,OAYI+B,MAZJ,GAYI;IACI,OAAO,KAAKL,YAAL,CAAkBpB,GAAlB,+BAAP;GAbR;;EAAA;AAAA;;SCRgB0B,UAAWC;EACvB,OAAOV,IAAI,CAACW,KAAL,CAAWX,IAAI,CAACC,SAAL,CAAeS,GAAf,CAAX,CAAP;AACH;;AC+BD,IAAME,SAAS,GAAG,SAAZA,SAAY,CAAC/K,KAAD;;;EAChB,IAAMgL,cAAc,GAAG,CAAvB;EACA,IAAMC,eAAe,GAAG,CAAxB;;EAEA,gBAAkC5H,cAAQ,CAAqB,EAArB,CAA1C;MAAO6H,SAAP;MAAkBC,YAAlB;;EACA,iBAA8C9H,cAAQ,CAA+BqC,SAA/B,CAAtD;MAAO0F,eAAP;MAAwBC,kBAAxB;;EACA,iBAAkDhI,cAAQ,CAA+BqC,SAA/B,CAA1D;MAAO4F,iBAAP;MAA0BC,oBAA1B;;EACA,iBAAoClI,cAAQ,CAAC,KAAD,CAA5C;MAAOmI,UAAP;MAAmBC,aAAnB;;EACA,iBAAwCpI,cAAQ,CAAU,KAAV,CAAhD;MAAOU,YAAP;MAAqB2H,eAArB;;EACA,iBAAsCrI,cAAQ,EAA9C;MAAOsI,WAAP;MAAoBC,cAApB;;EACA,iBAA8BvI,cAAQ,CAA0B;IAAE8B,EAAE,EAAE;GAAhC,CAAtC;MAAOC,OAAP;MAAgBC,UAAhB;;EACA,iBAAsDhC,cAAQ,CAAC,KAAD,CAA9D;MAAOwI,mBAAP;MAA4BC,sBAA5B;;EACA,IAAMC,yBAAyB,GAAGC,eAAS,EAA3C;EACA,IAAMC,gBAAgB,GAAG,IAAI5B,gBAAJ,EAAzB;EACA,IAAM6B,qBAAqB,GAAG,IAAIxB,qBAAJ,EAA9B;EACAlH,eAAS,CAAC;IACR2I,cAAc;IAEdnM,KAAK,CAACoM,WAAN,CAAkBC,cAAlB,CAAiCC,SAAjC,CAA2C,UAAAnI,CAAC;MAC1C4B,OAAO,CAACC,GAAR,CAAY,0BAAZ,EAAwC7B,CAAxC;MACAkH,kBAAkB,CAAClH,CAAD,CAAlB;MACAoI,YAAY,CAACpI,CAAD,CAAZ;KAHF;IAKAnE,KAAK,CAACoM,WAAN,CAAkBI,kBAAlB,CAAqCF,SAArC,CAA+C,UAAAnI,CAAC;MAC9C4B,OAAO,CAACC,GAAR,CAAY,6BAAZ,EAA2C7B,CAA3C;MAEAgH,YAAY,CAAChH,CAAD,CAAZ;KAHF;GARO,EAcN,EAdM,CAAT;EAmBA,IAAI,CAAAnE,KAAK,SAAL,IAAAA,KAAK,WAAL,4BAAAA,KAAK,CAAE6I,KAAP,8DAAc/I,MAAd,IAAuB,CAA3B,EACEyJ,YAAY,CAACkD,OAAb,CAAqB,OAArB,EAA8BzM,KAA9B,aAA8BA,KAA9B,uBAA8BA,KAAK,CAAE6I,KAArC;;EAGF,IAAMsD,cAAc,GAAG,SAAjBA,cAAiB;IACrBD,qBAAqB,CAACvB,MAAtB,GAA+B+B,IAA/B,CAAoC,UAAAtM,IAAI;MACtCwL,cAAc,CAACxL,IAAI,CAACA,IAAN,CAAd;KADF;GADF;;EAKA,IAAMuM,aAAa,GAAG,SAAhBA,aAAgB;;;IACpB3M,KAAK,CAAC4M,oBAAN,CAA2BxB,eAA3B;IACAW,yBAAyB,SAAzB,IAAAA,yBAAyB,WAAzB,qCAAAA,yBAAyB,CAAE3H,OAA3B,gFAAoCyI,IAApC;GAFF;;EAKA,IAAMC,SAAS,GAAG,SAAZA,SAAY,CAACC,UAAD;IAChB,IAAIpL,QAAQ,GAAGqL,yBAAyB,EAAxC;IACAhN,KAAK,CAACiN,iBAAN,CAAwB;MAAEpK,QAAQ,EAAEkK,UAAZ;MAAwBG,cAAc,EAAKvL,QAAQ,CAACwL,CAAd,SAAmBxL,QAAQ,CAACyL,CAAlE;MAAuEC,WAAW,EAAK1L,QAAQ,CAAC0E,CAAd,SAAmB1E,QAAQ,CAAC2L;KAAtI;GAFF;;EAKA,IAAMN,yBAAyB,GAAG,SAA5BA,yBAA4B;IAChC,IAAIO,eAAe,GAAG,CAAtB;IACA,IAAIC,eAAe,GAAG,CAAtB;IACA,IAAIrH,MAAM,GAAGf,OAAO,CAAC,IAAD,CAAP,CAAcgB,GAAd,CAAkB,UAAAjC,CAAC;MAAA,OAAIA,CAAC,CAACmC,MAAN;KAAnB,CAAb;IACA,IAAMmH,IAAI,GAAGtH,MAAM,CAACuH,MAAP,CAAc,UAACC,GAAD,EAAM/K,MAAN;MACzB,IAAIA,MAAM,IAAIA,MAAM,CAACwK,CAAP,GAAWO,GAAzB,EAA8BA,GAAG,GAAG/K,MAAM,CAACwK,CAAb;MAC9B,OAAOO,GAAP;KAFW,EAGV,CAHU,CAAb;;+BAKSP;MACP,IAAMQ,UAAU,GAAGzH,MAAM,CAACa,MAAP,CAAc,UAAA6G,CAAC;QAAA,OAAI,CAAAA,CAAC,SAAD,IAAAA,CAAC,WAAD,YAAAA,CAAC,CAAET,CAAH,KAAQA,CAAZ;OAAf,CAAnB;MACA,IAAMU,wBAAwB,GAAGpG,IAAI,CAACiG,GAAL,CAASI,KAAT,CAAerG,IAAf,EAAqBkG,UAAU,CAACxH,GAAX,CAAe,UAAA4H,CAAC;QAAA,OAAIA,CAAJ,aAAIA,CAAJ,uBAAIA,CAAC,CAAEb,CAAP;OAAhB,CAArB,CAAjC;MACA,IAAMc,UAAU,GAAQL,UAAU,CAACM,IAAX,CAAgB,UAAAF,CAAC;QAAA,OAAI,CAAAA,CAAC,SAAD,IAAAA,CAAC,WAAD,YAAAA,CAAC,CAAEb,CAAH,KAAQW,wBAAZ;OAAjB,CAAxB;;MACA,IAAIG,UAAJ,EAAgB;QACd,IAAME,sBAAsB,GAAGL,wBAAwB,GAAGG,UAAU,CAAC5H,CAArE;QACA,IAAM+H,wBAAwB,GAAGxG,eAAe,CAACM,IAAhB,CAAqB/C,EAArB,GAA0BgJ,sBAA3D;;QACA,IAAIC,wBAAwB,IAAIpD,cAAhC,EAAgD;UAC9CuC,eAAe,GAAGH,CAAlB;UACAI,eAAe,GAAGW,sBAAlB;UACA;YAAA,GAAO;cAAEhB,CAAC,EAAEK,eAAL;cAAsBJ,CAAC,EAAEG,eAAzB;cAA0ClH,CAAC,EAAE2E,cAA7C;cAA6DsC,CAAC,EAAErC;;;SAHzE,MAKO;UACLsC,eAAe,GAAGH,CAAC,GAAG,CAAtB;;OATJ,MAWO;QACLG,eAAe,GAAGH,CAAC,GAAG,CAAtB;;;;IAhBJ,KAAK,IAAIA,CAAC,GAAG,CAAb,EAAgBA,CAAC,IAAIK,IAArB,EAA2BL,CAAC,EAA5B,EAAgC;MAAA,iBAAvBA,CAAuB;;MAAA;;;IAoBhC,OAAO;MAAED,CAAC,EAAEK,eAAL;MAAsBJ,CAAC,EAAEG,eAAzB;MAA0ClH,CAAC,EAAE2E,cAA7C;MAA6DsC,CAAC,EAAErC;KAAvE;GA7BF;;EA+BA,IAAMoD,UAAU,GAAG,SAAbA,UAAa;;;IACjB3C,eAAe,CAAC,IAAD,CAAf;IACAK,yBAAyB,SAAzB,IAAAA,yBAAyB,WAAzB,sCAAAA,yBAAyB,CAAE3H,OAA3B,kFAAoCyI,IAApC;IAEAtB,oBAAoB,CAACX,SAAS,CAACQ,eAAD,CAAV,CAApB;GAJF;;EAMA,IAAMkD,IAAI,GAAG,SAAPA,IAAO;IACX5C,eAAe,CAAC,KAAD,CAAf;IACA3F,OAAO,CAACC,GAAR,CAAY,oBAAZ,EAAkCoF,eAAlC;IACApL,KAAK,CAACuO,eAAN,CAAsBnD,eAAtB;IACAoD,MAAM;IACN/C,aAAa,CAAC,KAAD,CAAb;GALF;;EAQA,IAAMgD,UAAU,GAAG,SAAbA,UAAa;IACjB,IAAI,CAACjD,UAAL,EAAiB;MACfE,eAAe,CAAC,KAAD,CAAf;MACAD,aAAa,CAAC,KAAD,CAAb;KAFF,MAGO;MACLK,sBAAsB,CAAC,IAAD,CAAtB;;GALJ;;EAWA,IAAM4C,QAAQ,GAAG,SAAXA,QAAW;IACfjD,aAAa,CAAC,KAAD,CAAb;IACAC,eAAe,CAAC,KAAD,CAAf;IACA1L,KAAK,CAACoM,WAAN,CAAkBC,cAAlB,CAAiCsC,IAAjC,CAAsCrD,iBAAtC;IACAQ,sBAAsB,CAAC,KAAD,CAAtB;GAJF;;EAMA,IAAM8C,eAAe,GAAG,SAAlBA,eAAkB,CAACC,KAAD;IACtB,IAAIA,KAAK,CAACC,KAAN,KAAe1D,eAAf,aAAeA,eAAf,uBAAeA,eAAe,CAAE2D,EAAhC,CAAJ,EACE;IACF,IAAIC,QAAQ,GAAG9D,SAAS,CAACgD,IAAV,CAAe,UAAA/J,CAAC;MAAA,OAAIA,CAAC,CAAC4K,EAAF,IAAQF,KAAK,CAACC,KAAlB;KAAhB,CAAf;IAEA9O,KAAK,CAACiP,iBAAN,CAAwBD,QAAxB;IACAhP,KAAK,CAACoM,WAAN,CAAkBC,cAAlB,CAAiCsC,IAAjC,CAAsCK,QAAtC;GANF;;EAUA,IAAMzC,YAAY,GAAG,SAAfA,YAAe,CAAC2C,QAAD;IACnB,IAAK,EAACA,QAAD,aAACA,QAAD,eAACA,QAAQ,CAAEC,OAAX,CAAL,EACE;IACF,IAAIhJ,MAAM,GAA4B;MAAEhB,EAAE,EAAE;KAA5C;IACA+J,QAAQ,SAAR,IAAAA,QAAQ,WAAR,YAAAA,QAAQ,CAAEC,OAAV,CAAkB/I,GAAlB,CAAsB,UAAAxD,MAAM;MAC1B,IAAIA,MAAM,CAACmM,EAAP,IAAanM,MAAM,CAACmM,EAAP,CAAUjP,MAAV,GAAmB,CAApC,EACE8C,MAAM,CAACe,GAAP,GAAaf,MAAM,CAACmM,EAApB,CADF,KAGEnM,MAAM,CAACe,GAAP,GAAayL,OAAM,EAAnB;MACFxM,MAAM,CAAC0D,MAAP,GAAgB;QACd+I,IAAI,EAAE,CADQ;QAEdC,IAAI,EAAE,CAFQ;QAGdzL,CAAC,EAAEjB,MAAM,CAACe,GAHI;QAId0C,CAAC,EAAE,CAACzD,MAAM,CAACyK,WAAP,CAAmB3N,KAAnB,CAAyB,GAAzB,EAA8B,CAA9B,CAJU;QAKd4N,CAAC,EAAE,CAAC1K,MAAM,CAACyK,WAAP,CAAmB3N,KAAnB,CAAyB,GAAzB,EAA8B,CAA9B,CALU;QAMdyN,CAAC,EAAE,CAACvK,MAAM,CAACsK,cAAP,CAAsBxN,KAAtB,CAA4B,GAA5B,EAAiC,CAAjC,CANU;QAOd0N,CAAC,EAAE,CAACxK,MAAM,CAACsK,cAAP,CAAsBxN,KAAtB,CAA4B,GAA5B,EAAiC,CAAjC;OAPN;MASAyG,MAAM,CAAChB,EAAP,CAAUqB,IAAV,CAAe5D,MAAf;KAdF;IAkBAmD,OAAO,CAACC,GAAR,CAAY,kBAAZ,EAAgCG,MAAhC;IACAd,UAAU,CAACc,MAAD,CAAV;GAvBF;;EA0BA,IAAMoJ,aAAa,GAAG,SAAhBA,aAAgB,CAACnK,OAAD;IACpBW,OAAO,CAACC,GAAR,CAAY,kCAAZ,EAAgDZ,OAAhD;IACA,IAAIoK,UAAU,GAA8B,EAA5C;IACA7F,MAAM,CAACC,IAAP,CAAYxE,OAAZ,EAAqBmB,OAArB,CAA6B,UAAAkJ,QAAQ;MACnC,IAAIrK,OAAO,CAACqK,QAAD,CAAP,CAAkB3P,MAAlB,GAA2B,CAA/B,EAAkC;QAChCsF,OAAO,CAACqK,QAAD,CAAP,CAAkBrJ,GAAlB,CAAsB,UAAAD,MAAM;UAC1BqJ,UAAU,CAACrJ,MAAM,CAACtC,CAAR,CAAV,GAAuBsC,MAAvB;SADF;QAGA;;KALJ;IAQA,IAAIN,OAAO,GAAoB,EAA/B;IACAuF,eAAe,SAAf,IAAAA,eAAe,WAAf,YAAAA,eAAe,CAAE+D,OAAjB,CAAyB5I,OAAzB,CAAiC,UAAA3D,MAAM;MACrC,IAAI4M,UAAU,CAAC5M,MAAM,CAACe,GAAR,CAAd,EAA4B;QAC1Bf,MAAM,CAACsK,cAAP,GAA2BsC,UAAU,CAAC5M,MAAM,CAACe,GAAR,CAAV,CAAuBwJ,CAAlD,SAAuDqC,UAAU,CAAC5M,MAAM,CAACe,GAAR,CAAV,CAAuByJ,CAA9E;QACAxK,MAAM,CAACyK,WAAP,GAAwBmC,UAAU,CAAC5M,MAAM,CAACe,GAAR,CAAV,CAAuB0C,CAA/C,SAAoDmJ,UAAU,CAAC5M,MAAM,CAACe,GAAR,CAAV,CAAuB2J,CAA3E;QACAzH,OAAO,CAACW,IAAR,CAAa5D,MAAb;;KAJJ;;IAQA,IAAIwI,eAAJ,EAAqB;MACnBA,eAAe,CAAC+D,OAAhB,GAA0BtJ,OAA1B;;;IAEFE,OAAO,CAACC,GAAR,CAAY,qBAAZ,EAAmCoF,eAAnC;IACAK,aAAa,CAAC,IAAD,CAAb;GAxBF;;EA2BA,IAAMiE,+BAA+B,GAAG,SAAlCA,+BAAkC;IACtC,OACE3M,mBAAA,MAAA;MAAKW,SAAS,EAAC;KAAf,EACEX,mBAAA,CAACiB,aAAD;MAAQ2L,KAAK,EAAC;MAAUzL,OAAO,EAAE;QAAA,OAAMsK,MAAM,EAAZ;;MAAgB9K,SAAS,EAAC;KAA3D,CADF,EAEEX,mBAAA,CAACiB,aAAD;MAAQ2L,KAAK,EAAC;MAAczL,OAAO,EAAE;QAAA,OAAMwK,QAAQ,EAAd;;MAAkBhL,SAAS,EAAC;KAAjE,CAFF,EAGEX,mBAAA,CAACiB,aAAD;MAAQ2L,KAAK,EAAC;MAAQzL,OAAO,EAAE;QAAA,OAAMoK,IAAI,EAAV;;MAAcsB,SAAS;MAAClM,SAAS,EAAC;KAAjE,CAHF,CADF;GADF;;EASA,IAAM8K,MAAM,GAAG,SAATA,MAAS;IACb1C,sBAAsB,CAAC,KAAD,CAAtB;GADF;;EAGA,OACE/I,mBAAA,MAAA;IAAKW,SAAS,EAAC;GAAf,EAEEX,mBAAA,MAAA;IAAKW,SAAS,EAAC;GAAf,EACEX,mBAAA,MAAA;IAAKW,SAAS,EAAC;GAAf,EACEX,mBAAA,MAAA;IAAKW,SAAS,EAAC;GAAf,EAA6B0H,eAA7B,aAA6BA,eAA7B,uBAA6BA,eAAe,CAAEyE,IAA9C,CADF,EAEE9M,mBAAA,CAACiB,aAAD;IACEC,IAAI,EAAC;IACLC,OAAO,EAAE,iBAACC,CAAD;MAAA;;MAAA,OAAO4H,yBAAP,aAAOA,yBAAP,iDAAOA,yBAAyB,CAAE3H,OAAlC,2DAAO,uBAAoCC,MAApC,CAA2CF,CAA3C,CAAP;;IACTT,SAAS,EAAC;GAHZ,EAKEX,mBAAA,CAAC+M,aAAD,MAAA,CALF,CAFF,EASE/M,mBAAA,CAACuB,yBAAD;IAAcC,GAAG,EAAEwH;IAA2BrI,SAAS,EAAC;GAAxD,EACEX,mBAAA,MAAA;IAAKW,SAAS,EAAC;GAAf,EACEX,mBAAA,MAAA;IAAKmB,OAAO,EAAE;MAAA,OAAMyI,aAAa,EAAnB;;GAAd,QAAA,CADF,EAEE5J,mBAAA,MAAA;IAAKmB,OAAO,EAAEmK;GAAd,eAAA,CAFF,CADF,CATF,CADF,EAkBEtL,mBAAA,MAAA;IAAKW,SAAS,EAAC;GAAf,EACG,CAACK,YAAD,GACChB,mBAAA,MAAA;IAAKW,SAAS,EAAC;GAAf,EAGEX,mBAAA,MAAA;IAAKlB,KAAK,EAAE;MAAEG,KAAK,EAAE;;GAArB,EACEe,mBAAA,CAACgN,iBAAD;IACEjB,KAAK,EAAE;IACPzO,OAAO,EAAE6K;IACT8E,WAAW,EAAC;IACZC,WAAW,EAAC;IACZC,QAAQ,EAAEtB;IACVuB,WAAW,EAAC;IACZC,cAAc,EAAE,wBAACC,MAAD;MACd,OAAOA,MAAP,aAAOA,MAAP,uBAAOA,MAAM,CAAEC,QAAf;;IAEFC,YAAY,EAAC;IACb1O,KAAK,EAAE;MAAEG,KAAK,EAAE;;GAXlB,CADF,CAHF,EAkBEe,mBAAA,CAACiB,aAAD;IAAQC,IAAI,EAAC;IAAaC,OAAO,EAAE;MAAA,OAAMlE,KAAK,CAAC4M,oBAAN,CAA2BlH,SAA3B,CAAN;;IACjChC,SAAS,EAAC;GADZ,CAlBF,CADD,GAsBG,IAvBN,EA4BGK,YAAY,GACXhB,mBAAA,MAAA;IAAKW,SAAS,EAAC;GAAf,EAEEX,mBAAA,CAACiB,aAAD;IACE2L,KAAK,EAAC;IACNjM,SAAS,EAAC;IACVQ,OAAO,EAAEuK;GAHX,CAFF,EAQE1L,mBAAA,CAACyN,aAAD;IAAQC,MAAM,EAAC;IAAkBC,OAAO,EAAE7E;IAAqBhK,KAAK,EAAE;MAAEG,KAAK,EAAE;;IAAU2O,MAAM,EAAEjB,+BAA+B;IAAIlB,MAAM,EAAEA;GAA5I,EACEzL,mBAAA,IAAA,MAAA,8DAAA,CADF,CARF,EAYEA,mBAAA,CAACiB,aAAD;IACE2L,KAAK,EAAC;IACNiB,IAAI,EAAC;IAEL1M,OAAO,EAAEoK;IACTsB,SAAS;IACTlM,SAAS,EAAE8H,UAAU,GAAG,2BAAH,GAAiC;GANxD,CAZF,EAqBEzI,mBAAA,MAAA;IAAKlB,KAAK,EAAE;MAAEG,KAAK,EAAE,OAAT;MAAkB6O,UAAU,EAAE;;GAA1C,EACE9N,mBAAA,CAACgN,iBAAD;IACE1P,OAAO,EAAEsL;IACTqE,WAAW,EAAC;IACZC,WAAW,EAAC;IACZC,QAAQ,EAAE,kBAAC/L,CAAD;MAAA,OAAO2I,SAAS,CAAC3I,CAAC,CAAC2K,KAAH,CAAhB;;IACVqB,WAAW,EAAC;IACZC,cAAc,EAAE,wBAACC,MAAD;MACd,OAAOA,MAAP,aAAOA,MAAP,uBAAOA,MAAM,CAAEC,QAAf;;IAEFC,YAAY,EAAC;GATf,CADF,CArBF,CADW,GAoCT,IAhEN,CAlBF,CAFF,EA0FExN,mBAAA,MAAA;IAAKW,SAAS,EAAC;GAAf,EACEX,mBAAA,CAAC8B,iBAAD;IAAmB4B,QAAQ,EAAE1C;IAAc2C,cAAc,EAAE6I;IAAerJ,gBAAgB,EAAEd;IAAS+B,cAAc,EAAE,wBAACvE,MAAD;MAAA,OAA2B5C,KAAK,CAACiN,iBAAN,CAAwBrK,MAAxB,CAA3B;;GAArH,CADF,CA1FF,CADF;AAiGD,CA/RD;;;;"}
@@ -204,7 +204,7 @@ var WidgetCard = function WidgetCard(props, state) {
204
204
  return React__default.createElement("div", {
205
205
  className: "panel",
206
206
  key: props.el.i
207
- }, React__default.createElement("header", null, React__default.createElement("h1", null, ((_props$widget = props.widget) === null || _props$widget === void 0 ? void 0 : _props$widget.Title) || "not set"), React__default.createElement(Button, {
207
+ }, React__default.createElement("header", null, React__default.createElement("h1", null, ((_props$widget = props.widget) === null || _props$widget === void 0 ? void 0 : _props$widget.Title) || "not set"), props.isInEditMode ? React__default.createElement(Button, {
208
208
  icon: "pi pi-ellipsis-v",
209
209
  className: "p-button-lg p-button-rounded p-button-text",
210
210
  onClick: function onClick(e) {
@@ -212,7 +212,7 @@ var WidgetCard = function WidgetCard(props, state) {
212
212
 
213
213
  return (_moreBtnToggle$curren = moreBtnToggle.current) === null || _moreBtnToggle$curren === void 0 ? void 0 : _moreBtnToggle$curren.toggle(e);
214
214
  }
215
- }), React__default.createElement(OverlayPanel, {
215
+ }) : null, React__default.createElement(OverlayPanel, {
216
216
  ref: moreBtnToggle,
217
217
  className: "buttons-overlay"
218
218
  }, React__default.createElement("div", {
@@ -237,39 +237,33 @@ var WidgetCard = function WidgetCard(props, state) {
237
237
  var ResponsiveReactGridLayout = WidthProvider(Responsive);
238
238
 
239
239
  var DashboardDesigner = function DashboardDesigner(props) {
240
- var createLayout = function createLayout() {
241
- var layout = {
242
- lg: props.dashboardLayouts.lg.map(function (w) {
243
- return w.Layout;
244
- })
245
- };
246
- return layout;
247
- };
248
-
249
240
  var array12 = Array.from({
250
241
  length: 12
251
242
  }).fill(null);
252
243
  var minimumPlaceholderRowsCount = 12;
253
- var layouts = useRef(createLayout() || {
244
+
245
+ var _useState = useState({
254
246
  lg: []
255
- });
247
+ }),
248
+ layouts = _useState[0],
249
+ setLayouts = _useState[1];
256
250
 
257
- var _useState = useState(Array.from({
251
+ var _useState2 = useState(Array.from({
258
252
  length: minimumPlaceholderRowsCount
259
253
  }).fill(null)),
260
- placeholderRowsArray = _useState[0],
261
- setplaceholderRowsArray = _useState[1];
254
+ placeholderRowsArray = _useState2[0],
255
+ setplaceholderRowsArray = _useState2[1];
262
256
 
263
- var _useState2 = useState(true),
264
- firstChange = _useState2[0],
265
- setFirstChange = _useState2[1];
257
+ var _useState3 = useState(true),
258
+ firstChange = _useState3[0],
259
+ setFirstChange = _useState3[1];
266
260
 
267
- var _useState3 = useState(undefined),
268
- dateFilter = _useState3[0];
269
-
270
- var _useState4 = useState(false);
261
+ var _useState4 = useState(undefined),
262
+ dateFilter = _useState4[0];
271
263
 
272
- var _useState5 = useState("");
264
+ var _useState5 = useState(false),
265
+ isInEditMode = _useState5[0],
266
+ setisInEditMode = _useState5[1];
273
267
 
274
268
  var _useState6 = useState({
275
269
  lg: []
@@ -277,16 +271,30 @@ var DashboardDesigner = function DashboardDesigner(props) {
277
271
  widgets = _useState6[0],
278
272
  setWidgets = _useState6[1];
279
273
 
280
- var _useState7 = useState(minimumPlaceholderRowsCount),
281
- setPlaceholderRows = _useState7[1];
282
-
283
274
  useEffect(function () {
284
275
  setFirstChange(true);
285
276
  console.log('useEffect setLayouts');
286
- layouts.current = createLayout();
277
+ setLayouts({});
278
+ setLayouts(createLayout());
287
279
  setWidgets(props.dashboardLayouts);
288
280
  }, [props.dashboardLayouts]);
289
281
 
282
+ var createLayout = function createLayout() {
283
+ var layout = {
284
+ lg: []
285
+ };
286
+ props.dashboardLayouts.lg.map(function (w) {
287
+ return w.Layout;
288
+ }).forEach(function (e) {
289
+ layout.lg.push(e);
290
+ });
291
+ return layout;
292
+ };
293
+
294
+ useEffect(function () {
295
+ setisInEditMode(props.editMode);
296
+ }, [props.editMode]);
297
+
290
298
  function _onLayoutChange(layout, changedLayouts) {
291
299
  console.log(layout, layouts);
292
300
 
@@ -295,7 +303,7 @@ var DashboardDesigner = function DashboardDesigner(props) {
295
303
  return;
296
304
  }
297
305
 
298
- layouts.current = changedLayouts;
306
+ setLayouts(changedLayouts);
299
307
  UpdatePlaceholderDimensions();
300
308
  props.onLayoutChange(changedLayouts);
301
309
  }
@@ -303,11 +311,11 @@ var DashboardDesigner = function DashboardDesigner(props) {
303
311
  function deletePanel(id) {
304
312
  console.log('deletePanel(id)', id);
305
313
  var newLayouts = {
306
- lg: layouts.current.lg.filter(function (e) {
314
+ lg: layouts.lg.filter(function (e) {
307
315
  return e.i != id;
308
316
  })
309
317
  };
310
- layouts.current = newLayouts;
318
+ setLayouts(newLayouts);
311
319
  var newWidgets = {
312
320
  lg: widgets.lg.filter(function (e) {
313
321
  return e.key != id;
@@ -324,12 +332,12 @@ var DashboardDesigner = function DashboardDesigner(props) {
324
332
  function UpdatePlaceholderDimensions() {
325
333
  var _gridLayout$;
326
334
 
335
+ console.log('UpdatePlaceholderDimensions', layouts);
327
336
  var gridLayout = document.getElementsByClassName('react-grid-layout');
328
337
  if (!gridLayout) return;
329
338
  var gridElementHeight = (_gridLayout$ = gridLayout[0]) === null || _gridLayout$ === void 0 ? void 0 : _gridLayout$.clientHeight;
330
339
  var newPlaceholderRows = Math.floor(gridElementHeight / layoutGridProps.rowHeight);
331
340
  newPlaceholderRows = newPlaceholderRows < minimumPlaceholderRowsCount ? minimumPlaceholderRowsCount : newPlaceholderRows;
332
- setPlaceholderRows(newPlaceholderRows);
333
341
  setplaceholderRowsArray(Array.from({
334
342
  length: newPlaceholderRows
335
343
  }).fill(null));
@@ -345,7 +353,7 @@ var DashboardDesigner = function DashboardDesigner(props) {
345
353
  className: "dl-grid-container"
346
354
  }, React__default.createElement("div", {
347
355
  className: "dl-grid dl-grid--bordered"
348
- }, placeholderRowsArray.map(function (e, i) {
356
+ }, props.editMode ? placeholderRowsArray.map(function (e, i) {
349
357
  return array12.map(function (e, i) {
350
358
  return React__default.createElement("div", {
351
359
  key: i,
@@ -354,9 +362,11 @@ var DashboardDesigner = function DashboardDesigner(props) {
354
362
  }
355
363
  });
356
364
  });
357
- })), React__default.createElement(ResponsiveReactGridLayout, Object.assign({}, layoutGridProps, {
358
- layouts: layouts.current,
365
+ }) : null), React__default.createElement(ResponsiveReactGridLayout, Object.assign({}, layoutGridProps, {
366
+ layouts: layouts,
359
367
  compactType: "vertical",
368
+ isDraggable: isInEditMode,
369
+ isResizable: isInEditMode,
360
370
  onWidthChange: function onWidthChange() {
361
371
  return UpdatePlaceholderDimensions();
362
372
  },
@@ -369,6 +379,7 @@ var DashboardDesigner = function DashboardDesigner(props) {
369
379
  return React__default.createElement("div", {
370
380
  key: (_widget$Layout = widget.Layout) === null || _widget$Layout === void 0 ? void 0 : _widget$Layout.i
371
381
  }, React__default.createElement(WidgetCard, {
382
+ isInEditMode: isInEditMode,
372
383
  key: (_widget$Layout2 = widget.Layout) === null || _widget$Layout2 === void 0 ? void 0 : _widget$Layout2.i,
373
384
  widget: widget,
374
385
  el: widget,
@@ -597,19 +608,19 @@ var Dashboard = function Dashboard(props) {
597
608
  return e.Layout;
598
609
  });
599
610
  var maxY = layout.reduce(function (max, widget) {
600
- if (widget.y > max) max = widget.y;
611
+ if (widget && widget.y > max) max = widget.y;
601
612
  return max;
602
613
  }, 0);
603
614
 
604
615
  var _loop = function _loop(y) {
605
616
  var widgetsRow = layout.filter(function (d) {
606
- return d.y == y;
617
+ return (d === null || d === void 0 ? void 0 : d.y) == y;
607
618
  });
608
619
  var lastWidgetStartXPosition = Math.max.apply(Math, widgetsRow.map(function (a) {
609
- return a.x;
620
+ return a === null || a === void 0 ? void 0 : a.x;
610
621
  }));
611
622
  var lastWidget = widgetsRow.find(function (a) {
612
- return a.x == lastWidgetStartXPosition;
623
+ return (a === null || a === void 0 ? void 0 : a.x) == lastWidgetStartXPosition;
613
624
  });
614
625
 
615
626
  if (lastWidget) {
@@ -649,7 +660,7 @@ var Dashboard = function Dashboard(props) {
649
660
  };
650
661
  };
651
662
 
652
- var editDesign = function editDesign() {
663
+ var editLayout = function editLayout() {
653
664
  var _dashboardMoreButtonT2;
654
665
 
655
666
  setIsInEditMode(true);
@@ -741,7 +752,9 @@ var Dashboard = function Dashboard(props) {
741
752
  };
742
753
 
743
754
  var renderCancelConfirmDialogFooter = function renderCancelConfirmDialogFooter() {
744
- return createElement("div", null, createElement(Button, {
755
+ return createElement("div", {
756
+ className: 'dl-flex-row-end'
757
+ }, createElement(Button, {
745
758
  label: "Cancel",
746
759
  onClick: function onClick() {
747
760
  return onHide();
@@ -793,8 +806,8 @@ var Dashboard = function Dashboard(props) {
793
806
  return EditDashBoard();
794
807
  }
795
808
  }, "Edit"), createElement("div", {
796
- onClick: editDesign
797
- }, "Edit Design")))), createElement("div", {
809
+ onClick: editLayout
810
+ }, "Edit Layout")))), createElement("div", {
798
811
  className: 'dl-flex-row'
799
812
  }, !isInEditMode ? createElement("div", {
800
813
  className: 'dl-flex-row'
@@ -826,7 +839,7 @@ var Dashboard = function Dashboard(props) {
826
839
  className: 'dl-flex-row'
827
840
  }, createElement(Button, {
828
841
  label: "Cancel",
829
- className: "p-button-secondary dl-m-r-s",
842
+ className: "p-button-secondary dl-m-r-s dl-m-t-8",
830
843
  onClick: cancelSave
831
844
  }), createElement(Dialog, {
832
845
  header: "Unsaved Changes",
@@ -841,7 +854,7 @@ var Dashboard = function Dashboard(props) {
841
854
  form: "frm",
842
855
  onClick: save,
843
856
  autoFocus: true,
844
- className: hasChanges ? "p-button-warning" : "p-button-secondary"
857
+ className: hasChanges ? "p-button-warning dl-m-t-8" : "p-button-secondary dl-m-t-8"
845
858
  }), createElement("div", {
846
859
  style: {
847
860
  width: '192px',
@@ -862,6 +875,7 @@ var Dashboard = function Dashboard(props) {
862
875
  }))) : null)), createElement("div", {
863
876
  className: 'dl-dashboard-body'
864
877
  }, createElement(DashboardDesigner, {
878
+ editMode: isInEditMode,
865
879
  onLayoutChange: updateWidgets,
866
880
  dashboardLayouts: layouts,
867
881
  openEditWidget: function openEditWidget(widget) {
@@ -1 +1 @@
1
- {"version":3,"file":"index.modern.js","sources":["../src/services/tools.ts","../src/features/Dashboard/ChartsComponents/ApexChart.tsx","../src/features/Dashboard/WidgetCard.tsx","../src/features/Dashboard/DashboardDesigner.tsx","../src/services/ApiServices.ts","../src/services/DashBoardService.ts","../src/services/WidgetTypeListService.ts","../src/services/clone.ts","../src/index.tsx"],"sourcesContent":["export class Tools{\r\n public static GetLogitudeURL() {\r\n\r\n var logitude_url = location.href.replace('index.html', '');\r\n\r\n if (location.href.indexOf('localhost') > -1) {\r\n logitude_url = 'http://localhost:9996';//localhost:9996//';//\r\n }\r\n\r\n else {\r\n var urlArr = location.href.split(\"/index.html\");\r\n var url = urlArr[0];\r\n url = url.replace(url.substring(url.lastIndexOf('/'), url.length), \"\");\r\n logitude_url = url ;\r\n }\r\n\r\n return logitude_url;\r\n }\r\n}","import React, { useEffect, useRef } from \"react\";\r\nimport ReactApexChart from \"react-apexcharts\";\r\nimport { ReactWidgetPM } from \"../../../types/widget\";\r\n\r\ntype ApexChartProps = {\r\n widget: ReactWidgetPM|null\r\n};\r\nconst ApexChart = (props: ApexChartProps) => {\r\n\r\n const lineOptoins = () => {\r\n\r\n return {\r\n\r\n series: [{\r\n name: \"Desktops\",\r\n data: [10, 41, 35, 51, 49, 62, 69, 91, 148]\r\n }],\r\n options: {\r\n chart: {\r\n height: 350,\r\n type: 'line',\r\n zoom: {\r\n enabled: false\r\n }\r\n },\r\n dataLabels: {\r\n enabled: false\r\n },\r\n stroke: {\r\n curve: 'straight'\r\n },\r\n title: {\r\n text: 'Product Trends by Month',\r\n align: 'left'\r\n },\r\n grid: {\r\n row: {\r\n colors: ['#f3f3f3', 'transparent'], // takes an array which will be repeated on columns\r\n opacity: 0.5\r\n },\r\n },\r\n xaxis: {\r\n categories: ['Jan', 'Feb', 'Mar', 'Apr', 'May', 'Jun', 'Jul', 'Aug', 'Sep'],\r\n }\r\n },\r\n\r\n\r\n };\r\n }\r\n const barOptoins = () => {\r\n\r\n return {\r\n series: [{\r\n data: [44, 55, 41, 64, 22, 43, 21]\r\n }, {\r\n data: [53, 32, 33, 52, 13, 44, 32]\r\n }],\r\n options: {\r\n chart: {\r\n type: 'bar',\r\n height: 430\r\n },\r\n plotOptions: {\r\n bar: {\r\n horizontal: true,\r\n dataLabels: {\r\n position: 'top',\r\n },\r\n }\r\n },\r\n dataLabels: {\r\n enabled: true,\r\n offsetX: -6,\r\n style: {\r\n fontSize: '12px',\r\n colors: ['#fff']\r\n }\r\n },\r\n stroke: {\r\n show: true,\r\n width: 1,\r\n colors: ['#fff']\r\n },\r\n tooltip: {\r\n shared: true,\r\n intersect: false\r\n },\r\n xaxis: {\r\n categories: [2001, 2002, 2003, 2004, 2005, 2006, 2007],\r\n },\r\n },\r\n\r\n\r\n };\r\n }\r\n const pieOptoins = (): ApexChartArgs => {\r\n\r\n return {\r\n\r\n series: [44, 55, 13, 43, 22],\r\n options: {\r\n chart: {\r\n type: 'pie',\r\n },\r\n labels: ['Team A', 'Team B', 'Team C', 'Team D', 'Team E'],\r\n \r\n },\r\n \r\n\r\n\r\n };\r\n }\r\n const donutOptoins = (): ApexChartArgs => {\r\n\r\n return {\r\n\r\n series: [44, 55, 13, 33],\r\n options: {\r\n chart: {\r\n width: 380,\r\n type: 'donut',\r\n },\r\n dataLabels: {\r\n enabled: false\r\n },\r\n responsive: [{\r\n breakpoint: 480,\r\n options: {\r\n chart: {\r\n width: 200\r\n },\r\n legend: {\r\n show: false\r\n }\r\n }\r\n }],\r\n legend: {\r\n position: 'right',\r\n offsetY: 0,\r\n height: 230,\r\n }\r\n },\r\n\r\n\r\n };\r\n }\r\n const getChartOptions = () => {\r\n switch (props.widget?.TypeCode) {\r\n case 'bar':\r\n return barOptoins();\r\n break;\r\n case 'line':\r\n return lineOptoins();\r\n break;\r\n case 'pie':\r\n return pieOptoins();\r\n break;\r\n case 'donut':\r\n return donutOptoins();\r\n break;\r\n default:\r\n break;\r\n }\r\n return barOptoins();\r\n };\r\n const args = getChartOptions();\r\n return (\r\n <ReactApexChart \r\n options={args?.options }\r\n series={args?.series}\r\n type={props.widget?.TypeCode}\r\n height={\"100%\"}\r\n width={\"100%\"}\r\n />\r\n )\r\n}\r\nexport type ApexChartArgs = {\r\n options: any;\r\n series: any;\r\n}\r\n\r\nexport default ApexChart;\r\n\r\n","import { stat } from \"fs\";\r\nimport { Button } from \"primereact/button\";\r\nimport { OverlayPanel } from \"primereact/overlaypanel\";\r\nimport React, { useRef, useState,useEffect } from \"react\";\r\nimport { ReactWidgetPM } from \"../../types/widget\";\r\nimport ApexChart from \"./ChartsComponents/ApexChart\";\r\nimport AreaChartComponent from \"./ChartsComponents/AreaChartComponent\";\r\nimport BarChartComponent from \"./ChartsComponents/BarChartComponent\";\r\nimport CandleChartComponent from \"./ChartsComponents/CandleChartComponent\";\r\nimport ColumnChartComponent from \"./ChartsComponents/ColumnChartComponent\";\r\nimport MixedChartComponent from \"./ChartsComponents/MixedChartComponent\";\r\nimport PieChartComponent from \"./ChartsComponents/PieChartComponent\";\r\nimport TimelineChartComponent from \"./ChartsComponents/TimelineChartComponent\";\r\n\r\n\r\ntype WidgetCardProps = {\r\n editBtnClicked(widget: any):any;\r\n deleteBtnClicked(i: any):any;\r\n widget: ReactWidgetPM | null;\r\n el: any;\r\n dateFilter: any;\r\n}\r\n\r\n\r\nconst WidgetCard = (props: WidgetCardProps, state: any) => {\r\n const moreBtnToggle = useRef<OverlayPanel>(null);\r\n const [loading,setLoading] = useState(true);\r\n useEffect(()=>{\r\n setTimeout(function () {\r\n setLoading(false);\r\n },200);\r\n },[])\r\n\r\n const widgetComponents: any[] = [\r\n { type: \"Bar\", component: BarChartComponent },\r\n { type: \"Column\", component: ColumnChartComponent },\r\n { type: \"Pie\", component: PieChartComponent },\r\n { type: \"Mixed\", component: MixedChartComponent },\r\n { type: \"Timeline\", component: TimelineChartComponent },\r\n { type: \"Candle\", component: CandleChartComponent },\r\n { type: \"Area\", component: AreaChartComponent },\r\n ];\r\n return (\r\n <div className=\"panel\" key={props.el.i}>\r\n <header>\r\n <h1>{props.widget?.Title || \"not set\"}</h1>\r\n <Button\r\n icon=\"pi pi-ellipsis-v\"\r\n className=\"p-button-lg p-button-rounded p-button-text\"\r\n onClick={(e) => moreBtnToggle.current?.toggle(e)}\r\n />\r\n\r\n <OverlayPanel ref={moreBtnToggle} className=\"buttons-overlay\">\r\n <div className=\"buttons-list\">\r\n <div onClick={() => props.editBtnClicked(props.widget)} > Edit </div>\r\n <div onClick={() => props.deleteBtnClicked(props.widget?.key)} >Remove</div>\r\n </div>\r\n </OverlayPanel>\r\n </header>\r\n\r\n <div className=\"dl-dashboard-widget\">\r\n {loading ? null : <ApexChart widget={props.widget} />}\r\n </div>\r\n </div>\r\n );\r\n};\r\n\r\nexport default WidgetCard;\r\n","\r\n\r\nimport { WidthProvider, Responsive, Layout, Layouts } from \"react-grid-layout\";\r\n\r\nimport React, { createRef, useEffect, useRef, useState } from \"react\";\r\nimport { Button } from \"primereact/button\";\r\nimport _, { find } from \"lodash\";\r\nimport { Ripple } from \"primereact/ripple\";\r\nimport { OverlayPanel } from \"primereact/overlaypanel\";\r\nimport { Dropdown } from \"primereact/dropdown\";\r\n\r\n\r\nimport ColumnChartComponent from \"./ChartsComponents/ColumnChartComponent\";\r\nimport PieChartComponent from \"./ChartsComponents/PieChartComponent\";\r\nimport MixedChartComponent from \"./ChartsComponents/MixedChartComponent\";\r\nimport AreaChartComponent from \"./ChartsComponents/AreaChartComponent\";\r\nimport TimelineChartComponent from \"./ChartsComponents/TimelineChartComponent\";\r\nimport CandleChartComponent from \"./ChartsComponents/CandleChartComponent\";\r\nimport BarChartComponent from \"./ChartsComponents/BarChartComponent\";\r\nimport { WidgetComponent } from \"../../types/WidgetComponent\";\r\nimport { ReactWidgetPM } from \"../../types/widget\";\r\nimport WidgetCard from \"./WidgetCard\";\r\nimport { TRUE } from \"sass\";\r\n\r\nconst ResponsiveReactGridLayout = WidthProvider(Responsive);\r\nconst newWidgetWidth = 3;\r\n\r\ntype DashboardDesignerProps = {\r\n dashboardLayouts: { lg: ReactWidgetPM[] },\r\n openEditWidget: (widget: ReactWidgetPM) => void\r\n onLayoutChange: (layouts: Layouts) => void\r\n};\r\nconst DashboardDesigner = (props: DashboardDesignerProps) => {\r\n const createLayout = (): Layouts => {\r\n var layout = { lg: props.dashboardLayouts.lg.map(w => w.Layout as Layout) };\r\n return layout;\r\n }\r\n\r\n const array12 = Array.from({ length: 12 }).fill(null);\r\n const minimumPlaceholderRowsCount = 12;\r\n const layouts = useRef<Layouts>(createLayout() || { lg: [] });\r\n const [placeholderRowsArray, setplaceholderRowsArray] = useState(Array.from({ length: minimumPlaceholderRowsCount }).fill(null));\r\n const [firstChange, setFirstChange] = useState(true);\r\n const [dateFilter, setDateFilter] = useState<Date | Date[] | undefined>(undefined);\r\n const [displayDialog, setDisplayDialog] = useState(false);\r\n const [dashboardTitle, setDashboardTitle] = useState(\"\");\r\n const [widgets, setWidgets] = useState<{ lg: ReactWidgetPM[] }>({ lg: [] });\r\n const [placeholderRows, setPlaceholderRows] = useState(minimumPlaceholderRowsCount);\r\n\r\n\r\n useEffect(() => {\r\n setFirstChange(true);\r\n console.log('useEffect setLayouts')\r\n layouts.current = createLayout();\r\n setWidgets(props.dashboardLayouts);\r\n }, [props.dashboardLayouts]);\r\n\r\n\r\n\r\n function reset() {\r\n window.localStorage.clear();\r\n window.location.reload();\r\n }\r\n\r\n function onLayoutChange(layout: any, changedLayouts: Layouts) {\r\n console.log(layout, layouts);\r\n if(firstChange){\r\n setFirstChange(false);\r\n return;\r\n }\r\n layouts.current = changedLayouts;\r\n UpdatePlaceholderDimensions();\r\n props.onLayoutChange(changedLayouts)\r\n }\r\n\r\n function deletePanel(id) {\r\n console.log('deletePanel(id)', id)\r\n var newLayouts = { lg: layouts.current.lg.filter(e => e.i != id) }\r\n layouts.current = newLayouts;\r\n var newWidgets = { lg: widgets.lg.filter(e => e.key != id) }\r\n setWidgets(newWidgets);\r\n props.onLayoutChange(newLayouts)\r\n };\r\n\r\n function editWidget(widget: ReactWidgetPM) {\r\n props.openEditWidget(widget);\r\n };\r\n\r\n\r\n function UpdatePlaceholderDimensions() {\r\n\r\n var gridLayout = document.getElementsByClassName('react-grid-layout')\r\n if (!gridLayout)\r\n return;\r\n const gridElementHeight = gridLayout[0]?.clientHeight;\r\n\r\n let newPlaceholderRows = Math.floor(gridElementHeight / layoutGridProps.rowHeight);\r\n newPlaceholderRows = newPlaceholderRows < minimumPlaceholderRowsCount ? minimumPlaceholderRowsCount : newPlaceholderRows;\r\n setPlaceholderRows(newPlaceholderRows)\r\n setplaceholderRowsArray(Array.from({ length: newPlaceholderRows }).fill(null));\r\n }\r\n return (<div className=\"dl-full-hight\">\r\n <div className=\"dl-box\">\r\n {/* <div className=\"dl-row dl-header\">\r\n {renderPageHeader()}\r\n </div> */}\r\n <div className=\"dl-row dl-content\">\r\n <div className=\"dl-grid-container\">\r\n {/* {renderGridWidgetsPlaceholder()} */}\r\n <div className=\"dl-grid dl-grid--bordered\">\r\n {placeholderRowsArray.map((e, i) =>\r\n array12.map((e, i) => (\r\n <div key={i}\r\n style={{\r\n height: layoutGridProps.rowHeight,\r\n }}\r\n ></div>\r\n ))\r\n )}\r\n </div>\r\n\r\n\r\n <ResponsiveReactGridLayout\r\n {...layoutGridProps}\r\n layouts={layouts.current}\r\n compactType=\"vertical\"\r\n\r\n onWidthChange={() => UpdatePlaceholderDimensions()}\r\n onLayoutChange={(layout, layouts) =>\r\n onLayoutChange(layout, layouts)\r\n }\r\n >\r\n {widgets.lg.map((widget) =>\r\n\r\n <div key={widget.Layout?.i}>\r\n <WidgetCard\r\n key={widget.Layout?.i}\r\n widget={widget}\r\n el={widget}\r\n dateFilter={dateFilter}\r\n editBtnClicked={editWidget}\r\n deleteBtnClicked={deletePanel}\r\n />\r\n </div>\r\n )}\r\n </ResponsiveReactGridLayout>\r\n </div>\r\n\r\n </div>\r\n {/* <div className=\"dl-row dl-footer\">\r\n <p><b>footer</b> (fixed height)</p>\r\n </div> */}\r\n </div>\r\n {/* {renderNewWidgetDialog()} */}\r\n\r\n\r\n\r\n\r\n\r\n </div>);\r\n\r\n}\r\n\r\n\r\nexport const layoutGridProps = {\r\n rowHeight: 50,\r\n className: \"layout\",\r\n cols: { lg: 12, md: 6, sm: 2, xs: 1, xxs: 1 },\r\n useCSSTransforms: true,\r\n}\r\n\r\n\r\n\r\n\r\nexport const WidgetTypes = [\r\n { Name: \"Filter\", Disabled: true },\r\n { Name: \"Chart\", Disabled: false },\r\n { Name: \"Data Table\", Disabled: true },\r\n { Name: \"Pivot Table\", Disabled: true },\r\n { Name: \"KPI\", Disabled: true },\r\n { Name: \"Gauge\", Disabled: true },\r\n];\r\nexport const widgetComponents = [\r\n { type: \"Bar\", component: BarChartComponent },\r\n { type: \"Column\", component: ColumnChartComponent },\r\n { type: \"Pie\", component: PieChartComponent },\r\n { type: \"Mixed\", component: MixedChartComponent },\r\n { type: \"Timeline\", component: TimelineChartComponent },\r\n { type: \"Candle\", component: CandleChartComponent },\r\n { type: \"Area\", component: AreaChartComponent },\r\n];\r\n\r\n\r\nexport default DashboardDesigner;\r\n","import axios from \"axios\";\r\nimport { ApiQueryFilters } from \"../common/data-contracts/ApiQueryFilter\";\r\nimport { APIResult } from \"../types/APIResult\";\r\nimport { Tools } from './tools';\r\n\r\n\r\nexport class ApiServices{ \r\n private _apiUrl: string;\r\n constructor(){\r\n this._apiUrl = Tools.GetLogitudeURL() ;\r\n }\r\n getByFilters<T>(api,filters: ApiQueryFilters) {\r\n \r\n let token: string = this.getTokenFromStorage();\r\n\t\tvar apiURL = `${this._apiUrl}${api}`;\r\n\t\tapiURL = this.ConcatFiltersToURL(filters, apiURL);\r\n\r\n return axios.get<APIResult<T>>(apiURL, { headers: { 'Content-Type': 'application/json', 'Token': token } });\r\n }\r\n get<T>(api) {\r\n \r\n let token: string = this.getTokenFromStorage();\r\n\t\tvar apiURL = `${this._apiUrl}${api}`;\r\n return axios.get<T>(apiURL, { headers: { 'Content-Type': 'application/json', 'Token': token } });\r\n }\r\n post<T>(api,date:T){\r\n let token: string = this.getTokenFromStorage();\r\n\t\tvar apiURL = `${this._apiUrl}${api}`;\r\n return axios.post<T>(apiURL,date, { headers: { 'Content-Type': 'application/json', 'Token': token } });\r\n }\r\n\r\n getTokenFromStorage(){\r\n return window.localStorage.getItem(\"token\") || '';\r\n }\r\n private ConcatFiltersToURL(filters: ApiQueryFilters, urlparameters: string)\r\n {\r\n var mykeys = Object.keys(filters);\r\n var addtionalFiltersValues: string | null = null;\r\n\r\n for (var i in mykeys) {\r\n var propName = mykeys[i];\r\n var propValue = filters[propName];\r\n var ignoreFilter = ((propName.indexOf(\"Operator\") > 0 && propValue == \"Equals\") || propName == \"AdditionalFilters\");\r\n\r\n if (urlparameters != \"?\") {\r\n urlparameters = urlparameters.concat('&');\r\n }\r\n\r\n if (!ignoreFilter) {\r\n propValue = propValue ? encodeURIComponent(propValue) : '';\r\n urlparameters = urlparameters.concat(propName.concat('=').concat(propValue));\r\n }\r\n\r\n if (propName == \"AdditionalFilters\" && propValue.length > 0) {\r\n addtionalFiltersValues = JSON.stringify(propValue);\r\n }\r\n }\r\n\r\n if (addtionalFiltersValues) {\r\n urlparameters = urlparameters.concat(\"&AdditionalFilters=\").concat(addtionalFiltersValues);\r\n }\r\n return urlparameters;\r\n }\r\n}","import axios from \"axios\";\r\nimport { ApiQueryFilters } from \"../common/data-contracts/ApiQueryFilter\";\r\nimport { ReactDashboardPM } from \"../types/Dashboard\";\r\nimport { ApiServices } from \"./ApiServices\";\r\nimport { Tools } from './tools';\r\n\r\n\r\nexport class DashBoardService{ \r\n _ApiServices:ApiServices;\r\n tableName = 'DashBoard';\r\n constructor(){\r\n this._ApiServices = new ApiServices();\r\n }\r\n \r\n\r\n getDataByFilters(filters: ApiQueryFilters) {\r\n return this._ApiServices.getByFilters<ReactDashboardPM>(`/api/${this.tableName}Views/getbyfilters?`,filters);\r\n }\r\n\r\n add(data:ReactDashboardPM){\r\n return this._ApiServices.post(`/api/DashBoards`,data);\r\n }\r\n \r\n}","import axios from \"axios\";\r\nimport { ApiQueryFilters } from \"../common/data-contracts/ApiQueryFilter\";\r\nimport { ReactDashboardPM } from \"../types/Dashboard\";\r\nimport { WidgetType } from \"../types/WidgetType\";\r\nimport { ApiServices } from \"./ApiServices\";\r\nimport { Tools } from './tools';\r\n\r\n\r\nexport class WidgetTypeListService{ \r\n _ApiServices:ApiServices;\r\n\r\n constructor(){\r\n this._ApiServices = new ApiServices();\r\n }\r\n \r\n\r\n getDataByFilters(filters: ApiQueryFilters) {\r\n return this._ApiServices.getByFilters<WidgetType>(`/api/WidgetTypeViews/getbyfilters?`,filters);\r\n }\r\n\r\n getAll() {\r\n return this._ApiServices.get<WidgetType[]>(`/api/WidgetTypeViews/getall`);\r\n }\r\n\r\n \r\n}","export function deepClone (obj){\r\n return JSON.parse(JSON.stringify(obj))\r\n}","import * as React from 'react'\r\nimport { Card } from 'primereact/card';\r\nimport { Button } from \"primereact/button\";\r\nimport DashboardDesigner, { layoutGridProps } from './features/Dashboard/DashboardDesigner'\r\nimport \"./styles.module.css\"\r\nimport { Dropdown } from 'primereact/dropdown';\r\nimport { createRef, useEffect, useRef, useState } from \"react\";\r\nimport { DashBoardService } from './services/DashBoardService';\r\nimport { ApiQueryFilters } from './common/data-contracts/ApiQueryFilter';\r\nimport { ReactDashboardPM } from './types/Dashboard';\r\nimport { Dialog } from 'primereact/dialog';\r\nimport DashboardDialogComponent from './features/Dashboard/dashboard-dialog/dashboard-dialog-component';\r\nimport { Session } from './services/session';\r\nimport { WidgetTypeListService } from './services/WidgetTypeListService';\r\nimport { WidgetType } from './types/WidgetType';\r\nimport { ReactWidgetPM } from './types/widget';\r\nimport { OverlayPanel } from 'primereact/overlaypanel';\r\nimport { Ripple } from 'primereact/ripple';\r\nimport { DashboardDataBinding } from './types/DashboardDataBinding';\r\nimport { Layout, Layouts } from 'react-grid-layout';\r\nimport { v4 as uuidv4 } from 'uuid';\r\nimport { deepClone } from './services/clone';\r\n\r\ntype DashboardProps = {\r\n token: string,\r\n tenant: number,\r\n userId: string,\r\n dataBinding: DashboardDataBinding,\r\n openAddEditWidget: (widget: ReactWidgetPM | undefined) => void,\r\n openAddEditDashboard: (dashboard: ReactDashboardPM | undefined) => void,\r\n onChangeDashboard: (dashboard: ReactDashboardPM | undefined) => void,\r\n onSaveDashboard: (dashboard: ReactDashboardPM | undefined) => void,\r\n};\r\nconst Dashboard = (props: DashboardProps) => {\r\n const newWidgetWidth = 3;\r\n const newWidgetHeight = 5;\r\n\r\n const [dashbords, setDashbords] = useState<ReactDashboardPM[]>([]);\r\n const [currentDashbord, setCurrentDashbord] = useState<ReactDashboardPM | undefined>(undefined);\r\n const [beforEditDashbord, setBeforEditDashbord] = useState<ReactDashboardPM | undefined>(undefined);\r\n const [hasChanges, setHasChanges] = useState(false);\r\n const [isInEditMode, setIsInEditMode] = useState<boolean>(false);\r\n const [WidgetTypes, setWidgetTypes] = useState<WidgetType[]>();\r\n const [layouts, setLayouts] = useState<{ lg: any[] }>({ lg: [] });\r\n const [cancelConfirmDialog, setCancelConfirmDialog] = useState(false);\r\n const dashboardMoreButtonToggle = createRef<OverlayPanel>();\r\n const dashboardService = new DashBoardService();\r\n const widgetTypeListService = new WidgetTypeListService();\r\n useEffect(() => {\r\n getWidgetTypes();\r\n\r\n props.dataBinding.onGetDashboard.subscribe(e => {\r\n console.log('onGetDashboard.subscribe', e)\r\n setCurrentDashbord(e);\r\n applyLayouts(e);\r\n })\r\n props.dataBinding.onGetAllDashboards.subscribe(e => {\r\n console.log('onGetAllDashboard.subscribe', e)\r\n\r\n setDashbords(e);\r\n })\r\n\r\n }, [])\r\n\r\n Session.CurrentUserId = props.userId;\r\n Session.Tenant = props.tenant;\r\n Session.Token = props.token;\r\n if (props?.token?.length > 0)\r\n localStorage.setItem(\"token\", props?.token);\r\n\r\n\r\n const getWidgetTypes = () => {\r\n widgetTypeListService.getAll().then(data => {\r\n setWidgetTypes(data.data);\r\n });\r\n }\r\n const EditDashBoard = () => {\r\n props.openAddEditDashboard(currentDashbord);\r\n dashboardMoreButtonToggle?.current?.hide();\r\n\r\n }\r\n const addWidget = (widgetCode) => {\r\n var position = EvaluateNewWidgetPosition();\r\n props.openAddEditWidget({ TypeCode: widgetCode, StartPotistion: `${position.x},${position.y}`, EndPosition: `${position.w},${position.h}` } as ReactWidgetPM);\r\n\r\n }\r\n const EvaluateNewWidgetPosition = () => {\r\n let widgetYPosition = 0;\r\n let widgetXPosition = 0;\r\n let layout: { x: number, y: number, w: number }[] = layouts[\"lg\"].map(e => e.Layout);\r\n const maxY = layout.reduce((max, widget) => {\r\n if (widget.y > max) max = widget.y;\r\n return max;\r\n }, 0);\r\n\r\n for (let y = 0; y <= maxY; y++) {\r\n const widgetsRow = layout.filter(d => d.y == y);\r\n const lastWidgetStartXPosition = Math.max.apply(Math, widgetsRow.map(a => a.x));\r\n const lastWidget: any = widgetsRow.find(a => a.x == lastWidgetStartXPosition);\r\n if (lastWidget) {\r\n const lastWidgetEndXPosition = lastWidgetStartXPosition + lastWidget.w;\r\n const availableHorizontalSlots = layoutGridProps.cols.lg - lastWidgetEndXPosition;\r\n if (availableHorizontalSlots >= newWidgetWidth) {\r\n widgetYPosition = y;\r\n widgetXPosition = lastWidgetEndXPosition;\r\n return { x: widgetXPosition, y: widgetYPosition, w: newWidgetWidth, h: newWidgetHeight };\r\n\r\n } else {\r\n widgetYPosition = y + 1;\r\n }\r\n } else {\r\n widgetYPosition = y + 1;\r\n }\r\n }\r\n\r\n return { x: widgetXPosition, y: widgetYPosition, w: newWidgetWidth, h: newWidgetHeight };\r\n }\r\n const editDesign = () => {\r\n setIsInEditMode(true)\r\n dashboardMoreButtonToggle?.current?.hide();\r\n\r\n setBeforEditDashbord(deepClone(currentDashbord));\r\n }\r\n const save = () => {\r\n setIsInEditMode(false)\r\n console.log('onSaveDashboard > ', currentDashbord)\r\n props.onSaveDashboard(currentDashbord);\r\n onHide();\r\n setHasChanges(false);\r\n }\r\n\r\n const cancelSave = () => {\r\n if (!hasChanges) {\r\n setIsInEditMode(false)\r\n setHasChanges(false)\r\n } else {\r\n setCancelConfirmDialog(true);\r\n }\r\n\r\n\r\n }\r\n\r\n const dontSave = () => {\r\n setHasChanges(false)\r\n setIsInEditMode(false)\r\n props.dataBinding.onGetDashboard.next(beforEditDashbord);\r\n setCancelConfirmDialog(false);\r\n }\r\n const changeDashboard = (event) => {\r\n if (event.value == currentDashbord?.Id)\r\n return;\r\n var dasboard = dashbords.find(e => e.Id == event.value);\r\n\r\n props.onChangeDashboard(dasboard);\r\n props.dataBinding.onGetDashboard.next(dasboard);\r\n\r\n }\r\n\r\n const applyLayouts = (dashbord: ReactDashboardPM | undefined) => {\r\n if ((!dashbord?.Widgets))\r\n return;\r\n var layout: { lg: ReactWidgetPM[] } = { lg: [] };\r\n dashbord?.Widgets.map(widget => {\r\n if (widget.Id && widget.Id.length > 0)\r\n widget.key = widget.Id;\r\n else\r\n widget.key = uuidv4();\r\n widget.Layout = {\r\n minH: 5,\r\n minW: 3,\r\n i: widget.key,\r\n w: +widget.EndPosition.split(',')[0],\r\n h: +widget.EndPosition.split(',')[1],\r\n x: +widget.StartPotistion.split(',')[0],\r\n y: +widget.StartPotistion.split(',')[1],\r\n }\r\n layout.lg.push(widget\r\n\r\n )\r\n });\r\n console.log('setLayouts -- > ', layout)\r\n setLayouts(layout);\r\n\r\n }\r\n const updateWidgets = (layouts: Layouts) => {\r\n console.log('updateWidgets = (layouts:Layouts', layouts)\r\n var layoutsDic: { [key: string]: Layout } = {};\r\n Object.keys(layouts).forEach(sizeType => {\r\n if (layouts[sizeType].length > 0) {\r\n layouts[sizeType].map(layout => {\r\n layoutsDic[layout.i] = layout;\r\n })\r\n return;\r\n }\r\n })\r\n var widgets: ReactWidgetPM[] = [];\r\n currentDashbord?.Widgets.forEach(widget => {\r\n if (layoutsDic[widget.key]) {\r\n widget.StartPotistion = `${layoutsDic[widget.key].x},${layoutsDic[widget.key].y}`;\r\n widget.EndPosition = `${layoutsDic[widget.key].w},${layoutsDic[widget.key].h}`;\r\n widgets.push(widget)\r\n }\r\n\r\n });\r\n if (currentDashbord) {\r\n currentDashbord.Widgets = widgets;\r\n }\r\n console.log('after update widget', currentDashbord)\r\n setHasChanges(true);\r\n }\r\n\r\n const renderCancelConfirmDialogFooter = () => {\r\n return (\r\n <div>\r\n <Button label=\"Cancel\" onClick={() => onHide()} className=\"p-button-secondary\" />\r\n <Button label=\"Don't Save\" onClick={() => dontSave()} className=\"p-button-secondary\" />\r\n <Button label=\"Save\" onClick={() => save()} autoFocus className=\"p-button-warning\" />\r\n </div>\r\n );\r\n }\r\n const onHide = () => {\r\n setCancelConfirmDialog(false)\r\n }\r\n return (\r\n <div className='dl-full-hight'>\r\n\r\n <div className='dl-dashboard-header dl-card'>\r\n <div className='dl-flex-row dl-custom-btn'>\r\n <div className='dl-title-1'>{currentDashbord?.Name}</div>\r\n <Button\r\n icon=\"pi pi-ellipsis-v\"\r\n onClick={(e) => dashboardMoreButtonToggle?.current?.toggle(e)}\r\n className=\"p-button p-button-icon-only p-button-rounded p-button-text\"\r\n >\r\n <Ripple />\r\n </Button>\r\n <OverlayPanel ref={dashboardMoreButtonToggle} className=\"buttons-overlay\">\r\n <div className=\"buttons-list\">\r\n <div onClick={() => EditDashBoard()}>Edit</div>\r\n <div onClick={editDesign}>Edit Design</div>\r\n\r\n </div>\r\n </OverlayPanel >\r\n </div>\r\n <div className='dl-flex-row'>\r\n {!isInEditMode ?\r\n <div className='dl-flex-row'>\r\n\r\n\r\n <div style={{ width: \"161px\" }}>\r\n <Dropdown\r\n value={[]}\r\n options={dashbords}\r\n optionValue=\"Id\"\r\n optionLabel=\"Name\"\r\n onChange={changeDashboard}\r\n placeholder=\"Choose Dashboard\"\r\n optionDisabled={(option) => {\r\n return option?.Disabled;\r\n }}\r\n scrollHeight=\"300px\"\r\n style={{ width: '100%' }}\r\n />\r\n </div>\r\n <Button icon=\"pi pi-plus\" onClick={() => props.openAddEditDashboard(undefined)}\r\n className=\"dl-dashboard-add p-button-rounded p-button-success\" />\r\n </div>\r\n : null}\r\n {/* <DashboardDialogComponent display={displayAddDashboard} onClose={onDashboardDialogClose}></DashboardDialogComponent> */}\r\n\r\n\r\n\r\n {isInEditMode ?\r\n <div className='dl-flex-row'>\r\n\r\n <Button\r\n label=\"Cancel\"\r\n className=\"p-button-secondary dl-m-r-s\"\r\n onClick={cancelSave}\r\n />\r\n\r\n <Dialog header=\"Unsaved Changes\" visible={cancelConfirmDialog} style={{ width: '50vw' }} footer={renderCancelConfirmDialogFooter()} onHide={onHide}>\r\n <p>This Dashboard has unsaved changes do you want to save it?</p>\r\n </Dialog>\r\n\r\n <Button\r\n label=\"Save\"\r\n form=\"frm\"\r\n // icon=\"pi pi-check\"\r\n onClick={save}\r\n autoFocus\r\n className={hasChanges ? \"p-button-warning\" : \"p-button-secondary\"}\r\n />\r\n\r\n <div style={{ width: '192px', marginLeft: '15px' }}>\r\n <Dropdown\r\n options={WidgetTypes}\r\n optionValue=\"Code\"\r\n optionLabel=\"Name\"\r\n onChange={(e) => addWidget(e.value)}\r\n placeholder=\"Add Component\"\r\n optionDisabled={(option) => {\r\n return option?.Disabled;\r\n }}\r\n scrollHeight=\"300px\"\r\n />\r\n </div>\r\n </div>\r\n : null}\r\n </div>\r\n\r\n\r\n </div>\r\n\r\n <div className='dl-dashboard-body'>\r\n <DashboardDesigner onLayoutChange={updateWidgets} dashboardLayouts={layouts} openEditWidget={(widget: ReactWidgetPM) => props.openAddEditWidget(widget)} ></DashboardDesigner>\r\n </div>\r\n </div >\r\n\r\n )\r\n}\r\nexport default Dashboard;\r\n\r\n"],"names":["Tools","GetLogitudeURL","logitude_url","location","href","replace","indexOf","urlArr","split","url","substring","lastIndexOf","length","ApexChart","props","lineOptoins","series","name","data","options","chart","height","type","zoom","enabled","dataLabels","stroke","curve","title","text","align","grid","row","colors","opacity","xaxis","categories","barOptoins","plotOptions","bar","horizontal","position","offsetX","style","fontSize","show","width","tooltip","shared","intersect","pieOptoins","labels","donutOptoins","responsive","breakpoint","legend","offsetY","getChartOptions","widget","TypeCode","args","React","ReactApexChart","WidgetCard","state","moreBtnToggle","useRef","useState","loading","setLoading","useEffect","setTimeout","className","key","el","i","Title","Button","icon","onClick","e","current","toggle","OverlayPanel","ref","editBtnClicked","deleteBtnClicked","ResponsiveReactGridLayout","WidthProvider","Responsive","DashboardDesigner","createLayout","layout","lg","dashboardLayouts","map","w","Layout","array12","Array","from","fill","minimumPlaceholderRowsCount","layouts","placeholderRowsArray","setplaceholderRowsArray","firstChange","setFirstChange","undefined","dateFilter","widgets","setWidgets","placeholderRows","setPlaceholderRows","console","log","onLayoutChange","changedLayouts","UpdatePlaceholderDimensions","deletePanel","id","newLayouts","filter","newWidgets","editWidget","openEditWidget","gridLayout","document","getElementsByClassName","gridElementHeight","clientHeight","newPlaceholderRows","Math","floor","layoutGridProps","rowHeight","compactType","onWidthChange","cols","md","sm","xs","xxs","useCSSTransforms","ApiServices","_apiUrl","getByFilters","api","filters","token","getTokenFromStorage","apiURL","ConcatFiltersToURL","axios","get","headers","post","date","window","localStorage","getItem","urlparameters","mykeys","Object","keys","addtionalFiltersValues","propName","propValue","ignoreFilter","concat","encodeURIComponent","JSON","stringify","DashBoardService","_ApiServices","getDataByFilters","tableName","add","WidgetTypeListService","getAll","deepClone","obj","parse","Dashboard","newWidgetWidth","newWidgetHeight","dashbords","setDashbords","currentDashbord","setCurrentDashbord","beforEditDashbord","setBeforEditDashbord","hasChanges","setHasChanges","isInEditMode","setIsInEditMode","WidgetTypes","setWidgetTypes","setLayouts","cancelConfirmDialog","setCancelConfirmDialog","dashboardMoreButtonToggle","createRef","dashboardService","widgetTypeListService","getWidgetTypes","dataBinding","onGetDashboard","subscribe","applyLayouts","onGetAllDashboards","setItem","then","EditDashBoard","openAddEditDashboard","hide","addWidget","widgetCode","EvaluateNewWidgetPosition","openAddEditWidget","StartPotistion","x","y","EndPosition","h","widgetYPosition","widgetXPosition","maxY","reduce","max","widgetsRow","d","lastWidgetStartXPosition","apply","a","lastWidget","find","lastWidgetEndXPosition","availableHorizontalSlots","editDesign","save","onSaveDashboard","onHide","cancelSave","dontSave","next","changeDashboard","event","value","Id","dasboard","onChangeDashboard","dashbord","Widgets","uuidv4","minH","minW","push","updateWidgets","layoutsDic","forEach","sizeType","renderCancelConfirmDialogFooter","label","autoFocus","Name","Ripple","Dropdown","optionValue","optionLabel","onChange","placeholder","optionDisabled","option","Disabled","scrollHeight","Dialog","header","visible","footer","form","marginLeft"],"mappings":"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"}
1
+ {"version":3,"file":"index.modern.js","sources":["../src/services/tools.ts","../src/features/Dashboard/ChartsComponents/ApexChart.tsx","../src/features/Dashboard/WidgetCard.tsx","../src/features/Dashboard/DashboardDesigner.tsx","../src/services/ApiServices.ts","../src/services/DashBoardService.ts","../src/services/WidgetTypeListService.ts","../src/services/clone.ts","../src/index.tsx"],"sourcesContent":["export class Tools{\r\n public static GetLogitudeURL() {\r\n\r\n var logitude_url = location.href.replace('index.html', '');\r\n\r\n if (location.href.indexOf('localhost') > -1) {\r\n logitude_url = 'http://localhost:9996';//localhost:9996//';//\r\n }\r\n\r\n else {\r\n var urlArr = location.href.split(\"/index.html\");\r\n var url = urlArr[0];\r\n url = url.replace(url.substring(url.lastIndexOf('/'), url.length), \"\");\r\n logitude_url = url ;\r\n }\r\n\r\n return logitude_url;\r\n }\r\n}","import React, { useEffect, useRef } from \"react\";\r\nimport ReactApexChart from \"react-apexcharts\";\r\nimport { ReactWidgetPM } from \"../../../types/widget\";\r\n\r\ntype ApexChartProps = {\r\n widget: ReactWidgetPM|null\r\n};\r\nconst ApexChart = (props: ApexChartProps) => {\r\n\r\n const lineOptoins = () => {\r\n\r\n return {\r\n\r\n series: [{\r\n name: \"Desktops\",\r\n data: [10, 41, 35, 51, 49, 62, 69, 91, 148]\r\n }],\r\n options: {\r\n chart: {\r\n height: 350,\r\n type: 'line',\r\n zoom: {\r\n enabled: false\r\n }\r\n },\r\n dataLabels: {\r\n enabled: false\r\n },\r\n stroke: {\r\n curve: 'straight'\r\n },\r\n title: {\r\n text: 'Product Trends by Month',\r\n align: 'left'\r\n },\r\n grid: {\r\n row: {\r\n colors: ['#f3f3f3', 'transparent'], // takes an array which will be repeated on columns\r\n opacity: 0.5\r\n },\r\n },\r\n xaxis: {\r\n categories: ['Jan', 'Feb', 'Mar', 'Apr', 'May', 'Jun', 'Jul', 'Aug', 'Sep'],\r\n }\r\n },\r\n\r\n\r\n };\r\n }\r\n const barOptoins = () => {\r\n\r\n return {\r\n series: [{\r\n data: [44, 55, 41, 64, 22, 43, 21]\r\n }, {\r\n data: [53, 32, 33, 52, 13, 44, 32]\r\n }],\r\n options: {\r\n chart: {\r\n type: 'bar',\r\n height: 430\r\n },\r\n plotOptions: {\r\n bar: {\r\n horizontal: true,\r\n dataLabels: {\r\n position: 'top',\r\n },\r\n }\r\n },\r\n dataLabels: {\r\n enabled: true,\r\n offsetX: -6,\r\n style: {\r\n fontSize: '12px',\r\n colors: ['#fff']\r\n }\r\n },\r\n stroke: {\r\n show: true,\r\n width: 1,\r\n colors: ['#fff']\r\n },\r\n tooltip: {\r\n shared: true,\r\n intersect: false\r\n },\r\n xaxis: {\r\n categories: [2001, 2002, 2003, 2004, 2005, 2006, 2007],\r\n },\r\n },\r\n\r\n\r\n };\r\n }\r\n const pieOptoins = (): ApexChartArgs => {\r\n\r\n return {\r\n\r\n series: [44, 55, 13, 43, 22],\r\n options: {\r\n chart: {\r\n type: 'pie',\r\n },\r\n labels: ['Team A', 'Team B', 'Team C', 'Team D', 'Team E'],\r\n \r\n },\r\n \r\n\r\n\r\n };\r\n }\r\n const donutOptoins = (): ApexChartArgs => {\r\n\r\n return {\r\n\r\n series: [44, 55, 13, 33],\r\n options: {\r\n chart: {\r\n width: 380,\r\n type: 'donut',\r\n },\r\n dataLabels: {\r\n enabled: false\r\n },\r\n responsive: [{\r\n breakpoint: 480,\r\n options: {\r\n chart: {\r\n width: 200\r\n },\r\n legend: {\r\n show: false\r\n }\r\n }\r\n }],\r\n legend: {\r\n position: 'right',\r\n offsetY: 0,\r\n height: 230,\r\n }\r\n },\r\n\r\n\r\n };\r\n }\r\n const getChartOptions = () => {\r\n switch (props.widget?.TypeCode) {\r\n case 'bar':\r\n return barOptoins();\r\n break;\r\n case 'line':\r\n return lineOptoins();\r\n break;\r\n case 'pie':\r\n return pieOptoins();\r\n break;\r\n case 'donut':\r\n return donutOptoins();\r\n break;\r\n default:\r\n break;\r\n }\r\n return barOptoins();\r\n };\r\n const args = getChartOptions();\r\n return (\r\n <ReactApexChart \r\n options={args?.options }\r\n series={args?.series}\r\n type={props.widget?.TypeCode}\r\n height={\"100%\"}\r\n width={\"100%\"}\r\n />\r\n )\r\n}\r\nexport type ApexChartArgs = {\r\n options: any;\r\n series: any;\r\n}\r\n\r\nexport default ApexChart;\r\n\r\n","import { stat } from \"fs\";\r\nimport { Button } from \"primereact/button\";\r\nimport { OverlayPanel } from \"primereact/overlaypanel\";\r\nimport React, { useRef, useState, useEffect } from \"react\";\r\nimport { ReactWidgetPM } from \"../../types/widget\";\r\nimport ApexChart from \"./ChartsComponents/ApexChart\";\r\nimport AreaChartComponent from \"./ChartsComponents/AreaChartComponent\";\r\nimport BarChartComponent from \"./ChartsComponents/BarChartComponent\";\r\nimport CandleChartComponent from \"./ChartsComponents/CandleChartComponent\";\r\nimport ColumnChartComponent from \"./ChartsComponents/ColumnChartComponent\";\r\nimport MixedChartComponent from \"./ChartsComponents/MixedChartComponent\";\r\nimport PieChartComponent from \"./ChartsComponents/PieChartComponent\";\r\nimport TimelineChartComponent from \"./ChartsComponents/TimelineChartComponent\";\r\n\r\n\r\ntype WidgetCardProps = {\r\n editBtnClicked(widget: any): any;\r\n deleteBtnClicked(i: any): any;\r\n widget: ReactWidgetPM | null;\r\n el: any;\r\n dateFilter: any;\r\n isInEditMode: boolean;\r\n}\r\n\r\n\r\nconst WidgetCard = (props: WidgetCardProps, state: any) => {\r\n const moreBtnToggle = useRef<OverlayPanel>(null);\r\n const [loading, setLoading] = useState(true);\r\n useEffect(() => {\r\n setTimeout(function () {\r\n setLoading(false);\r\n }, 200);\r\n }, [])\r\n\r\n const widgetComponents: any[] = [\r\n { type: \"Bar\", component: BarChartComponent },\r\n { type: \"Column\", component: ColumnChartComponent },\r\n { type: \"Pie\", component: PieChartComponent },\r\n { type: \"Mixed\", component: MixedChartComponent },\r\n { type: \"Timeline\", component: TimelineChartComponent },\r\n { type: \"Candle\", component: CandleChartComponent },\r\n { type: \"Area\", component: AreaChartComponent },\r\n ];\r\n return (\r\n <div className=\"panel\" key={props.el.i}>\r\n <header>\r\n <h1>{props.widget?.Title || \"not set\"}</h1>\r\n {\r\n props.isInEditMode ? \r\n <Button\r\n icon=\"pi pi-ellipsis-v\"\r\n className=\"p-button-lg p-button-rounded p-button-text\"\r\n onClick={(e) => moreBtnToggle.current?.toggle(e)}\r\n /> \r\n : null\r\n }\r\n\r\n\r\n <OverlayPanel ref={moreBtnToggle} className=\"buttons-overlay\">\r\n <div className=\"buttons-list\">\r\n <div onClick={() => props.editBtnClicked(props.widget)} > Edit </div>\r\n <div onClick={() => props.deleteBtnClicked(props.widget?.key)} >Remove</div>\r\n </div>\r\n </OverlayPanel>\r\n </header>\r\n\r\n <div className=\"dl-dashboard-widget\">\r\n {loading ? null : <ApexChart widget={props.widget} />}\r\n </div>\r\n </div>\r\n );\r\n};\r\n\r\nexport default WidgetCard;\r\n","\r\n\r\nimport { WidthProvider, Responsive, Layout, Layouts } from \"react-grid-layout\";\r\n\r\nimport React, { createRef, useEffect, useRef, useState } from \"react\";\r\nimport { Button } from \"primereact/button\";\r\nimport _, { find } from \"lodash\";\r\nimport { Ripple } from \"primereact/ripple\";\r\nimport { OverlayPanel } from \"primereact/overlaypanel\";\r\nimport { Dropdown } from \"primereact/dropdown\";\r\n\r\n\r\nimport ColumnChartComponent from \"./ChartsComponents/ColumnChartComponent\";\r\nimport PieChartComponent from \"./ChartsComponents/PieChartComponent\";\r\nimport MixedChartComponent from \"./ChartsComponents/MixedChartComponent\";\r\nimport AreaChartComponent from \"./ChartsComponents/AreaChartComponent\";\r\nimport TimelineChartComponent from \"./ChartsComponents/TimelineChartComponent\";\r\nimport CandleChartComponent from \"./ChartsComponents/CandleChartComponent\";\r\nimport BarChartComponent from \"./ChartsComponents/BarChartComponent\";\r\nimport { WidgetComponent } from \"../../types/WidgetComponent\";\r\nimport { ReactWidgetPM } from \"../../types/widget\";\r\nimport WidgetCard from \"./WidgetCard\";\r\nimport { TRUE } from \"sass\";\r\n\r\nconst ResponsiveReactGridLayout = WidthProvider(Responsive);\r\nconst newWidgetWidth = 3;\r\n\r\ntype DashboardDesignerProps = {\r\n editMode: boolean,\r\n dashboardLayouts: { lg: ReactWidgetPM[] },\r\n openEditWidget: (widget: ReactWidgetPM) => void\r\n onLayoutChange: (layouts: Layouts) => void\r\n};\r\nconst DashboardDesigner = (props: DashboardDesignerProps) => {\r\n\r\n\r\n const array12 = Array.from({ length: 12 }).fill(null);\r\n const minimumPlaceholderRowsCount = 12;\r\n const [layouts, setLayouts] = useState<Layouts>({ lg: [] });\r\n const [placeholderRowsArray, setplaceholderRowsArray] = useState(Array.from({ length: minimumPlaceholderRowsCount }).fill(null));\r\n const [firstChange, setFirstChange] = useState(true);\r\n const [dateFilter, setDateFilter] = useState<Date | Date[] | undefined>(undefined);\r\n const [isInEditMode, setisInEditMode] = useState(false);\r\n const [widgets, setWidgets] = useState<{ lg: ReactWidgetPM[] }>({ lg: [] });\r\n\r\n\r\n useEffect(() => {\r\n setFirstChange(true);\r\n console.log('useEffect setLayouts')\r\n setLayouts({});\r\n setLayouts(createLayout());\r\n setWidgets(props.dashboardLayouts);\r\n }, [props.dashboardLayouts]);\r\n\r\n const createLayout = (): Layouts => {\r\n var layout: any = { lg: [] };\r\n props.dashboardLayouts.lg.map(w => w.Layout as Layout).forEach(e => {\r\n layout.lg.push(e)\r\n })\r\n return layout;\r\n }\r\n useEffect(() => {\r\n setisInEditMode(props.editMode);\r\n }, [props.editMode]);\r\n\r\n\r\n // const applyModeSetting = () => {\r\n // layouts.current.lg.forEach(element => {\r\n // element.isDraggable = props.editMode;\r\n // element.isResizable = props.editMode;\r\n\r\n // });\r\n // }\r\n\r\n function reset() {\r\n window.localStorage.clear();\r\n window.location.reload();\r\n }\r\n\r\n function onLayoutChange(layout: any, changedLayouts: Layouts) {\r\n console.log(layout, layouts);\r\n if (firstChange) {\r\n setFirstChange(false);\r\n return;\r\n }\r\n setLayouts(changedLayouts);\r\n UpdatePlaceholderDimensions();\r\n props.onLayoutChange(changedLayouts)\r\n }\r\n\r\n function deletePanel(id) {\r\n console.log('deletePanel(id)', id)\r\n var newLayouts = { lg: layouts.lg.filter(e => e.i != id) }\r\n\r\n setLayouts(newLayouts);\r\n\r\n var newWidgets = { lg: widgets.lg.filter(e => e.key != id) }\r\n setWidgets(newWidgets);\r\n props.onLayoutChange(newLayouts)\r\n };\r\n\r\n function editWidget(widget: ReactWidgetPM) {\r\n props.openEditWidget(widget);\r\n };\r\n\r\n\r\n function UpdatePlaceholderDimensions() {\r\n console.log('UpdatePlaceholderDimensions', layouts)\r\n var gridLayout = document.getElementsByClassName('react-grid-layout')\r\n if (!gridLayout)\r\n return;\r\n const gridElementHeight = gridLayout[0]?.clientHeight;\r\n\r\n let newPlaceholderRows = Math.floor(gridElementHeight / layoutGridProps.rowHeight);\r\n newPlaceholderRows = newPlaceholderRows < minimumPlaceholderRowsCount ? minimumPlaceholderRowsCount : newPlaceholderRows;\r\n setplaceholderRowsArray(Array.from({ length: newPlaceholderRows }).fill(null));\r\n }\r\n return (<div className=\"dl-full-hight\">\r\n <div className=\"dl-box\">\r\n {/* <div className=\"dl-row dl-header\">\r\n {renderPageHeader()}\r\n </div> */}\r\n <div className=\"dl-row dl-content\">\r\n <div className=\"dl-grid-container\">\r\n <div className=\"dl-grid dl-grid--bordered\">\r\n {props.editMode ? placeholderRowsArray.map((e, i) =>\r\n array12.map((e, i) => (\r\n <div key={i}\r\n style={{\r\n height: layoutGridProps.rowHeight,\r\n }}\r\n ></div>\r\n ))\r\n ) : null}\r\n </div>\r\n\r\n\r\n <ResponsiveReactGridLayout\r\n {...layoutGridProps}\r\n layouts={layouts}\r\n compactType=\"vertical\"\r\n isDraggable={isInEditMode}\r\n isResizable={isInEditMode}\r\n onWidthChange={() => UpdatePlaceholderDimensions()}\r\n onLayoutChange={(layout, layouts) =>\r\n onLayoutChange(layout, layouts)\r\n }\r\n >\r\n {widgets.lg.map((widget) =>\r\n\r\n <div key={widget.Layout?.i}>\r\n <WidgetCard\r\n isInEditMode={isInEditMode}\r\n key={widget.Layout?.i}\r\n widget={widget}\r\n el={widget}\r\n dateFilter={dateFilter}\r\n editBtnClicked={editWidget}\r\n deleteBtnClicked={deletePanel}\r\n />\r\n </div>\r\n )}\r\n </ResponsiveReactGridLayout>\r\n </div>\r\n\r\n </div>\r\n {/* <div className=\"dl-row dl-footer\">\r\n <p><b>footer</b> (fixed height)</p>\r\n </div> */}\r\n </div>\r\n {/* {renderNewWidgetDialog()} */}\r\n\r\n\r\n\r\n\r\n\r\n </div>);\r\n\r\n}\r\n\r\n\r\nexport const layoutGridProps = {\r\n rowHeight: 50,\r\n className: \"layout\",\r\n cols: { lg: 12, md: 6, sm: 2, xs: 1, xxs: 1 },\r\n useCSSTransforms: true,\r\n}\r\n\r\n\r\n\r\n\r\nexport const WidgetTypes = [\r\n { Name: \"Filter\", Disabled: true },\r\n { Name: \"Chart\", Disabled: false },\r\n { Name: \"Data Table\", Disabled: true },\r\n { Name: \"Pivot Table\", Disabled: true },\r\n { Name: \"KPI\", Disabled: true },\r\n { Name: \"Gauge\", Disabled: true },\r\n];\r\nexport const widgetComponents = [\r\n { type: \"Bar\", component: BarChartComponent },\r\n { type: \"Column\", component: ColumnChartComponent },\r\n { type: \"Pie\", component: PieChartComponent },\r\n { type: \"Mixed\", component: MixedChartComponent },\r\n { type: \"Timeline\", component: TimelineChartComponent },\r\n { type: \"Candle\", component: CandleChartComponent },\r\n { type: \"Area\", component: AreaChartComponent },\r\n];\r\n\r\n\r\nexport default DashboardDesigner;\r\n","import axios from \"axios\";\r\nimport { ApiQueryFilters } from \"../common/data-contracts/ApiQueryFilter\";\r\nimport { APIResult } from \"../types/APIResult\";\r\nimport { Tools } from './tools';\r\n\r\n\r\nexport class ApiServices{ \r\n private _apiUrl: string;\r\n constructor(){\r\n this._apiUrl = Tools.GetLogitudeURL() ;\r\n }\r\n getByFilters<T>(api,filters: ApiQueryFilters) {\r\n \r\n let token: string = this.getTokenFromStorage();\r\n\t\tvar apiURL = `${this._apiUrl}${api}`;\r\n\t\tapiURL = this.ConcatFiltersToURL(filters, apiURL);\r\n\r\n return axios.get<APIResult<T>>(apiURL, { headers: { 'Content-Type': 'application/json', 'Token': token } });\r\n }\r\n get<T>(api) {\r\n \r\n let token: string = this.getTokenFromStorage();\r\n\t\tvar apiURL = `${this._apiUrl}${api}`;\r\n return axios.get<T>(apiURL, { headers: { 'Content-Type': 'application/json', 'Token': token } });\r\n }\r\n post<T>(api,date:T){\r\n let token: string = this.getTokenFromStorage();\r\n\t\tvar apiURL = `${this._apiUrl}${api}`;\r\n return axios.post<T>(apiURL,date, { headers: { 'Content-Type': 'application/json', 'Token': token } });\r\n }\r\n\r\n getTokenFromStorage(){\r\n return window.localStorage.getItem(\"token\") || '';\r\n }\r\n private ConcatFiltersToURL(filters: ApiQueryFilters, urlparameters: string)\r\n {\r\n var mykeys = Object.keys(filters);\r\n var addtionalFiltersValues: string | null = null;\r\n\r\n for (var i in mykeys) {\r\n var propName = mykeys[i];\r\n var propValue = filters[propName];\r\n var ignoreFilter = ((propName.indexOf(\"Operator\") > 0 && propValue == \"Equals\") || propName == \"AdditionalFilters\");\r\n\r\n if (urlparameters != \"?\") {\r\n urlparameters = urlparameters.concat('&');\r\n }\r\n\r\n if (!ignoreFilter) {\r\n propValue = propValue ? encodeURIComponent(propValue) : '';\r\n urlparameters = urlparameters.concat(propName.concat('=').concat(propValue));\r\n }\r\n\r\n if (propName == \"AdditionalFilters\" && propValue.length > 0) {\r\n addtionalFiltersValues = JSON.stringify(propValue);\r\n }\r\n }\r\n\r\n if (addtionalFiltersValues) {\r\n urlparameters = urlparameters.concat(\"&AdditionalFilters=\").concat(addtionalFiltersValues);\r\n }\r\n return urlparameters;\r\n }\r\n}","import axios from \"axios\";\r\nimport { ApiQueryFilters } from \"../common/data-contracts/ApiQueryFilter\";\r\nimport { ReactDashboardPM } from \"../types/Dashboard\";\r\nimport { ApiServices } from \"./ApiServices\";\r\nimport { Tools } from './tools';\r\n\r\n\r\nexport class DashBoardService{ \r\n _ApiServices:ApiServices;\r\n tableName = 'DashBoard';\r\n constructor(){\r\n this._ApiServices = new ApiServices();\r\n }\r\n \r\n\r\n getDataByFilters(filters: ApiQueryFilters) {\r\n return this._ApiServices.getByFilters<ReactDashboardPM>(`/api/${this.tableName}Views/getbyfilters?`,filters);\r\n }\r\n\r\n add(data:ReactDashboardPM){\r\n return this._ApiServices.post(`/api/DashBoards`,data);\r\n }\r\n \r\n}","import axios from \"axios\";\r\nimport { ApiQueryFilters } from \"../common/data-contracts/ApiQueryFilter\";\r\nimport { ReactDashboardPM } from \"../types/Dashboard\";\r\nimport { WidgetType } from \"../types/WidgetType\";\r\nimport { ApiServices } from \"./ApiServices\";\r\nimport { Tools } from './tools';\r\n\r\n\r\nexport class WidgetTypeListService{ \r\n _ApiServices:ApiServices;\r\n\r\n constructor(){\r\n this._ApiServices = new ApiServices();\r\n }\r\n \r\n\r\n getDataByFilters(filters: ApiQueryFilters) {\r\n return this._ApiServices.getByFilters<WidgetType>(`/api/WidgetTypeViews/getbyfilters?`,filters);\r\n }\r\n\r\n getAll() {\r\n return this._ApiServices.get<WidgetType[]>(`/api/WidgetTypeViews/getall`);\r\n }\r\n\r\n \r\n}","export function deepClone (obj){\r\n return JSON.parse(JSON.stringify(obj))\r\n}","import * as React from 'react'\r\nimport { Card } from 'primereact/card';\r\nimport { Button } from \"primereact/button\";\r\nimport DashboardDesigner, { layoutGridProps } from './features/Dashboard/DashboardDesigner'\r\nimport \"./styles.module.css\"\r\nimport { Dropdown } from 'primereact/dropdown';\r\nimport { createRef, useEffect, useRef, useState } from \"react\";\r\nimport { DashBoardService } from './services/DashBoardService';\r\nimport { ApiQueryFilters } from './common/data-contracts/ApiQueryFilter';\r\nimport { ReactDashboardPM } from './types/Dashboard';\r\nimport { Dialog } from 'primereact/dialog';\r\nimport DashboardDialogComponent from './features/Dashboard/dashboard-dialog/dashboard-dialog-component';\r\nimport { Session } from './services/session';\r\nimport { WidgetTypeListService } from './services/WidgetTypeListService';\r\nimport { WidgetType } from './types/WidgetType';\r\nimport { ReactWidgetPM } from './types/widget';\r\nimport { OverlayPanel } from 'primereact/overlaypanel';\r\nimport { Ripple } from 'primereact/ripple';\r\nimport { DashboardDataBinding } from './types/DashboardDataBinding';\r\nimport { Layout, Layouts } from 'react-grid-layout';\r\nimport { v4 as uuidv4 } from 'uuid';\r\nimport { deepClone } from './services/clone';\r\n\r\ntype DashboardProps = {\r\n token: string,\r\n tenant: number,\r\n userId: string,\r\n dataBinding: DashboardDataBinding,\r\n openAddEditWidget: (widget: ReactWidgetPM | undefined) => void,\r\n openAddEditDashboard: (dashboard: ReactDashboardPM | undefined) => void,\r\n onChangeDashboard: (dashboard: ReactDashboardPM | undefined) => void,\r\n onSaveDashboard: (dashboard: ReactDashboardPM | undefined) => void,\r\n};\r\nconst Dashboard = (props: DashboardProps) => {\r\n const newWidgetWidth = 3;\r\n const newWidgetHeight = 5;\r\n\r\n const [dashbords, setDashbords] = useState<ReactDashboardPM[]>([]);\r\n const [currentDashbord, setCurrentDashbord] = useState<ReactDashboardPM | undefined>(undefined);\r\n const [beforEditDashbord, setBeforEditDashbord] = useState<ReactDashboardPM | undefined>(undefined);\r\n const [hasChanges, setHasChanges] = useState(false);\r\n const [isInEditMode, setIsInEditMode] = useState<boolean>(false);\r\n const [WidgetTypes, setWidgetTypes] = useState<WidgetType[]>();\r\n const [layouts, setLayouts] = useState<{ lg: ReactWidgetPM[] }>({ lg: [] });\r\n const [cancelConfirmDialog, setCancelConfirmDialog] = useState(false);\r\n const dashboardMoreButtonToggle = createRef<OverlayPanel>();\r\n const dashboardService = new DashBoardService();\r\n const widgetTypeListService = new WidgetTypeListService();\r\n useEffect(() => {\r\n getWidgetTypes();\r\n\r\n props.dataBinding.onGetDashboard.subscribe(e => {\r\n console.log('onGetDashboard.subscribe', e)\r\n setCurrentDashbord(e);\r\n applyLayouts(e);\r\n })\r\n props.dataBinding.onGetAllDashboards.subscribe(e => {\r\n console.log('onGetAllDashboard.subscribe', e)\r\n\r\n setDashbords(e);\r\n })\r\n\r\n }, [])\r\n\r\n Session.CurrentUserId = props.userId;\r\n Session.Tenant = props.tenant;\r\n Session.Token = props.token;\r\n if (props?.token?.length > 0)\r\n localStorage.setItem(\"token\", props?.token);\r\n\r\n\r\n const getWidgetTypes = () => {\r\n widgetTypeListService.getAll().then(data => {\r\n setWidgetTypes(data.data);\r\n });\r\n }\r\n const EditDashBoard = () => {\r\n props.openAddEditDashboard(currentDashbord);\r\n dashboardMoreButtonToggle?.current?.hide();\r\n\r\n }\r\n const addWidget = (widgetCode) => {\r\n var position = EvaluateNewWidgetPosition();\r\n props.openAddEditWidget({ TypeCode: widgetCode, StartPotistion: `${position.x},${position.y}`, EndPosition: `${position.w},${position.h}` } as ReactWidgetPM);\r\n\r\n }\r\n const EvaluateNewWidgetPosition = () => {\r\n let widgetYPosition = 0;\r\n let widgetXPosition = 0;\r\n let layout = layouts[\"lg\"].map(e => e.Layout);\r\n const maxY = layout.reduce((max, widget) => {\r\n if (widget && widget.y > max) max = widget.y;\r\n return max;\r\n }, 0);\r\n\r\n for (let y = 0; y <= maxY; y++) {\r\n const widgetsRow = layout.filter(d => d?.y == y);\r\n const lastWidgetStartXPosition = Math.max.apply(Math, widgetsRow.map(a => a?.x));\r\n const lastWidget: any = widgetsRow.find(a => a?.x == lastWidgetStartXPosition);\r\n if (lastWidget) {\r\n const lastWidgetEndXPosition = lastWidgetStartXPosition + lastWidget.w;\r\n const availableHorizontalSlots = layoutGridProps.cols.lg - lastWidgetEndXPosition;\r\n if (availableHorizontalSlots >= newWidgetWidth) {\r\n widgetYPosition = y;\r\n widgetXPosition = lastWidgetEndXPosition;\r\n return { x: widgetXPosition, y: widgetYPosition, w: newWidgetWidth, h: newWidgetHeight };\r\n\r\n } else {\r\n widgetYPosition = y + 1;\r\n }\r\n } else {\r\n widgetYPosition = y + 1;\r\n }\r\n }\r\n\r\n return { x: widgetXPosition, y: widgetYPosition, w: newWidgetWidth, h: newWidgetHeight };\r\n }\r\n const editLayout = () => {\r\n setIsInEditMode(true)\r\n dashboardMoreButtonToggle?.current?.hide();\r\n\r\n setBeforEditDashbord(deepClone(currentDashbord));\r\n }\r\n const save = () => {\r\n setIsInEditMode(false)\r\n console.log('onSaveDashboard > ', currentDashbord)\r\n props.onSaveDashboard(currentDashbord);\r\n onHide();\r\n setHasChanges(false);\r\n }\r\n\r\n const cancelSave = () => {\r\n if (!hasChanges) {\r\n setIsInEditMode(false);\r\n setHasChanges(false);\r\n } else {\r\n setCancelConfirmDialog(true);\r\n }\r\n\r\n\r\n }\r\n\r\n const dontSave = () => {\r\n setHasChanges(false);\r\n setIsInEditMode(false);\r\n props.dataBinding.onGetDashboard.next(beforEditDashbord);\r\n setCancelConfirmDialog(false);\r\n }\r\n const changeDashboard = (event) => {\r\n if (event.value == currentDashbord?.Id)\r\n return;\r\n var dasboard = dashbords.find(e => e.Id == event.value);\r\n\r\n props.onChangeDashboard(dasboard);\r\n props.dataBinding.onGetDashboard.next(dasboard);\r\n\r\n }\r\n\r\n const applyLayouts = (dashbord: ReactDashboardPM | undefined) => {\r\n if ((!dashbord?.Widgets))\r\n return;\r\n var layout: { lg: ReactWidgetPM[] } = { lg: [] };\r\n dashbord?.Widgets.map(widget => {\r\n if (widget.Id && widget.Id.length > 0)\r\n widget.key = widget.Id;\r\n else\r\n widget.key = uuidv4();\r\n widget.Layout = {\r\n minH: 5,\r\n minW: 3,\r\n i: widget.key,\r\n w: +widget.EndPosition.split(',')[0],\r\n h: +widget.EndPosition.split(',')[1],\r\n x: +widget.StartPotistion.split(',')[0],\r\n y: +widget.StartPotistion.split(',')[1],\r\n }\r\n layout.lg.push(widget\r\n\r\n )\r\n });\r\n console.log('setLayouts -- > ', layout)\r\n setLayouts(layout);\r\n\r\n }\r\n const updateWidgets = (layouts: Layouts) => {\r\n console.log('updateWidgets = (layouts:Layouts', layouts)\r\n var layoutsDic: { [key: string]: Layout } = {};\r\n Object.keys(layouts).forEach(sizeType => {\r\n if (layouts[sizeType].length > 0) {\r\n layouts[sizeType].map(layout => {\r\n layoutsDic[layout.i] = layout;\r\n })\r\n return;\r\n }\r\n })\r\n var widgets: ReactWidgetPM[] = [];\r\n currentDashbord?.Widgets.forEach(widget => {\r\n if (layoutsDic[widget.key]) {\r\n widget.StartPotistion = `${layoutsDic[widget.key].x},${layoutsDic[widget.key].y}`;\r\n widget.EndPosition = `${layoutsDic[widget.key].w},${layoutsDic[widget.key].h}`;\r\n widgets.push(widget)\r\n }\r\n\r\n });\r\n if (currentDashbord) {\r\n currentDashbord.Widgets = widgets;\r\n }\r\n console.log('after update widget', currentDashbord)\r\n setHasChanges(true);\r\n }\r\n\r\n const renderCancelConfirmDialogFooter = () => {\r\n return (\r\n <div className='dl-flex-row-end' >\r\n <Button label=\"Cancel\" onClick={() => onHide()} className=\"p-button-secondary\" />\r\n <Button label=\"Don't Save\" onClick={() => dontSave()} className=\"p-button-secondary\" />\r\n <Button label=\"Save\" onClick={() => save()} autoFocus className=\"p-button-warning\" />\r\n </div>\r\n );\r\n }\r\n const onHide = () => {\r\n setCancelConfirmDialog(false)\r\n }\r\n return (\r\n <div className='dl-full-hight'>\r\n\r\n <div className='dl-dashboard-header dl-card'>\r\n <div className='dl-flex-row dl-custom-btn'>\r\n <div className='dl-title-1'>{currentDashbord?.Name}</div>\r\n <Button\r\n icon=\"pi pi-ellipsis-v\"\r\n onClick={(e) => dashboardMoreButtonToggle?.current?.toggle(e)}\r\n className=\"p-button p-button-icon-only p-button-rounded p-button-text\"\r\n >\r\n <Ripple />\r\n </Button>\r\n <OverlayPanel ref={dashboardMoreButtonToggle} className=\"buttons-overlay\">\r\n <div className=\"buttons-list\">\r\n <div onClick={() => EditDashBoard()}>Edit</div>\r\n <div onClick={editLayout}>Edit Layout</div>\r\n\r\n </div>\r\n </OverlayPanel >\r\n </div>\r\n <div className='dl-flex-row'>\r\n {!isInEditMode ?\r\n <div className='dl-flex-row'>\r\n\r\n\r\n <div style={{ width: \"161px\" }}>\r\n <Dropdown\r\n value={[]}\r\n options={dashbords}\r\n optionValue=\"Id\"\r\n optionLabel=\"Name\"\r\n onChange={changeDashboard}\r\n placeholder=\"Choose Dashboard\"\r\n optionDisabled={(option) => {\r\n return option?.Disabled;\r\n }}\r\n scrollHeight=\"300px\"\r\n style={{ width: '100%' }}\r\n />\r\n </div>\r\n <Button icon=\"pi pi-plus\" onClick={() => props.openAddEditDashboard(undefined)}\r\n className=\"dl-dashboard-add p-button-rounded p-button-success\" />\r\n </div>\r\n : null}\r\n {/* <DashboardDialogComponent display={displayAddDashboard} onClose={onDashboardDialogClose}></DashboardDialogComponent> */}\r\n\r\n\r\n\r\n {isInEditMode ?\r\n <div className='dl-flex-row'>\r\n\r\n <Button\r\n label=\"Cancel\"\r\n className=\"p-button-secondary dl-m-r-s dl-m-t-8\"\r\n onClick={cancelSave}\r\n />\r\n\r\n <Dialog header=\"Unsaved Changes\" visible={cancelConfirmDialog} style={{ width: '50vw' }} footer={renderCancelConfirmDialogFooter()} onHide={onHide}>\r\n <p>This Dashboard has unsaved changes do you want to save it?</p>\r\n </Dialog>\r\n\r\n <Button\r\n label=\"Save\"\r\n form=\"frm\"\r\n // icon=\"pi pi-check\"\r\n onClick={save}\r\n autoFocus\r\n className={hasChanges ? \"p-button-warning dl-m-t-8\" : \"p-button-secondary dl-m-t-8\"}\r\n />\r\n\r\n <div style={{ width: '192px', marginLeft: '15px' }}>\r\n <Dropdown\r\n options={WidgetTypes}\r\n optionValue=\"Code\"\r\n optionLabel=\"Name\"\r\n onChange={(e) => addWidget(e.value)}\r\n placeholder=\"Add Component\"\r\n optionDisabled={(option) => {\r\n return option?.Disabled;\r\n }}\r\n scrollHeight=\"300px\"\r\n />\r\n </div>\r\n </div>\r\n : null}\r\n </div>\r\n\r\n\r\n </div>\r\n\r\n <div className='dl-dashboard-body'>\r\n <DashboardDesigner editMode={isInEditMode} onLayoutChange={updateWidgets} dashboardLayouts={layouts} openEditWidget={(widget: ReactWidgetPM) => props.openAddEditWidget(widget)} ></DashboardDesigner>\r\n </div>\r\n </div >\r\n\r\n )\r\n}\r\nexport default Dashboard;\r\n\r\n"],"names":["Tools","GetLogitudeURL","logitude_url","location","href","replace","indexOf","urlArr","split","url","substring","lastIndexOf","length","ApexChart","props","lineOptoins","series","name","data","options","chart","height","type","zoom","enabled","dataLabels","stroke","curve","title","text","align","grid","row","colors","opacity","xaxis","categories","barOptoins","plotOptions","bar","horizontal","position","offsetX","style","fontSize","show","width","tooltip","shared","intersect","pieOptoins","labels","donutOptoins","responsive","breakpoint","legend","offsetY","getChartOptions","widget","TypeCode","args","React","ReactApexChart","WidgetCard","state","moreBtnToggle","useRef","useState","loading","setLoading","useEffect","setTimeout","className","key","el","i","Title","isInEditMode","Button","icon","onClick","e","current","toggle","OverlayPanel","ref","editBtnClicked","deleteBtnClicked","ResponsiveReactGridLayout","WidthProvider","Responsive","DashboardDesigner","array12","Array","from","fill","minimumPlaceholderRowsCount","lg","layouts","setLayouts","placeholderRowsArray","setplaceholderRowsArray","firstChange","setFirstChange","undefined","dateFilter","setisInEditMode","widgets","setWidgets","console","log","createLayout","dashboardLayouts","layout","map","w","Layout","forEach","push","editMode","onLayoutChange","changedLayouts","UpdatePlaceholderDimensions","deletePanel","id","newLayouts","filter","newWidgets","editWidget","openEditWidget","gridLayout","document","getElementsByClassName","gridElementHeight","clientHeight","newPlaceholderRows","Math","floor","layoutGridProps","rowHeight","compactType","isDraggable","isResizable","onWidthChange","cols","md","sm","xs","xxs","useCSSTransforms","ApiServices","_apiUrl","getByFilters","api","filters","token","getTokenFromStorage","apiURL","ConcatFiltersToURL","axios","get","headers","post","date","window","localStorage","getItem","urlparameters","mykeys","Object","keys","addtionalFiltersValues","propName","propValue","ignoreFilter","concat","encodeURIComponent","JSON","stringify","DashBoardService","_ApiServices","getDataByFilters","tableName","add","WidgetTypeListService","getAll","deepClone","obj","parse","Dashboard","newWidgetWidth","newWidgetHeight","dashbords","setDashbords","currentDashbord","setCurrentDashbord","beforEditDashbord","setBeforEditDashbord","hasChanges","setHasChanges","setIsInEditMode","WidgetTypes","setWidgetTypes","cancelConfirmDialog","setCancelConfirmDialog","dashboardMoreButtonToggle","createRef","dashboardService","widgetTypeListService","getWidgetTypes","dataBinding","onGetDashboard","subscribe","applyLayouts","onGetAllDashboards","setItem","then","EditDashBoard","openAddEditDashboard","hide","addWidget","widgetCode","EvaluateNewWidgetPosition","openAddEditWidget","StartPotistion","x","y","EndPosition","h","widgetYPosition","widgetXPosition","maxY","reduce","max","widgetsRow","d","lastWidgetStartXPosition","apply","a","lastWidget","find","lastWidgetEndXPosition","availableHorizontalSlots","editLayout","save","onSaveDashboard","onHide","cancelSave","dontSave","next","changeDashboard","event","value","Id","dasboard","onChangeDashboard","dashbord","Widgets","uuidv4","minH","minW","updateWidgets","layoutsDic","sizeType","renderCancelConfirmDialogFooter","label","autoFocus","Name","Ripple","Dropdown","optionValue","optionLabel","onChange","placeholder","optionDisabled","option","Disabled","scrollHeight","Dialog","header","visible","footer","form","marginLeft"],"mappings":"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"}
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "logitude-dashboard-library",
3
- "version": "1.2.53",
3
+ "version": "1.2.56",
4
4
  "description": "Made with create-react-library",
5
5
  "author": "logitude",
6
6
  "license": "MIT",