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 CHANGED
@@ -1,30 +1,30 @@
1
- # logitude-dashboard-library
2
-
3
- > Made with create-react-library
4
-
5
- [![NPM](https://img.shields.io/npm/v/logitude-dashboard-library.svg)](https://www.npmjs.com/package/logitude-dashboard-library) [![JavaScript Style Guide](https://img.shields.io/badge/code_style-standard-brightgreen.svg)](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
+ [![NPM](https://img.shields.io/npm/v/logitude-dashboard-library.svg)](https://www.npmjs.com/package/logitude-dashboard-library) [![JavaScript Style Guide](https://img.shields.io/badge/code_style-standard-brightgreen.svg)](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(savedLayouts || {
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["lg"].map(function (el) {
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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"}