logitude-dashboard-library 1.2.49 → 1.2.52
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/index.js +62 -68
- package/dist/index.js.map +1 -1
- package/dist/index.modern.js +62 -68
- package/dist/index.modern.js.map +1 -1
- package/dist/services/clone.d.ts +1 -0
- package/package.json +1 -1
package/dist/index.js
CHANGED
|
@@ -4,12 +4,12 @@ var React = require('react');
|
|
|
4
4
|
var React__default = _interopDefault(React);
|
|
5
5
|
var button = require('primereact/button');
|
|
6
6
|
var reactGridLayout = require('react-grid-layout');
|
|
7
|
-
var _ = _interopDefault(require('lodash'));
|
|
8
7
|
var ReactApexChart = _interopDefault(require('react-apexcharts'));
|
|
9
8
|
var axios = _interopDefault(require('axios'));
|
|
10
9
|
var overlaypanel = require('primereact/overlaypanel');
|
|
11
10
|
var dropdown = require('primereact/dropdown');
|
|
12
11
|
var ripple = require('primereact/ripple');
|
|
12
|
+
var uuid = require('uuid');
|
|
13
13
|
|
|
14
14
|
var Tools = /*#__PURE__*/function () {
|
|
15
15
|
function Tools() {}
|
|
@@ -203,7 +203,6 @@ var WidgetCard = function WidgetCard(props, state) {
|
|
|
203
203
|
setLoading(false);
|
|
204
204
|
}, 200);
|
|
205
205
|
}, []);
|
|
206
|
-
console.log('WidgetCard', props.el);
|
|
207
206
|
return React__default.createElement("div", {
|
|
208
207
|
className: "panel",
|
|
209
208
|
key: props.el.i
|
|
@@ -226,7 +225,9 @@ var WidgetCard = function WidgetCard(props, state) {
|
|
|
226
225
|
}
|
|
227
226
|
}, " Edit "), React__default.createElement("div", {
|
|
228
227
|
onClick: function onClick() {
|
|
229
|
-
|
|
228
|
+
var _props$widget2;
|
|
229
|
+
|
|
230
|
+
return props.deleteBtnClicked((_props$widget2 = props.widget) === null || _props$widget2 === void 0 ? void 0 : _props$widget2.key);
|
|
230
231
|
}
|
|
231
232
|
}, "Remove")))), React__default.createElement("div", {
|
|
232
233
|
className: "dl-dashboard-widget"
|
|
@@ -250,87 +251,69 @@ var DashboardDesigner = function DashboardDesigner(props) {
|
|
|
250
251
|
var array12 = Array.from({
|
|
251
252
|
length: 12
|
|
252
253
|
}).fill(null);
|
|
253
|
-
var savedWidgets = getFromStorage("grid-widgets");
|
|
254
254
|
var minimumPlaceholderRowsCount = 12;
|
|
255
|
-
|
|
256
|
-
var _useState = React.useState(createLayout() || {
|
|
255
|
+
var layouts = React.useRef(createLayout() || {
|
|
257
256
|
lg: []
|
|
258
|
-
})
|
|
259
|
-
layouts = _useState[0],
|
|
260
|
-
setLayouts = _useState[1];
|
|
257
|
+
});
|
|
261
258
|
|
|
262
|
-
var
|
|
259
|
+
var _useState = React.useState(Array.from({
|
|
263
260
|
length: minimumPlaceholderRowsCount
|
|
264
261
|
}).fill(null)),
|
|
265
|
-
placeholderRowsArray =
|
|
266
|
-
setplaceholderRowsArray =
|
|
262
|
+
placeholderRowsArray = _useState[0],
|
|
263
|
+
setplaceholderRowsArray = _useState[1];
|
|
267
264
|
|
|
268
|
-
var
|
|
269
|
-
setShowMsg = _useState3[1];
|
|
265
|
+
var _useState2 = React.useState(false);
|
|
270
266
|
|
|
271
|
-
var
|
|
272
|
-
dateFilter =
|
|
267
|
+
var _useState3 = React.useState(undefined),
|
|
268
|
+
dateFilter = _useState3[0];
|
|
273
269
|
|
|
274
|
-
var
|
|
270
|
+
var _useState4 = React.useState(false);
|
|
275
271
|
|
|
276
|
-
var
|
|
272
|
+
var _useState5 = React.useState("");
|
|
277
273
|
|
|
278
|
-
var
|
|
279
|
-
|
|
280
|
-
|
|
274
|
+
var _useState6 = React.useState({
|
|
275
|
+
lg: []
|
|
276
|
+
}),
|
|
277
|
+
widgets = _useState6[0],
|
|
278
|
+
setWidgets = _useState6[1];
|
|
281
279
|
|
|
282
|
-
var
|
|
283
|
-
setPlaceholderRows =
|
|
280
|
+
var _useState7 = React.useState(minimumPlaceholderRowsCount),
|
|
281
|
+
setPlaceholderRows = _useState7[1];
|
|
284
282
|
|
|
285
283
|
React.useEffect(function () {
|
|
286
284
|
console.log('useEffect setLayouts');
|
|
287
|
-
|
|
285
|
+
layouts.current = createLayout();
|
|
286
|
+
setWidgets(props.dashboardLayouts);
|
|
288
287
|
}, [props.dashboardLayouts]);
|
|
289
288
|
|
|
290
|
-
function _onLayoutChange(layout,
|
|
289
|
+
function _onLayoutChange(layout, changedLayouts) {
|
|
291
290
|
console.log(layout, layouts);
|
|
292
|
-
|
|
291
|
+
layouts.current = changedLayouts;
|
|
293
292
|
UpdatePlaceholderDimensions();
|
|
294
|
-
props.onLayoutChange(
|
|
293
|
+
props.onLayoutChange(changedLayouts);
|
|
295
294
|
}
|
|
296
295
|
|
|
297
296
|
function deletePanel(id) {
|
|
298
|
-
|
|
299
|
-
var
|
|
300
|
-
|
|
301
|
-
|
|
302
|
-
|
|
303
|
-
|
|
304
|
-
|
|
305
|
-
|
|
306
|
-
|
|
307
|
-
|
|
308
|
-
|
|
309
|
-
|
|
310
|
-
|
|
311
|
-
|
|
312
|
-
function SaveGrid() {
|
|
313
|
-
saveToStorage("grid-layout", layouts);
|
|
314
|
-
saveToStorage("grid-widgets", widgets);
|
|
297
|
+
console.log('deletePanel(id)', id);
|
|
298
|
+
var newLayouts = {
|
|
299
|
+
lg: layouts.current.lg.filter(function (e) {
|
|
300
|
+
return e.i != id;
|
|
301
|
+
})
|
|
302
|
+
};
|
|
303
|
+
layouts.current = newLayouts;
|
|
304
|
+
var newWidgets = {
|
|
305
|
+
lg: widgets.lg.filter(function (e) {
|
|
306
|
+
return e.key != id;
|
|
307
|
+
})
|
|
308
|
+
};
|
|
309
|
+
setWidgets(newWidgets);
|
|
310
|
+
props.onLayoutChange(newLayouts);
|
|
315
311
|
}
|
|
316
312
|
|
|
317
313
|
function editWidget(widget) {
|
|
318
314
|
props.openEditWidget(widget);
|
|
319
315
|
}
|
|
320
316
|
|
|
321
|
-
function saveToStorage(key, value) {
|
|
322
|
-
setShowMsg(true);
|
|
323
|
-
setTimeout(function () {
|
|
324
|
-
setShowMsg(false);
|
|
325
|
-
}, 2000);
|
|
326
|
-
window.localStorage.setItem(key, JSON.stringify(value));
|
|
327
|
-
}
|
|
328
|
-
|
|
329
|
-
function getFromStorage(key) {
|
|
330
|
-
var layout = window.localStorage.getItem(key);
|
|
331
|
-
return JSON.parse(layout);
|
|
332
|
-
}
|
|
333
|
-
|
|
334
317
|
function UpdatePlaceholderDimensions() {
|
|
335
318
|
var _gridLayout$;
|
|
336
319
|
|
|
@@ -365,7 +348,7 @@ var DashboardDesigner = function DashboardDesigner(props) {
|
|
|
365
348
|
});
|
|
366
349
|
});
|
|
367
350
|
})), React__default.createElement(ResponsiveReactGridLayout, Object.assign({}, layoutGridProps, {
|
|
368
|
-
layouts: layouts,
|
|
351
|
+
layouts: layouts.current,
|
|
369
352
|
compactType: "vertical",
|
|
370
353
|
onWidthChange: function onWidthChange() {
|
|
371
354
|
return UpdatePlaceholderDimensions();
|
|
@@ -373,7 +356,7 @@ var DashboardDesigner = function DashboardDesigner(props) {
|
|
|
373
356
|
onLayoutChange: function onLayoutChange(layout, layouts) {
|
|
374
357
|
return _onLayoutChange(layout, layouts);
|
|
375
358
|
}
|
|
376
|
-
}),
|
|
359
|
+
}), widgets.lg.map(function (widget) {
|
|
377
360
|
var _widget$Layout, _widget$Layout2;
|
|
378
361
|
|
|
379
362
|
return React__default.createElement("div", {
|
|
@@ -517,6 +500,10 @@ var WidgetTypeListService = /*#__PURE__*/function () {
|
|
|
517
500
|
return WidgetTypeListService;
|
|
518
501
|
}();
|
|
519
502
|
|
|
503
|
+
function deepClone(obj) {
|
|
504
|
+
return JSON.parse(JSON.stringify(obj));
|
|
505
|
+
}
|
|
506
|
+
|
|
520
507
|
var Dashboard = function Dashboard(props) {
|
|
521
508
|
var _props$token;
|
|
522
509
|
|
|
@@ -655,12 +642,12 @@ var Dashboard = function Dashboard(props) {
|
|
|
655
642
|
|
|
656
643
|
setIsInEditMode(true);
|
|
657
644
|
dashboardMoreButtonToggle === null || dashboardMoreButtonToggle === void 0 ? void 0 : (_dashboardMoreButtonT2 = dashboardMoreButtonToggle.current) === null || _dashboardMoreButtonT2 === void 0 ? void 0 : _dashboardMoreButtonT2.hide();
|
|
658
|
-
|
|
659
|
-
setBeforEditDashbord(currentDashbord);
|
|
645
|
+
setBeforEditDashbord(deepClone(currentDashbord));
|
|
660
646
|
};
|
|
661
647
|
|
|
662
648
|
var save = function save() {
|
|
663
649
|
setIsInEditMode(false);
|
|
650
|
+
console.log('onSaveDashboard > ', currentDashbord);
|
|
664
651
|
props.onSaveDashboard(currentDashbord);
|
|
665
652
|
};
|
|
666
653
|
|
|
@@ -684,7 +671,7 @@ var Dashboard = function Dashboard(props) {
|
|
|
684
671
|
lg: []
|
|
685
672
|
};
|
|
686
673
|
dashbord === null || dashbord === void 0 ? void 0 : dashbord.Widgets.map(function (widget) {
|
|
687
|
-
if (widget.Id && widget.Id.length > 0) widget.key = widget.Id;else widget.key =
|
|
674
|
+
if (widget.Id && widget.Id.length > 0) widget.key = widget.Id;else widget.key = uuid.v4();
|
|
688
675
|
widget.Layout = {
|
|
689
676
|
minH: 5,
|
|
690
677
|
minW: 3,
|
|
@@ -696,6 +683,7 @@ var Dashboard = function Dashboard(props) {
|
|
|
696
683
|
};
|
|
697
684
|
layout.lg.push(widget);
|
|
698
685
|
});
|
|
686
|
+
console.log('setLayouts -- > ', layout);
|
|
699
687
|
setLayouts(layout);
|
|
700
688
|
};
|
|
701
689
|
|
|
@@ -710,10 +698,20 @@ var Dashboard = function Dashboard(props) {
|
|
|
710
698
|
return;
|
|
711
699
|
}
|
|
712
700
|
});
|
|
701
|
+
var widgets = [];
|
|
713
702
|
currentDashbord === null || currentDashbord === void 0 ? void 0 : currentDashbord.Widgets.forEach(function (widget) {
|
|
714
|
-
|
|
715
|
-
|
|
703
|
+
if (layoutsDic[widget.key]) {
|
|
704
|
+
widget.StartPotistion = layoutsDic[widget.key].x + "," + layoutsDic[widget.key].y;
|
|
705
|
+
widget.EndPosition = layoutsDic[widget.key].w + "," + layoutsDic[widget.key].h;
|
|
706
|
+
widgets.push(widget);
|
|
707
|
+
}
|
|
716
708
|
});
|
|
709
|
+
|
|
710
|
+
if (currentDashbord) {
|
|
711
|
+
currentDashbord.Widgets = widgets;
|
|
712
|
+
}
|
|
713
|
+
|
|
714
|
+
console.log('after update widget', currentDashbord);
|
|
717
715
|
};
|
|
718
716
|
|
|
719
717
|
return React.createElement("div", {
|
|
@@ -811,9 +809,5 @@ var Dashboard = function Dashboard(props) {
|
|
|
811
809
|
})));
|
|
812
810
|
};
|
|
813
811
|
|
|
814
|
-
function uuidv4() {
|
|
815
|
-
throw new Error('Function not implemented.');
|
|
816
|
-
}
|
|
817
|
-
|
|
818
812
|
module.exports = Dashboard;
|
|
819
813
|
//# sourceMappingURL=index.js.map
|
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/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 console.log('WidgetCard',props.el)\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.el.i)} >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\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\r\n // const [widgetButtonToggle, setWidgetButtonToggle] = useState(createRef<OverlayPanel>());\r\n // const [addWidgetButtonToggle, setAddWidgetButtonToggle] = useState(createRef<OverlayPanel>());\r\n // const [widgetComponents, setWidgetComponents] = useState([\r\n // { type: \"Bar\", component: BarChartComponent },\r\n // { type: \"Col\", component: ColumnChartComponent },\r\n // { type: \"Pie\", component: PieChartComponent },\r\n // { type: \"Are\", component: AreaChartComponent },\r\n // ]);\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 var savedWidgets = getFromStorage(\"grid-widgets\");\r\n const minimumPlaceholderRowsCount = 12;\r\n const [layouts, setLayouts] = useState<Layouts>( createLayout() || { lg: [] });\r\n const [placeholderRowsArray, setplaceholderRowsArray] = useState(Array.from({ length: minimumPlaceholderRowsCount }).fill(null));\r\n const [showMsg, setShowMsg] = useState(false);\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(savedWidgets || []);\r\n const [placeholderRows, setPlaceholderRows] = useState(minimumPlaceholderRowsCount);\r\n\r\n // const [widgetToEdit, setWidgetToEdit] = useState<Widget | null>(null);\r\n // const renderPageHeader = () => {\r\n // return (\r\n\r\n // <div className=\"dl-heder-row\">\r\n // {/* <Calendar\r\n // value={dateFilter}\r\n // showIcon={true}\r\n // onChange={(e) => setDateFilter(e.value)}\r\n // placeholder=\"filter by date...\"\r\n // ></Calendar> */}\r\n\r\n\r\n\r\n // </div>\r\n\r\n // );\r\n // }\r\n\r\n useEffect(()=>{\r\n\r\n console.log('useEffect setLayouts')\r\n setLayouts(createLayout())\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 renderGridWidgetsPlaceholder() {\r\n // console.log(placeholderRows)\r\n // return (\r\n // <div className=\"dl-grid dl-grid--bordered\">\r\n // {[...Array(placeholderRows)].map((e, i) =>\r\n // [...Array(layoutGridProps.cols.lg)].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\r\n function onLayoutChange(layout: any, layouts:Layouts) {\r\n console.log(layout, layouts);\r\n setLayouts(layouts);\r\n UpdatePlaceholderDimensions();\r\n props.onLayoutChange(layouts)\r\n }\r\n function renderWidgetComponent(el: any) {\r\n const widget = FindWidget(el);\r\n\r\n return (\r\n <div key={el.i}>\r\n <WidgetCard\r\n key={el.i}\r\n widget={widget}\r\n el={el}\r\n dateFilter={dateFilter}\r\n editBtnClicked={editWidget}\r\n deleteBtnClicked={deletePanel}\r\n />\r\n </div>\r\n );\r\n }\r\n function deletePanel(id) {\r\n let layout = layouts[\"lg\"];\r\n var itemIndex = layout.findIndex((d) => d.i === id);\r\n layout.splice(itemIndex, 1);\r\n setLayouts({ lg: [...layout] });\r\n setWidgets(_.reject(widgets, { i: id }));\r\n SaveGrid();\r\n };\r\n function SaveGrid() {\r\n saveToStorage(\"grid-layout\", layouts);\r\n saveToStorage(\"grid-widgets\", widgets);\r\n }\r\n function editWidget(widget: ReactWidgetPM) {\r\n props.openEditWidget(widget);\r\n };\r\n function FindWidget(el: any) {\r\n return widgets.find((d) => d.i === el.i);\r\n }\r\n function saveToStorage(key, value) {\r\n setShowMsg(true);\r\n setTimeout(() => {\r\n setShowMsg(false);\r\n }, 2000);\r\n window.localStorage.setItem(key, JSON.stringify(value));\r\n };\r\n function getFromStorage(key) {\r\n const layout: any = window.localStorage.getItem(key);\r\n return JSON.parse(layout);\r\n };\r\n // function toggleDialog() {\r\n // setDisplayDialog(!displayDialog);\r\n // }\r\n // function renderNewWidgetDialog() {\r\n\r\n // return (\r\n // <Dialog\r\n\r\n // header={widgetToEdit ? \"Edit Chart\" : \"New Chart\"}\r\n // visible={displayDialog}\r\n // onHide={toggleDialog}\r\n // breakpoints={{ \"850px\": \"95vw\", \"600px\": \"100vw\" }}\r\n // style={{ width: \"800px\" }}\r\n // >\r\n // <NewWidget\r\n // onOkButton={onOkButton}\r\n // onCancelButton={onCancelButton}\r\n // widget={widgetToEdit}\r\n // />\r\n // </Dialog>\r\n // );\r\n // }\r\n // function addPanel(newWidget: ReactWidgetPM) {\r\n\r\n // let newWidgetPosition = EvaluateNewWidgetPosition();\r\n\r\n // const widgetComponent = widgetComponents.find(\r\n // (wc) => wc.type === newWidget.TypeCode\r\n // );\r\n\r\n // const randomIndex = getRandomInt(100, 999);\r\n // const newPanel = {\r\n // i: \"\" + randomIndex,\r\n // x: newWidgetPosition.x,\r\n // y: newWidgetPosition.y,\r\n // w: newWidgetWidth,\r\n // h: 5,\r\n // minH: 5,\r\n // minW: 3,\r\n // };\r\n\r\n // widgets.push({\r\n // i: \"\" + randomIndex,\r\n // title: newWidget.Title,\r\n // component: widgetComponent?.component,\r\n // ...newWidget,\r\n // });\r\n // setLayouts({ lg: layouts[\"lg\"].concat(newPanel) });\r\n // setWidgets(widgets);\r\n\r\n // };\r\n\r\n // function EvaluateNewWidgetPosition() {\r\n // let widgetYPosition = 0;\r\n // let widgetXPosition = 0;\r\n // let layout: { x: number, y: number, w: number }[] = layouts[\"lg\"];\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 };\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 };\r\n // }\r\n // function onOkButton(data: any) {\r\n // setWidgetToEdit(null);\r\n // toggleDialog();\r\n // addPanel(data);\r\n // };\r\n // function onCancelButton() {\r\n // setWidgetToEdit(null);\r\n // toggleDialog();\r\n // };\r\n function getRandomInt(min, max) {\r\n return Math.floor(Math.random() * (max - min + 1)) + min;\r\n }\r\n\r\n // useEffect(() => {\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}\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 {props.dashboardLayouts.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}","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\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 [selectedWidget, setSelectedWidget] = useState();\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\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 console.log(WidgetTypes)\r\n setBeforEditDashbord(currentDashbord);\r\n }\r\n const save = () => {\r\n setIsInEditMode(false)\r\n\r\n props.onSaveDashboard(currentDashbord)\r\n }\r\n\r\n const cancelSave = () => {\r\n setIsInEditMode(false)\r\n props.dataBinding.onGetDashboard.next(beforEditDashbord);\r\n }\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 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\r\n currentDashbord?.Widgets.forEach(widget => {\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 });\r\n }\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-text\"\r\n onClick={cancelSave}\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 />\r\n\r\n <div style={{ width: '192px', marginLeft: '15px' }}>\r\n <Dropdown\r\n value={selectedWidget}\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\nfunction uuidv4(): any {\r\n throw new Error('Function not implemented.');\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","console","log","el","className","key","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","savedWidgets","getFromStorage","minimumPlaceholderRowsCount","layouts","setLayouts","placeholderRowsArray","setplaceholderRowsArray","showMsg","setShowMsg","undefined","dateFilter","widgets","setWidgets","placeholderRows","setPlaceholderRows","onLayoutChange","UpdatePlaceholderDimensions","deletePanel","id","itemIndex","findIndex","d","splice","_","reject","SaveGrid","saveToStorage","editWidget","openEditWidget","value","window","localStorage","setItem","JSON","stringify","getItem","parse","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","urlparameters","mykeys","Object","keys","addtionalFiltersValues","propName","propValue","ignoreFilter","concat","encodeURIComponent","DashBoardService","_ApiServices","getDataByFilters","tableName","add","WidgetTypeListService","getAll","Dashboard","newWidgetWidth","newWidgetHeight","dashbords","setDashbords","currentDashbord","setCurrentDashbord","beforEditDashbord","setBeforEditDashbord","selectedWidget","isInEditMode","setIsInEditMode","WidgetTypes","setWidgetTypes","dashboardMoreButtonToggle","createRef","dashboardService","widgetTypeListService","getWidgetTypes","dataBinding","onGetDashboard","subscribe","applyLayouts","onGetAllDashboards","then","EditDashBoard","openAddEditDashboard","hide","addWidget","widgetCode","EvaluateNewWidgetPosition","openAddEditWidget","StartPotistion","x","y","EndPosition","h","widgetYPosition","widgetXPosition","maxY","reduce","max","widgetsRow","filter","lastWidgetStartXPosition","apply","a","lastWidget","find","lastWidgetEndXPosition","availableHorizontalSlots","editDesign","save","onSaveDashboard","cancelSave","next","changeDashboard","event","Id","dasboard","onChangeDashboard","dashbord","Widgets","uuidv4","minH","minW","push","updateWidgets","layoutsDic","forEach","sizeType","Name","Ripple","Dropdown","optionValue","optionLabel","onChange","placeholder","optionDisabled","option","Disabled","scrollHeight","label","form","autoFocus","marginLeft","Error"],"mappings":"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"}
|
|
1
|
+
{"version":3,"file":"index.js","sources":["../src/services/tools.ts","../src/features/Dashboard/ChartsComponents/ApexChart.tsx","../src/features/Dashboard/WidgetCard.tsx","../src/features/Dashboard/DashboardDesigner.tsx","../src/services/ApiServices.ts","../src/services/DashBoardService.ts","../src/services/WidgetTypeListService.ts","../src/services/clone.ts","../src/index.tsx"],"sourcesContent":["export class Tools{\r\n public static GetLogitudeURL() {\r\n\r\n var logitude_url = location.href.replace('index.html', '');\r\n\r\n if (location.href.indexOf('localhost') > -1) {\r\n logitude_url = 'http://localhost:9996';//localhost:9996//';//\r\n }\r\n\r\n else {\r\n var urlArr = location.href.split(\"/index.html\");\r\n var url = urlArr[0];\r\n url = url.replace(url.substring(url.lastIndexOf('/'), url.length), \"\");\r\n logitude_url = url ;\r\n }\r\n\r\n return logitude_url;\r\n }\r\n}","import React, { useEffect, useRef } from \"react\";\r\nimport ReactApexChart from \"react-apexcharts\";\r\nimport { ReactWidgetPM } from \"../../../types/widget\";\r\n\r\ntype ApexChartProps = {\r\n widget: ReactWidgetPM|null\r\n};\r\nconst ApexChart = (props: ApexChartProps) => {\r\n\r\n const lineOptoins = () => {\r\n\r\n return {\r\n\r\n series: [{\r\n name: \"Desktops\",\r\n data: [10, 41, 35, 51, 49, 62, 69, 91, 148]\r\n }],\r\n options: {\r\n chart: {\r\n height: 350,\r\n type: 'line',\r\n zoom: {\r\n enabled: false\r\n }\r\n },\r\n dataLabels: {\r\n enabled: false\r\n },\r\n stroke: {\r\n curve: 'straight'\r\n },\r\n title: {\r\n text: 'Product Trends by Month',\r\n align: 'left'\r\n },\r\n grid: {\r\n row: {\r\n colors: ['#f3f3f3', 'transparent'], // takes an array which will be repeated on columns\r\n opacity: 0.5\r\n },\r\n },\r\n xaxis: {\r\n categories: ['Jan', 'Feb', 'Mar', 'Apr', 'May', 'Jun', 'Jul', 'Aug', 'Sep'],\r\n }\r\n },\r\n\r\n\r\n };\r\n }\r\n const barOptoins = () => {\r\n\r\n return {\r\n series: [{\r\n data: [44, 55, 41, 64, 22, 43, 21]\r\n }, {\r\n data: [53, 32, 33, 52, 13, 44, 32]\r\n }],\r\n options: {\r\n chart: {\r\n type: 'bar',\r\n height: 430\r\n },\r\n plotOptions: {\r\n bar: {\r\n horizontal: true,\r\n dataLabels: {\r\n position: 'top',\r\n },\r\n }\r\n },\r\n dataLabels: {\r\n enabled: true,\r\n offsetX: -6,\r\n style: {\r\n fontSize: '12px',\r\n colors: ['#fff']\r\n }\r\n },\r\n stroke: {\r\n show: true,\r\n width: 1,\r\n colors: ['#fff']\r\n },\r\n tooltip: {\r\n shared: true,\r\n intersect: false\r\n },\r\n xaxis: {\r\n categories: [2001, 2002, 2003, 2004, 2005, 2006, 2007],\r\n },\r\n },\r\n\r\n\r\n };\r\n }\r\n const pieOptoins = (): ApexChartArgs => {\r\n\r\n return {\r\n\r\n series: [44, 55, 13, 43, 22],\r\n options: {\r\n chart: {\r\n type: 'pie',\r\n },\r\n labels: ['Team A', 'Team B', 'Team C', 'Team D', 'Team E'],\r\n \r\n },\r\n \r\n\r\n\r\n };\r\n }\r\n const donutOptoins = (): ApexChartArgs => {\r\n\r\n return {\r\n\r\n series: [44, 55, 13, 33],\r\n options: {\r\n chart: {\r\n width: 380,\r\n type: 'donut',\r\n },\r\n dataLabels: {\r\n enabled: false\r\n },\r\n responsive: [{\r\n breakpoint: 480,\r\n options: {\r\n chart: {\r\n width: 200\r\n },\r\n legend: {\r\n show: false\r\n }\r\n }\r\n }],\r\n legend: {\r\n position: 'right',\r\n offsetY: 0,\r\n height: 230,\r\n }\r\n },\r\n\r\n\r\n };\r\n }\r\n const getChartOptions = () => {\r\n switch (props.widget?.TypeCode) {\r\n case 'bar':\r\n return barOptoins();\r\n break;\r\n case 'line':\r\n return lineOptoins();\r\n break;\r\n case 'pie':\r\n return pieOptoins();\r\n break;\r\n case 'donut':\r\n return donutOptoins();\r\n break;\r\n default:\r\n break;\r\n }\r\n return barOptoins();\r\n };\r\n const args = getChartOptions();\r\n return (\r\n <ReactApexChart \r\n options={args?.options }\r\n series={args?.series}\r\n type={props.widget?.TypeCode}\r\n height={\"100%\"}\r\n width={\"100%\"}\r\n />\r\n )\r\n}\r\nexport type ApexChartArgs = {\r\n options: any;\r\n series: any;\r\n}\r\n\r\nexport default ApexChart;\r\n\r\n","import { stat } from \"fs\";\r\nimport { Button } from \"primereact/button\";\r\nimport { OverlayPanel } from \"primereact/overlaypanel\";\r\nimport React, { useRef, useState,useEffect } from \"react\";\r\nimport { ReactWidgetPM } from \"../../types/widget\";\r\nimport ApexChart from \"./ChartsComponents/ApexChart\";\r\nimport AreaChartComponent from \"./ChartsComponents/AreaChartComponent\";\r\nimport BarChartComponent from \"./ChartsComponents/BarChartComponent\";\r\nimport CandleChartComponent from \"./ChartsComponents/CandleChartComponent\";\r\nimport ColumnChartComponent from \"./ChartsComponents/ColumnChartComponent\";\r\nimport MixedChartComponent from \"./ChartsComponents/MixedChartComponent\";\r\nimport PieChartComponent from \"./ChartsComponents/PieChartComponent\";\r\nimport TimelineChartComponent from \"./ChartsComponents/TimelineChartComponent\";\r\n\r\n\r\ntype WidgetCardProps = {\r\n editBtnClicked(widget: any):any;\r\n deleteBtnClicked(i: any):any;\r\n widget: ReactWidgetPM | null;\r\n el: any;\r\n dateFilter: any;\r\n}\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\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 [showMsg, setShowMsg] = useState(false);\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\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 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\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 [selectedWidget, setSelectedWidget] = useState();\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\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 }\r\n\r\n const cancelSave = () => {\r\n setIsInEditMode(false)\r\n props.dataBinding.onGetDashboard.next(beforEditDashbord);\r\n }\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 }\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-text\"\r\n onClick={cancelSave}\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 />\r\n\r\n <div style={{ width: '192px', marginLeft: '15px' }}>\r\n <Dropdown\r\n value={selectedWidget}\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","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","selectedWidget","isInEditMode","setIsInEditMode","WidgetTypes","setWidgetTypes","setLayouts","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","cancelSave","next","changeDashboard","event","value","Id","dasboard","onChangeDashboard","dashbord","Widgets","uuidv4","minH","minW","push","updateWidgets","layoutsDic","forEach","sizeType","Name","Ripple","Dropdown","optionValue","optionLabel","onChange","placeholder","optionDisabled","option","Disabled","scrollHeight","label","form","autoFocus","marginLeft"],"mappings":"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"}
|
package/dist/index.modern.js
CHANGED
|
@@ -1,12 +1,12 @@
|
|
|
1
1
|
import React__default, { useRef, useState, useEffect, createRef, createElement } from 'react';
|
|
2
2
|
import { Button } from 'primereact/button';
|
|
3
3
|
import { WidthProvider, Responsive } from 'react-grid-layout';
|
|
4
|
-
import _ from 'lodash';
|
|
5
4
|
import ReactApexChart from 'react-apexcharts';
|
|
6
5
|
import axios from 'axios';
|
|
7
6
|
import { OverlayPanel } from 'primereact/overlaypanel';
|
|
8
7
|
import { Dropdown } from 'primereact/dropdown';
|
|
9
8
|
import { Ripple } from 'primereact/ripple';
|
|
9
|
+
import { v4 } from 'uuid';
|
|
10
10
|
|
|
11
11
|
var Tools = /*#__PURE__*/function () {
|
|
12
12
|
function Tools() {}
|
|
@@ -200,7 +200,6 @@ var WidgetCard = function WidgetCard(props, state) {
|
|
|
200
200
|
setLoading(false);
|
|
201
201
|
}, 200);
|
|
202
202
|
}, []);
|
|
203
|
-
console.log('WidgetCard', props.el);
|
|
204
203
|
return React__default.createElement("div", {
|
|
205
204
|
className: "panel",
|
|
206
205
|
key: props.el.i
|
|
@@ -223,7 +222,9 @@ var WidgetCard = function WidgetCard(props, state) {
|
|
|
223
222
|
}
|
|
224
223
|
}, " Edit "), React__default.createElement("div", {
|
|
225
224
|
onClick: function onClick() {
|
|
226
|
-
|
|
225
|
+
var _props$widget2;
|
|
226
|
+
|
|
227
|
+
return props.deleteBtnClicked((_props$widget2 = props.widget) === null || _props$widget2 === void 0 ? void 0 : _props$widget2.key);
|
|
227
228
|
}
|
|
228
229
|
}, "Remove")))), React__default.createElement("div", {
|
|
229
230
|
className: "dl-dashboard-widget"
|
|
@@ -247,87 +248,69 @@ var DashboardDesigner = function DashboardDesigner(props) {
|
|
|
247
248
|
var array12 = Array.from({
|
|
248
249
|
length: 12
|
|
249
250
|
}).fill(null);
|
|
250
|
-
var savedWidgets = getFromStorage("grid-widgets");
|
|
251
251
|
var minimumPlaceholderRowsCount = 12;
|
|
252
|
-
|
|
253
|
-
var _useState = useState(createLayout() || {
|
|
252
|
+
var layouts = useRef(createLayout() || {
|
|
254
253
|
lg: []
|
|
255
|
-
})
|
|
256
|
-
layouts = _useState[0],
|
|
257
|
-
setLayouts = _useState[1];
|
|
254
|
+
});
|
|
258
255
|
|
|
259
|
-
var
|
|
256
|
+
var _useState = useState(Array.from({
|
|
260
257
|
length: minimumPlaceholderRowsCount
|
|
261
258
|
}).fill(null)),
|
|
262
|
-
placeholderRowsArray =
|
|
263
|
-
setplaceholderRowsArray =
|
|
259
|
+
placeholderRowsArray = _useState[0],
|
|
260
|
+
setplaceholderRowsArray = _useState[1];
|
|
264
261
|
|
|
265
|
-
var
|
|
266
|
-
setShowMsg = _useState3[1];
|
|
262
|
+
var _useState2 = useState(false);
|
|
267
263
|
|
|
268
|
-
var
|
|
269
|
-
dateFilter =
|
|
264
|
+
var _useState3 = useState(undefined),
|
|
265
|
+
dateFilter = _useState3[0];
|
|
270
266
|
|
|
271
|
-
var
|
|
267
|
+
var _useState4 = useState(false);
|
|
272
268
|
|
|
273
|
-
var
|
|
269
|
+
var _useState5 = useState("");
|
|
274
270
|
|
|
275
|
-
var
|
|
276
|
-
|
|
277
|
-
|
|
271
|
+
var _useState6 = useState({
|
|
272
|
+
lg: []
|
|
273
|
+
}),
|
|
274
|
+
widgets = _useState6[0],
|
|
275
|
+
setWidgets = _useState6[1];
|
|
278
276
|
|
|
279
|
-
var
|
|
280
|
-
setPlaceholderRows =
|
|
277
|
+
var _useState7 = useState(minimumPlaceholderRowsCount),
|
|
278
|
+
setPlaceholderRows = _useState7[1];
|
|
281
279
|
|
|
282
280
|
useEffect(function () {
|
|
283
281
|
console.log('useEffect setLayouts');
|
|
284
|
-
|
|
282
|
+
layouts.current = createLayout();
|
|
283
|
+
setWidgets(props.dashboardLayouts);
|
|
285
284
|
}, [props.dashboardLayouts]);
|
|
286
285
|
|
|
287
|
-
function _onLayoutChange(layout,
|
|
286
|
+
function _onLayoutChange(layout, changedLayouts) {
|
|
288
287
|
console.log(layout, layouts);
|
|
289
|
-
|
|
288
|
+
layouts.current = changedLayouts;
|
|
290
289
|
UpdatePlaceholderDimensions();
|
|
291
|
-
props.onLayoutChange(
|
|
290
|
+
props.onLayoutChange(changedLayouts);
|
|
292
291
|
}
|
|
293
292
|
|
|
294
293
|
function deletePanel(id) {
|
|
295
|
-
|
|
296
|
-
var
|
|
297
|
-
|
|
298
|
-
|
|
299
|
-
|
|
300
|
-
|
|
301
|
-
|
|
302
|
-
|
|
303
|
-
|
|
304
|
-
|
|
305
|
-
|
|
306
|
-
|
|
307
|
-
|
|
308
|
-
|
|
309
|
-
function SaveGrid() {
|
|
310
|
-
saveToStorage("grid-layout", layouts);
|
|
311
|
-
saveToStorage("grid-widgets", widgets);
|
|
294
|
+
console.log('deletePanel(id)', id);
|
|
295
|
+
var newLayouts = {
|
|
296
|
+
lg: layouts.current.lg.filter(function (e) {
|
|
297
|
+
return e.i != id;
|
|
298
|
+
})
|
|
299
|
+
};
|
|
300
|
+
layouts.current = newLayouts;
|
|
301
|
+
var newWidgets = {
|
|
302
|
+
lg: widgets.lg.filter(function (e) {
|
|
303
|
+
return e.key != id;
|
|
304
|
+
})
|
|
305
|
+
};
|
|
306
|
+
setWidgets(newWidgets);
|
|
307
|
+
props.onLayoutChange(newLayouts);
|
|
312
308
|
}
|
|
313
309
|
|
|
314
310
|
function editWidget(widget) {
|
|
315
311
|
props.openEditWidget(widget);
|
|
316
312
|
}
|
|
317
313
|
|
|
318
|
-
function saveToStorage(key, value) {
|
|
319
|
-
setShowMsg(true);
|
|
320
|
-
setTimeout(function () {
|
|
321
|
-
setShowMsg(false);
|
|
322
|
-
}, 2000);
|
|
323
|
-
window.localStorage.setItem(key, JSON.stringify(value));
|
|
324
|
-
}
|
|
325
|
-
|
|
326
|
-
function getFromStorage(key) {
|
|
327
|
-
var layout = window.localStorage.getItem(key);
|
|
328
|
-
return JSON.parse(layout);
|
|
329
|
-
}
|
|
330
|
-
|
|
331
314
|
function UpdatePlaceholderDimensions() {
|
|
332
315
|
var _gridLayout$;
|
|
333
316
|
|
|
@@ -362,7 +345,7 @@ var DashboardDesigner = function DashboardDesigner(props) {
|
|
|
362
345
|
});
|
|
363
346
|
});
|
|
364
347
|
})), React__default.createElement(ResponsiveReactGridLayout, Object.assign({}, layoutGridProps, {
|
|
365
|
-
layouts: layouts,
|
|
348
|
+
layouts: layouts.current,
|
|
366
349
|
compactType: "vertical",
|
|
367
350
|
onWidthChange: function onWidthChange() {
|
|
368
351
|
return UpdatePlaceholderDimensions();
|
|
@@ -370,7 +353,7 @@ var DashboardDesigner = function DashboardDesigner(props) {
|
|
|
370
353
|
onLayoutChange: function onLayoutChange(layout, layouts) {
|
|
371
354
|
return _onLayoutChange(layout, layouts);
|
|
372
355
|
}
|
|
373
|
-
}),
|
|
356
|
+
}), widgets.lg.map(function (widget) {
|
|
374
357
|
var _widget$Layout, _widget$Layout2;
|
|
375
358
|
|
|
376
359
|
return React__default.createElement("div", {
|
|
@@ -514,6 +497,10 @@ var WidgetTypeListService = /*#__PURE__*/function () {
|
|
|
514
497
|
return WidgetTypeListService;
|
|
515
498
|
}();
|
|
516
499
|
|
|
500
|
+
function deepClone(obj) {
|
|
501
|
+
return JSON.parse(JSON.stringify(obj));
|
|
502
|
+
}
|
|
503
|
+
|
|
517
504
|
var Dashboard = function Dashboard(props) {
|
|
518
505
|
var _props$token;
|
|
519
506
|
|
|
@@ -652,12 +639,12 @@ var Dashboard = function Dashboard(props) {
|
|
|
652
639
|
|
|
653
640
|
setIsInEditMode(true);
|
|
654
641
|
dashboardMoreButtonToggle === null || dashboardMoreButtonToggle === void 0 ? void 0 : (_dashboardMoreButtonT2 = dashboardMoreButtonToggle.current) === null || _dashboardMoreButtonT2 === void 0 ? void 0 : _dashboardMoreButtonT2.hide();
|
|
655
|
-
|
|
656
|
-
setBeforEditDashbord(currentDashbord);
|
|
642
|
+
setBeforEditDashbord(deepClone(currentDashbord));
|
|
657
643
|
};
|
|
658
644
|
|
|
659
645
|
var save = function save() {
|
|
660
646
|
setIsInEditMode(false);
|
|
647
|
+
console.log('onSaveDashboard > ', currentDashbord);
|
|
661
648
|
props.onSaveDashboard(currentDashbord);
|
|
662
649
|
};
|
|
663
650
|
|
|
@@ -681,7 +668,7 @@ var Dashboard = function Dashboard(props) {
|
|
|
681
668
|
lg: []
|
|
682
669
|
};
|
|
683
670
|
dashbord === null || dashbord === void 0 ? void 0 : dashbord.Widgets.map(function (widget) {
|
|
684
|
-
if (widget.Id && widget.Id.length > 0) widget.key = widget.Id;else widget.key =
|
|
671
|
+
if (widget.Id && widget.Id.length > 0) widget.key = widget.Id;else widget.key = v4();
|
|
685
672
|
widget.Layout = {
|
|
686
673
|
minH: 5,
|
|
687
674
|
minW: 3,
|
|
@@ -693,6 +680,7 @@ var Dashboard = function Dashboard(props) {
|
|
|
693
680
|
};
|
|
694
681
|
layout.lg.push(widget);
|
|
695
682
|
});
|
|
683
|
+
console.log('setLayouts -- > ', layout);
|
|
696
684
|
setLayouts(layout);
|
|
697
685
|
};
|
|
698
686
|
|
|
@@ -707,10 +695,20 @@ var Dashboard = function Dashboard(props) {
|
|
|
707
695
|
return;
|
|
708
696
|
}
|
|
709
697
|
});
|
|
698
|
+
var widgets = [];
|
|
710
699
|
currentDashbord === null || currentDashbord === void 0 ? void 0 : currentDashbord.Widgets.forEach(function (widget) {
|
|
711
|
-
|
|
712
|
-
|
|
700
|
+
if (layoutsDic[widget.key]) {
|
|
701
|
+
widget.StartPotistion = layoutsDic[widget.key].x + "," + layoutsDic[widget.key].y;
|
|
702
|
+
widget.EndPosition = layoutsDic[widget.key].w + "," + layoutsDic[widget.key].h;
|
|
703
|
+
widgets.push(widget);
|
|
704
|
+
}
|
|
713
705
|
});
|
|
706
|
+
|
|
707
|
+
if (currentDashbord) {
|
|
708
|
+
currentDashbord.Widgets = widgets;
|
|
709
|
+
}
|
|
710
|
+
|
|
711
|
+
console.log('after update widget', currentDashbord);
|
|
714
712
|
};
|
|
715
713
|
|
|
716
714
|
return createElement("div", {
|
|
@@ -808,9 +806,5 @@ var Dashboard = function Dashboard(props) {
|
|
|
808
806
|
})));
|
|
809
807
|
};
|
|
810
808
|
|
|
811
|
-
function uuidv4() {
|
|
812
|
-
throw new Error('Function not implemented.');
|
|
813
|
-
}
|
|
814
|
-
|
|
815
809
|
export default Dashboard;
|
|
816
810
|
//# sourceMappingURL=index.modern.js.map
|
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/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 console.log('WidgetCard',props.el)\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.el.i)} >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\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\r\n // const [widgetButtonToggle, setWidgetButtonToggle] = useState(createRef<OverlayPanel>());\r\n // const [addWidgetButtonToggle, setAddWidgetButtonToggle] = useState(createRef<OverlayPanel>());\r\n // const [widgetComponents, setWidgetComponents] = useState([\r\n // { type: \"Bar\", component: BarChartComponent },\r\n // { type: \"Col\", component: ColumnChartComponent },\r\n // { type: \"Pie\", component: PieChartComponent },\r\n // { type: \"Are\", component: AreaChartComponent },\r\n // ]);\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 var savedWidgets = getFromStorage(\"grid-widgets\");\r\n const minimumPlaceholderRowsCount = 12;\r\n const [layouts, setLayouts] = useState<Layouts>( createLayout() || { lg: [] });\r\n const [placeholderRowsArray, setplaceholderRowsArray] = useState(Array.from({ length: minimumPlaceholderRowsCount }).fill(null));\r\n const [showMsg, setShowMsg] = useState(false);\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(savedWidgets || []);\r\n const [placeholderRows, setPlaceholderRows] = useState(minimumPlaceholderRowsCount);\r\n\r\n // const [widgetToEdit, setWidgetToEdit] = useState<Widget | null>(null);\r\n // const renderPageHeader = () => {\r\n // return (\r\n\r\n // <div className=\"dl-heder-row\">\r\n // {/* <Calendar\r\n // value={dateFilter}\r\n // showIcon={true}\r\n // onChange={(e) => setDateFilter(e.value)}\r\n // placeholder=\"filter by date...\"\r\n // ></Calendar> */}\r\n\r\n\r\n\r\n // </div>\r\n\r\n // );\r\n // }\r\n\r\n useEffect(()=>{\r\n\r\n console.log('useEffect setLayouts')\r\n setLayouts(createLayout())\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 renderGridWidgetsPlaceholder() {\r\n // console.log(placeholderRows)\r\n // return (\r\n // <div className=\"dl-grid dl-grid--bordered\">\r\n // {[...Array(placeholderRows)].map((e, i) =>\r\n // [...Array(layoutGridProps.cols.lg)].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\r\n function onLayoutChange(layout: any, layouts:Layouts) {\r\n console.log(layout, layouts);\r\n setLayouts(layouts);\r\n UpdatePlaceholderDimensions();\r\n props.onLayoutChange(layouts)\r\n }\r\n function renderWidgetComponent(el: any) {\r\n const widget = FindWidget(el);\r\n\r\n return (\r\n <div key={el.i}>\r\n <WidgetCard\r\n key={el.i}\r\n widget={widget}\r\n el={el}\r\n dateFilter={dateFilter}\r\n editBtnClicked={editWidget}\r\n deleteBtnClicked={deletePanel}\r\n />\r\n </div>\r\n );\r\n }\r\n function deletePanel(id) {\r\n let layout = layouts[\"lg\"];\r\n var itemIndex = layout.findIndex((d) => d.i === id);\r\n layout.splice(itemIndex, 1);\r\n setLayouts({ lg: [...layout] });\r\n setWidgets(_.reject(widgets, { i: id }));\r\n SaveGrid();\r\n };\r\n function SaveGrid() {\r\n saveToStorage(\"grid-layout\", layouts);\r\n saveToStorage(\"grid-widgets\", widgets);\r\n }\r\n function editWidget(widget: ReactWidgetPM) {\r\n props.openEditWidget(widget);\r\n };\r\n function FindWidget(el: any) {\r\n return widgets.find((d) => d.i === el.i);\r\n }\r\n function saveToStorage(key, value) {\r\n setShowMsg(true);\r\n setTimeout(() => {\r\n setShowMsg(false);\r\n }, 2000);\r\n window.localStorage.setItem(key, JSON.stringify(value));\r\n };\r\n function getFromStorage(key) {\r\n const layout: any = window.localStorage.getItem(key);\r\n return JSON.parse(layout);\r\n };\r\n // function toggleDialog() {\r\n // setDisplayDialog(!displayDialog);\r\n // }\r\n // function renderNewWidgetDialog() {\r\n\r\n // return (\r\n // <Dialog\r\n\r\n // header={widgetToEdit ? \"Edit Chart\" : \"New Chart\"}\r\n // visible={displayDialog}\r\n // onHide={toggleDialog}\r\n // breakpoints={{ \"850px\": \"95vw\", \"600px\": \"100vw\" }}\r\n // style={{ width: \"800px\" }}\r\n // >\r\n // <NewWidget\r\n // onOkButton={onOkButton}\r\n // onCancelButton={onCancelButton}\r\n // widget={widgetToEdit}\r\n // />\r\n // </Dialog>\r\n // );\r\n // }\r\n // function addPanel(newWidget: ReactWidgetPM) {\r\n\r\n // let newWidgetPosition = EvaluateNewWidgetPosition();\r\n\r\n // const widgetComponent = widgetComponents.find(\r\n // (wc) => wc.type === newWidget.TypeCode\r\n // );\r\n\r\n // const randomIndex = getRandomInt(100, 999);\r\n // const newPanel = {\r\n // i: \"\" + randomIndex,\r\n // x: newWidgetPosition.x,\r\n // y: newWidgetPosition.y,\r\n // w: newWidgetWidth,\r\n // h: 5,\r\n // minH: 5,\r\n // minW: 3,\r\n // };\r\n\r\n // widgets.push({\r\n // i: \"\" + randomIndex,\r\n // title: newWidget.Title,\r\n // component: widgetComponent?.component,\r\n // ...newWidget,\r\n // });\r\n // setLayouts({ lg: layouts[\"lg\"].concat(newPanel) });\r\n // setWidgets(widgets);\r\n\r\n // };\r\n\r\n // function EvaluateNewWidgetPosition() {\r\n // let widgetYPosition = 0;\r\n // let widgetXPosition = 0;\r\n // let layout: { x: number, y: number, w: number }[] = layouts[\"lg\"];\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 };\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 };\r\n // }\r\n // function onOkButton(data: any) {\r\n // setWidgetToEdit(null);\r\n // toggleDialog();\r\n // addPanel(data);\r\n // };\r\n // function onCancelButton() {\r\n // setWidgetToEdit(null);\r\n // toggleDialog();\r\n // };\r\n function getRandomInt(min, max) {\r\n return Math.floor(Math.random() * (max - min + 1)) + min;\r\n }\r\n\r\n // useEffect(() => {\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}\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 {props.dashboardLayouts.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}","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\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 [selectedWidget, setSelectedWidget] = useState();\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\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 console.log(WidgetTypes)\r\n setBeforEditDashbord(currentDashbord);\r\n }\r\n const save = () => {\r\n setIsInEditMode(false)\r\n\r\n props.onSaveDashboard(currentDashbord)\r\n }\r\n\r\n const cancelSave = () => {\r\n setIsInEditMode(false)\r\n props.dataBinding.onGetDashboard.next(beforEditDashbord);\r\n }\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 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\r\n currentDashbord?.Widgets.forEach(widget => {\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 });\r\n }\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-text\"\r\n onClick={cancelSave}\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 />\r\n\r\n <div style={{ width: '192px', marginLeft: '15px' }}>\r\n <Dropdown\r\n value={selectedWidget}\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\nfunction uuidv4(): any {\r\n throw new Error('Function not implemented.');\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","console","log","el","className","key","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","savedWidgets","getFromStorage","minimumPlaceholderRowsCount","layouts","setLayouts","placeholderRowsArray","setplaceholderRowsArray","showMsg","setShowMsg","undefined","dateFilter","widgets","setWidgets","placeholderRows","setPlaceholderRows","onLayoutChange","UpdatePlaceholderDimensions","deletePanel","id","itemIndex","findIndex","d","splice","_","reject","SaveGrid","saveToStorage","editWidget","openEditWidget","value","window","localStorage","setItem","JSON","stringify","getItem","parse","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","urlparameters","mykeys","Object","keys","addtionalFiltersValues","propName","propValue","ignoreFilter","concat","encodeURIComponent","DashBoardService","_ApiServices","getDataByFilters","tableName","add","WidgetTypeListService","getAll","Dashboard","newWidgetWidth","newWidgetHeight","dashbords","setDashbords","currentDashbord","setCurrentDashbord","beforEditDashbord","setBeforEditDashbord","selectedWidget","isInEditMode","setIsInEditMode","WidgetTypes","setWidgetTypes","dashboardMoreButtonToggle","createRef","dashboardService","widgetTypeListService","getWidgetTypes","dataBinding","onGetDashboard","subscribe","applyLayouts","onGetAllDashboards","then","EditDashBoard","openAddEditDashboard","hide","addWidget","widgetCode","EvaluateNewWidgetPosition","openAddEditWidget","StartPotistion","x","y","EndPosition","h","widgetYPosition","widgetXPosition","maxY","reduce","max","widgetsRow","filter","lastWidgetStartXPosition","apply","a","lastWidget","find","lastWidgetEndXPosition","availableHorizontalSlots","editDesign","save","onSaveDashboard","cancelSave","next","changeDashboard","event","Id","dasboard","onChangeDashboard","dashbord","Widgets","uuidv4","minH","minW","push","updateWidgets","layoutsDic","forEach","sizeType","Name","Ripple","Dropdown","optionValue","optionLabel","onChange","placeholder","optionDisabled","option","Disabled","scrollHeight","label","form","autoFocus","marginLeft","Error"],"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}\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\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 [showMsg, setShowMsg] = useState(false);\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\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 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\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 [selectedWidget, setSelectedWidget] = useState();\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\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 }\r\n\r\n const cancelSave = () => {\r\n setIsInEditMode(false)\r\n props.dataBinding.onGetDashboard.next(beforEditDashbord);\r\n }\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 }\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-text\"\r\n onClick={cancelSave}\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 />\r\n\r\n <div style={{ width: '192px', marginLeft: '15px' }}>\r\n <Dropdown\r\n value={selectedWidget}\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","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","selectedWidget","isInEditMode","setIsInEditMode","WidgetTypes","setWidgetTypes","setLayouts","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","cancelSave","next","changeDashboard","event","value","Id","dasboard","onChangeDashboard","dashbord","Widgets","uuidv4","minH","minW","push","updateWidgets","layoutsDic","forEach","sizeType","Name","Ripple","Dropdown","optionValue","optionLabel","onChange","placeholder","optionDisabled","option","Disabled","scrollHeight","label","form","autoFocus","marginLeft"],"mappings":"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"}
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
export declare function deepClone(obj: any): any;
|