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.
- package/dist/assets/styles/dl-dashboard.scss +8 -0
- package/dist/features/Dashboard/DashboardDesigner.d.ts +1 -0
- package/dist/features/Dashboard/WidgetCard.d.ts +1 -0
- package/dist/index.js +59 -45
- package/dist/index.js.map +1 -1
- package/dist/index.modern.js +59 -45
- package/dist/index.modern.js.map +1 -1
- package/package.json +1 -1
|
@@ -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
|
};
|
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
|
-
|
|
247
|
+
|
|
248
|
+
var _useState = React.useState({
|
|
257
249
|
lg: []
|
|
258
|
-
})
|
|
250
|
+
}),
|
|
251
|
+
layouts = _useState[0],
|
|
252
|
+
setLayouts = _useState[1];
|
|
259
253
|
|
|
260
|
-
var
|
|
254
|
+
var _useState2 = React.useState(Array.from({
|
|
261
255
|
length: minimumPlaceholderRowsCount
|
|
262
256
|
}).fill(null)),
|
|
263
|
-
placeholderRowsArray =
|
|
264
|
-
setplaceholderRowsArray =
|
|
257
|
+
placeholderRowsArray = _useState2[0],
|
|
258
|
+
setplaceholderRowsArray = _useState2[1];
|
|
265
259
|
|
|
266
|
-
var
|
|
267
|
-
firstChange =
|
|
268
|
-
setFirstChange =
|
|
260
|
+
var _useState3 = React.useState(true),
|
|
261
|
+
firstChange = _useState3[0],
|
|
262
|
+
setFirstChange = _useState3[1];
|
|
269
263
|
|
|
270
|
-
var
|
|
271
|
-
dateFilter =
|
|
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
|
-
|
|
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
|
-
|
|
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.
|
|
317
|
+
lg: layouts.lg.filter(function (e) {
|
|
310
318
|
return e.i != id;
|
|
311
319
|
})
|
|
312
320
|
};
|
|
313
|
-
|
|
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
|
|
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
|
|
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",
|
|
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:
|
|
800
|
-
}, "Edit
|
|
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":";;;;;;;;;;;;;;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;;ACiBA,IAAMiB,UAAU,GAAG,SAAbA,UAAa,CAACjD,KAAD,EAAyBkD,KAAzB;;;EACjB,IAAMC,aAAa,GAAGC,YAAM,CAAe,IAAf,CAA5B;;EACA,gBAA6BC,cAAQ,CAAC,IAAD,CAArC;MAAOC,OAAP;MAAeC,UAAf;;EACAC,eAAS,CAAC;IACRC,UAAU,CAAC;MACTF,UAAU,CAAC,KAAD,CAAV;KADQ,EAEV,GAFU,CAAV;GADO,EAIP,EAJO,CAAT;EAeA,OACIR,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,EAEEf,4BAAA,CAACgB,aAAD;IACEC,IAAI,EAAC;IACLN,SAAS,EAAC;IACVO,OAAO,EAAE,iBAACC,CAAD;MAAA;;MAAA,gCAAOf,aAAa,CAACgB,OAArB,0DAAO,sBAAuBC,MAAvB,CAA8BF,CAA9B,CAAP;;GAHX,CAFF,EAQEnB,4BAAA,CAACsB,yBAAD;IAAcC,GAAG,EAAEnB;IAAeO,SAAS,EAAC;GAA5C,EACIX,4BAAA,MAAA;IAAKW,SAAS,EAAC;GAAf,EACEX,4BAAA,MAAA;IAAKkB,OAAO,EAAE;MAAA,OAAMjE,KAAK,CAACuE,cAAN,CAAqBvE,KAAK,CAAC4C,MAA3B,CAAN;;GAAd,UAAA,CADF,EAEEG,4BAAA,MAAA;IAAKkB,OAAO,EAAE;MAAA;;MAAA,OAAMjE,KAAK,CAACwE,gBAAN,mBAAuBxE,KAAK,CAAC4C,MAA7B,mDAAuB,eAAce,GAArC,CAAN;;GAAd,UAAA,CAFF,CADJ,CARF,CADF,EAiBEZ,4BAAA,MAAA;IAAKW,SAAS,EAAC;GAAf,EACGJ,OAAO,GAAG,IAAH,GAAUP,4BAAA,CAAChD,SAAD;IAAW6C,MAAM,EAAE5C,KAAK,CAAC4C;GAAzB,CADpB,CAjBF,CADJ;AAuBD,CAzCD;;ACAA,IAAM6B,yBAAyB,GAAGC,6BAAa,CAACC,0BAAD,CAA/C;AACA;AAOA,IAAMC,iBAAiB,GAAG,SAApBA,iBAAoB,CAAC5E,KAAD;EACxB,IAAM6E,YAAY,GAAG,SAAfA,YAAe;IACnB,IAAIC,MAAM,GAAG;MAAEC,EAAE,EAAE/E,KAAK,CAACgF,gBAAN,CAAuBD,EAAvB,CAA0BE,GAA1B,CAA8B,UAAAC,CAAC;QAAA,OAAIA,CAAC,CAACC,MAAN;OAA/B;KAAnB;IACA,OAAOL,MAAP;GAFF;;EAKA,IAAMM,OAAO,GAAGC,KAAK,CAACC,IAAN,CAAW;IAAExF,MAAM,EAAE;GAArB,EAA2ByF,IAA3B,CAAgC,IAAhC,CAAhB;EACA,IAAMC,2BAA2B,GAAG,EAApC;EACA,IAAMC,OAAO,GAAGrC,YAAM,CAAUyB,YAAY,MAAM;IAAEE,EAAE,EAAE;GAAlC,CAAtB;;EACA,gBAAwD1B,cAAQ,CAACgC,KAAK,CAACC,IAAN,CAAW;IAAExF,MAAM,EAAE0F;GAArB,EAAoDD,IAApD,CAAyD,IAAzD,CAAD,CAAhE;MAAOG,oBAAP;MAA6BC,uBAA7B;;EACA,iBAAsCtC,cAAQ,CAAC,IAAD,CAA9C;MAAOuC,WAAP;MAAoBC,cAApB;;EACA,iBAAoCxC,cAAQ,CAA4ByC,SAA5B,CAA5C;MAAOC,UAAP;;EACA,iBAA0C1C,cAAQ,CAAC,KAAD,CAAlD;;EACA,iBAA4CA,cAAQ,CAAC,EAAD,CAApD;;EACA,iBAA8BA,cAAQ,CAA0B;IAAE0B,EAAE,EAAE;GAAhC,CAAtC;MAAOiB,OAAP;MAAgBC,UAAhB;;EACA,iBAA8C5C,cAAQ,CAACmC,2BAAD,CAAtD;MAAOU,AAAiBC,kBAAxB;;EAGA3C,eAAS,CAAC;IACRqC,cAAc,CAAC,IAAD,CAAd;IACAO,OAAO,CAACC,GAAR,CAAY,sBAAZ;IACAZ,OAAO,CAACtB,OAAR,GAAkBU,YAAY,EAA9B;IACAoB,UAAU,CAACjG,KAAK,CAACgF,gBAAP,CAAV;GAJO,EAKN,CAAChF,KAAK,CAACgF,gBAAP,CALM,CAAT;;EAcA,SAASsB,eAAT,CAAwBxB,MAAxB,EAAqCyB,cAArC;IACEH,OAAO,CAACC,GAAR,CAAYvB,MAAZ,EAAoBW,OAApB;;IACA,IAAGG,WAAH,EAAe;MACbC,cAAc,CAAC,KAAD,CAAd;MACA;;;IAEFJ,OAAO,CAACtB,OAAR,GAAkBoC,cAAlB;IACAC,2BAA2B;IAC3BxG,KAAK,CAACsG,cAAN,CAAqBC,cAArB;;;EAGF,SAASE,WAAT,CAAqBC,EAArB;IACEN,OAAO,CAACC,GAAR,CAAY,iBAAZ,EAA+BK,EAA/B;IACA,IAAIC,UAAU,GAAG;MAAE5B,EAAE,EAAEU,OAAO,CAACtB,OAAR,CAAgBY,EAAhB,CAAmB6B,MAAnB,CAA0B,UAAA1C,CAAC;QAAA,OAAIA,CAAC,CAACL,CAAF,IAAO6C,EAAX;OAA3B;KAAvB;IACAjB,OAAO,CAACtB,OAAR,GAAkBwC,UAAlB;IACA,IAAIE,UAAU,GAAG;MAAE9B,EAAE,EAAEiB,OAAO,CAACjB,EAAR,CAAW6B,MAAX,CAAkB,UAAA1C,CAAC;QAAA,OAAIA,CAAC,CAACP,GAAF,IAAS+C,EAAb;OAAnB;KAAvB;IACAT,UAAU,CAACY,UAAD,CAAV;IACA7G,KAAK,CAACsG,cAAN,CAAqBK,UAArB;;;EAGF,SAASG,UAAT,CAAoBlE,MAApB;IACE5C,KAAK,CAAC+G,cAAN,CAAqBnE,MAArB;;;EAIF,SAAS4D,2BAAT;;;IAEE,IAAIQ,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,GAAG7B,2BAArB,GAAmDA,2BAAnD,GAAiF6B,kBAAtG;IACAlB,kBAAkB,CAACkB,kBAAD,CAAlB;IACA1B,uBAAuB,CAACN,KAAK,CAACC,IAAN,CAAW;MAAExF,MAAM,EAAEuH;KAArB,EAA2C9B,IAA3C,CAAgD,IAAhD,CAAD,CAAvB;;;EAEF,OAAQxC,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,EAEEX,4BAAA,MAAA;IAAKW,SAAS,EAAC;GAAf,EACGgC,oBAAoB,CAACT,GAArB,CAAyB,UAACf,CAAD,EAAIL,CAAJ;IAAA,OACxBuB,OAAO,CAACH,GAAR,CAAY,UAACf,CAAD,EAAIL,CAAJ;MAAA,OACVd,4BAAA,MAAA;QAAKY,GAAG,EAAEE;QACRhC,KAAK,EAAE;UACLtB,MAAM,EAAEiH,eAAe,CAACC;;OAF5B,CADU;KAAZ,CADwB;GAAzB,CADH,CAFF,EAeE1E,4BAAA,CAAC0B,yBAAD,oBACM+C;IACJ/B,OAAO,EAAEA,OAAO,CAACtB;IACjBuD,WAAW,EAAC;IAEZC,aAAa,EAAE;MAAA,OAAMnB,2BAA2B,EAAjC;;IACfF,cAAc,EAAE,wBAACxB,MAAD,EAASW,OAAT;MAAA,OACda,eAAc,CAACxB,MAAD,EAASW,OAAT,CADA;;IANlB,EAUGO,OAAO,CAACjB,EAAR,CAAWE,GAAX,CAAe,UAACrC,MAAD;IAAA;;IAAA,OAEdG,4BAAA,MAAA;MAAKY,GAAG,oBAAEf,MAAM,CAACuC,MAAT,mDAAE,eAAetB;KAAzB,EACEd,4BAAA,CAACE,UAAD;MACEU,GAAG,qBAAEf,MAAM,CAACuC,MAAT,oDAAE,gBAAetB;MACpBjB,MAAM,EAAEA;MACRgB,EAAE,EAAEhB;MACJmD,UAAU,EAAEA;MACZxB,cAAc,EAAEuC;MAChBtC,gBAAgB,EAAEiC;KANpB,CADF,CAFc;GAAf,CAVH,CAfF,CADF,CAJF,CADM,CAAR;AA4DD,CAjID;;AAoIA,AAAO,IAAMe,eAAe,GAAG;EAC7BC,SAAS,EAAE,EADkB;EAE7B/D,SAAS,EAAE,QAFkB;EAG7BkE,IAAI,EAAE;IAAE7C,EAAE,EAAE,EAAN;IAAU8C,EAAE,EAAE,CAAd;IAAiBC,EAAE,EAAE,CAArB;IAAwBC,EAAE,EAAE,CAA5B;IAA+BC,GAAG,EAAE;GAHb;EAI7BC,gBAAgB,EAAE;AAJW,CAAxB;;IC9JMC,WAAb;EAEI;IACI,KAAKC,OAAL,GAAejJ,KAAK,CAACC,cAAN,EAAf;;;EAHR;;EAAA,OAKIiJ,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,IAAI1F,CAAT,IAAcuF,MAAd,EAAsB;MAClB,IAAII,QAAQ,GAAGJ,MAAM,CAACvF,CAAD,CAArB;MACA,IAAI4F,SAAS,GAAGnB,OAAO,CAACkB,QAAD,CAAvB;MACA,IAAIE,YAAY,GAAKF,QAAQ,CAAChK,OAAT,CAAiB,UAAjB,IAA+B,CAA/B,IAAoCiK,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,CAAC3J,MAAV,GAAmB,CAA1D,EAA6D;QACzDyJ,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,aAAI/J,IAAJ;IACI,OAAO,KAAK4J,YAAL,CAAkBlB,IAAlB,oBAAyC1I,IAAzC,CAAP;GAbR;;EAAA;AAAA;;ICCagK,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,CAACzK,KAAD;;;EAChB,IAAM0K,cAAc,GAAG,CAAvB;EACA,IAAMC,eAAe,GAAG,CAAxB;;EAEA,gBAAkCtH,cAAQ,CAAqB,EAArB,CAA1C;MAAOuH,SAAP;MAAkBC,YAAlB;;EACA,iBAA8CxH,cAAQ,CAA+ByC,SAA/B,CAAtD;MAAOgF,eAAP;MAAwBC,kBAAxB;;EACA,iBAAkD1H,cAAQ,CAA+ByC,SAA/B,CAA1D;MAAOkF,iBAAP;MAA0BC,oBAA1B;;EACA,iBAAoC5H,cAAQ,CAAC,KAAD,CAA5C;MAAO6H,UAAP;MAAmBC,aAAnB;;EACA,iBAAwC9H,cAAQ,CAAU,KAAV,CAAhD;MAAO+H,YAAP;MAAqBC,eAArB;;EACA,iBAAsChI,cAAQ,EAA9C;MAAOiI,WAAP;MAAoBC,cAApB;;EACA,iBAA8BlI,cAAQ,CAAgB;IAAE0B,EAAE,EAAE;GAAtB,CAAtC;MAAOU,OAAP;MAAgB+F,UAAhB;;EACA,iBAAsDnI,cAAQ,CAAC,KAAD,CAA9D;MAAOoI,mBAAP;MAA4BC,sBAA5B;;EACA,IAAMC,yBAAyB,GAAGC,eAAS,EAA3C;EACA,IAAMC,gBAAgB,GAAG,IAAI9B,gBAAJ,EAAzB;EACA,IAAM+B,qBAAqB,GAAG,IAAI1B,qBAAJ,EAA9B;EACA5G,eAAS,CAAC;IACRuI,cAAc;IAEd/L,KAAK,CAACgM,WAAN,CAAkBC,cAAlB,CAAiCC,SAAjC,CAA2C,UAAAhI,CAAC;MAC1CkC,OAAO,CAACC,GAAR,CAAY,0BAAZ,EAAwCnC,CAAxC;MACA6G,kBAAkB,CAAC7G,CAAD,CAAlB;MACAiI,YAAY,CAACjI,CAAD,CAAZ;KAHF;IAKAlE,KAAK,CAACgM,WAAN,CAAkBI,kBAAlB,CAAqCF,SAArC,CAA+C,UAAAhI,CAAC;MAC9CkC,OAAO,CAACC,GAAR,CAAY,6BAAZ,EAA2CnC,CAA3C;MAEA2G,YAAY,CAAC3G,CAAD,CAAZ;KAHF;GARO,EAcN,EAdM,CAAT;EAmBA,IAAI,CAAAlE,KAAK,SAAL,IAAAA,KAAK,WAAL,4BAAAA,KAAK,CAAEuI,KAAP,8DAAczI,MAAd,IAAuB,CAA3B,EACEmJ,YAAY,CAACoD,OAAb,CAAqB,OAArB,EAA8BrM,KAA9B,aAA8BA,KAA9B,uBAA8BA,KAAK,CAAEuI,KAArC;;EAGF,IAAMwD,cAAc,GAAG,SAAjBA,cAAiB;IACrBD,qBAAqB,CAACzB,MAAtB,GAA+BiC,IAA/B,CAAoC,UAAAlM,IAAI;MACtCmL,cAAc,CAACnL,IAAI,CAACA,IAAN,CAAd;KADF;GADF;;EAKA,IAAMmM,aAAa,GAAG,SAAhBA,aAAgB;;;IACpBvM,KAAK,CAACwM,oBAAN,CAA2B1B,eAA3B;IACAa,yBAAyB,SAAzB,IAAAA,yBAAyB,WAAzB,qCAAAA,yBAAyB,CAAExH,OAA3B,gFAAoCsI,IAApC;GAFF;;EAKA,IAAMC,SAAS,GAAG,SAAZA,SAAY,CAACC,UAAD;IAChB,IAAIhL,QAAQ,GAAGiL,yBAAyB,EAAxC;IACA5M,KAAK,CAAC6M,iBAAN,CAAwB;MAAEhK,QAAQ,EAAE8J,UAAZ;MAAwBG,cAAc,EAAKnL,QAAQ,CAACoL,CAAd,SAAmBpL,QAAQ,CAACqL,CAAlE;MAAuEC,WAAW,EAAKtL,QAAQ,CAACuD,CAAd,SAAmBvD,QAAQ,CAACuL;KAAtI;GAFF;;EAKA,IAAMN,yBAAyB,GAAG,SAA5BA,yBAA4B;IAChC,IAAIO,eAAe,GAAG,CAAtB;IACA,IAAIC,eAAe,GAAG,CAAtB;IACA,IAAItI,MAAM,GAA0CW,OAAO,CAAC,IAAD,CAAP,CAAcR,GAAd,CAAkB,UAAAf,CAAC;MAAA,OAAIA,CAAC,CAACiB,MAAN;KAAnB,CAApD;IACA,IAAMkI,IAAI,GAAGvI,MAAM,CAACwI,MAAP,CAAc,UAACC,GAAD,EAAM3K,MAAN;MACzB,IAAIA,MAAM,CAACoK,CAAP,GAAWO,GAAf,EAAoBA,GAAG,GAAG3K,MAAM,CAACoK,CAAb;MACpB,OAAOO,GAAP;KAFW,EAGV,CAHU,CAAb;;+BAKSP;MACP,IAAMQ,UAAU,GAAG1I,MAAM,CAAC8B,MAAP,CAAc,UAAA6G,CAAC;QAAA,OAAIA,CAAC,CAACT,CAAF,IAAOA,CAAX;OAAf,CAAnB;MACA,IAAMU,wBAAwB,GAAGpG,IAAI,CAACiG,GAAL,CAASI,KAAT,CAAerG,IAAf,EAAqBkG,UAAU,CAACvI,GAAX,CAAe,UAAA2I,CAAC;QAAA,OAAIA,CAAC,CAACb,CAAN;OAAhB,CAArB,CAAjC;MACA,IAAMc,UAAU,GAAQL,UAAU,CAACM,IAAX,CAAgB,UAAAF,CAAC;QAAA,OAAIA,CAAC,CAACb,CAAF,IAAOW,wBAAX;OAAjB,CAAxB;;MACA,IAAIG,UAAJ,EAAgB;QACd,IAAME,sBAAsB,GAAGL,wBAAwB,GAAGG,UAAU,CAAC3I,CAArE;QACA,IAAM8I,wBAAwB,GAAGxG,eAAe,CAACI,IAAhB,CAAqB7C,EAArB,GAA0BgJ,sBAA3D;;QACA,IAAIC,wBAAwB,IAAItD,cAAhC,EAAgD;UAC9CyC,eAAe,GAAGH,CAAlB;UACAI,eAAe,GAAGW,sBAAlB;UACA;YAAA,GAAO;cAAEhB,CAAC,EAAEK,eAAL;cAAsBJ,CAAC,EAAEG,eAAzB;cAA0CjI,CAAC,EAAEwF,cAA7C;cAA6DwC,CAAC,EAAEvC;;;SAHzE,MAKO;UACLwC,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;MAA0CjI,CAAC,EAAEwF,cAA7C;MAA6DwC,CAAC,EAAEvC;KAAvE;GA7BF;;EA+BA,IAAMsD,UAAU,GAAG,SAAbA,UAAa;;;IACjB5C,eAAe,CAAC,IAAD,CAAf;IACAM,yBAAyB,SAAzB,IAAAA,yBAAyB,WAAzB,sCAAAA,yBAAyB,CAAExH,OAA3B,kFAAoCsI,IAApC;IAEAxB,oBAAoB,CAACX,SAAS,CAACQ,eAAD,CAAV,CAApB;GAJF;;EAMA,IAAMoD,IAAI,GAAG,SAAPA,IAAO;IACX7C,eAAe,CAAC,KAAD,CAAf;IACAjF,OAAO,CAACC,GAAR,CAAY,oBAAZ,EAAkCyE,eAAlC;IACA9K,KAAK,CAACmO,eAAN,CAAsBrD,eAAtB;IACAsD,MAAM;IACNjD,aAAa,CAAC,KAAD,CAAb;GALF;;EAQA,IAAMkD,UAAU,GAAG,SAAbA,UAAa;IACjB,IAAI,CAACnD,UAAL,EAAiB;MACfG,eAAe,CAAC,KAAD,CAAf;MACAF,aAAa,CAAC,KAAD,CAAb;KAFF,MAGO;MACLO,sBAAsB,CAAC,IAAD,CAAtB;;GALJ;;EAWA,IAAM4C,QAAQ,GAAG,SAAXA,QAAW;IACfnD,aAAa,CAAC,KAAD,CAAb;IACAE,eAAe,CAAC,KAAD,CAAf;IACArL,KAAK,CAACgM,WAAN,CAAkBC,cAAlB,CAAiCsC,IAAjC,CAAsCvD,iBAAtC;IACAU,sBAAsB,CAAC,KAAD,CAAtB;GAJF;;EAMA,IAAM8C,eAAe,GAAG,SAAlBA,eAAkB,CAACC,KAAD;IACtB,IAAIA,KAAK,CAACC,KAAN,KAAe5D,eAAf,aAAeA,eAAf,uBAAeA,eAAe,CAAE6D,EAAhC,CAAJ,EACE;IACF,IAAIC,QAAQ,GAAGhE,SAAS,CAACkD,IAAV,CAAe,UAAA5J,CAAC;MAAA,OAAIA,CAAC,CAACyK,EAAF,IAAQF,KAAK,CAACC,KAAlB;KAAhB,CAAf;IAEA1O,KAAK,CAAC6O,iBAAN,CAAwBD,QAAxB;IACA5O,KAAK,CAACgM,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,IAAIjK,MAAM,GAA4B;MAAEC,EAAE,EAAE;KAA5C;IACA+J,QAAQ,SAAR,IAAAA,QAAQ,WAAR,YAAAA,QAAQ,CAAEC,OAAV,CAAkB9J,GAAlB,CAAsB,UAAArC,MAAM;MAC1B,IAAIA,MAAM,CAAC+L,EAAP,IAAa/L,MAAM,CAAC+L,EAAP,CAAU7O,MAAV,GAAmB,CAApC,EACE8C,MAAM,CAACe,GAAP,GAAaf,MAAM,CAAC+L,EAApB,CADF,KAGE/L,MAAM,CAACe,GAAP,GAAaqL,OAAM,EAAnB;MACFpM,MAAM,CAACuC,MAAP,GAAgB;QACd8J,IAAI,EAAE,CADQ;QAEdC,IAAI,EAAE,CAFQ;QAGdrL,CAAC,EAAEjB,MAAM,CAACe,GAHI;QAIduB,CAAC,EAAE,CAACtC,MAAM,CAACqK,WAAP,CAAmBvN,KAAnB,CAAyB,GAAzB,EAA8B,CAA9B,CAJU;QAKdwN,CAAC,EAAE,CAACtK,MAAM,CAACqK,WAAP,CAAmBvN,KAAnB,CAAyB,GAAzB,EAA8B,CAA9B,CALU;QAMdqN,CAAC,EAAE,CAACnK,MAAM,CAACkK,cAAP,CAAsBpN,KAAtB,CAA4B,GAA5B,EAAiC,CAAjC,CANU;QAOdsN,CAAC,EAAE,CAACpK,MAAM,CAACkK,cAAP,CAAsBpN,KAAtB,CAA4B,GAA5B,EAAiC,CAAjC;OAPN;MASAoF,MAAM,CAACC,EAAP,CAAUoK,IAAV,CAAevM,MAAf;KAdF;IAkBAwD,OAAO,CAACC,GAAR,CAAY,kBAAZ,EAAgCvB,MAAhC;IACA0G,UAAU,CAAC1G,MAAD,CAAV;GAvBF;;EA0BA,IAAMsK,aAAa,GAAG,SAAhBA,aAAgB,CAAC3J,OAAD;IACpBW,OAAO,CAACC,GAAR,CAAY,kCAAZ,EAAgDZ,OAAhD;IACA,IAAI4J,UAAU,GAA8B,EAA5C;IACAhG,MAAM,CAACC,IAAP,CAAY7D,OAAZ,EAAqB6J,OAArB,CAA6B,UAAAC,QAAQ;MACnC,IAAI9J,OAAO,CAAC8J,QAAD,CAAP,CAAkBzP,MAAlB,GAA2B,CAA/B,EAAkC;QAChC2F,OAAO,CAAC8J,QAAD,CAAP,CAAkBtK,GAAlB,CAAsB,UAAAH,MAAM;UAC1BuK,UAAU,CAACvK,MAAM,CAACjB,CAAR,CAAV,GAAuBiB,MAAvB;SADF;QAGA;;KALJ;IAQA,IAAIkB,OAAO,GAAoB,EAA/B;IACA8E,eAAe,SAAf,IAAAA,eAAe,WAAf,YAAAA,eAAe,CAAEiE,OAAjB,CAAyBO,OAAzB,CAAiC,UAAA1M,MAAM;MACrC,IAAIyM,UAAU,CAACzM,MAAM,CAACe,GAAR,CAAd,EAA4B;QAC1Bf,MAAM,CAACkK,cAAP,GAA2BuC,UAAU,CAACzM,MAAM,CAACe,GAAR,CAAV,CAAuBoJ,CAAlD,SAAuDsC,UAAU,CAACzM,MAAM,CAACe,GAAR,CAAV,CAAuBqJ,CAA9E;QACApK,MAAM,CAACqK,WAAP,GAAwBoC,UAAU,CAACzM,MAAM,CAACe,GAAR,CAAV,CAAuBuB,CAA/C,SAAoDmK,UAAU,CAACzM,MAAM,CAACe,GAAR,CAAV,CAAuBuJ,CAA3E;QACAlH,OAAO,CAACmJ,IAAR,CAAavM,MAAb;;KAJJ;;IAQA,IAAIkI,eAAJ,EAAqB;MACnBA,eAAe,CAACiE,OAAhB,GAA0B/I,OAA1B;;;IAEFI,OAAO,CAACC,GAAR,CAAY,qBAAZ,EAAmCyE,eAAnC;IACAK,aAAa,CAAC,IAAD,CAAb;GAxBF;;EA2BA,IAAMqE,+BAA+B,GAAG,SAAlCA,+BAAkC;IACtC,OACEzM,mBAAA,MAAA,MAAA,EACEA,mBAAA,CAACgB,aAAD;MAAQ0L,KAAK,EAAC;MAAUxL,OAAO,EAAE;QAAA,OAAMmK,MAAM,EAAZ;;MAAgB1K,SAAS,EAAC;KAA3D,CADF,EAEEX,mBAAA,CAACgB,aAAD;MAAQ0L,KAAK,EAAC;MAAcxL,OAAO,EAAE;QAAA,OAAMqK,QAAQ,EAAd;;MAAkB5K,SAAS,EAAC;KAAjE,CAFF,EAGEX,mBAAA,CAACgB,aAAD;MAAQ0L,KAAK,EAAC;MAAQxL,OAAO,EAAE;QAAA,OAAMiK,IAAI,EAAV;;MAAcwB,SAAS;MAAChM,SAAS,EAAC;KAAjE,CAHF,CADF;GADF;;EASA,IAAM0K,MAAM,GAAG,SAATA,MAAS;IACb1C,sBAAsB,CAAC,KAAD,CAAtB;GADF;;EAGA,OACE3I,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,EAA6BoH,eAA7B,aAA6BA,eAA7B,uBAA6BA,eAAe,CAAE6E,IAA9C,CADF,EAEE5M,mBAAA,CAACgB,aAAD;IACEC,IAAI,EAAC;IACLC,OAAO,EAAE,iBAACC,CAAD;MAAA;;MAAA,OAAOyH,yBAAP,aAAOA,yBAAP,iDAAOA,yBAAyB,CAAExH,OAAlC,2DAAO,uBAAoCC,MAApC,CAA2CF,CAA3C,CAAP;;IACTR,SAAS,EAAC;GAHZ,EAKEX,mBAAA,CAAC6M,aAAD,MAAA,CALF,CAFF,EASE7M,mBAAA,CAACsB,yBAAD;IAAcC,GAAG,EAAEqH;IAA2BjI,SAAS,EAAC;GAAxD,EACEX,mBAAA,MAAA;IAAKW,SAAS,EAAC;GAAf,EACEX,mBAAA,MAAA;IAAKkB,OAAO,EAAE;MAAA,OAAMsI,aAAa,EAAnB;;GAAd,QAAA,CADF,EAEExJ,mBAAA,MAAA;IAAKkB,OAAO,EAAEgK;GAAd,eAAA,CAFF,CADF,CATF,CADF,EAkBElL,mBAAA,MAAA;IAAKW,SAAS,EAAC;GAAf,EACG,CAAC0H,YAAD,GACCrI,mBAAA,MAAA;IAAKW,SAAS,EAAC;GAAf,EAGEX,mBAAA,MAAA;IAAKlB,KAAK,EAAE;MAAEG,KAAK,EAAE;;GAArB,EACEe,mBAAA,CAAC8M,iBAAD;IACEnB,KAAK,EAAE;IACPrO,OAAO,EAAEuK;IACTkF,WAAW,EAAC;IACZC,WAAW,EAAC;IACZC,QAAQ,EAAExB;IACVyB,WAAW,EAAC;IACZC,cAAc,EAAE,wBAACC,MAAD;MACd,OAAOA,MAAP,aAAOA,MAAP,uBAAOA,MAAM,CAAEC,QAAf;;IAEFC,YAAY,EAAC;IACbxO,KAAK,EAAE;MAAEG,KAAK,EAAE;;GAXlB,CADF,CAHF,EAkBEe,mBAAA,CAACgB,aAAD;IAAQC,IAAI,EAAC;IAAaC,OAAO,EAAE;MAAA,OAAMjE,KAAK,CAACwM,oBAAN,CAA2B1G,SAA3B,CAAN;;IACjCpC,SAAS,EAAC;GADZ,CAlBF,CADD,GAsBG,IAvBN,EA4BG0H,YAAY,GACXrI,mBAAA,MAAA;IAAKW,SAAS,EAAC;GAAf,EAEEX,mBAAA,CAACgB,aAAD;IACE0L,KAAK,EAAC;IACN/L,SAAS,EAAC;IACVO,OAAO,EAAEoK;GAHX,CAFF,EAQEtL,mBAAA,CAACuN,aAAD;IAAQC,MAAM,EAAC;IAAkBC,OAAO,EAAE/E;IAAqB5J,KAAK,EAAE;MAAEG,KAAK,EAAE;;IAAUyO,MAAM,EAAEjB,+BAA+B;IAAIpB,MAAM,EAAEA;GAA5I,EACErL,mBAAA,IAAA,MAAA,8DAAA,CADF,CARF,EAYEA,mBAAA,CAACgB,aAAD;IACE0L,KAAK,EAAC;IACNiB,IAAI,EAAC;IAELzM,OAAO,EAAEiK;IACTwB,SAAS;IACThM,SAAS,EAAEwH,UAAU,GAAG,kBAAH,GAAwB;GAN/C,CAZF,EAqBEnI,mBAAA,MAAA;IAAKlB,KAAK,EAAE;MAAEG,KAAK,EAAE,OAAT;MAAkB2O,UAAU,EAAE;;GAA1C,EACE5N,mBAAA,CAAC8M,iBAAD;IACExP,OAAO,EAAEiL;IACTwE,WAAW,EAAC;IACZC,WAAW,EAAC;IACZC,QAAQ,EAAE,kBAAC9L,CAAD;MAAA,OAAOwI,SAAS,CAACxI,CAAC,CAACwK,KAAH,CAAhB;;IACVuB,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,EA0FEtN,mBAAA,MAAA;IAAKW,SAAS,EAAC;GAAf,EACEX,mBAAA,CAAC6B,iBAAD;IAAmB0B,cAAc,EAAE8I;IAAepK,gBAAgB,EAAES;IAASsB,cAAc,EAAE,wBAACnE,MAAD;MAAA,OAA2B5C,KAAK,CAAC6M,iBAAN,CAAwBjK,MAAxB,CAA3B;;GAA7F,CADF,CA1FF,CADF;AAiGD,CA/RD;;;;"}
|
|
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":"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"}
|
package/dist/index.modern.js
CHANGED
|
@@ -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
|
-
|
|
244
|
+
|
|
245
|
+
var _useState = useState({
|
|
254
246
|
lg: []
|
|
255
|
-
})
|
|
247
|
+
}),
|
|
248
|
+
layouts = _useState[0],
|
|
249
|
+
setLayouts = _useState[1];
|
|
256
250
|
|
|
257
|
-
var
|
|
251
|
+
var _useState2 = useState(Array.from({
|
|
258
252
|
length: minimumPlaceholderRowsCount
|
|
259
253
|
}).fill(null)),
|
|
260
|
-
placeholderRowsArray =
|
|
261
|
-
setplaceholderRowsArray =
|
|
254
|
+
placeholderRowsArray = _useState2[0],
|
|
255
|
+
setplaceholderRowsArray = _useState2[1];
|
|
262
256
|
|
|
263
|
-
var
|
|
264
|
-
firstChange =
|
|
265
|
-
setFirstChange =
|
|
257
|
+
var _useState3 = useState(true),
|
|
258
|
+
firstChange = _useState3[0],
|
|
259
|
+
setFirstChange = _useState3[1];
|
|
266
260
|
|
|
267
|
-
var
|
|
268
|
-
dateFilter =
|
|
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
|
-
|
|
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
|
-
|
|
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.
|
|
314
|
+
lg: layouts.lg.filter(function (e) {
|
|
307
315
|
return e.i != id;
|
|
308
316
|
})
|
|
309
317
|
};
|
|
310
|
-
|
|
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
|
|
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
|
|
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",
|
|
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:
|
|
797
|
-
}, "Edit
|
|
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) {
|
package/dist/index.modern.js.map
CHANGED
|
@@ -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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"}
|