logitude-dashboard-library 1.2.39 → 1.2.42
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/README.md +30 -30
- package/dist/features/Dashboard/DashboardDesigner.d.ts +3 -0
- package/dist/index.css +12 -12
- package/dist/index.js +29 -3
- package/dist/index.js.map +1 -1
- package/dist/index.modern.js +29 -3
- package/dist/index.modern.js.map +1 -1
- package/dist/styles/dl-dashboard.scss +19 -4
- package/dist/types/Dashboard.d.ts +2 -0
- package/package.json +93 -93
package/README.md
CHANGED
|
@@ -1,30 +1,30 @@
|
|
|
1
|
-
# logitude-dashboard-library
|
|
2
|
-
|
|
3
|
-
> Made with create-react-library
|
|
4
|
-
|
|
5
|
-
[](https://www.npmjs.com/package/logitude-dashboard-library) [](https://standardjs.com)
|
|
6
|
-
|
|
7
|
-
## Install
|
|
8
|
-
|
|
9
|
-
```bash
|
|
10
|
-
npm install --save logitude-dashboard-library
|
|
11
|
-
```
|
|
12
|
-
|
|
13
|
-
## Usage
|
|
14
|
-
|
|
15
|
-
```tsx
|
|
16
|
-
import React, { Component } from 'react'
|
|
17
|
-
|
|
18
|
-
import MyComponent from 'logitude-dashboard-library'
|
|
19
|
-
import 'logitude-dashboard-library/dist/index.css'
|
|
20
|
-
|
|
21
|
-
class Example extends Component {
|
|
22
|
-
render() {
|
|
23
|
-
return <MyComponent />
|
|
24
|
-
}
|
|
25
|
-
}
|
|
26
|
-
```
|
|
27
|
-
|
|
28
|
-
## License
|
|
29
|
-
|
|
30
|
-
MIT © [logitude](https://github.com/logitude)
|
|
1
|
+
# logitude-dashboard-library
|
|
2
|
+
|
|
3
|
+
> Made with create-react-library
|
|
4
|
+
|
|
5
|
+
[](https://www.npmjs.com/package/logitude-dashboard-library) [](https://standardjs.com)
|
|
6
|
+
|
|
7
|
+
## Install
|
|
8
|
+
|
|
9
|
+
```bash
|
|
10
|
+
npm install --save logitude-dashboard-library
|
|
11
|
+
```
|
|
12
|
+
|
|
13
|
+
## Usage
|
|
14
|
+
|
|
15
|
+
```tsx
|
|
16
|
+
import React, { Component } from 'react'
|
|
17
|
+
|
|
18
|
+
import MyComponent from 'logitude-dashboard-library'
|
|
19
|
+
import 'logitude-dashboard-library/dist/index.css'
|
|
20
|
+
|
|
21
|
+
class Example extends Component {
|
|
22
|
+
render() {
|
|
23
|
+
return <MyComponent />
|
|
24
|
+
}
|
|
25
|
+
}
|
|
26
|
+
```
|
|
27
|
+
|
|
28
|
+
## License
|
|
29
|
+
|
|
30
|
+
MIT © [logitude](https://github.com/logitude)
|
|
@@ -2,6 +2,9 @@
|
|
|
2
2
|
import ColumnChartComponent from "./ChartsComponents/ColumnChartComponent";
|
|
3
3
|
import { ReactWidgetPM } from "../../types/widget";
|
|
4
4
|
declare type DashboardDesignerProps = {
|
|
5
|
+
dashboardLayouts: {
|
|
6
|
+
lg: any[];
|
|
7
|
+
};
|
|
5
8
|
openEditWidget: (widget: ReactWidgetPM) => void;
|
|
6
9
|
};
|
|
7
10
|
declare const DashboardDesigner: (props: DashboardDesignerProps) => JSX.Element;
|
package/dist/index.css
CHANGED
|
@@ -1,13 +1,13 @@
|
|
|
1
|
-
@import "primereact/resources/themes/lara-light-indigo/theme.css";
|
|
2
|
-
@import "primereact/resources/primereact.css";
|
|
3
|
-
@import "primeicons/primeicons.css";
|
|
4
|
-
|
|
5
|
-
@import "react-grid-layout/css/styles";
|
|
6
|
-
@import "react-resizable/css/styles";
|
|
7
|
-
|
|
8
|
-
@import "logitude-dashboard-library/dist/assets/styles/dl-dashboard.scss";
|
|
9
|
-
@import "logitude-dashboard-library/dist/assets/styles/colors.scss";
|
|
10
|
-
@import "logitude-dashboard-library/dist/assets/styles/fonts.scss";
|
|
11
|
-
@import "logitude-dashboard-library/dist/assets/styles/global.scss";
|
|
12
|
-
|
|
1
|
+
@import "primereact/resources/themes/lara-light-indigo/theme.css";
|
|
2
|
+
@import "primereact/resources/primereact.css";
|
|
3
|
+
@import "primeicons/primeicons.css";
|
|
4
|
+
|
|
5
|
+
@import "react-grid-layout/css/styles";
|
|
6
|
+
@import "react-resizable/css/styles";
|
|
7
|
+
|
|
8
|
+
@import "logitude-dashboard-library/dist/assets/styles/dl-dashboard.scss";
|
|
9
|
+
@import "logitude-dashboard-library/dist/assets/styles/colors.scss";
|
|
10
|
+
@import "logitude-dashboard-library/dist/assets/styles/fonts.scss";
|
|
11
|
+
@import "logitude-dashboard-library/dist/assets/styles/global.scss";
|
|
12
|
+
|
|
13
13
|
|
package/dist/index.js
CHANGED
|
@@ -627,11 +627,10 @@ var DashboardDesigner = function DashboardDesigner(props) {
|
|
|
627
627
|
var array12 = Array.from({
|
|
628
628
|
length: 12
|
|
629
629
|
}).fill(null);
|
|
630
|
-
var savedLayouts = getFromStorage("grid-layout");
|
|
631
630
|
var savedWidgets = getFromStorage("grid-widgets");
|
|
632
631
|
var minimumPlaceholderRowsCount = 12;
|
|
633
632
|
|
|
634
|
-
var _useState4 = React.useState(
|
|
633
|
+
var _useState4 = React.useState(props.dashboardLayouts || {
|
|
635
634
|
lg: []
|
|
636
635
|
}),
|
|
637
636
|
layouts = _useState4[0],
|
|
@@ -753,7 +752,7 @@ var DashboardDesigner = function DashboardDesigner(props) {
|
|
|
753
752
|
onLayoutChange: function onLayoutChange(layout, layouts) {
|
|
754
753
|
return _onLayoutChange(layout, layouts);
|
|
755
754
|
}
|
|
756
|
-
}), layouts
|
|
755
|
+
}), layouts.lg.map(function (el) {
|
|
757
756
|
return React__default.createElement("div", {
|
|
758
757
|
key: el.i
|
|
759
758
|
}, React__default.createElement(WidgetCard, {
|
|
@@ -917,15 +916,24 @@ var Dashboard = function Dashboard(props) {
|
|
|
917
916
|
WidgetTypes = _useState5[0],
|
|
918
917
|
setWidgetTypes = _useState5[1];
|
|
919
918
|
|
|
919
|
+
var _useState6 = React.useState({
|
|
920
|
+
lg: []
|
|
921
|
+
}),
|
|
922
|
+
layouts = _useState6[0],
|
|
923
|
+
setLayouts = _useState6[1];
|
|
924
|
+
|
|
920
925
|
var dashboardMoreButtonToggle = React.createRef();
|
|
921
926
|
var dashboardService = new DashBoardService();
|
|
922
927
|
var widgetTypeListService = new WidgetTypeListService();
|
|
923
928
|
React.useEffect(function () {
|
|
924
929
|
getWidgetTypes();
|
|
925
930
|
props.dataBinding.onGetDashboard.subscribe(function (e) {
|
|
931
|
+
console.log('onGetDashboard.subscribe', e);
|
|
926
932
|
setCurrentDashbord(e);
|
|
933
|
+
updateLayouts();
|
|
927
934
|
});
|
|
928
935
|
props.dataBinding.onGetAllDashboard.subscribe(function (e) {
|
|
936
|
+
console.log('onGetAllDashboard.subscribe', e);
|
|
929
937
|
setDashbords(e);
|
|
930
938
|
});
|
|
931
939
|
}, []);
|
|
@@ -958,6 +966,23 @@ var Dashboard = function Dashboard(props) {
|
|
|
958
966
|
console.log(WidgetTypes);
|
|
959
967
|
};
|
|
960
968
|
|
|
969
|
+
var updateLayouts = function updateLayouts() {
|
|
970
|
+
if (!(currentDashbord !== null && currentDashbord !== void 0 && currentDashbord.Widgets)) return;
|
|
971
|
+
var layout = {
|
|
972
|
+
lg: []
|
|
973
|
+
};
|
|
974
|
+
currentDashbord === null || currentDashbord === void 0 ? void 0 : currentDashbord.Widgets.map(function (widget) {
|
|
975
|
+
layout.lg.push({
|
|
976
|
+
i: widget.Id,
|
|
977
|
+
w: widget.EndPosition.split(',')[0],
|
|
978
|
+
h: widget.EndPosition.split(',')[1],
|
|
979
|
+
x: widget.StartPotistion.split(',')[0],
|
|
980
|
+
y: widget.StartPotistion.split(',')[1]
|
|
981
|
+
});
|
|
982
|
+
});
|
|
983
|
+
setLayouts(layout);
|
|
984
|
+
};
|
|
985
|
+
|
|
961
986
|
return React.createElement("div", {
|
|
962
987
|
className: 'dl-full-hight'
|
|
963
988
|
}, React.createElement("div", {
|
|
@@ -1047,6 +1072,7 @@ var Dashboard = function Dashboard(props) {
|
|
|
1047
1072
|
}))) : null)), React.createElement("div", {
|
|
1048
1073
|
className: 'dl-dashboard-body'
|
|
1049
1074
|
}, React.createElement(DashboardDesigner, {
|
|
1075
|
+
dashboardLayouts: layouts,
|
|
1050
1076
|
openEditWidget: function openEditWidget(widget) {
|
|
1051
1077
|
return props.openAddEditWidget(widget);
|
|
1052
1078
|
}
|
package/dist/index.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"index.js","sources":["../src/features/Dashboard/ChartsComponents/ColumnChartComponent.tsx","../src/features/Dashboard/ChartsComponents/PieChartComponent.tsx","../src/features/Dashboard/ChartsComponents/MixedChartComponent.tsx","../src/features/Dashboard/ChartsComponents/AreaChartComponent.tsx","../src/features/Dashboard/ChartsComponents/TimelineChartComponent.tsx","../src/features/Dashboard/ChartsComponents/CandleChartComponent.tsx","../src/common/data-contracts/ApiQueryFilter.ts","../src/services/tools.ts","../src/services/DataService.ts","../src/features/Dashboard/ChartsComponents/BarChartComponent.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":["import React from 'react';\r\n\r\nclass ColumnChartComponent extends React.Component {\r\n constructor(props: {} | Readonly<{}>) {\r\n super(props);\r\n\r\n \r\n }\r\n\r\n\r\n\r\n render() {\r\n return (\r\n\r\n\r\n <div id=\"chart\">\r\n </div>\r\n\r\n\r\n );\r\n }\r\n}\r\n\r\nexport default ColumnChartComponent;","import React from \"react\";\r\n\r\n\r\n\r\nexport class PieChartComponent extends React.Component {\r\n constructor(props: {} | Readonly<{}>) {\r\n super(props);\r\n }\r\n\r\n render() {\r\n return (\r\n <div>\r\n </div>\r\n );\r\n }\r\n}\r\n\r\nexport default PieChartComponent;\r\n","import React from \"react\";\r\n\r\nclass MixedChartComponent extends React.Component {\r\n constructor(props: {} | Readonly<{}>) {\r\n super(props);\r\n }\r\n\r\n render() {\r\n return <div id=\"chart\"></div>;\r\n }\r\n}\r\n\r\nexport default MixedChartComponent;\r\n","import React from 'react'\r\nimport ReactApexChart from 'react-apexcharts'\r\nimport { ChartComponentProps } from '../../../types/ChartComponentProps'\r\nimport { ChartComponentState } from '../../../types/ChartComponentState'\r\n\r\nclass AreaChartComponent extends React.Component<\r\nChartComponentProps,\r\nChartComponentState\r\n> {\r\n constructor(props: ChartComponentProps | Readonly<ChartComponentProps>) {\r\n super(props)\r\n\r\n this.state = {\r\n series: [\r\n {\r\n name: 'series1',\r\n data: [31, 40, 28, 51, 42, 109, 100],\r\n },\r\n {\r\n name: 'series2',\r\n data: [11, 32, 45, 32, 34, 52, 41],\r\n },\r\n ],\r\n options: {\r\n chart: {\r\n height: 350,\r\n type: 'area',\r\n },\r\n colors: ['#22D792','#2C99F7','#FBC445','#F74E49','#717585'] ,\r\n\r\n dataLabels: {\r\n enabled: false,\r\n },\r\n stroke: {\r\n curve: 'smooth',\r\n },\r\n xaxis: {\r\n type: 'datetime',\r\n categories: [\r\n '2018-09-19T00:00:00.000Z',\r\n '2018-09-19T01:30:00.000Z',\r\n '2018-09-19T02:30:00.000Z',\r\n '2018-09-19T03:30:00.000Z',\r\n '2018-09-19T04:30:00.000Z',\r\n '2018-09-19T05:30:00.000Z',\r\n '2018-09-19T06:30:00.000Z',\r\n ],\r\n },\r\n tooltip: {\r\n x: {\r\n format: 'dd/MM/yy HH:mm',\r\n },\r\n },\r\n },\r\n }\r\n }\r\n\r\n render() {\r\n return (\r\n <div id=\"chart\">\r\n {this.props.dateFilter && <div className=\"filter-label\"> Date: {this.props.dateFilter.toLocaleDateString(\"en-US\")+''}</div>}\r\n\r\n <ReactApexChart\r\n options={this.state.options}\r\n series={this.state.series}\r\n type=\"area\"\r\n height={'100%'}\r\n />\r\n </div>\r\n )\r\n }\r\n}\r\n\r\nexport default AreaChartComponent;\r\n","import React from \"react\";\r\n\r\nclass TimelineChartComponent extends React.Component {\r\n constructor(props: {} | Readonly<{}>) {\r\n super(props);\r\n }\r\n\r\n render() {\r\n return <div id=\"chart\"></div>;\r\n }\r\n}\r\n\r\nexport default TimelineChartComponent;\r\n","import React from 'react'\r\n\r\nclass CandleChartComponent extends React.Component {\r\n\r\n constructor(props: {} | Readonly<{}>) {\r\n super(props);\r\n\r\n \r\n }\r\n\r\n\r\n\r\n render() {\r\n return (\r\n\r\n\r\n <div id=\"chart\">\r\n </div>\r\n\r\n\r\n );\r\n }\r\n}\r\n\r\nexport default CandleChartComponent\r\n","export class ApiQueryFilters {\r\n\r\n public PageIndex: number | null = null;\r\n public PageSize: number | null = null;\r\n public SortBy: string | null = null;\r\n public SortDirection: string | null = null;\r\n public GetCount: boolean | null = null;\r\n public Tenant: number | null = null;\r\n public AdditionalFilters: FilterItem[] = [];\r\n public ForceCacheRefresh: boolean = false;\r\n public DontApplyVirtualization: boolean = false;\r\n\r\n \r\n\r\n addAdditionalFilter(\r\n FieldName: string,\r\n FieldValue: any,\r\n FieldValue2: any,\r\n FieldValue3: any,\r\n Operator: string,\r\n IsCustom: boolean,\r\n DisplayInList: boolean,\r\n IsCustomField: boolean,\r\n FieldDataType: string,\r\n IgnoreFilter: boolean = false,\r\n IsCacheOnClient: boolean = false,\r\n ForceEnableAdd:boolean = false) {\r\n\r\n let params=new ApiQueryFiltersAddParams();\r\n params.FieldName=FieldName;\r\n params.FieldValue=FieldValue;\r\n params.FieldValue2=FieldValue2;\r\n params.FieldValue3=FieldValue3;\r\n params.Operator=Operator;\r\n params.IsCustom=IsCustom;\r\n params.DisplayInList=DisplayInList;\r\n params.IsCustomField=IsCustomField;\r\n params.FieldDataType=FieldDataType;\r\n params.IgnoreFilter=IgnoreFilter;\r\n params.IsCacheOnClient=IsCacheOnClient;\r\n params.ForceEnableAdd=ForceEnableAdd;\r\n this.pushAdditionalFilter(params);\r\n }\r\n myReplace(myString: string) {\r\n var myNewString = \"\";\r\n for (var i = 0; i < myString.length; i++)\r\n {\r\n if (myString[i] == '\"') {\r\n myNewString = myNewString + '\\\\\"';\r\n }\r\n else {\r\n myNewString = myNewString + myString[i];\r\n }\r\n }\r\n return myNewString;\r\n }\r\n removeAdditionalFilter(FieldName: string) {\r\n var item = this.AdditionalFilters.filter(d=> d.FieldName == FieldName && d.IsLookUpfilter==true)[0];\r\n if (item) {\r\n var index = this.AdditionalFilters.indexOf(item);\r\n this.AdditionalFilters.splice(index, 1);\r\n }\r\n }\r\n \r\n pushAdditionalFilter(params:ApiQueryFiltersAddParams){\r\n if (!params.IsCacheOnClient) {\r\n if (typeof (params.FieldValue) === \"string\") {\r\n if (params.FieldValue)\r\n params.FieldValue = this.myReplace(params.FieldValue);//FieldValue.replace('\"', '\\\\\"');\r\n if (params.FieldName != \"ImportersFilter\")\r\n params.FieldValue = encodeURIComponent(params.FieldValue)\r\n //FieldValue = FieldValue.replace(\"%22\", \"\\%22\");\r\n }\r\n if (typeof (params.FieldValue2) === \"string\") {\r\n if (params.FieldValue)\r\n params.FieldValue2 = this.myReplace(params.FieldValue2);//.replace('\"', '\\\\\"');\r\n params.FieldValue2 = encodeURIComponent(params.FieldValue2)\r\n //FieldValue = FieldValue.replace(\"%20\", \" \");\r\n }\r\n if (typeof (params.FieldValue3) === \"string\") {\r\n if (params.FieldValue)\r\n params.FieldValue3 = this.myReplace(params.FieldValue3);//FieldValue3.replace('\"', '\\\\\"');\r\n params.FieldValue3 = encodeURIComponent(params.FieldValue3)\r\n //FieldValue = FieldValue.replace(\"%20\", \" \");\r\n }\r\n }\r\n var existedItem = this.AdditionalFilters.find(d => d.FieldName == params.FieldName);\r\n if (!existedItem || params.ForceEnableAdd) {\r\n var item = new FilterItem(\r\n params.FieldName,\r\n params.FieldValue, \r\n params.FieldValue2,\r\n params.FieldValue3,\r\n params.Operator,\r\n params.IsCustom,\r\n params.DisplayInList,\r\n params.IsCustomField, \r\n params.FieldDataType,\r\n params.IgnoreFilter,\r\n params.IsCacheOnClient,\r\n params.IsLookUpFilter);\r\n this.AdditionalFilters.push(item);\r\n }\r\n }\r\n\r\n public queryId: string = '';\r\n public queryCode: string = '';\r\n\r\n public userid: string = '';\r\n public ObjectTableName: string = '';\r\n\r\n public Filter1Name: string | null = null;\r\n public Filter1Value: any;\r\n public Filter1Operator: string | null = null;\r\n public Filter1Value2: any;\r\n\r\n public Filter2Name: any;\r\n public Filter2Value: any;\r\n public Filter2Operator: any;\r\n public Filter2Value2: any;\r\n\r\n public Filter3Name: any;\r\n public Filter3Value: any;\r\n public Filter3Operator: any;\r\n public Filter3Value2: any;\r\n\r\n public Filter4Name: any;\r\n public Filter4Value: any;\r\n public Filter4Operator: any;\r\n public Filter4Value2: any;\r\n\r\n public Filter5Name: any;\r\n public Filter5Value: any;\r\n public Filter5Operator: any;\r\n public Filter5Value2: any;\r\n\r\n public Filter6Name: any;\r\n public Filter6Value: any;\r\n public Filter6Operator: any;\r\n public Filter6Value2: any;\r\n\r\n public Filter7Name: any;\r\n public Filter7Value: any;\r\n public Filter7Operator: any;\r\n public Filter7Value2: any;\r\n\r\n public Filter8Name: any;\r\n public Filter8Value: any;\r\n public Filter8Operator: any;\r\n public Filter8Value2: any;\r\n\r\n public Filter9Name: any;\r\n public Filter9Value: any;\r\n public Filter9Operator: any;\r\n public Filter9Value2: any;\r\n\r\n public Filter10Name: any;\r\n public Filter10Value: any;\r\n public Filter10Operator: any;\r\n public Filter10Value2: any;\r\n\r\n public GetAll: boolean = true;\r\n\r\n \r\n}\r\n\r\nexport class FilterItem {\r\n constructor(\r\n public FieldName: string,\r\n public FieldValue: any,\r\n public FieldValue2: any,\r\n public FieldValue3: any,\r\n public Operator: string,\r\n public IsCustom: boolean,\r\n public DisplayInList: boolean,\r\n public IsCustomField: boolean,\r\n public FieldDataType: string,\r\n public IgnoreFilter: boolean,\r\n public IsCacheOnClient: boolean = false,\r\n public IsLookUpfilter:boolean=false) { }\r\n \r\n\r\n}\r\nexport class ApiQueryFiltersAddParams{\r\n FieldName: string = '';\r\n FieldValue: any;\r\n FieldValue2: any;\r\n FieldValue3: any;\r\n Operator: string = '';\r\n IsCustom: boolean = false;\r\n DisplayInList: boolean = false;\r\n IsCustomField: boolean = false;\r\n FieldDataType: string = '';\r\n IgnoreFilter: boolean = false;\r\n IsCacheOnClient: boolean = false;\r\n ForceEnableAdd:boolean = false;\r\n IsLookUpFilter:boolean=false;\r\n}\r\n","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 axios from \"axios\";\r\nimport { ApiQueryFilters } from \"../common/data-contracts/ApiQueryFilter\";\r\nimport { Tools } from './tools';\r\n\r\n\r\nexport class DataService{ \r\n private _apiUrl: string;\r\n constructor(){\r\n this._apiUrl = Tools.GetLogitudeURL() ;\r\n }\r\n getObjectTables(filters: ApiQueryFilters){\r\n let token: string = this.getTokenFromStorage();\r\n\r\n\t\tvar apiURL = `${this._apiUrl}/api/ObjectTableViews/getbyfilters?`;\r\n\t\tapiURL = this.ConcatFiltersToURL(filters, apiURL);\r\n return axios.get(apiURL, { headers: { 'Content-Type': 'application/json', 'Token': token } });\r\n }\r\n\r\n getObjectFields(filters: ApiQueryFilters) {\r\n \r\n let token: string = this.getTokenFromStorage();\r\n\r\n\t\tvar apiURL = `${this._apiUrl}/api/ObjectFieldViews/getbyfilters?`;\r\n\t\tapiURL = this.ConcatFiltersToURL(filters, apiURL);\r\n\r\n return axios.get(apiURL, { headers: { 'Content-Type': 'application/json', 'Token': token } });\r\n }\r\n\r\n getDataByFilters(filters: ApiQueryFilters,tableName: string) {\r\n \r\n let token: string = this.getTokenFromStorage();\r\n\r\n\t\tvar apiURL = `${this._apiUrl}/api/${tableName}Views/getbyfilters?`;\r\n\t\tapiURL = this.ConcatFiltersToURL(filters, apiURL);\r\n\r\n return axios.get(apiURL, { headers: { 'Content-Type': 'application/json', 'Token': token } });\r\n }\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\r\n getTokenFromStorage(){\r\n return window.localStorage.getItem(\"token\") || '';\r\n }\r\n}","import React from \"react\";\r\nimport ReactApexChart from \"react-apexcharts\";\r\nimport { ApiQueryFilters } from \"../../../common/data-contracts/ApiQueryFilter\";\r\nimport { DataService } from \"../../../services/DataService\";\r\nimport { ChartComponentProps } from \"../../../types/ChartComponentProps\";\r\nimport { ChartComponentState } from \"../../../types/ChartComponentState\";\r\n\r\n\r\n\r\n\r\n\r\nclass BarChartComponent extends React.Component<\r\n ChartComponentProps,\r\n ChartComponentState\r\n> {\r\n\r\n data: any[] = [];\r\n constructor(props: ChartComponentProps | Readonly<ChartComponentProps>) {\r\n super(props);\r\n const filters = new ApiQueryFilters();\r\n const dataService = new DataService();\r\n if (this.props.widget?.Title)\r\n dataService.getDataByFilters(filters, this.props.widget.Title || '')\r\n .then((response: any) => {\r\n console.log(\"dataService.getDataByFilters\", response);\r\n this.data = response.data.Result;\r\n this.InitChart();\r\n })\r\n\r\n\r\n this.state = {\r\n series: [\r\n {\r\n data: [],\r\n },\r\n ],\r\n options: {\r\n chart: {\r\n type: \"bar\",\r\n height: 350,\r\n events: {\r\n dataPointSelection: function (event, chartContext, config) {\r\n const data = config.w.config.xaxis.categories[config.seriesIndex];\r\n console.log(\"Selected \" + data);\r\n },\r\n },\r\n },\r\n colors: [\"#22D792\", \"#2C99F7\", \"#FBC445\", \"#F74E49\", \"#717585\"],\r\n plotOptions: {\r\n bar: {\r\n borderRadius: 4,\r\n horizontal: true,\r\n },\r\n },\r\n dataLabels: {\r\n enabled: false,\r\n },\r\n xaxis: {\r\n categories: [],\r\n },\r\n },\r\n };\r\n\r\n }\r\n\r\n\r\n private InitChart() {\r\n const groups = this.GroupItems();\r\n\r\n\r\n const catItems = Object.keys(groups);\r\n const dataItems: any[] = Object.values(groups);\r\n\r\n\r\n this.setState({\r\n series: [\r\n {\r\n data: dataItems,\r\n },\r\n ],\r\n options: {\r\n chart: {\r\n type: \"bar\",\r\n height: 350,\r\n events: {\r\n dataPointSelection: function (event, chartContext, config) {\r\n const data = config.w.config.xaxis.categories[config.seriesIndex];\r\n console.log(\"Selected \" + data);\r\n },\r\n },\r\n },\r\n colors: [\"#22D792\", \"#2C99F7\", \"#FBC445\", \"#F74E49\", \"#717585\"],\r\n plotOptions: {\r\n bar: {\r\n borderRadius: 4,\r\n horizontal: true,\r\n },\r\n },\r\n dataLabels: {\r\n enabled: false,\r\n },\r\n xaxis: {\r\n categories: catItems,\r\n },\r\n },\r\n });\r\n }\r\n // private GroupItems()\r\n // {\r\n // return this.data.reduce((groups, record) =>\r\n // {\r\n // const fieldName = this.props.widget.ValueFieldName + '';\r\n\r\n // const group = (groups[record] || []);\r\n // group.push(record);\r\n\r\n // const recordCategory = record[this.props.widget.ValueFieldName + ''];\r\n // groups[record[fieldName]] = groups[recordCategory] + 1 || 0;\r\n // return groups;\r\n // }, {});\r\n // }\r\n private GroupItems() {\r\n let groups = this.data.reduce((groups, record) => {\r\n const CreateGroup = (groups: any, record: any) => {\r\n const group = (groups[record] || []);\r\n group.push(record);\r\n }\r\n const SetGroupData = () => {\r\n const groupByFieldName = this.props.widget.GroupBy + \"\";\r\n // const valueFieldName = this.props.widget.ValueFieldName + \"\";\r\n const recordCategory = record[groupByFieldName];\r\n // const recordValue = record[valueFieldName];\r\n let currentGroupValue = groups[record[groupByFieldName]];\r\n\r\n // switch (this.props.widget.) {\r\n // case \"Count\": {\r\n // if (!currentGroupValue) currentGroupValue = 0;\r\n // currentGroupValue = currentGroupValue + 1;\r\n // break;\r\n // }\r\n // case \"Sum\": {\r\n // if (!currentGroupValue) currentGroupValue = 0;\r\n // currentGroupValue = currentGroupValue + recordValue;\r\n // break;\r\n // }\r\n // case \"Max\": {\r\n // if (!currentGroupValue) currentGroupValue = -9999999999999;\r\n\r\n // if (recordValue > currentGroupValue)\r\n // currentGroupValue = recordValue;\r\n // break;\r\n // }\r\n // case \"Min\": {\r\n // if (!currentGroupValue) currentGroupValue = 9999999999999;\r\n\r\n // if (recordValue < currentGroupValue)\r\n // currentGroupValue = recordValue;\r\n // break;\r\n // }\r\n // case \"Average\": {\r\n // if (!currentGroupValue) currentGroupValue = [];\r\n // currentGroupValue.push(recordValue);\r\n // break;\r\n // }\r\n // }\r\n\r\n groups[record[groupByFieldName]] = currentGroupValue;\r\n };\r\n\r\n CreateGroup(groups, record);\r\n SetGroupData();\r\n return groups;\r\n }, {});\r\n\r\n // if (this.props.widget.CalcType == \"Average\") {\r\n // for (const key in groups) {\r\n // if (Object.prototype.hasOwnProperty.call(groups, key)) {\r\n // const groupArray: any[] = groups[key];\r\n // let sum = groupArray.reduce((a, b) => a + (b[key] || 0), 0);\r\n // let avg = sum / groupArray.length;\r\n // groups[key] = avg;\r\n // }\r\n // }\r\n // }\r\n return groups;\r\n }\r\n\r\n render() {\r\n return (\r\n\r\n <div id=\"chart\">\r\n <div>\r\n {this.props.dateFilter && <div className=\"filter-label\"> Date: {this.props.dateFilter.toLocaleDateString(\"en-US\") + ''}</div>}\r\n </div>\r\n {/* <div>\r\n {this.props.widget?.EntityName}: {this.props.widget?.CalcType} of {this.props.widget?.ValueFieldName} \r\n </div> */}\r\n <ReactApexChart\r\n options={this.state.options}\r\n series={this.state.series}\r\n type=\"bar\"\r\n height={\"100%\"}\r\n />\r\n </div>\r\n );\r\n }\r\n}\r\n\r\nexport default BarChartComponent;\r\n","import { stat } from \"fs\";\r\nimport { Button } from \"primereact/button\";\r\nimport { OverlayPanel } from \"primereact/overlaypanel\";\r\nimport React, { useRef, useState } from \"react\";\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: any | 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\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\r\n return (\r\n <div className=\"panel\" key={props.el.i}>\r\n <header>\r\n <h1>{props.widget?.WidgetName || \"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=\"dashboard-widget\">\r\n {React.createElement(\r\n widgetComponents.find((wc) => wc.type === props.widget.WidgetType)\r\n ?.component,\r\n {\r\n key: props.el.i,\r\n dateFilter: props.dateFilter,\r\n widget: props.widget,\r\n }\r\n )}\r\n </div>\r\n </div>\r\n );\r\n};\r\n\r\nexport default WidgetCard;\r\n","\r\n\r\nimport { WidthProvider, Responsive } 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 openEditWidget:(widget: ReactWidgetPM) => 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 array12 = Array.from({ length: 12 }).fill(null);\r\n var savedLayouts = getFromStorage(\"grid-layout\");\r\n var savedWidgets = getFromStorage(\"grid-widgets\");\r\n const minimumPlaceholderRowsCount = 12;\r\n const [layouts, setLayouts] = useState(savedLayouts || { 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 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) {\r\n console.log(layout, layouts);\r\n saveToStorage(\"grid-layout\", layouts);\r\n saveToStorage(\"grid-widgets\", widgets);\r\n setLayouts(layouts);\r\n UpdatePlaceholderDimensions();\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(i) {\r\n let layout = layouts[\"lg\"];\r\n var itemIndex = layout.findIndex((d) => d.i === i);\r\n layout.splice(itemIndex, 1);\r\n setLayouts({ lg: [...layout] });\r\n setWidgets(_.reject(widgets, { i: i }));\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 {layouts[\"lg\"].map((el) =>\r\n\r\n <div key={el.i}>\r\n <WidgetCard\r\n key={el.i}\r\n widget={FindWidget(el)}\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 </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'\nimport { Card } from 'primereact/card';\nimport { Button } from \"primereact/button\";\nimport DashboardDesigner from './features/Dashboard/DashboardDesigner'\nimport \"./styles.module.css\"\nimport { Dropdown } from 'primereact/dropdown';\nimport { createRef, useEffect, useRef, useState } from \"react\";\nimport { DashBoardService } from './services/DashBoardService';\nimport { ApiQueryFilters } from './common/data-contracts/ApiQueryFilter';\nimport { ReactDashboardPM } from './types/Dashboard';\nimport { Dialog } from 'primereact/dialog';\nimport DashboardDialogComponent from './features/Dashboard/dashboard-dialog/dashboard-dialog-component';\nimport { Session } from './services/session';\nimport { WidgetTypeListService } from './services/WidgetTypeListService';\nimport { WidgetType } from './types/WidgetType';\nimport { ReactWidgetPM } from './types/widget';\nimport { OverlayPanel } from 'primereact/overlaypanel';\nimport { Ripple } from 'primereact/ripple';\nimport { DashboardDataBinding } from './types/DashboardDataBinding';\ntype DashboardProps = {\n token: string,\n tenant: number,\n userId: string,\n dataBinding:DashboardDataBinding,\n openAddEditWidget: (widget: ReactWidgetPM | undefined) => void,\n openAddEditDashboard: (dashboard: ReactDashboardPM | undefined) => void,\n onChangeDashboard: (dashboard: ReactDashboardPM | undefined) => void,\n onSaveDashboard: (dashboard: ReactDashboardPM | undefined) => void,\n};\nconst Dashboard = (props: DashboardProps) => {\n const [dashbords, setDashbords] = useState<ReactDashboardPM[]>([]);\n const [currentDashbord, setCurrentDashbord] = useState<ReactDashboardPM | undefined>(undefined);\n const [selectedWidget, setSelectedWidget] = useState();\n const [isInEditMode, setIsInEditMode] = useState<boolean>(false);\n const [WidgetTypes, setWidgetTypes] = useState<WidgetType[]>();\n const dashboardMoreButtonToggle = createRef<OverlayPanel>();\n const dashboardService = new DashBoardService();\n const widgetTypeListService = new WidgetTypeListService();\n useEffect(() => {\n getWidgetTypes();\n\n props.dataBinding.onGetDashboard.subscribe(e=>{\n setCurrentDashbord(e);\n })\n props.dataBinding.onGetAllDashboard.subscribe(e=>{\n setDashbords(e);\n })\n\n }, [])\n\n Session.CurrentUserId = props.userId;\n Session.Tenant = props.tenant;\n Session.Token = props.token;\n if (props?.token?.length > 0)\n localStorage.setItem(\"token\", props?.token);\n\n\n const getWidgetTypes = () => {\n widgetTypeListService.getAll().then(data => {\n setWidgetTypes(data.data);\n });\n }\n const EditDashBoard = () => {\n props.openAddEditDashboard(currentDashbord);\n dashboardMoreButtonToggle?.current?.hide();\n \n }\n const addWidget = (widgetCode) => {\n props.openAddEditWidget({ TypeCode: widgetCode } as ReactWidgetPM);\n \n }\n\n const editDesign = () => {\n setIsInEditMode(true)\n dashboardMoreButtonToggle?.current?.hide();\n console.log(WidgetTypes)\n }\n\n return (\n <div className='dl-full-hight'>\n\n <div className='dl-dashboard-header dl-card'>\n <div className='dl-flex-row'>\n <div className='dl-title-1'>{currentDashbord?.Name}</div>\n <Button\n icon=\"pi pi-ellipsis-v\"\n onClick={(e) => dashboardMoreButtonToggle?.current?.toggle(e)}\n className=\"p-button-lg p-button-rounded p-button-text\"\n >\n <Ripple />\n </Button>\n <OverlayPanel ref={dashboardMoreButtonToggle} className=\"buttons-overlay\">\n <div className=\"buttons-list\">\n <div onClick={() => EditDashBoard()}>Edit</div>\n <div onClick={editDesign}>Edit Design</div>\n\n </div>\n </OverlayPanel >\n </div>\n <div className='dl-flex-row'>\n {!isInEditMode ?\n <div className='dl-flex-row'>\n \n\n <div style={{ width: \"210px\" }}>\n <Dropdown\n value={[]}\n options={dashbords}\n optionValue=\"Id\"\n optionLabel=\"Name\"\n onChange={(e) => { }}\n placeholder=\"Choose Dashboard\"\n optionDisabled={(option) => {\n return option?.Disabled;\n }}\n scrollHeight=\"300px\"\n />\n </div>\n <Button icon=\"pi pi-plus\" onClick={() => props.openAddEditDashboard(undefined)}\n className=\"dl-dashboard-add p-button-rounded p-button-success\" aria-label=\"Search\" />\n </div>\n : null}\n {/* <DashboardDialogComponent display={displayAddDashboard} onClose={onDashboardDialogClose}></DashboardDialogComponent> */}\n\n\n\n {isInEditMode ?\n <div className='dl-flex-row'>\n \n <Button\n label=\"Cancel\"\n className=\"p-button-text\"\n onClick={() => {setIsInEditMode(false) }}\n />\n <Button\n label=\"Save\"\n form=\"frm\"\n // icon=\"pi pi-check\"\n onClick={() => { setIsInEditMode(false)}}\n autoFocus\n />\n\n <div style={{ width: '192px',marginLeft:'15px'}}>\n <Dropdown\n value={selectedWidget}\n options={WidgetTypes}\n optionValue=\"Code\"\n optionLabel=\"Name\"\n onChange={(e) => addWidget(e.value)}\n placeholder=\"Add Component\"\n optionDisabled={(option) => {\n return option?.Disabled;\n }}\n scrollHeight=\"300px\"\n />\n </div>\n </div>\n : null}\n </div>\n\n\n </div>\n\n <div className='dl-dashboard-body'>\n <DashboardDesigner openEditWidget={(widget: ReactWidgetPM) => props.openAddEditWidget(widget)} ></DashboardDesigner>\n </div>\n </div >\n\n )\n}\nexport default Dashboard;"],"names":["ColumnChartComponent","props","render","React","id","Component","PieChartComponent","MixedChartComponent","AreaChartComponent","state","series","name","data","options","chart","height","type","colors","dataLabels","enabled","stroke","curve","xaxis","categories","tooltip","x","format","dateFilter","className","toLocaleDateString","ReactApexChart","TimelineChartComponent","CandleChartComponent","ApiQueryFilters","addAdditionalFilter","FieldName","FieldValue","FieldValue2","FieldValue3","Operator","IsCustom","DisplayInList","IsCustomField","FieldDataType","IgnoreFilter","IsCacheOnClient","ForceEnableAdd","params","ApiQueryFiltersAddParams","pushAdditionalFilter","myReplace","myString","myNewString","i","length","removeAdditionalFilter","item","AdditionalFilters","filter","d","IsLookUpfilter","index","indexOf","splice","encodeURIComponent","existedItem","find","FilterItem","IsLookUpFilter","push","Tools","GetLogitudeURL","logitude_url","location","href","replace","urlArr","split","url","substring","lastIndexOf","DataService","_apiUrl","getObjectTables","filters","token","getTokenFromStorage","apiURL","ConcatFiltersToURL","axios","get","headers","getObjectFields","getDataByFilters","tableName","urlparameters","mykeys","Object","keys","addtionalFiltersValues","propName","propValue","ignoreFilter","concat","JSON","stringify","window","localStorage","getItem","BarChartComponent","dataService","widget","Title","then","response","console","log","Result","InitChart","events","dataPointSelection","event","chartContext","config","w","seriesIndex","plotOptions","bar","borderRadius","horizontal","groups","GroupItems","catItems","dataItems","values","setState","reduce","record","CreateGroup","group","SetGroupData","groupByFieldName","GroupBy","currentGroupValue","WidgetCard","moreBtnToggle","useRef","widgetComponents","component","key","el","WidgetName","Button","icon","onClick","e","current","toggle","OverlayPanel","ref","editBtnClicked","deleteBtnClicked","createElement","wc","WidgetType","ResponsiveReactGridLayout","WidthProvider","Responsive","DashboardDesigner","useState","createRef","array12","Array","from","fill","savedLayouts","getFromStorage","savedWidgets","minimumPlaceholderRowsCount","lg","layouts","setLayouts","placeholderRowsArray","setplaceholderRowsArray","showMsg","setShowMsg","undefined","widgets","setWidgets","placeholderRows","setPlaceholderRows","onLayoutChange","layout","saveToStorage","UpdatePlaceholderDimensions","deletePanel","itemIndex","findIndex","_","reject","SaveGrid","editWidget","openEditWidget","FindWidget","value","setTimeout","setItem","parse","gridLayout","document","getElementsByClassName","gridElementHeight","clientHeight","newPlaceholderRows","Math","floor","layoutGridProps","rowHeight","map","style","compactType","onWidthChange","cols","md","sm","xs","xxs","useCSSTransforms","ApiServices","getByFilters","api","post","date","DashBoardService","_ApiServices","add","WidgetTypeListService","getAll","Dashboard","dashbords","setDashbords","currentDashbord","setCurrentDashbord","selectedWidget","isInEditMode","setIsInEditMode","WidgetTypes","setWidgetTypes","dashboardMoreButtonToggle","dashboardService","widgetTypeListService","useEffect","getWidgetTypes","dataBinding","onGetDashboard","subscribe","onGetAllDashboard","EditDashBoard","openAddEditDashboard","hide","addWidget","widgetCode","openAddEditWidget","TypeCode","editDesign","Name","Ripple","width","Dropdown","optionValue","optionLabel","onChange","placeholder","optionDisabled","option","Disabled","scrollHeight","label","form","autoFocus","marginLeft"],"mappings":"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"}
|
|
1
|
+
{"version":3,"file":"index.js","sources":["../src/features/Dashboard/ChartsComponents/ColumnChartComponent.tsx","../src/features/Dashboard/ChartsComponents/PieChartComponent.tsx","../src/features/Dashboard/ChartsComponents/MixedChartComponent.tsx","../src/features/Dashboard/ChartsComponents/AreaChartComponent.tsx","../src/features/Dashboard/ChartsComponents/TimelineChartComponent.tsx","../src/features/Dashboard/ChartsComponents/CandleChartComponent.tsx","../src/common/data-contracts/ApiQueryFilter.ts","../src/services/tools.ts","../src/services/DataService.ts","../src/features/Dashboard/ChartsComponents/BarChartComponent.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":["import React from 'react';\r\n\r\nclass ColumnChartComponent extends React.Component {\r\n constructor(props: {} | Readonly<{}>) {\r\n super(props);\r\n\r\n \r\n }\r\n\r\n\r\n\r\n render() {\r\n return (\r\n\r\n\r\n <div id=\"chart\">\r\n </div>\r\n\r\n\r\n );\r\n }\r\n}\r\n\r\nexport default ColumnChartComponent;","import React from \"react\";\r\n\r\n\r\n\r\nexport class PieChartComponent extends React.Component {\r\n constructor(props: {} | Readonly<{}>) {\r\n super(props);\r\n }\r\n\r\n render() {\r\n return (\r\n <div>\r\n </div>\r\n );\r\n }\r\n}\r\n\r\nexport default PieChartComponent;\r\n","import React from \"react\";\r\n\r\nclass MixedChartComponent extends React.Component {\r\n constructor(props: {} | Readonly<{}>) {\r\n super(props);\r\n }\r\n\r\n render() {\r\n return <div id=\"chart\"></div>;\r\n }\r\n}\r\n\r\nexport default MixedChartComponent;\r\n","import React from 'react'\r\nimport ReactApexChart from 'react-apexcharts'\r\nimport { ChartComponentProps } from '../../../types/ChartComponentProps'\r\nimport { ChartComponentState } from '../../../types/ChartComponentState'\r\n\r\nclass AreaChartComponent extends React.Component<\r\nChartComponentProps,\r\nChartComponentState\r\n> {\r\n constructor(props: ChartComponentProps | Readonly<ChartComponentProps>) {\r\n super(props)\r\n\r\n this.state = {\r\n series: [\r\n {\r\n name: 'series1',\r\n data: [31, 40, 28, 51, 42, 109, 100],\r\n },\r\n {\r\n name: 'series2',\r\n data: [11, 32, 45, 32, 34, 52, 41],\r\n },\r\n ],\r\n options: {\r\n chart: {\r\n height: 350,\r\n type: 'area',\r\n },\r\n colors: ['#22D792','#2C99F7','#FBC445','#F74E49','#717585'] ,\r\n\r\n dataLabels: {\r\n enabled: false,\r\n },\r\n stroke: {\r\n curve: 'smooth',\r\n },\r\n xaxis: {\r\n type: 'datetime',\r\n categories: [\r\n '2018-09-19T00:00:00.000Z',\r\n '2018-09-19T01:30:00.000Z',\r\n '2018-09-19T02:30:00.000Z',\r\n '2018-09-19T03:30:00.000Z',\r\n '2018-09-19T04:30:00.000Z',\r\n '2018-09-19T05:30:00.000Z',\r\n '2018-09-19T06:30:00.000Z',\r\n ],\r\n },\r\n tooltip: {\r\n x: {\r\n format: 'dd/MM/yy HH:mm',\r\n },\r\n },\r\n },\r\n }\r\n }\r\n\r\n render() {\r\n return (\r\n <div id=\"chart\">\r\n {this.props.dateFilter && <div className=\"filter-label\"> Date: {this.props.dateFilter.toLocaleDateString(\"en-US\")+''}</div>}\r\n\r\n <ReactApexChart\r\n options={this.state.options}\r\n series={this.state.series}\r\n type=\"area\"\r\n height={'100%'}\r\n />\r\n </div>\r\n )\r\n }\r\n}\r\n\r\nexport default AreaChartComponent;\r\n","import React from \"react\";\r\n\r\nclass TimelineChartComponent extends React.Component {\r\n constructor(props: {} | Readonly<{}>) {\r\n super(props);\r\n }\r\n\r\n render() {\r\n return <div id=\"chart\"></div>;\r\n }\r\n}\r\n\r\nexport default TimelineChartComponent;\r\n","import React from 'react'\r\n\r\nclass CandleChartComponent extends React.Component {\r\n\r\n constructor(props: {} | Readonly<{}>) {\r\n super(props);\r\n\r\n \r\n }\r\n\r\n\r\n\r\n render() {\r\n return (\r\n\r\n\r\n <div id=\"chart\">\r\n </div>\r\n\r\n\r\n );\r\n }\r\n}\r\n\r\nexport default CandleChartComponent\r\n","export class ApiQueryFilters {\r\n\r\n public PageIndex: number | null = null;\r\n public PageSize: number | null = null;\r\n public SortBy: string | null = null;\r\n public SortDirection: string | null = null;\r\n public GetCount: boolean | null = null;\r\n public Tenant: number | null = null;\r\n public AdditionalFilters: FilterItem[] = [];\r\n public ForceCacheRefresh: boolean = false;\r\n public DontApplyVirtualization: boolean = false;\r\n\r\n \r\n\r\n addAdditionalFilter(\r\n FieldName: string,\r\n FieldValue: any,\r\n FieldValue2: any,\r\n FieldValue3: any,\r\n Operator: string,\r\n IsCustom: boolean,\r\n DisplayInList: boolean,\r\n IsCustomField: boolean,\r\n FieldDataType: string,\r\n IgnoreFilter: boolean = false,\r\n IsCacheOnClient: boolean = false,\r\n ForceEnableAdd:boolean = false) {\r\n\r\n let params=new ApiQueryFiltersAddParams();\r\n params.FieldName=FieldName;\r\n params.FieldValue=FieldValue;\r\n params.FieldValue2=FieldValue2;\r\n params.FieldValue3=FieldValue3;\r\n params.Operator=Operator;\r\n params.IsCustom=IsCustom;\r\n params.DisplayInList=DisplayInList;\r\n params.IsCustomField=IsCustomField;\r\n params.FieldDataType=FieldDataType;\r\n params.IgnoreFilter=IgnoreFilter;\r\n params.IsCacheOnClient=IsCacheOnClient;\r\n params.ForceEnableAdd=ForceEnableAdd;\r\n this.pushAdditionalFilter(params);\r\n }\r\n myReplace(myString: string) {\r\n var myNewString = \"\";\r\n for (var i = 0; i < myString.length; i++)\r\n {\r\n if (myString[i] == '\"') {\r\n myNewString = myNewString + '\\\\\"';\r\n }\r\n else {\r\n myNewString = myNewString + myString[i];\r\n }\r\n }\r\n return myNewString;\r\n }\r\n removeAdditionalFilter(FieldName: string) {\r\n var item = this.AdditionalFilters.filter(d=> d.FieldName == FieldName && d.IsLookUpfilter==true)[0];\r\n if (item) {\r\n var index = this.AdditionalFilters.indexOf(item);\r\n this.AdditionalFilters.splice(index, 1);\r\n }\r\n }\r\n \r\n pushAdditionalFilter(params:ApiQueryFiltersAddParams){\r\n if (!params.IsCacheOnClient) {\r\n if (typeof (params.FieldValue) === \"string\") {\r\n if (params.FieldValue)\r\n params.FieldValue = this.myReplace(params.FieldValue);//FieldValue.replace('\"', '\\\\\"');\r\n if (params.FieldName != \"ImportersFilter\")\r\n params.FieldValue = encodeURIComponent(params.FieldValue)\r\n //FieldValue = FieldValue.replace(\"%22\", \"\\%22\");\r\n }\r\n if (typeof (params.FieldValue2) === \"string\") {\r\n if (params.FieldValue)\r\n params.FieldValue2 = this.myReplace(params.FieldValue2);//.replace('\"', '\\\\\"');\r\n params.FieldValue2 = encodeURIComponent(params.FieldValue2)\r\n //FieldValue = FieldValue.replace(\"%20\", \" \");\r\n }\r\n if (typeof (params.FieldValue3) === \"string\") {\r\n if (params.FieldValue)\r\n params.FieldValue3 = this.myReplace(params.FieldValue3);//FieldValue3.replace('\"', '\\\\\"');\r\n params.FieldValue3 = encodeURIComponent(params.FieldValue3)\r\n //FieldValue = FieldValue.replace(\"%20\", \" \");\r\n }\r\n }\r\n var existedItem = this.AdditionalFilters.find(d => d.FieldName == params.FieldName);\r\n if (!existedItem || params.ForceEnableAdd) {\r\n var item = new FilterItem(\r\n params.FieldName,\r\n params.FieldValue, \r\n params.FieldValue2,\r\n params.FieldValue3,\r\n params.Operator,\r\n params.IsCustom,\r\n params.DisplayInList,\r\n params.IsCustomField, \r\n params.FieldDataType,\r\n params.IgnoreFilter,\r\n params.IsCacheOnClient,\r\n params.IsLookUpFilter);\r\n this.AdditionalFilters.push(item);\r\n }\r\n }\r\n\r\n public queryId: string = '';\r\n public queryCode: string = '';\r\n\r\n public userid: string = '';\r\n public ObjectTableName: string = '';\r\n\r\n public Filter1Name: string | null = null;\r\n public Filter1Value: any;\r\n public Filter1Operator: string | null = null;\r\n public Filter1Value2: any;\r\n\r\n public Filter2Name: any;\r\n public Filter2Value: any;\r\n public Filter2Operator: any;\r\n public Filter2Value2: any;\r\n\r\n public Filter3Name: any;\r\n public Filter3Value: any;\r\n public Filter3Operator: any;\r\n public Filter3Value2: any;\r\n\r\n public Filter4Name: any;\r\n public Filter4Value: any;\r\n public Filter4Operator: any;\r\n public Filter4Value2: any;\r\n\r\n public Filter5Name: any;\r\n public Filter5Value: any;\r\n public Filter5Operator: any;\r\n public Filter5Value2: any;\r\n\r\n public Filter6Name: any;\r\n public Filter6Value: any;\r\n public Filter6Operator: any;\r\n public Filter6Value2: any;\r\n\r\n public Filter7Name: any;\r\n public Filter7Value: any;\r\n public Filter7Operator: any;\r\n public Filter7Value2: any;\r\n\r\n public Filter8Name: any;\r\n public Filter8Value: any;\r\n public Filter8Operator: any;\r\n public Filter8Value2: any;\r\n\r\n public Filter9Name: any;\r\n public Filter9Value: any;\r\n public Filter9Operator: any;\r\n public Filter9Value2: any;\r\n\r\n public Filter10Name: any;\r\n public Filter10Value: any;\r\n public Filter10Operator: any;\r\n public Filter10Value2: any;\r\n\r\n public GetAll: boolean = true;\r\n\r\n \r\n}\r\n\r\nexport class FilterItem {\r\n constructor(\r\n public FieldName: string,\r\n public FieldValue: any,\r\n public FieldValue2: any,\r\n public FieldValue3: any,\r\n public Operator: string,\r\n public IsCustom: boolean,\r\n public DisplayInList: boolean,\r\n public IsCustomField: boolean,\r\n public FieldDataType: string,\r\n public IgnoreFilter: boolean,\r\n public IsCacheOnClient: boolean = false,\r\n public IsLookUpfilter:boolean=false) { }\r\n \r\n\r\n}\r\nexport class ApiQueryFiltersAddParams{\r\n FieldName: string = '';\r\n FieldValue: any;\r\n FieldValue2: any;\r\n FieldValue3: any;\r\n Operator: string = '';\r\n IsCustom: boolean = false;\r\n DisplayInList: boolean = false;\r\n IsCustomField: boolean = false;\r\n FieldDataType: string = '';\r\n IgnoreFilter: boolean = false;\r\n IsCacheOnClient: boolean = false;\r\n ForceEnableAdd:boolean = false;\r\n IsLookUpFilter:boolean=false;\r\n}\r\n","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 axios from \"axios\";\r\nimport { ApiQueryFilters } from \"../common/data-contracts/ApiQueryFilter\";\r\nimport { Tools } from './tools';\r\n\r\n\r\nexport class DataService{ \r\n private _apiUrl: string;\r\n constructor(){\r\n this._apiUrl = Tools.GetLogitudeURL() ;\r\n }\r\n getObjectTables(filters: ApiQueryFilters){\r\n let token: string = this.getTokenFromStorage();\r\n\r\n\t\tvar apiURL = `${this._apiUrl}/api/ObjectTableViews/getbyfilters?`;\r\n\t\tapiURL = this.ConcatFiltersToURL(filters, apiURL);\r\n return axios.get(apiURL, { headers: { 'Content-Type': 'application/json', 'Token': token } });\r\n }\r\n\r\n getObjectFields(filters: ApiQueryFilters) {\r\n \r\n let token: string = this.getTokenFromStorage();\r\n\r\n\t\tvar apiURL = `${this._apiUrl}/api/ObjectFieldViews/getbyfilters?`;\r\n\t\tapiURL = this.ConcatFiltersToURL(filters, apiURL);\r\n\r\n return axios.get(apiURL, { headers: { 'Content-Type': 'application/json', 'Token': token } });\r\n }\r\n\r\n getDataByFilters(filters: ApiQueryFilters,tableName: string) {\r\n \r\n let token: string = this.getTokenFromStorage();\r\n\r\n\t\tvar apiURL = `${this._apiUrl}/api/${tableName}Views/getbyfilters?`;\r\n\t\tapiURL = this.ConcatFiltersToURL(filters, apiURL);\r\n\r\n return axios.get(apiURL, { headers: { 'Content-Type': 'application/json', 'Token': token } });\r\n }\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\r\n getTokenFromStorage(){\r\n return window.localStorage.getItem(\"token\") || '';\r\n }\r\n}","import React from \"react\";\r\nimport ReactApexChart from \"react-apexcharts\";\r\nimport { ApiQueryFilters } from \"../../../common/data-contracts/ApiQueryFilter\";\r\nimport { DataService } from \"../../../services/DataService\";\r\nimport { ChartComponentProps } from \"../../../types/ChartComponentProps\";\r\nimport { ChartComponentState } from \"../../../types/ChartComponentState\";\r\n\r\n\r\n\r\n\r\n\r\nclass BarChartComponent extends React.Component<\r\n ChartComponentProps,\r\n ChartComponentState\r\n> {\r\n\r\n data: any[] = [];\r\n constructor(props: ChartComponentProps | Readonly<ChartComponentProps>) {\r\n super(props);\r\n const filters = new ApiQueryFilters();\r\n const dataService = new DataService();\r\n if (this.props.widget?.Title)\r\n dataService.getDataByFilters(filters, this.props.widget.Title || '')\r\n .then((response: any) => {\r\n console.log(\"dataService.getDataByFilters\", response);\r\n this.data = response.data.Result;\r\n this.InitChart();\r\n })\r\n\r\n\r\n this.state = {\r\n series: [\r\n {\r\n data: [],\r\n },\r\n ],\r\n options: {\r\n chart: {\r\n type: \"bar\",\r\n height: 350,\r\n events: {\r\n dataPointSelection: function (event, chartContext, config) {\r\n const data = config.w.config.xaxis.categories[config.seriesIndex];\r\n console.log(\"Selected \" + data);\r\n },\r\n },\r\n },\r\n colors: [\"#22D792\", \"#2C99F7\", \"#FBC445\", \"#F74E49\", \"#717585\"],\r\n plotOptions: {\r\n bar: {\r\n borderRadius: 4,\r\n horizontal: true,\r\n },\r\n },\r\n dataLabels: {\r\n enabled: false,\r\n },\r\n xaxis: {\r\n categories: [],\r\n },\r\n },\r\n };\r\n\r\n }\r\n\r\n\r\n private InitChart() {\r\n const groups = this.GroupItems();\r\n\r\n\r\n const catItems = Object.keys(groups);\r\n const dataItems: any[] = Object.values(groups);\r\n\r\n\r\n this.setState({\r\n series: [\r\n {\r\n data: dataItems,\r\n },\r\n ],\r\n options: {\r\n chart: {\r\n type: \"bar\",\r\n height: 350,\r\n events: {\r\n dataPointSelection: function (event, chartContext, config) {\r\n const data = config.w.config.xaxis.categories[config.seriesIndex];\r\n console.log(\"Selected \" + data);\r\n },\r\n },\r\n },\r\n colors: [\"#22D792\", \"#2C99F7\", \"#FBC445\", \"#F74E49\", \"#717585\"],\r\n plotOptions: {\r\n bar: {\r\n borderRadius: 4,\r\n horizontal: true,\r\n },\r\n },\r\n dataLabels: {\r\n enabled: false,\r\n },\r\n xaxis: {\r\n categories: catItems,\r\n },\r\n },\r\n });\r\n }\r\n // private GroupItems()\r\n // {\r\n // return this.data.reduce((groups, record) =>\r\n // {\r\n // const fieldName = this.props.widget.ValueFieldName + '';\r\n\r\n // const group = (groups[record] || []);\r\n // group.push(record);\r\n\r\n // const recordCategory = record[this.props.widget.ValueFieldName + ''];\r\n // groups[record[fieldName]] = groups[recordCategory] + 1 || 0;\r\n // return groups;\r\n // }, {});\r\n // }\r\n private GroupItems() {\r\n let groups = this.data.reduce((groups, record) => {\r\n const CreateGroup = (groups: any, record: any) => {\r\n const group = (groups[record] || []);\r\n group.push(record);\r\n }\r\n const SetGroupData = () => {\r\n const groupByFieldName = this.props.widget.GroupBy + \"\";\r\n // const valueFieldName = this.props.widget.ValueFieldName + \"\";\r\n const recordCategory = record[groupByFieldName];\r\n // const recordValue = record[valueFieldName];\r\n let currentGroupValue = groups[record[groupByFieldName]];\r\n\r\n // switch (this.props.widget.) {\r\n // case \"Count\": {\r\n // if (!currentGroupValue) currentGroupValue = 0;\r\n // currentGroupValue = currentGroupValue + 1;\r\n // break;\r\n // }\r\n // case \"Sum\": {\r\n // if (!currentGroupValue) currentGroupValue = 0;\r\n // currentGroupValue = currentGroupValue + recordValue;\r\n // break;\r\n // }\r\n // case \"Max\": {\r\n // if (!currentGroupValue) currentGroupValue = -9999999999999;\r\n\r\n // if (recordValue > currentGroupValue)\r\n // currentGroupValue = recordValue;\r\n // break;\r\n // }\r\n // case \"Min\": {\r\n // if (!currentGroupValue) currentGroupValue = 9999999999999;\r\n\r\n // if (recordValue < currentGroupValue)\r\n // currentGroupValue = recordValue;\r\n // break;\r\n // }\r\n // case \"Average\": {\r\n // if (!currentGroupValue) currentGroupValue = [];\r\n // currentGroupValue.push(recordValue);\r\n // break;\r\n // }\r\n // }\r\n\r\n groups[record[groupByFieldName]] = currentGroupValue;\r\n };\r\n\r\n CreateGroup(groups, record);\r\n SetGroupData();\r\n return groups;\r\n }, {});\r\n\r\n // if (this.props.widget.CalcType == \"Average\") {\r\n // for (const key in groups) {\r\n // if (Object.prototype.hasOwnProperty.call(groups, key)) {\r\n // const groupArray: any[] = groups[key];\r\n // let sum = groupArray.reduce((a, b) => a + (b[key] || 0), 0);\r\n // let avg = sum / groupArray.length;\r\n // groups[key] = avg;\r\n // }\r\n // }\r\n // }\r\n return groups;\r\n }\r\n\r\n render() {\r\n return (\r\n\r\n <div id=\"chart\">\r\n <div>\r\n {this.props.dateFilter && <div className=\"filter-label\"> Date: {this.props.dateFilter.toLocaleDateString(\"en-US\") + ''}</div>}\r\n </div>\r\n {/* <div>\r\n {this.props.widget?.EntityName}: {this.props.widget?.CalcType} of {this.props.widget?.ValueFieldName} \r\n </div> */}\r\n <ReactApexChart\r\n options={this.state.options}\r\n series={this.state.series}\r\n type=\"bar\"\r\n height={\"100%\"}\r\n />\r\n </div>\r\n );\r\n }\r\n}\r\n\r\nexport default BarChartComponent;\r\n","import { stat } from \"fs\";\r\nimport { Button } from \"primereact/button\";\r\nimport { OverlayPanel } from \"primereact/overlaypanel\";\r\nimport React, { useRef, useState } from \"react\";\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: any | 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\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\r\n return (\r\n <div className=\"panel\" key={props.el.i}>\r\n <header>\r\n <h1>{props.widget?.WidgetName || \"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=\"dashboard-widget\">\r\n {React.createElement(\r\n widgetComponents.find((wc) => wc.type === props.widget.WidgetType)\r\n ?.component,\r\n {\r\n key: props.el.i,\r\n dateFilter: props.dateFilter,\r\n widget: props.widget,\r\n }\r\n )}\r\n </div>\r\n </div>\r\n );\r\n};\r\n\r\nexport default WidgetCard;\r\n","\r\n\r\nimport { WidthProvider, Responsive } 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: any[] },\r\n openEditWidget:(widget: ReactWidgetPM) => 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 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(props.dashboardLayouts || { 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 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) {\r\n console.log(layout, layouts);\r\n saveToStorage(\"grid-layout\", layouts);\r\n saveToStorage(\"grid-widgets\", widgets);\r\n setLayouts(layouts);\r\n UpdatePlaceholderDimensions();\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(i) {\r\n let layout = layouts[\"lg\"];\r\n var itemIndex = layout.findIndex((d) => d.i === i);\r\n layout.splice(itemIndex, 1);\r\n setLayouts({ lg: [...layout] });\r\n setWidgets(_.reject(widgets, { i: i }));\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 {layouts.lg.map((el) =>\r\n\r\n <div key={el.i}>\r\n <WidgetCard\r\n key={el.i}\r\n widget={FindWidget(el)}\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 </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 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\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 [dashbords, setDashbords] = useState<ReactDashboardPM[]>([]);\r\n const [currentDashbord, setCurrentDashbord] = 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 updateLayouts();\r\n })\r\n props.dataBinding.onGetAllDashboard.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 props.openAddEditWidget({ TypeCode: widgetCode } as ReactWidgetPM);\r\n\r\n }\r\n\r\n const editDesign = () => {\r\n setIsInEditMode(true)\r\n dashboardMoreButtonToggle?.current?.hide();\r\n console.log(WidgetTypes)\r\n }\r\n\r\n const updateLayouts = () => {\r\n if ((!currentDashbord?.Widgets))\r\n return;\r\n var layout:{ lg: any[] } = { lg: [] };\r\n currentDashbord?.Widgets.map(widget=>{\r\n layout.lg.push(\r\n {\r\n i: widget.Id,\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 )\r\n });\r\n setLayouts(layout);\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'>\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-lg 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: \"210px\" }}>\r\n <Dropdown\r\n value={[]}\r\n options={dashbords}\r\n optionValue=\"Id\"\r\n optionLabel=\"Name\"\r\n onChange={(e) => { }}\r\n placeholder=\"Choose Dashboard\"\r\n optionDisabled={(option) => {\r\n return option?.Disabled;\r\n }}\r\n scrollHeight=\"300px\"\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\" aria-label=\"Search\" />\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={() => { setIsInEditMode(false) }}\r\n />\r\n <Button\r\n label=\"Save\"\r\n form=\"frm\"\r\n // icon=\"pi pi-check\"\r\n onClick={() => { setIsInEditMode(false) }}\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 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;"],"names":["ColumnChartComponent","props","render","React","id","Component","PieChartComponent","MixedChartComponent","AreaChartComponent","state","series","name","data","options","chart","height","type","colors","dataLabels","enabled","stroke","curve","xaxis","categories","tooltip","x","format","dateFilter","className","toLocaleDateString","ReactApexChart","TimelineChartComponent","CandleChartComponent","ApiQueryFilters","addAdditionalFilter","FieldName","FieldValue","FieldValue2","FieldValue3","Operator","IsCustom","DisplayInList","IsCustomField","FieldDataType","IgnoreFilter","IsCacheOnClient","ForceEnableAdd","params","ApiQueryFiltersAddParams","pushAdditionalFilter","myReplace","myString","myNewString","i","length","removeAdditionalFilter","item","AdditionalFilters","filter","d","IsLookUpfilter","index","indexOf","splice","encodeURIComponent","existedItem","find","FilterItem","IsLookUpFilter","push","Tools","GetLogitudeURL","logitude_url","location","href","replace","urlArr","split","url","substring","lastIndexOf","DataService","_apiUrl","getObjectTables","filters","token","getTokenFromStorage","apiURL","ConcatFiltersToURL","axios","get","headers","getObjectFields","getDataByFilters","tableName","urlparameters","mykeys","Object","keys","addtionalFiltersValues","propName","propValue","ignoreFilter","concat","JSON","stringify","window","localStorage","getItem","BarChartComponent","dataService","widget","Title","then","response","console","log","Result","InitChart","events","dataPointSelection","event","chartContext","config","w","seriesIndex","plotOptions","bar","borderRadius","horizontal","groups","GroupItems","catItems","dataItems","values","setState","reduce","record","CreateGroup","group","SetGroupData","groupByFieldName","GroupBy","currentGroupValue","WidgetCard","moreBtnToggle","useRef","widgetComponents","component","key","el","WidgetName","Button","icon","onClick","e","current","toggle","OverlayPanel","ref","editBtnClicked","deleteBtnClicked","createElement","wc","WidgetType","ResponsiveReactGridLayout","WidthProvider","Responsive","DashboardDesigner","useState","createRef","array12","Array","from","fill","savedWidgets","getFromStorage","minimumPlaceholderRowsCount","dashboardLayouts","lg","layouts","setLayouts","placeholderRowsArray","setplaceholderRowsArray","showMsg","setShowMsg","undefined","widgets","setWidgets","placeholderRows","setPlaceholderRows","onLayoutChange","layout","saveToStorage","UpdatePlaceholderDimensions","deletePanel","itemIndex","findIndex","_","reject","SaveGrid","editWidget","openEditWidget","FindWidget","value","setTimeout","setItem","parse","gridLayout","document","getElementsByClassName","gridElementHeight","clientHeight","newPlaceholderRows","Math","floor","layoutGridProps","rowHeight","map","style","compactType","onWidthChange","cols","md","sm","xs","xxs","useCSSTransforms","ApiServices","getByFilters","api","post","date","DashBoardService","_ApiServices","add","WidgetTypeListService","getAll","Dashboard","dashbords","setDashbords","currentDashbord","setCurrentDashbord","selectedWidget","isInEditMode","setIsInEditMode","WidgetTypes","setWidgetTypes","dashboardMoreButtonToggle","dashboardService","widgetTypeListService","useEffect","getWidgetTypes","dataBinding","onGetDashboard","subscribe","updateLayouts","onGetAllDashboard","EditDashBoard","openAddEditDashboard","hide","addWidget","widgetCode","openAddEditWidget","TypeCode","editDesign","Widgets","Id","EndPosition","h","StartPotistion","y","Name","Ripple","width","Dropdown","optionValue","optionLabel","onChange","placeholder","optionDisabled","option","Disabled","scrollHeight","label","form","autoFocus","marginLeft"],"mappings":"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"}
|