logitude-dashboard-library 1.2.13 → 1.2.16

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.
@@ -230,11 +230,11 @@ $dark-grey: #717585;
230
230
 
231
231
 
232
232
 
233
- .grid--bordered>div {
233
+ .dl-grid--bordered>div {
234
234
  border: 2px dotted #d0d0d0;
235
235
  }
236
236
 
237
- .grid--boxes>div {
237
+ .dl-grid--boxes>div {
238
238
  background: #00000008;
239
239
  }
240
240
 
@@ -12,7 +12,6 @@ export declare const layoutGridProps: {
12
12
  xxs: number;
13
13
  };
14
14
  useCSSTransforms: boolean;
15
- measureBeforeMount: boolean;
16
15
  };
17
16
  export declare const WidgetTypes: {
18
17
  Name: string;
package/dist/index.js CHANGED
@@ -1021,6 +1021,9 @@ var DashboardDesigner = function DashboardDesigner() {
1021
1021
  }]),
1022
1022
  widgetComponents = _useState3[0];
1023
1023
 
1024
+ var array12 = Array.from({
1025
+ length: 12
1026
+ }).fill(null);
1024
1027
  var savedLayouts = getFromStorage("grid-layout");
1025
1028
  var savedWidgets = getFromStorage("grid-widgets");
1026
1029
 
@@ -1030,32 +1033,37 @@ var DashboardDesigner = function DashboardDesigner() {
1030
1033
  layouts = _useState4[0],
1031
1034
  setLayouts = _useState4[1];
1032
1035
 
1033
- var _useState5 = React.useState(false),
1034
- setShowMsg = _useState5[1];
1036
+ var _useState5 = React.useState(Array.from({
1037
+ length: 10
1038
+ }).fill(null)),
1039
+ placeholderRowsArray = _useState5[0],
1040
+ setplaceholderRowsArray = _useState5[1];
1035
1041
 
1036
- var _useState6 = React.useState(undefined),
1037
- dateFilter = _useState6[0];
1042
+ var _useState6 = React.useState(false),
1043
+ setShowMsg = _useState6[1];
1038
1044
 
1039
- var _useState7 = React.useState(false),
1040
- displayDialog = _useState7[0],
1041
- setDisplayDialog = _useState7[1];
1045
+ var _useState7 = React.useState(undefined),
1046
+ dateFilter = _useState7[0];
1042
1047
 
1043
- var _useState8 = React.useState("");
1048
+ var _useState8 = React.useState(false),
1049
+ displayDialog = _useState8[0],
1050
+ setDisplayDialog = _useState8[1];
1044
1051
 
1045
- var _useState9 = React.useState(savedWidgets || []),
1046
- widgets = _useState9[0],
1047
- setWidgets = _useState9[1];
1052
+ var _useState9 = React.useState("");
1048
1053
 
1049
- var _useState10 = React.useState(10),
1050
- placeholderRows = _useState10[0],
1051
- setPlaceholderRows = _useState10[1];
1054
+ var _useState10 = React.useState(savedWidgets || []),
1055
+ widgets = _useState10[0],
1056
+ setWidgets = _useState10[1];
1052
1057
 
1053
- var _useState11 = React.useState(),
1054
- selectedWidget = _useState11[0];
1058
+ var _useState11 = React.useState(10),
1059
+ setPlaceholderRows = _useState11[1];
1055
1060
 
1056
- var _useState12 = React.useState(null),
1057
- widgetToEdit = _useState12[0],
1058
- setWidgetToEdit = _useState12[1];
1061
+ var _useState12 = React.useState(),
1062
+ selectedWidget = _useState12[0];
1063
+
1064
+ var _useState13 = React.useState(null),
1065
+ widgetToEdit = _useState13[0],
1066
+ setWidgetToEdit = _useState13[1];
1059
1067
 
1060
1068
  var renderPageHeader = function renderPageHeader() {
1061
1069
  return React__default.createElement("header", {
@@ -1086,21 +1094,6 @@ var DashboardDesigner = function DashboardDesigner() {
1086
1094
  toggleDialog();
1087
1095
  }
1088
1096
 
1089
- function renderGridWidgetsPlaceholder() {
1090
- console.log(placeholderRows);
1091
- return React__default.createElement("div", {
1092
- className: "dl-grid dl-grid--bordered"
1093
- }, [].concat(Array(placeholderRows)).map(function (e, i) {
1094
- return [].concat(Array(layoutGridProps.cols.lg)).map(function (e, i) {
1095
- return React__default.createElement("div", {
1096
- style: {
1097
- height: layoutGridProps.rowHeight
1098
- }
1099
- });
1100
- });
1101
- }));
1102
- }
1103
-
1104
1097
  function renderLayoutGrid(layout) {
1105
1098
  return React__default.createElement(ResponsiveReactGridLayout, Object.assign({}, layoutGridProps, {
1106
1099
  layouts: layouts,
@@ -1118,6 +1111,7 @@ var DashboardDesigner = function DashboardDesigner() {
1118
1111
  saveToStorage("grid-layout", layouts);
1119
1112
  saveToStorage("grid-widgets", widgets);
1120
1113
  setLayouts(layouts);
1114
+ UpdatePlaceholderDimensions();
1121
1115
  }
1122
1116
 
1123
1117
  function renderWidgetComponent(el) {
@@ -1295,10 +1289,6 @@ var DashboardDesigner = function DashboardDesigner() {
1295
1289
  return Math.floor(Math.random() * (max - min + 1)) + min;
1296
1290
  }
1297
1291
 
1298
- React.useEffect(function () {
1299
- UpdatePlaceholderDimensions();
1300
- });
1301
-
1302
1292
  function UpdatePlaceholderDimensions() {
1303
1293
  var _gridLayout$;
1304
1294
 
@@ -1309,6 +1299,9 @@ var DashboardDesigner = function DashboardDesigner() {
1309
1299
  var newPlaceholderRows = Math.floor(gridElementHeight / layoutGridProps.rowHeight);
1310
1300
  newPlaceholderRows = newPlaceholderRows < minimumPlaceholderRowsCount ? 10 : newPlaceholderRows;
1311
1301
  setPlaceholderRows(newPlaceholderRows);
1302
+ setplaceholderRowsArray(Array.from({
1303
+ length: newPlaceholderRows
1304
+ }).fill(null));
1312
1305
  }
1313
1306
 
1314
1307
  return React__default.createElement("div", {
@@ -1321,7 +1314,18 @@ var DashboardDesigner = function DashboardDesigner() {
1321
1314
  className: "dl-row dl-content"
1322
1315
  }, React__default.createElement("div", {
1323
1316
  className: "dl-grid-container"
1324
- }, renderGridWidgetsPlaceholder(), renderLayoutGrid(layouts["lg"])))), renderNewWidgetDialog());
1317
+ }, React__default.createElement("div", {
1318
+ className: "dl-grid dl-grid--bordered"
1319
+ }, placeholderRowsArray.map(function (e, i) {
1320
+ return array12.map(function (e, i) {
1321
+ return React__default.createElement("div", {
1322
+ key: i,
1323
+ style: {
1324
+ height: layoutGridProps.rowHeight
1325
+ }
1326
+ });
1327
+ });
1328
+ })), renderLayoutGrid(layouts["lg"])))), renderNewWidgetDialog());
1325
1329
  };
1326
1330
 
1327
1331
  var layoutGridProps = {
@@ -1329,13 +1333,12 @@ var layoutGridProps = {
1329
1333
  className: "layout",
1330
1334
  cols: {
1331
1335
  lg: 12,
1332
- md: 10,
1336
+ md: 6,
1333
1337
  sm: 2,
1334
1338
  xs: 1,
1335
1339
  xxs: 1
1336
1340
  },
1337
- useCSSTransforms: true,
1338
- measureBeforeMount: true
1341
+ useCSSTransforms: true
1339
1342
  };
1340
1343
  var WidgetTypes = [{
1341
1344
  Name: "Filter",
package/dist/index.js.map CHANGED
@@ -1 +1 @@
1
- {"version":3,"file":"index.js","sources":["../src/services/DataService.ts","../src/common/data-contracts/ApiQueryFilter.ts","../src/features/Dashboard/NewWidget.tsx","../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/features/Dashboard/ChartsComponents/BarChartComponent.tsx","../src/features/Dashboard/WidgetCard.tsx","../src/features/Dashboard/DashboardDesigner.tsx","../src/index.tsx"],"sourcesContent":["import axios from \"axios\";\r\nimport { ApiQueryFilters } from \"../common/data-contracts/ApiQueryFilter\";\r\n\r\n\r\nexport class DataService{ \r\n\r\n getObjectTables(filters: ApiQueryFilters){\r\n let token: string = this.getTokenFromStorage();\r\n\r\n\t\tvar apiURL = 'http://localhost:9996/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 = 'http://localhost:9996/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 = `http://localhost:9996/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}","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","import React from \"react\";\r\nimport { InputText } from \"primereact/inputtext\";\r\nimport { Dropdown, DropdownChangeParams } from \"primereact/dropdown\";\r\n\r\nimport { Button } from \"primereact/button\";\r\n\r\nimport { DataService } from \"../../services/DataService\";\r\nimport { ApiQueryFilters } from \"../../common/data-contracts/ApiQueryFilter\";\r\nimport { Widget } from \"../../types/widget\";\r\nimport ReactApexChart from \"react-apexcharts\";\r\nimport { ChartComponentState } from \"../../types/ChartComponentState\";\r\n\r\nconst calcTypes = \r\n[{Name: \"Sum\", Disabled: false},\r\n {Name: \"Min\", Disabled: true},\r\n {Name: \"Max\", Disabled: false},\r\n {Name: \"Count\", Disabled: false},\r\n {Name: \"Average\", Disabled: true}]\r\n;\r\ninterface NewWidgetProps {\r\n onOkButton(data: Widget):any;\r\n onCancelButton():any;\r\n widget: Widget | null;\r\n\r\n}\r\n\r\ninterface NewWidgetState { \r\n Widget: Widget;\r\n objectTables: any[]; \r\n objectFields: any[];\r\n}\r\n\r\nconst chartState:ChartComponentState = {\r\n series: [\r\n {\r\n data: [10,20,30],\r\n },\r\n ],\r\n options: {\r\n chart: {\r\n toolbar:{show: false},\r\n \r\n },\r\n colors: [\"#22D792\"],\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: ['A','B','C'],\r\n },\r\n },\r\n};\r\n\r\nconst ChartTypes = [{ Name: \"Column\", Disabled: true },{ Name: \"Area\", Disabled: false }, { Name: \"Bar\", Disabled: false }, { Name: \"Pie\", Disabled: true }, { Name: \"Donut\", Disabled: true }];\r\nclass NewWidget extends React.Component<NewWidgetProps, NewWidgetState> {\r\n constructor(props: NewWidgetProps | Readonly<NewWidgetProps>) {\r\n super(props);\r\n const defaultWidget: Widget = {\r\n WidgetName: 'New Widget',\r\n WidgetType: \"Bar\",\r\n CalcType: null,\r\n ValueFieldName: null,\r\n ValueFieldId: null,\r\n EntityName: null,\r\n EntityId: null,\r\n Group: null\r\n };\r\n this.state = {\r\n Widget: this.props.widget || defaultWidget,\r\n objectTables: [],\r\n objectFields: [], \r\n }; \r\n \r\n this.getData();\r\n }\r\n getData() {\r\n this.getObjectTables();\r\n }\r\n getObjectTables() {\r\n let service = new DataService();\r\n const filters = new ApiQueryFilters();\r\n filters.addAdditionalFilter(\r\n \"Name\",\r\n 'GLAccount,ARPayment,ARInvoice',\r\n null,\r\n null,\r\n \"InListExact\",\r\n false,\r\n false,\r\n false,\r\n \"string\"\r\n );\r\n service.getObjectTables(filters).then((response: any) => {\r\n console.log(\"getObjectTables\", response);\r\n\r\n\r\n if(response.data.Result && this.props.widget){\r\n this.selectedTable = response.data.Result.find((t: { Id: string | null | undefined; })=>t.Id === this.props.widget?.EntityId);\r\n }\r\n\r\n this.setState({ objectTables: response.data.Result });\r\n\r\n if(response.data.Result && this.props.widget){\r\n this.getObjectFields();\r\n }\r\n\r\n\r\n },(error: string)=>{\r\n alert(\"Something wrong happen, \" + error);\r\n });\r\n }\r\n getObjectFields() {\r\n let service = new DataService();\r\n const filters = new ApiQueryFilters();\r\n filters.SortBy = 'FieldName';\r\n filters.addAdditionalFilter(\r\n \"ObjectTableId\",\r\n this.state.Widget.EntityId,\r\n null,\r\n null,\r\n \"Equals\",\r\n false,\r\n false,\r\n false,\r\n \"string\"\r\n );\r\n service.getObjectFields(filters).then((response: any) => {\r\n console.log(\"getByfilters\", response);\r\n this.setState({ objectFields: response.data.Result });\r\n },(error: string)=>{\r\n alert(\"Something wrong happen, \" + error);\r\n });\r\n }\r\nselectedTable: any;\r\n onEntityChanged = (e: DropdownChangeParams) => {\r\n const selectedTable = e.target.value;\r\n this.selectedTable = selectedTable; \r\n // const selectedTable = e.value;\r\n console.log(\"onEntityChanged\",selectedTable);\r\n \r\n this.state.Widget.EntityName = selectedTable?.Name;\r\n this.state.Widget.EntityId = selectedTable?.Id;\r\n this.setState({ Widget: {...this.state.Widget} }, () => {\r\n if (selectedTable) {\r\n this.getObjectFields();\r\n } else {\r\n this.state.Widget.Group = null;\r\n this.state.Widget.ValueFieldId = null;\r\n this.state.Widget.ValueFieldName = null;\r\n this.setState({ Widget: {...this.state.Widget},\r\n objectFields: [] });\r\n }\r\n });\r\n }\r\n onGroupChanged = (e: DropdownChangeParams) => {\r\n this.state.Widget.Group = e.value;\r\n this.setState({ Widget: {...this.state.Widget} });\r\n }\r\n selectedValueField: { Id: string | null; FieldName: string | null; };\r\n onValueChanged = (e: DropdownChangeParams) => {\r\n this.selectedValueField = e.value;\r\n this.state.Widget.ValueFieldId = this.selectedValueField.Id;\r\n this.state.Widget.ValueFieldName = this.selectedValueField.FieldName;\r\n this.setState({ Widget: {...this.state.Widget} });\r\n };\r\n onCalcTypeChanged = (e: DropdownChangeParams) => {\r\n this.state.Widget.CalcType = e.value;\r\n this.setState({ Widget: {...this.state.Widget} });\r\n }\r\n render() {\r\n return (\r\n <div className=\"dialog-wrapper\">\r\n <div className=\"dialog-content container\">\r\n <div style={{ width: \"250px\", padding: '0 40px 0 0', textAlign: 'center' }}>\r\n <Dropdown\r\n style={{ width: \"160px\" }}\r\n value={this.state.Widget.WidgetType}\r\n options={ChartTypes}\r\n placeholder=\"Chart Type\"\r\n optionLabel=\"Name\"\r\n optionValue=\"Name\"\r\n optionDisabled={(option) => option?.Disabled}\r\n onChange={(e) => {\r\n this.state.Widget.WidgetType = e.value;\r\n this.setState({ Widget: { ...this.state.Widget } });\r\n }}\r\n />\r\n <br />\r\n <br />\r\n <div>\r\n {this.state.Widget.WidgetType === 'Bar' && <ReactApexChart options={chartState.options} series={chartState.series} type=\"bar\" height={\"100%\"} />}\r\n {this.state.Widget.WidgetType === 'Area' && <ReactApexChart options={chartState.options} series={chartState.series} type=\"area\" height={\"100%\"} />}\r\n </div>\r\n </div>\r\n\r\n <div>\r\n <form id=\"frm\" name=\"frm\">\r\n {/* <input type=\"submit\" opacity /> */}\r\n <div className=\"form\">\r\n {/* Name */}\r\n <div className=\"form-field\">\r\n <label htmlFor=\"widget-name\">Name</label>\r\n <InputText\r\n id=\"widget-name\"\r\n className=\"p-inputtext-sm\"\r\n value={this.state.Widget.WidgetName || undefined}\r\n required\r\n onChange={(e) => {\r\n this.state.Widget.WidgetName = e.target.value;\r\n this.setState({ Widget: { ...this.state.Widget } });\r\n }}\r\n />\r\n </div>\r\n\r\n {/* Entity */}\r\n <div className=\"form-field\">\r\n <label htmlFor=\"widget-Entity\">Entity</label>\r\n <Dropdown\r\n value={this.selectedTable}\r\n options={this.state.objectTables}\r\n onChange={this.onEntityChanged}\r\n optionLabel=\"Name\"\r\n // optionValue=\"Id\"\r\n filter\r\n showClear\r\n filterBy=\"Name\"\r\n placeholder=\"Select an entity\"\r\n // valueTemplate={selectedCountryTemplate}\r\n // itemTemplate={countryOptionTemplate}\r\n />\r\n </div>\r\n\r\n {/* Group */}\r\n <div className=\"form-field\">\r\n <label htmlFor=\"widget-Entity\">Group</label>\r\n <Dropdown\r\n value={this.state.Widget.Group}\r\n options={this.state.objectFields}\r\n virtualScrollerOptions={{ itemSize: 50 }}\r\n onChange={this.onGroupChanged}\r\n optionLabel=\"FieldName\"\r\n optionValue=\"FieldName\"\r\n filter\r\n showClear\r\n filterBy=\"FieldName\"\r\n placeholder=\"Select group\"\r\n />\r\n </div>\r\n\r\n {/* CalcType */}\r\n <div className=\"form-field\">\r\n <label htmlFor=\"widget-Entity\">Calc. Type</label>\r\n <Dropdown\r\n value={this.state.Widget.CalcType}\r\n options={calcTypes}\r\n optionLabel=\"Name\"\r\n optionValue=\"Name\"\r\n optionDisabled={(option) => option?.Disabled}\r\n onChange={this.onCalcTypeChanged}\r\n showClear\r\n required\r\n placeholder=\"Select type\"\r\n />\r\n </div>\r\n\r\n {/* Value */}\r\n <div className=\"form-field\">\r\n <label htmlFor=\"widget-Entity\">Value</label>\r\n <Dropdown\r\n value={this.selectedValueField}\r\n options={this.state.objectFields}\r\n virtualScrollerOptions={{ itemSize: 50 }}\r\n onChange={this.onValueChanged}\r\n optionLabel=\"FieldName\"\r\n // optionValue=\"Id\"\r\n filter\r\n showClear\r\n filterBy=\"FieldName\"\r\n placeholder=\"Select value\"\r\n />\r\n </div>\r\n </div>\r\n </form>\r\n </div>\r\n </div>\r\n\r\n <div className=\"dialog-footer\">\r\n <Button\r\n label=\"Cancel\"\r\n className=\"p-button-text\"\r\n onClick={this.props.onCancelButton.bind(this)}\r\n />\r\n <Button\r\n label=\"Ok\"\r\n form=\"frm\"\r\n // icon=\"pi pi-check\"\r\n onClick={this.props.onOkButton.bind(this, { ...this.state.Widget })}\r\n autoFocus\r\n />\r\n </div>\r\n </div>\r\n );\r\n }\r\n}\r\n\r\nexport default NewWidget;\r\n","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","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?.EntityName)\r\n dataService.getDataByFilters(filters, this.props.widget.EntityName || '')\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.Group + \"\";\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.CalcType) {\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 _ from \"lodash\";\r\nimport { Ripple } from \"primereact/ripple\";\r\nimport { OverlayPanel } from \"primereact/overlaypanel\";\r\nimport { Dropdown } from \"primereact/dropdown\";\r\nimport { Dialog } from \"primereact/dialog\";\r\nimport NewWidget from \"./NewWidget\";\r\nimport { Calendar } from 'primereact/calendar';\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 { Widget } from \"../../types/widget\";\r\nimport WidgetCard from \"./WidgetCard\";\r\n\r\nconst ResponsiveReactGridLayout = WidthProvider(Responsive);\r\nconst newWidgetWidth = 3;\r\n\r\n\r\nconst DashboardDesigner = () => {\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: \"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 var savedLayouts = getFromStorage(\"grid-layout\");\r\n var savedWidgets = getFromStorage(\"grid-widgets\");\r\n\r\n const [layouts, setLayouts] = useState(savedLayouts || { lg: [] });\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(10);\r\n const [selectedWidget, setSelectedWidget] = useState();\r\n const [widgetToEdit, setWidgetToEdit] = useState<Widget | null>(null);\r\n const renderPageHeader = () => {\r\n return (\r\n <header className=\"dl-dashboard-header\">\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 <div style={{width:'192px'}}>\r\n <Dropdown\r\n value={selectedWidget}\r\n options={WidgetTypes}\r\n optionValue=\"Name\"\r\n optionLabel=\"Name\"\r\n onChange={(e) => addComponent(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\r\n </div>\r\n </header>\r\n );\r\n }\r\n function addComponent(componentType) {\r\n toggleDialog();\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\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 function renderLayoutGrid(layout: any) {\r\n\r\n return (\r\n <ResponsiveReactGridLayout\r\n {...layoutGridProps}\r\n layouts={layouts}\r\n compactType=\"vertical\"\r\n onLayoutChange={(layout, layouts) =>\r\n onLayoutChange(layout, layouts)\r\n }\r\n >\r\n {_.map(layout, (el) => renderWidgetComponent(el))}\r\n </ResponsiveReactGridLayout>\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 }\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: any) {\r\n setWidgetToEdit(widget);\r\n toggleDialog();\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 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: Widget) {\r\n\r\n let newWidgetPosition = EvaluateNewWidgetPosition();\r\n\r\n const widgetComponent = widgetComponents.find(\r\n (wc) => wc.type === newWidget.WidgetType\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.WidgetName,\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 UpdatePlaceholderDimensions();\r\n });\r\n function UpdatePlaceholderDimensions() {\r\n const minimumPlaceholderRowsCount = 10;\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 ? 10 : newPlaceholderRows;\r\n setPlaceholderRows(newPlaceholderRows)\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 {renderLayoutGrid(layouts[\"lg\"])}\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: 10, sm: 2, xs: 1, xxs: 1 },\r\n useCSSTransforms: true,\r\n measureBeforeMount : 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 * as React from 'react'\nimport DashboardDesigner from './features/Dashboard/DashboardDesigner'\nimport \"./styles.module.css\"\ntype DashboardProps={token:string};\nconst Dashboard = (props:DashboardProps) => {\n localStorage.setItem(\"token\", props?.token);\n\n return (\n <div className='dl-dashboard-body'>\n <DashboardDesigner></DashboardDesigner>\n </div>\n )\n}\nexport default Dashboard;"],"names":["DataService","getObjectTables","filters","token","getTokenFromStorage","apiURL","ConcatFiltersToURL","axios","get","headers","getObjectFields","getDataByFilters","tableName","urlparameters","mykeys","Object","keys","addtionalFiltersValues","i","propName","propValue","ignoreFilter","indexOf","concat","encodeURIComponent","length","JSON","stringify","window","localStorage","getItem","ApiQueryFilters","addAdditionalFilter","FieldName","FieldValue","FieldValue2","FieldValue3","Operator","IsCustom","DisplayInList","IsCustomField","FieldDataType","IgnoreFilter","IsCacheOnClient","ForceEnableAdd","params","ApiQueryFiltersAddParams","pushAdditionalFilter","myReplace","myString","myNewString","removeAdditionalFilter","item","AdditionalFilters","filter","d","IsLookUpfilter","index","splice","existedItem","find","FilterItem","IsLookUpFilter","push","calcTypes","Name","Disabled","chartState","series","data","options","chart","toolbar","show","colors","plotOptions","bar","borderRadius","horizontal","dataLabels","enabled","xaxis","categories","ChartTypes","NewWidget","props","e","selectedTable","target","value","console","log","state","Widget","EntityName","EntityId","Id","setState","Group","ValueFieldId","ValueFieldName","objectFields","selectedValueField","CalcType","defaultWidget","WidgetName","WidgetType","widget","objectTables","getData","service","then","response","Result","t","error","alert","SortBy","render","React","className","style","width","padding","textAlign","Dropdown","placeholder","optionLabel","optionValue","optionDisabled","option","onChange","ReactApexChart","type","height","id","name","htmlFor","InputText","undefined","required","onEntityChanged","showClear","filterBy","virtualScrollerOptions","itemSize","onGroupChanged","onCalcTypeChanged","onValueChanged","Button","label","onClick","onCancelButton","bind","form","onOkButton","autoFocus","Component","ColumnChartComponent","PieChartComponent","MixedChartComponent","AreaChartComponent","stroke","curve","tooltip","x","format","dateFilter","toLocaleDateString","TimelineChartComponent","CandleChartComponent","BarChartComponent","dataService","InitChart","events","dataPointSelection","event","chartContext","config","w","seriesIndex","groups","GroupItems","catItems","dataItems","values","reduce","record","CreateGroup","group","SetGroupData","groupByFieldName","valueFieldName","recordValue","currentGroupValue","key","prototype","hasOwnProperty","call","groupArray","sum","a","b","avg","WidgetCard","moreBtnToggle","useRef","widgetComponents","component","el","icon","current","toggle","OverlayPanel","ref","editBtnClicked","deleteBtnClicked","createElement","wc","ResponsiveReactGridLayout","WidthProvider","Responsive","newWidgetWidth","DashboardDesigner","useState","createRef","savedLayouts","getFromStorage","savedWidgets","lg","layouts","setLayouts","showMsg","setShowMsg","displayDialog","setDisplayDialog","widgets","setWidgets","placeholderRows","setPlaceholderRows","selectedWidget","widgetToEdit","setWidgetToEdit","renderPageHeader","WidgetTypes","addComponent","scrollHeight","componentType","toggleDialog","renderGridWidgetsPlaceholder","Array","map","layoutGridProps","cols","rowHeight","renderLayoutGrid","layout","compactType","onLayoutChange","_","renderWidgetComponent","saveToStorage","FindWidget","editWidget","deletePanel","itemIndex","findIndex","reject","SaveGrid","setTimeout","setItem","parse","renderNewWidgetDialog","Dialog","header","visible","onHide","breakpoints","addPanel","newWidget","newWidgetPosition","EvaluateNewWidgetPosition","widgetComponent","randomIndex","getRandomInt","newPanel","y","h","minH","minW","title","widgetYPosition","widgetXPosition","maxY","max","widgetsRow","lastWidgetStartXPosition","Math","apply","lastWidget","lastWidgetEndXPosition","availableHorizontalSlots","min","floor","random","useEffect","UpdatePlaceholderDimensions","minimumPlaceholderRowsCount","gridLayout","document","getElementsByClassName","gridElementHeight","clientHeight","newPlaceholderRows","md","sm","xs","xxs","useCSSTransforms","measureBeforeMount","Dashboard"],"mappings":"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"}
1
+ {"version":3,"file":"index.js","sources":["../src/services/DataService.ts","../src/common/data-contracts/ApiQueryFilter.ts","../src/features/Dashboard/NewWidget.tsx","../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/features/Dashboard/ChartsComponents/BarChartComponent.tsx","../src/features/Dashboard/WidgetCard.tsx","../src/features/Dashboard/DashboardDesigner.tsx","../src/index.tsx"],"sourcesContent":["import axios from \"axios\";\r\nimport { ApiQueryFilters } from \"../common/data-contracts/ApiQueryFilter\";\r\n\r\n\r\nexport class DataService{ \r\n\r\n getObjectTables(filters: ApiQueryFilters){\r\n let token: string = this.getTokenFromStorage();\r\n\r\n\t\tvar apiURL = 'http://localhost:9996/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 = 'http://localhost:9996/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 = `http://localhost:9996/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}","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","import React from \"react\";\r\nimport { InputText } from \"primereact/inputtext\";\r\nimport { Dropdown, DropdownChangeParams } from \"primereact/dropdown\";\r\n\r\nimport { Button } from \"primereact/button\";\r\n\r\nimport { DataService } from \"../../services/DataService\";\r\nimport { ApiQueryFilters } from \"../../common/data-contracts/ApiQueryFilter\";\r\nimport { Widget } from \"../../types/widget\";\r\nimport ReactApexChart from \"react-apexcharts\";\r\nimport { ChartComponentState } from \"../../types/ChartComponentState\";\r\n\r\nconst calcTypes = \r\n[{Name: \"Sum\", Disabled: false},\r\n {Name: \"Min\", Disabled: true},\r\n {Name: \"Max\", Disabled: false},\r\n {Name: \"Count\", Disabled: false},\r\n {Name: \"Average\", Disabled: true}]\r\n;\r\ninterface NewWidgetProps {\r\n onOkButton(data: Widget):any;\r\n onCancelButton():any;\r\n widget: Widget | null;\r\n\r\n}\r\n\r\ninterface NewWidgetState { \r\n Widget: Widget;\r\n objectTables: any[]; \r\n objectFields: any[];\r\n}\r\n\r\nconst chartState:ChartComponentState = {\r\n series: [\r\n {\r\n data: [10,20,30],\r\n },\r\n ],\r\n options: {\r\n chart: {\r\n toolbar:{show: false},\r\n \r\n },\r\n colors: [\"#22D792\"],\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: ['A','B','C'],\r\n },\r\n },\r\n};\r\n\r\nconst ChartTypes = [{ Name: \"Column\", Disabled: true },{ Name: \"Area\", Disabled: false }, { Name: \"Bar\", Disabled: false }, { Name: \"Pie\", Disabled: true }, { Name: \"Donut\", Disabled: true }];\r\nclass NewWidget extends React.Component<NewWidgetProps, NewWidgetState> {\r\n constructor(props: NewWidgetProps | Readonly<NewWidgetProps>) {\r\n super(props);\r\n const defaultWidget: Widget = {\r\n WidgetName: 'New Widget',\r\n WidgetType: \"Bar\",\r\n CalcType: null,\r\n ValueFieldName: null,\r\n ValueFieldId: null,\r\n EntityName: null,\r\n EntityId: null,\r\n Group: null\r\n };\r\n this.state = {\r\n Widget: this.props.widget || defaultWidget,\r\n objectTables: [],\r\n objectFields: [], \r\n }; \r\n \r\n this.getData();\r\n }\r\n getData() {\r\n this.getObjectTables();\r\n }\r\n getObjectTables() {\r\n let service = new DataService();\r\n const filters = new ApiQueryFilters();\r\n filters.addAdditionalFilter(\r\n \"Name\",\r\n 'GLAccount,ARPayment,ARInvoice',\r\n null,\r\n null,\r\n \"InListExact\",\r\n false,\r\n false,\r\n false,\r\n \"string\"\r\n );\r\n service.getObjectTables(filters).then((response: any) => {\r\n console.log(\"getObjectTables\", response);\r\n\r\n\r\n if(response.data.Result && this.props.widget){\r\n this.selectedTable = response.data.Result.find((t: { Id: string | null | undefined; })=>t.Id === this.props.widget?.EntityId);\r\n }\r\n\r\n this.setState({ objectTables: response.data.Result });\r\n\r\n if(response.data.Result && this.props.widget){\r\n this.getObjectFields();\r\n }\r\n\r\n\r\n },(error: string)=>{\r\n alert(\"Something wrong happen, \" + error);\r\n });\r\n }\r\n getObjectFields() {\r\n let service = new DataService();\r\n const filters = new ApiQueryFilters();\r\n filters.SortBy = 'FieldName';\r\n filters.addAdditionalFilter(\r\n \"ObjectTableId\",\r\n this.state.Widget.EntityId,\r\n null,\r\n null,\r\n \"Equals\",\r\n false,\r\n false,\r\n false,\r\n \"string\"\r\n );\r\n service.getObjectFields(filters).then((response: any) => {\r\n console.log(\"getByfilters\", response);\r\n this.setState({ objectFields: response.data.Result });\r\n },(error: string)=>{\r\n alert(\"Something wrong happen, \" + error);\r\n });\r\n }\r\nselectedTable: any;\r\n onEntityChanged = (e: DropdownChangeParams) => {\r\n const selectedTable = e.target.value;\r\n this.selectedTable = selectedTable; \r\n // const selectedTable = e.value;\r\n console.log(\"onEntityChanged\",selectedTable);\r\n \r\n this.state.Widget.EntityName = selectedTable?.Name;\r\n this.state.Widget.EntityId = selectedTable?.Id;\r\n this.setState({ Widget: {...this.state.Widget} }, () => {\r\n if (selectedTable) {\r\n this.getObjectFields();\r\n } else {\r\n this.state.Widget.Group = null;\r\n this.state.Widget.ValueFieldId = null;\r\n this.state.Widget.ValueFieldName = null;\r\n this.setState({ Widget: {...this.state.Widget},\r\n objectFields: [] });\r\n }\r\n });\r\n }\r\n onGroupChanged = (e: DropdownChangeParams) => {\r\n this.state.Widget.Group = e.value;\r\n this.setState({ Widget: {...this.state.Widget} });\r\n }\r\n selectedValueField: { Id: string | null; FieldName: string | null; };\r\n onValueChanged = (e: DropdownChangeParams) => {\r\n this.selectedValueField = e.value;\r\n this.state.Widget.ValueFieldId = this.selectedValueField.Id;\r\n this.state.Widget.ValueFieldName = this.selectedValueField.FieldName;\r\n this.setState({ Widget: {...this.state.Widget} });\r\n };\r\n onCalcTypeChanged = (e: DropdownChangeParams) => {\r\n this.state.Widget.CalcType = e.value;\r\n this.setState({ Widget: {...this.state.Widget} });\r\n }\r\n render() {\r\n return (\r\n <div className=\"dialog-wrapper\">\r\n <div className=\"dialog-content container\">\r\n <div style={{ width: \"250px\", padding: '0 40px 0 0', textAlign: 'center' }}>\r\n <Dropdown\r\n style={{ width: \"160px\" }}\r\n value={this.state.Widget.WidgetType}\r\n options={ChartTypes}\r\n placeholder=\"Chart Type\"\r\n optionLabel=\"Name\"\r\n optionValue=\"Name\"\r\n optionDisabled={(option) => option?.Disabled}\r\n onChange={(e) => {\r\n this.state.Widget.WidgetType = e.value;\r\n this.setState({ Widget: { ...this.state.Widget } });\r\n }}\r\n />\r\n <br />\r\n <br />\r\n <div>\r\n {this.state.Widget.WidgetType === 'Bar' && <ReactApexChart options={chartState.options} series={chartState.series} type=\"bar\" height={\"100%\"} />}\r\n {this.state.Widget.WidgetType === 'Area' && <ReactApexChart options={chartState.options} series={chartState.series} type=\"area\" height={\"100%\"} />}\r\n </div>\r\n </div>\r\n\r\n <div>\r\n <form id=\"frm\" name=\"frm\">\r\n {/* <input type=\"submit\" opacity /> */}\r\n <div className=\"form\">\r\n {/* Name */}\r\n <div className=\"form-field\">\r\n <label htmlFor=\"widget-name\">Name</label>\r\n <InputText\r\n id=\"widget-name\"\r\n className=\"p-inputtext-sm\"\r\n value={this.state.Widget.WidgetName || undefined}\r\n required\r\n onChange={(e) => {\r\n this.state.Widget.WidgetName = e.target.value;\r\n this.setState({ Widget: { ...this.state.Widget } });\r\n }}\r\n />\r\n </div>\r\n\r\n {/* Entity */}\r\n <div className=\"form-field\">\r\n <label htmlFor=\"widget-Entity\">Entity</label>\r\n <Dropdown\r\n value={this.selectedTable}\r\n options={this.state.objectTables}\r\n onChange={this.onEntityChanged}\r\n optionLabel=\"Name\"\r\n // optionValue=\"Id\"\r\n filter\r\n showClear\r\n filterBy=\"Name\"\r\n placeholder=\"Select an entity\"\r\n // valueTemplate={selectedCountryTemplate}\r\n // itemTemplate={countryOptionTemplate}\r\n />\r\n </div>\r\n\r\n {/* Group */}\r\n <div className=\"form-field\">\r\n <label htmlFor=\"widget-Entity\">Group</label>\r\n <Dropdown\r\n value={this.state.Widget.Group}\r\n options={this.state.objectFields}\r\n virtualScrollerOptions={{ itemSize: 50 }}\r\n onChange={this.onGroupChanged}\r\n optionLabel=\"FieldName\"\r\n optionValue=\"FieldName\"\r\n filter\r\n showClear\r\n filterBy=\"FieldName\"\r\n placeholder=\"Select group\"\r\n />\r\n </div>\r\n\r\n {/* CalcType */}\r\n <div className=\"form-field\">\r\n <label htmlFor=\"widget-Entity\">Calc. Type</label>\r\n <Dropdown\r\n value={this.state.Widget.CalcType}\r\n options={calcTypes}\r\n optionLabel=\"Name\"\r\n optionValue=\"Name\"\r\n optionDisabled={(option) => option?.Disabled}\r\n onChange={this.onCalcTypeChanged}\r\n showClear\r\n required\r\n placeholder=\"Select type\"\r\n />\r\n </div>\r\n\r\n {/* Value */}\r\n <div className=\"form-field\">\r\n <label htmlFor=\"widget-Entity\">Value</label>\r\n <Dropdown\r\n value={this.selectedValueField}\r\n options={this.state.objectFields}\r\n virtualScrollerOptions={{ itemSize: 50 }}\r\n onChange={this.onValueChanged}\r\n optionLabel=\"FieldName\"\r\n // optionValue=\"Id\"\r\n filter\r\n showClear\r\n filterBy=\"FieldName\"\r\n placeholder=\"Select value\"\r\n />\r\n </div>\r\n </div>\r\n </form>\r\n </div>\r\n </div>\r\n\r\n <div className=\"dialog-footer\">\r\n <Button\r\n label=\"Cancel\"\r\n className=\"p-button-text\"\r\n onClick={this.props.onCancelButton.bind(this)}\r\n />\r\n <Button\r\n label=\"Ok\"\r\n form=\"frm\"\r\n // icon=\"pi pi-check\"\r\n onClick={this.props.onOkButton.bind(this, { ...this.state.Widget })}\r\n autoFocus\r\n />\r\n </div>\r\n </div>\r\n );\r\n }\r\n}\r\n\r\nexport default NewWidget;\r\n","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","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?.EntityName)\r\n dataService.getDataByFilters(filters, this.props.widget.EntityName || '')\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.Group + \"\";\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.CalcType) {\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 _ from \"lodash\";\r\nimport { Ripple } from \"primereact/ripple\";\r\nimport { OverlayPanel } from \"primereact/overlaypanel\";\r\nimport { Dropdown } from \"primereact/dropdown\";\r\nimport { Dialog } from \"primereact/dialog\";\r\nimport NewWidget from \"./NewWidget\";\r\nimport { Calendar } from 'primereact/calendar';\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 { Widget } from \"../../types/widget\";\r\nimport WidgetCard from \"./WidgetCard\";\r\n\r\nconst ResponsiveReactGridLayout = WidthProvider(Responsive);\r\nconst newWidgetWidth = 3;\r\n\r\n\r\nconst DashboardDesigner = () => {\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: \"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\nconst array12 = Array.from({length: 12}).fill(null);\r\n var savedLayouts = getFromStorage(\"grid-layout\");\r\n var savedWidgets = getFromStorage(\"grid-widgets\");\r\n\r\n const [layouts, setLayouts] = useState(savedLayouts || { lg: [] });\r\n const [placeholderRowsArray, setplaceholderRowsArray] = useState(Array.from({ length: 10 }).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(10);\r\n const [selectedWidget, setSelectedWidget] = useState();\r\n const [widgetToEdit, setWidgetToEdit] = useState<Widget | null>(null);\r\n const renderPageHeader = () => {\r\n return (\r\n <header className=\"dl-dashboard-header\">\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 <div style={{ width: '192px' }}>\r\n <Dropdown\r\n value={selectedWidget}\r\n options={WidgetTypes}\r\n optionValue=\"Name\"\r\n optionLabel=\"Name\"\r\n onChange={(e) => addComponent(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\r\n </div>\r\n </header>\r\n );\r\n }\r\n function addComponent(componentType) {\r\n toggleDialog();\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 function renderLayoutGrid(layout: any) {\r\n\r\n return (\r\n <ResponsiveReactGridLayout\r\n {...layoutGridProps}\r\n layouts={layouts}\r\n compactType=\"vertical\"\r\n onLayoutChange={(layout, layouts) =>\r\n onLayoutChange(layout, layouts)\r\n }\r\n >\r\n {_.map(layout, (el) => renderWidgetComponent(el))}\r\n </ResponsiveReactGridLayout>\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: any) {\r\n setWidgetToEdit(widget);\r\n toggleDialog();\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 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: Widget) {\r\n\r\n let newWidgetPosition = EvaluateNewWidgetPosition();\r\n\r\n const widgetComponent = widgetComponents.find(\r\n (wc) => wc.type === newWidget.WidgetType\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.WidgetName,\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 const minimumPlaceholderRowsCount = 10;\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 ? 10 : 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 {renderLayoutGrid(layouts[\"lg\"])}\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 * as React from 'react'\nimport DashboardDesigner from './features/Dashboard/DashboardDesigner'\nimport \"./styles.module.css\"\ntype DashboardProps={token:string};\nconst Dashboard = (props:DashboardProps) => {\n localStorage.setItem(\"token\", props?.token);\n\n return (\n <div className='dl-dashboard-body'>\n <DashboardDesigner></DashboardDesigner>\n </div>\n )\n}\nexport default Dashboard;"],"names":["DataService","getObjectTables","filters","token","getTokenFromStorage","apiURL","ConcatFiltersToURL","axios","get","headers","getObjectFields","getDataByFilters","tableName","urlparameters","mykeys","Object","keys","addtionalFiltersValues","i","propName","propValue","ignoreFilter","indexOf","concat","encodeURIComponent","length","JSON","stringify","window","localStorage","getItem","ApiQueryFilters","addAdditionalFilter","FieldName","FieldValue","FieldValue2","FieldValue3","Operator","IsCustom","DisplayInList","IsCustomField","FieldDataType","IgnoreFilter","IsCacheOnClient","ForceEnableAdd","params","ApiQueryFiltersAddParams","pushAdditionalFilter","myReplace","myString","myNewString","removeAdditionalFilter","item","AdditionalFilters","filter","d","IsLookUpfilter","index","splice","existedItem","find","FilterItem","IsLookUpFilter","push","calcTypes","Name","Disabled","chartState","series","data","options","chart","toolbar","show","colors","plotOptions","bar","borderRadius","horizontal","dataLabels","enabled","xaxis","categories","ChartTypes","NewWidget","props","e","selectedTable","target","value","console","log","state","Widget","EntityName","EntityId","Id","setState","Group","ValueFieldId","ValueFieldName","objectFields","selectedValueField","CalcType","defaultWidget","WidgetName","WidgetType","widget","objectTables","getData","service","then","response","Result","t","error","alert","SortBy","render","React","className","style","width","padding","textAlign","Dropdown","placeholder","optionLabel","optionValue","optionDisabled","option","onChange","ReactApexChart","type","height","id","name","htmlFor","InputText","undefined","required","onEntityChanged","showClear","filterBy","virtualScrollerOptions","itemSize","onGroupChanged","onCalcTypeChanged","onValueChanged","Button","label","onClick","onCancelButton","bind","form","onOkButton","autoFocus","Component","ColumnChartComponent","PieChartComponent","MixedChartComponent","AreaChartComponent","stroke","curve","tooltip","x","format","dateFilter","toLocaleDateString","TimelineChartComponent","CandleChartComponent","BarChartComponent","dataService","InitChart","events","dataPointSelection","event","chartContext","config","w","seriesIndex","groups","GroupItems","catItems","dataItems","values","reduce","record","CreateGroup","group","SetGroupData","groupByFieldName","valueFieldName","recordValue","currentGroupValue","key","prototype","hasOwnProperty","call","groupArray","sum","a","b","avg","WidgetCard","moreBtnToggle","useRef","widgetComponents","component","el","icon","current","toggle","OverlayPanel","ref","editBtnClicked","deleteBtnClicked","createElement","wc","ResponsiveReactGridLayout","WidthProvider","Responsive","newWidgetWidth","DashboardDesigner","useState","createRef","array12","Array","from","fill","savedLayouts","getFromStorage","savedWidgets","lg","layouts","setLayouts","placeholderRowsArray","setplaceholderRowsArray","showMsg","setShowMsg","displayDialog","setDisplayDialog","widgets","setWidgets","placeholderRows","setPlaceholderRows","selectedWidget","widgetToEdit","setWidgetToEdit","renderPageHeader","WidgetTypes","addComponent","scrollHeight","componentType","toggleDialog","renderLayoutGrid","layout","layoutGridProps","compactType","onLayoutChange","_","map","renderWidgetComponent","saveToStorage","UpdatePlaceholderDimensions","FindWidget","editWidget","deletePanel","itemIndex","findIndex","reject","SaveGrid","setTimeout","setItem","parse","renderNewWidgetDialog","Dialog","header","visible","onHide","breakpoints","addPanel","newWidget","newWidgetPosition","EvaluateNewWidgetPosition","widgetComponent","randomIndex","getRandomInt","newPanel","y","h","minH","minW","title","widgetYPosition","widgetXPosition","maxY","max","widgetsRow","lastWidgetStartXPosition","Math","apply","lastWidget","lastWidgetEndXPosition","availableHorizontalSlots","cols","min","floor","random","minimumPlaceholderRowsCount","gridLayout","document","getElementsByClassName","gridElementHeight","clientHeight","newPlaceholderRows","rowHeight","md","sm","xs","xxs","useCSSTransforms","Dashboard"],"mappings":"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"}