logitude-dashboard-library 3.2.39 → 3.2.41
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/dist/Constant/FieldDataType.d.ts +27 -0
- package/dist/Constant/MeasureCode.d.ts +10 -0
- package/dist/Utils/General.d.ts +4 -2
- package/dist/features/Dashboard/ChartsComponents/FusionCharts/FusionChartObjectHelper.d.ts +1 -0
- package/dist/index.js +257 -41
- package/dist/index.js.map +1 -1
- package/dist/index.modern.js +257 -41
- package/dist/index.modern.js.map +1 -1
- package/package.json +1 -1
package/dist/index.modern.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"index.modern.js","sources":["../src/services/session.ts","../src/services/tools.ts","../src/services/ApiServices.ts","../src/services/DashboardAnalyticsService.ts","../src/Utils/DateHelper.tsx","../src/Utils/General.tsx","../src/services/WidgetLoadLogService.ts","../src/Utils/WidgetLoadLogger.ts","../src/features/Dashboard/ChartsComponents/CustomCharts/KpiChart.tsx","../src/features/Dashboard/ChartsComponents/CustomCharts/TableChart.tsx","../src/features/Dashboard/ChartsComponents/CustomCharts/PivotGrid.tsx","../src/features/Dashboard/ChartsComponents/CustomCharts/CustomChart.tsx","../src/features/Dashboard/ChartsComponents/FusionCharts/FusionChartTooltip.tsx","../src/features/Dashboard/ChartsComponents/FusionCharts/FusionChartDataSoruceBuilder.tsx","../src/features/Dashboard/ChartsComponents/FusionCharts/FusionChartObjectBuilder.tsx","../src/features/Dashboard/ChartsComponents/FusionCharts/FusionChartHelper.tsx","../src/features/Dashboard/ChartsComponents/FusionCharts/FusionColors.tsx","../src/features/Dashboard/ChartsComponents/FusionCharts/FusionChartObjectHelper.tsx","../src/features/Dashboard/ChartsComponents/FusionCharts/FusionChart.tsx","../src/features/Dashboard/ChartsComponents/FusionCharts/GaugeChart.tsx","../src/features/Dashboard/WidgetCard.tsx","../src/services/clone.ts","../src/features/Dashboard/DashboardDesigner.tsx","../src/index.tsx"],"sourcesContent":["export class Session {\r\n public static CurrentUserId: string;\r\n public static Tenant: number;\r\n public static Token: string;\r\n public static NumberFormatCode: string | null | undefined;\r\n public static isMasterNumberClickable: any;\r\n}","export class Tools {\r\n public static GetLogitudeURL() {\r\n\r\n var logitude_url = location.href.replace('index.html', '');\r\n\r\n if (location.href.indexOf('localhost') > -1) {\r\n logitude_url = 'http://localhost:9996';//localhost:9996//';//\r\n }\r\n\r\n else {\r\n var urlArr = location.href.split(\"/index.html\");\r\n var url = urlArr[0];\r\n url = url.replace(url.substring(url.lastIndexOf('/'), url.length), \"\");\r\n logitude_url = url;\r\n }\r\n\r\n return logitude_url;\r\n }\r\n\r\n public static Map(from: any, to: any) {\r\n if (!from)\r\n return;\r\n if (!to)\r\n to = {};\r\n var keys = Object.keys(from);\r\n for (const k of keys) {\r\n if(from[k]){\r\n to[k] = from[k];\r\n }\r\n }\r\n }\r\n}","import axios from \"axios\";\r\nimport { ApiQueryFilters } from \"../common/data-contracts/ApiQueryFilter\";\r\nimport { APIResult } from \"../types/APIResult\";\r\nimport { Session } from \"./session\";\r\nimport { Tools } from './tools';\r\n\r\n\r\nexport class ApiServices{ \r\n private _apiUrl: string;\r\n constructor(){\r\n this._apiUrl = Tools.GetLogitudeURL() ;\r\n }\r\n getByFilters<T>(api,filters: ApiQueryFilters) {\r\n \r\n let token: string = this.getTokenFromStorage();\r\n\t\tvar apiURL = `${this._apiUrl}${api}`;\r\n\t\tapiURL = this.ConcatFiltersToURL(filters, apiURL);\r\n\r\n return axios.get<APIResult<T>>(apiURL, { headers: { 'Content-Type': 'application/json', 'Token': token } });\r\n }\r\n get<T>(api) {\r\n \r\n let token: string = this.getTokenFromStorage();\r\n\t\tvar apiURL = `${this._apiUrl}${api}`;\r\n return axios.get<T>(apiURL, { headers: { 'Content-Type': 'application/json', 'Token': token } });\r\n }\r\n \r\n post<T>(api,date, requestSignal : any= undefined){\r\n let token: string = this.getTokenFromStorage();\r\n\t\tvar apiURL = `${this._apiUrl}${api}`;\r\n return axios.post<T>(apiURL,date, { headers: { 'Content-Type': 'application/json', 'Token': token }, signal: requestSignal});\r\n }\r\n\r\n getTokenFromStorage(){\r\n return Session.Token || '';\r\n }\r\n private ConcatFiltersToURL(filters: ApiQueryFilters, urlparameters: string)\r\n {\r\n var mykeys = Object.keys(filters);\r\n var addtionalFiltersValues: string | null = null;\r\n\r\n for (var i in mykeys) {\r\n var propName = mykeys[i];\r\n var propValue = filters[propName];\r\n var ignoreFilter = ((propName.indexOf(\"Operator\") > 0 && propValue == \"Equals\") || propName == \"AdditionalFilters\");\r\n\r\n if (urlparameters != \"?\") {\r\n urlparameters = urlparameters.concat('&');\r\n }\r\n\r\n if (!ignoreFilter) {\r\n propValue = propValue ? encodeURIComponent(propValue) : '';\r\n urlparameters = urlparameters.concat(propName.concat('=').concat(propValue));\r\n }\r\n\r\n if (propName == \"AdditionalFilters\" && propValue.length > 0) {\r\n addtionalFiltersValues = JSON.stringify(propValue);\r\n }\r\n }\r\n\r\n if (addtionalFiltersValues) {\r\n urlparameters = urlparameters.concat(\"&AdditionalFilters=\").concat(addtionalFiltersValues);\r\n }\r\n return urlparameters;\r\n }\r\n}","import axios from \"axios\";\r\nimport { ApiQueryFilters } from \"../common/data-contracts/ApiQueryFilter\";\r\nimport { ReactDashboardPM } from \"../types/Dashboard\";\r\nimport { SeriesMeasure } from \"../types/SeriesMeasure\";\r\nimport { ApiServices } from \"./ApiServices\";\r\nimport { Tools } from './tools';\r\nimport { ReactWidgetPM } from '../types/widget';\r\nimport { KpiChartData } from \"../types/KpiChart\";\r\n\r\n\r\nexport class DashboardAnalyticsService{ \r\n _ApiServices:ApiServices;\r\n controller = 'DashboardAnalytics';\r\n constructor(){\r\n this._ApiServices = new ApiServices();\r\n }\r\n \r\n\r\n getData(widget: ReactWidgetPM, signal: any = undefined) {\r\n return this._ApiServices.post<SeriesMeasure[]>(`/api/${this.controller}/PostGetDataAnalytic`,widget, signal);\r\n }\r\n\r\n getTargetAnalyticsData(widget: ReactWidgetPM, signal: any = undefined) {\r\n return this._ApiServices.post<SeriesMeasure[]>(`/api/${this.controller}/PostGetTargetDataAnalytic`,widget, signal);\r\n }\r\n\r\n getKpiData(widget: ReactWidgetPM) {\r\n return this._ApiServices.post<KpiChartData>(`/api/${this.controller}/PostGetKpiData`,widget);\r\n }\r\n\r\n getTableData(widget: ReactWidgetPM) {\r\n return this._ApiServices.post<any>(`/api/${this.controller}/PostGetTableData`,widget);\r\n }\r\n \r\n getGaugeData(widget: ReactWidgetPM, signal: any = undefined) {\r\n return this._ApiServices.post<any>(`/api/${this.controller}/PostGetGaugeData`,widget, signal);\r\n }\r\n \r\n getObjectTableNameByWidgetEntityId(entityId: string | undefined) {\r\n return this._ApiServices.get<any>(`/api/analyticsfactsmetadatas/getsingle?id=` + entityId);\r\n }\r\n\r\n getPivotData(widget: ReactWidgetPM) {\r\n return this._ApiServices.post<any>(`/api/${this.controller}/PostGetPivotData`, widget);\r\n }\r\n}","import moment from \"moment\";\r\nimport { ReactWidgetPM } from \"../types/widget\";\r\n\r\nconst DateGroupCodes = {\r\n Full_Date:'Full Date',\r\n Month: 'Month',\r\n Quarter: 'Quarter',\r\n Year: 'Year',\r\n Month_Year: 'Month & Year',\r\n Quarter_Year: 'Quarter & Year',\r\n}\r\n\r\nconst getDateFormat = (label: any, _format: string) => {\r\n if(!label) return label;\r\n\r\n let _date = moment(label);\r\n if(!_date || !_date.isValid()) return label;\r\n\r\n return _date.format(_format)\r\n}\r\n\r\nconst getQuarterYearFormat = (label: string) => {\r\n if(!label) return label;\r\n\r\n if(label.includes(\"/\")) {\r\n let result = label.split(\"/\");\r\n let quarterVal = result && result[1] ? result[1] : \"\";\r\n let yearVal = result && result[0] ? result[0] : \"\";\r\n\r\n return `${quarterVal} ${yearVal}`\r\n }\r\n\r\n return label;\r\n}\r\n\r\nconst getLabelFormatByDateGroupType = (label: string, widget: ReactWidgetPM, isSecondGrouping: boolean = false)=> {\r\n\r\n if(!widget) return label;\r\n\r\n let groupFieldDataType = isSecondGrouping ? widget.SecondaryDateGroupCode : widget.DateGroupCode;\r\n if(!groupFieldDataType) return label;\r\n\r\n switch(groupFieldDataType){\r\n case DateGroupCodes.Full_Date:\r\n return getDateFormat(label, \"DD MMM YYYY\");\r\n case DateGroupCodes.Month:\r\n return getDateFormat(label, \"MMM\");\r\n case DateGroupCodes.Quarter:\r\n return label;\r\n case DateGroupCodes.Year:\r\n return getDateFormat(label, \"YYYY\");\r\n case DateGroupCodes.Month_Year:\r\n return getDateFormat(label, \"MMM YYYY\");\r\n case DateGroupCodes.Quarter_Year:\r\n return getQuarterYearFormat(label);\r\n\r\n default:\r\n return label;\r\n }\r\n}\r\n\r\nconst getTodayDates = (format: string =\"YYYYMMDD000000\") => {\r\n let dateValues: any = [];\r\n let fromDate = moment().format(format);\r\n let toDate = moment().format(format);\r\n\r\n dateValues.push(fromDate);\r\n dateValues.push(toDate);\r\n\r\n return dateValues;\r\n}\r\n\r\nconst getYesterdayDates = (format: string =\"YYYYMMDD000000\") => {\r\n let dateValues: any = [];\r\n let fromDate = moment().subtract(1, 'days').format(format);\r\n let toDate = moment().subtract(1, 'days').format(format);\r\n\r\n dateValues.push(fromDate);\r\n dateValues.push(toDate);\r\n\r\n return dateValues;\r\n}\r\n\r\nconst getTomorrowDates = (format: string =\"YYYYMMDD000000\") => {\r\n let dateValues: any = [];\r\n let fromDate = moment().add(1, 'days').format(format);\r\n let toDate = moment().add(1, 'days').format(format);\r\n\r\n dateValues.push(fromDate);\r\n dateValues.push(toDate);\r\n\r\n return dateValues;\r\n}\r\n\r\nconst getCurrentWeekDates = (format: string =\"YYYYMMDD000000\") => {\r\n let dateValues: any = [];\r\n let fromDate = moment().startOf('week').format(format);\r\n let toDate = moment().endOf('week').format(format);\r\n\r\n dateValues.push(fromDate);\r\n dateValues.push(toDate);\r\n\r\n return dateValues;\r\n}\r\n\r\nconst getCurrentMonthDates = (format: string =\"YYYYMMDD000000\") => {\r\n let dateValues: any = [];\r\n let fromDate = moment().startOf('month').format(format);\r\n let toDate = moment().endOf('month').format(format);\r\n\r\n dateValues.push(fromDate);\r\n dateValues.push(toDate);\r\n\r\n return dateValues;\r\n}\r\n\r\nconst getPreviousMonthDates = (format: string =\"YYYYMMDD000000\") => {\r\n let dateValues: any = [];\r\n let fromDate = moment().subtract(1, 'months').startOf('month').format(format);\r\n let toDate = moment().subtract(1, 'months').endOf('month').format(format);\r\n\r\n dateValues.push(fromDate);\r\n dateValues.push(toDate);\r\n\r\n return dateValues;\r\n}\r\n\r\nconst getCurrentMonthToDateDates = (format: string =\"YYYYMMDD000000\") => {\r\n let dateValues: any = [];\r\n let fromDate = moment().startOf('month').format(format);\r\n let toDate = moment().format(format);\r\n\r\n dateValues.push(fromDate);\r\n dateValues.push(toDate);\r\n\r\n return dateValues;\r\n}\r\n\r\nconst getPreviousMonthToDateDates = (format: string =\"YYYYMMDD000000\") => {\r\n let dateValues: any = [];\r\n let fromDate = moment().subtract(1, 'months').startOf('month').format(format);\r\n let toDate = moment().format(format);\r\n\r\n dateValues.push(fromDate);\r\n dateValues.push(toDate);\r\n\r\n return dateValues;\r\n}\r\n\r\nconst getCurrentQuarterDates = (format: string =\"YYYYMMDD000000\") => {\r\n let dateValues: any = [];\r\n let fromDate = moment().startOf('quarter').format(format);\r\n let toDate = moment().endOf('quarter').format(format);\r\n\r\n dateValues.push(fromDate);\r\n dateValues.push(toDate);\r\n\r\n return dateValues;\r\n}\r\n\r\nconst getCurrentYearDates = (format: string =\"YYYYMMDD000000\") => {\r\n let dateValues: any = [];\r\n let fromDate = moment().startOf('year').format(format);\r\n let toDate = moment().endOf('year').format(format);\r\n\r\n dateValues.push(fromDate);\r\n dateValues.push(toDate);\r\n\r\n return dateValues;\r\n}\r\n\r\nconst getPreviousYearDates = (format: string =\"YYYYMMDD000000\") => {\r\n let dateValues: any = [];\r\n let fromDate = moment().subtract(1, 'years').startOf('year').format(format);\r\n let toDate = moment().subtract(1, 'years').endOf('year').format(format);\r\n\r\n dateValues.push(fromDate);\r\n dateValues.push(toDate);\r\n\r\n return dateValues;\r\n}\r\n\r\nconst getCurrentYearToDateDates = (format: string =\"YYYYMMDD000000\") => {\r\n let dateValues: any = [];\r\n let fromDate = moment().startOf('year').format(format);\r\n let toDate = moment().format(format);\r\n\r\n dateValues.push(fromDate);\r\n dateValues.push(toDate);\r\n\r\n return dateValues;\r\n}\r\n\r\nconst getPreviousYearToDateDates = (format: string =\"YYYYMMDD000000\") => {\r\n let dateValues: any = [];\r\n let fromDate = moment().subtract(1, 'years').startOf('year').format(format);\r\n let toDate = moment().format(format);\r\n\r\n dateValues.push(fromDate);\r\n dateValues.push(toDate);\r\n\r\n return dateValues;\r\n}\r\n\r\nconst getPreviousQuarterDates = (format: string =\"YYYYMMDD000000\") => {\r\n let dateValues: any = [];\r\n let fromDate = moment().subtract(1, 'quarters').startOf('quarter').format(format);\r\n let toDate = moment().subtract(1, 'quarters').endOf('quarter').format(format);\r\n\r\n dateValues.push(fromDate);\r\n dateValues.push(toDate);\r\n\r\n return dateValues;\r\n}\r\n\r\nconst getCurrentQuarterToDateDates = (format: string =\"YYYYMMDD000000\") => {\r\n let dateValues: any = [];\r\n let fromDate = moment().startOf('quarter').format(format);\r\n let toDate = moment().format(format);\r\n\r\n dateValues.push(fromDate);\r\n dateValues.push(toDate);\r\n\r\n return dateValues;\r\n}\r\n\r\nconst getPreviousQuarterToDateDates = (format: string =\"YYYYMMDD000000\") => {\r\n let dateValues: any = [];\r\n let fromDate = moment().subtract(1, 'quarters').startOf('quarter').format(format);\r\n let toDate = moment().format(format);\r\n\r\n dateValues.push(fromDate);\r\n dateValues.push(toDate);\r\n\r\n return dateValues;\r\n}\r\n\r\nconst getLast7DaysDates = (format: string = \"YYYYMMDD000000\") => {\r\n let dateValues: any = [];\r\n let fromDate = moment().subtract(6, 'days').format(format);\r\n let toDate = moment().format(format);\r\n\r\n dateValues.push(fromDate);\r\n dateValues.push(toDate);\r\n\r\n return dateValues;\r\n}\r\nconst getLast30DaysDates = (format: string = \"YYYYMMDD000000\") => {\r\n let dateValues: any = [];\r\n let fromDate = moment().subtract(29, 'days').format(format);\r\n let toDate = moment().format(format);\r\n\r\n dateValues.push(fromDate);\r\n dateValues.push(toDate);\r\n\r\n return dateValues;\r\n}\r\n\r\nconst getDateRangesByCode = (code: string | null, _fromDate: string | null, _toDate: string | null) => {\r\n let result: any = {\r\n fromDate: null,\r\n toDate: null\r\n }\r\n\r\n if(!code) {\r\n return {\r\n fromDate: getTodayDates()[0],\r\n toDate: getTodayDates()[1]\r\n };\r\n }\r\n\r\n switch(code){\r\n case \"Current_Year\":\r\n result.fromDate = getCurrentYearDates()[0];\r\n result.toDate = getCurrentYearDates()[1];\r\n break;\r\n case \"Previous_Year\":\r\n result.fromDate = getPreviousYearDates()[0];\r\n result.toDate = getPreviousYearDates()[1];\r\n break;\r\n case \"Current_Year_To_Date\":\r\n result.fromDate = getCurrentYearToDateDates()[0];\r\n result.toDate = getCurrentYearToDateDates()[1];\r\n break;\r\n case \"Previous_Year_To_Date\":\r\n result.fromDate = getPreviousYearToDateDates()[0];\r\n result.toDate = getPreviousYearToDateDates()[1];\r\n break;\r\n\r\n case \"Current_Quarter\":\r\n result.fromDate = getCurrentQuarterDates()[0];\r\n result.toDate = getCurrentQuarterDates()[1];\r\n break;\r\n case \"Previous_Quarter\":\r\n result.fromDate = getPreviousQuarterDates()[0];\r\n result.toDate = getPreviousQuarterDates()[1];\r\n break;\r\n case \"Current_Quarter_To_Date\":\r\n result.fromDate = getCurrentQuarterToDateDates()[0];\r\n result.toDate = getCurrentQuarterToDateDates()[1];\r\n break;\r\n case \"Previous_Quarter_To_Date\":\r\n result.fromDate = getPreviousQuarterToDateDates()[0];\r\n result.toDate = getPreviousQuarterToDateDates()[1];\r\n break;\r\n\r\n case \"Current_Month\":\r\n result.fromDate = getCurrentMonthDates()[0];\r\n result.toDate = getCurrentMonthDates()[1];\r\n break;\r\n case \"Previous_Month\":\r\n result.fromDate = getPreviousMonthDates()[0];\r\n result.toDate = getPreviousMonthDates()[1];\r\n break;\r\n case \"Current_Month_To_Date\":\r\n result.fromDate = getCurrentMonthToDateDates()[0];\r\n result.toDate = getCurrentMonthToDateDates()[1];\r\n break;\r\n case \"Previous_Month_To_Date\":\r\n result.fromDate = getPreviousMonthToDateDates()[0];\r\n result.toDate = getPreviousMonthToDateDates()[1];\r\n break;\r\n case \"Custom_Range\":\r\n result.fromDate = _fromDate;\r\n result.toDate = _toDate;\r\n break;\r\n\r\n case \"Today\":\r\n result.fromDate = getTodayDates()[0];\r\n result.toDate = getTodayDates()[1];\r\n break;\r\n case \"Yesterday\":\r\n result.fromDate = getYesterdayDates()[0];\r\n result.toDate = getYesterdayDates()[1];\r\n break;\r\n case \"Tomorrow\":\r\n result.fromDate = getTomorrowDates()[0];\r\n result.toDate = getTomorrowDates()[1];\r\n break;\r\n case \"Last 7 Days\":\r\n result.fromDate = getLast7DaysDates()[0];\r\n result.toDate = getLast7DaysDates()[1];\r\n break;\r\n case \"Last 30 Days\":\r\n result.fromDate = getLast30DaysDates()[0];\r\n result.toDate = getLast30DaysDates()[1];\r\n break;\r\n case \"This Week\":\r\n result.fromDate = getCurrentWeekDates()[0];\r\n result.toDate = getCurrentWeekDates()[1];\r\n break;\r\n \r\n default:\r\n break;\r\n }\r\n\r\n return result;\r\n}\r\nexport {\r\n getLabelFormatByDateGroupType,\r\n getDateRangesByCode\r\n}","import { Session } from \"../services/session\";\r\n\r\nconst isNullOrUndefined = (val: any) => {\r\n return val == null || val == undefined;\r\n}\r\n\r\nconst isNullOrUndefinedOrEmpty = (val: any) => {\r\n return val == null || val == undefined || val == \"\";\r\n}\r\n\r\nconst getGlobalNumberFormatting = () => {\r\n let numberFormatCode = Session.NumberFormatCode;\r\n \r\n let numberSeparatorSettings = {\r\n thousandsSeparator: \",\",\r\n decimalSeparator: \".\",\r\n }\r\n\r\n if (isNullOrUndefinedOrEmpty(numberFormatCode)) return numberSeparatorSettings;\r\n\r\n switch (numberFormatCode) {\r\n case \"CD\":\r\n numberSeparatorSettings.thousandsSeparator = \",\";\r\n numberSeparatorSettings.decimalSeparator = \".\";\r\n break;\r\n case \"DC\":\r\n numberSeparatorSettings.thousandsSeparator = \".\";\r\n numberSeparatorSettings.decimalSeparator = \",\";\r\n break;\r\n case \"AD\":\r\n numberSeparatorSettings.thousandsSeparator = \"'\";\r\n numberSeparatorSettings.decimalSeparator = \".\";\r\n break;\r\n default:\r\n numberSeparatorSettings.thousandsSeparator = \",\";\r\n numberSeparatorSettings.decimalSeparator = \".\";\r\n break;\r\n }\r\n\r\n return numberSeparatorSettings;\r\n}\r\n\r\nconst getNumberInSystemLocalFormat = (value: number, decimalDigitsCount: number = -1, isToolTip: boolean = false): string => {\r\n if(isNaN(value) || value == null || value == undefined) return value + \"\" ;\r\n \r\n const decimalParts = value.toString().split(\".\");\r\n const maxFractionDigits = decimalParts[1] ? decimalParts[1].length : 0;\r\n decimalDigitsCount = decimalDigitsCount == -1 ? maxFractionDigits : decimalDigitsCount;\r\n\r\n let _numberSeparatorSettings = getGlobalNumberFormatting();\r\n\r\n if(!isToolTip){\r\n\r\n let factor = Math.pow(10, decimalDigitsCount);\r\n let truncatedValue = Math.floor(value * factor) / factor;\r\n value = truncatedValue;\r\n }\r\n \r\n\r\n let _val = value.toLocaleString('en-US', {\r\n minimumFractionDigits: 0, \r\n maximumFractionDigits: decimalDigitsCount\r\n });\r\n\r\n if(_val){ \r\n let _formattedValue = _val.replaceAll(\",\", \"*\");\r\n _formattedValue = _formattedValue.replaceAll(\".\", \"#\");\r\n\r\n _formattedValue = _formattedValue.replaceAll(\"*\", _numberSeparatorSettings.thousandsSeparator);\r\n _formattedValue = _formattedValue.replaceAll(\"#\", _numberSeparatorSettings.decimalSeparator);\r\n\r\n return _formattedValue;\r\n }\r\n\r\n return value + \"\";\r\n}\r\n\r\nconst ConvertStringToPascalCaseHelper = (stringValue: string) => {\r\n if(isNullOrUndefinedOrEmpty(stringValue) || typeof stringValue !== 'string') return stringValue || '';\r\n\r\n let splittedWords = stringValue.split(' ').filter(f => f != '');\r\n if(splittedWords.length == 0) return stringValue;\r\n\r\n return stringValue.split(' ').map((t) => {\r\n if(t.length > 0){\r\n return t[0].toUpperCase() + t.slice(1).toLowerCase()\r\n }\r\n\r\n return t;\r\n }).join(' ');\r\n}\r\n\r\nexport {\r\n isNullOrUndefined,\r\n isNullOrUndefinedOrEmpty,\r\n getGlobalNumberFormatting,\r\n getNumberInSystemLocalFormat,\r\n ConvertStringToPascalCaseHelper\r\n}","import { WidgetLoadLog } from \"../types/WidgetLoadLog\";\r\nimport { ApiServices } from \"./ApiServices\";\r\n\r\nexport class WidgetLoadLogService {\r\n _ApiServices: ApiServices;\r\n controller = 'WidgetLoadLogs';\r\n\r\n constructor() {\r\n this._ApiServices = new ApiServices();\r\n }\r\n\r\n create(widgetLoadLog: WidgetLoadLog) {\r\n return this._ApiServices.post<any>(`/api/${this.controller}`, widgetLoadLog, undefined);\r\n }\r\n}","import { WidgetLoadLogService } from \"../services/WidgetLoadLogService\";\r\nimport { ReactWidgetPM } from \"../types/widget\";\r\nimport { WidgetLoadLog } from \"../types/WidgetLoadLog\";\r\nimport { AxiosResponse } from \"axios\";\r\n\r\nexport class WidgetLoadLogger {\r\n\r\n private StartTime: number | null = null;\r\n private Widget: ReactWidgetPM | null = null;\r\n\r\n constructor(widget: ReactWidgetPM, isPreviewMode: boolean | null | undefined) {\r\n if (!isPreviewMode) {\r\n this.StartTime = new Date().getTime();\r\n this.Widget = widget;\r\n }\r\n }\r\n\r\n log(loadDataResponse: AxiosResponse<any, any>) {\r\n if (this.StartTime && this.Widget && loadDataResponse) {\r\n let totalExecutionTime = new Date().getTime() - this.StartTime;\r\n let widgetLoadLogService: WidgetLoadLogService = new WidgetLoadLogService();\r\n let widgetLoadLog: WidgetLoadLog = {\r\n Tenant: this.Widget.Tenant,\r\n WidgetId: this.Widget.Id,\r\n DashboardId: this.Widget.DashboardId,\r\n LoadTime: this.getLoadTime(loadDataResponse),\r\n TotalExecutionTime: totalExecutionTime\r\n };\r\n widgetLoadLogService.create(widgetLoadLog).then(_response => { }, _error => { });\r\n }\r\n this.StartTime = null;\r\n this.Widget = null;\r\n }\r\n\r\n private getLoadTime(loadDataResponse: AxiosResponse<any, any>) {\r\n let loadTimeHeaderKey = \"load-time\";\r\n let loadTimeHeader = loadDataResponse && loadDataResponse.headers && loadDataResponse.headers[loadTimeHeaderKey] ?\r\n loadDataResponse.headers[loadTimeHeaderKey] : \"\";\r\n return this.isNumber(loadTimeHeader) ? Number(loadTimeHeader) : 0;\r\n }\r\n\r\n private isNumber(value: string) {\r\n return value !== null &&\r\n value !== undefined &&\r\n value !== \"\" &&\r\n !isNaN(Number(value.toString()));\r\n }\r\n\r\n}","import { ProgressSpinner } from \"primereact/progressspinner\";\r\nimport React, { useEffect, useRef, useState } from \"react\";\r\nimport { DashboardAnalyticsService } from \"../../../../services/DashboardAnalyticsService\";\r\nimport { Session } from \"../../../../services/session\";\r\nimport { KpiChartData } from \"../../../../types/KpiChart\";\r\nimport { ReactWidgetPM } from \"../../../../types/widget\";\r\nimport { CustomChartProps } from \"./CustomChart\";\r\nimport { ReactComponent as RedWarningIcon } from \"../../../../assets/images/red-warning.svg\"\r\nimport { getDateRangesByCode } from \"../../../../Utils/DateHelper\";\r\nimport { isNullOrUndefined, isNullOrUndefinedOrEmpty } from \"../../../../Utils/General\";\r\nimport { v4 as uuidv4 } from 'uuid';\r\nimport { WidgetLoadLogger } from \"../../../../Utils/WidgetLoadLogger\";\r\n\r\ntype KpiChartProps = {\r\n customChartProps: CustomChartProps;\r\n};\r\n\r\nexport type kPIComparisonSettingsProps = {\r\n\tPeriodFieldId: string | null;\r\n\tPeriodDateFilter: {\r\n\t\tFieldValue: string | null;\r\n\t\tFieldValue2: string | null;\r\n\t\tDatePickerTextFieldValue: string | null;\r\n\t\tDateTimeValueCode: string;\r\n\t\tDateGroupCode: string | null;\r\n\t\tOperator: string | null;\r\n\t};\r\n\tComparePeriodDateFilter: {\r\n\t\tFieldValue: string | null;\r\n\t\tFieldValue2: string | null;\r\n\t\tDatePickerTextFieldValue: string | null;\r\n\t\tDateTimeValueCode: string;\r\n\t\tDateGroupCode: string | null;\r\n\t\tOperator: string | null;\r\n\t};\r\n\tComparisonPeriodType: string | null;\r\n\tComparisonIndicator: boolean;\r\n\tComparisonIncrease: string | null;\r\n}\r\n\r\nconst KpiChart = (props: KpiChartProps) => {\r\n const [isLoading, setIsLoading] = useState<boolean>(true);\r\n const [error, setError] = useState<string>();\r\n const widget = useRef<ReactWidgetPM>();\r\n const [data, setData] = useState<KpiChartData>();\r\n const [isKPICustomSizeNeeded, setIsKPICustomSizeNeeded] = useState<boolean | undefined>(false);\r\n const [triggerId, setTriggerId] = useState(uuidv4());\r\n\r\n useEffect(() => {\r\n widget.current = props.customChartProps.widget;\r\n HandleKPICustomSize();\r\n RefreshData();\r\n\r\n props.customChartProps.dataBinding?.widgetUpdated.subscribe(updatedWidget => {\r\n if (updatedWidget?.key != widget.current?.key) return;\r\n widget.current = {...updatedWidget};\r\n setTriggerId(uuidv4());\r\n });\r\n }, [])\r\n\r\n useEffect(() => {\r\n HandleKPICustomSize();\r\n }, [props.customChartProps])\r\n\r\n const HandleKPICustomSize = () => {\r\n let _isPreviewModeActive = props.customChartProps && props.customChartProps.isPreviewModeActive;\r\n let _isKPICustomResizeNeeded = isKPICustomResizeNeeded();\r\n\r\n setIsKPICustomSizeNeeded(_isKPICustomResizeNeeded && !_isPreviewModeActive)\r\n }\r\n\r\n const calculateWidgetKPISettingsDates = () => {\r\n let _updatedWidget : any = { ...widget.current };\r\n\r\n if(_updatedWidget && _updatedWidget.KPIComparisonSettings && _updatedWidget.KPIComparisonSettings.length) {\r\n let kpiSettings : kPIComparisonSettingsProps = JSON.parse(_updatedWidget.KPIComparisonSettings);\r\n let isKPISettingsActivated = !isNullOrUndefinedOrEmpty(kpiSettings.PeriodFieldId);\r\n\r\n if(isKPISettingsActivated){\r\n let PeriodDateFilterDates = getDateRangesByCode(kpiSettings.PeriodDateFilter.DateTimeValueCode, null, null);\r\n let ComparePeriodDateFilterDates = kpiSettings.ComparisonPeriodType == 'Manually' ? \r\n getDateRangesByCode(kpiSettings.ComparePeriodDateFilter.DateTimeValueCode, kpiSettings.ComparePeriodDateFilter.FieldValue, kpiSettings.ComparePeriodDateFilter.FieldValue2) \r\n : getDateRangesByCode(null, null, null);\r\n\r\n kpiSettings.PeriodDateFilter.FieldValue = PeriodDateFilterDates.fromDate;\r\n kpiSettings.PeriodDateFilter.FieldValue2 = PeriodDateFilterDates.toDate;\r\n\r\n kpiSettings.ComparePeriodDateFilter.FieldValue = ComparePeriodDateFilterDates.fromDate;\r\n kpiSettings.ComparePeriodDateFilter.FieldValue2 = ComparePeriodDateFilterDates.toDate;\r\n\r\n _updatedWidget.KPIComparisonSettings = JSON.stringify(kpiSettings);\r\n }\r\n\r\n return _updatedWidget;\r\n }\r\n\r\n return _updatedWidget;\r\n }\r\n\r\n const RefreshData = () => {\r\n if (Session.Tenant == 0) {\r\n const emptyData = {} as KpiChartData;\r\n emptyData.Value = 0;\r\n setData(emptyData);\r\n setIsLoading(false);\r\n return;\r\n }\r\n \r\n var dashboardAnalyticsService = new DashboardAnalyticsService();\r\n var postWidget: any = calculateWidgetKPISettingsDates();\r\n postWidget.onChange = undefined;\r\n \r\n const widgetLoadLogger = new WidgetLoadLogger(postWidget, props.customChartProps.isPreviewModeActive);\r\n dashboardAnalyticsService.getKpiData(postWidget as ReactWidgetPM).then(result => {\r\n setData(result.data);\r\n handleResponseErrors(result)\r\n setIsLoading(false);\r\n widgetLoadLogger.log(result);\r\n }, error => {\r\n console.log('error', error);\r\n if (error?.response?.data?.ErrorMessage) setError(error?.response?.data?.ErrorMessage);\r\n else setError(error.message);\r\n setIsLoading(false);\r\n })\r\n }\r\n\r\n const handleResponseErrors = (result: any) => {\r\n if(props.customChartProps.onShowError){\r\n if(result?.data && !isNullOrUndefined(result?.data?.Errors) && result?.data?.Errors.length > 0){\r\n props.customChartProps.onShowError(result?.data?.Errors[0]);\r\n }else {\r\n props.customChartProps.onShowError(null);\r\n }\r\n }\r\n }\r\n \r\n const drillDownToKPIValues = (isDrillDownToMainValues: boolean) => {\r\n var measureFieldId;\r\n var currentWidgetMeasure = widget?.current?.WidgetMeasures![0];\r\n if (widget?.current?.WidgetMeasures) measureFieldId = widget?.current?.WidgetMeasures[0]?.MeasureFieldId;\r\n props.customChartProps.onSelectDataPoint({\r\n MeasureFieldId: measureFieldId,\r\n Widget: calculateWidgetKPISettingsDates(),\r\n MeasureCode : currentWidgetMeasure!.MeasureCode,\r\n Formula : currentWidgetMeasure!.Formula,\r\n GroupById: data?.GroupById,\r\n IsKPISecondaryValues: !isDrillDownToMainValues\r\n });\r\n }\r\n\r\n const isComparisonIndicatorChecked = () => {\r\n let _kpiSettings = widget.current?.KPIComparisonSettings;\r\n\r\n if(_kpiSettings){\r\n let _kpiSettingsAsObj = JSON.parse(_kpiSettings);\r\n\r\n return !isNullOrUndefined(_kpiSettingsAsObj.ComparisonIndicator) ? _kpiSettingsAsObj.ComparisonIndicator : false;\r\n }\r\n\r\n return false;\r\n }\r\n\r\n function getRatioComponent(): React.ReactNode {\r\n if (!data?.CompareWithPrevious || !isComparisonIndicatorChecked()) return null;\r\n return (\r\n <div className={\"dl-kpi-ratio-container\"}>\r\n {getArrowComponent()}\r\n <div style={{\r\n fontSize: getKPIFormattingPropertyValue(\"PercentageFontSize\", \"px\")}} \r\n className={'dl-kpi-ratio-text'}>\r\n {data?.Ratio} %\r\n </div>\r\n </div>\r\n );\r\n }\r\n\r\n function getArrowComponent(): React.ReactNode {\r\n if (!data) return null;\r\n\r\n if (data?.Ratio == 0 || data.Value == data.ComparisonValue || ((data.Value == \"0\" || data.Value == 0) && (data.ComparisonValue == \"0\" || data.ComparisonValue == 0)))\r\n return (\r\n <div className=\"dl-kpi-arrow-container\">\r\n <span className={\"dl-kpi-arrow-pic dl-kpi-arrow-up-green\"}></span>\r\n <span className={\"dl-kpi-arrow-pic dl-kpi-arrow-down-red\"} style={{ marginTop: \"2px\" }}></span>\r\n </div>\r\n );\r\n\r\n if (data?.Ratio > 1 && widget.current?.Increase && widget.current?.Increase == \"Positive\")\r\n return (\r\n <div className=\"dl-kpi-arrow-container\">\r\n <span className={\"dl-kpi-arrow-pic dl-kpi-arrow-up-green\"}></span>\r\n </div>\r\n )\r\n\r\n if (data?.Ratio > 1 && widget.current?.Increase && widget.current?.Increase == \"Negative\")\r\n return (\r\n <div className=\"dl-kpi-arrow-container\">\r\n <span className={\"dl-kpi-arrow-pic dl-kpi-arrow-up-red\"}></span>\r\n </div>\r\n )\r\n\r\n if (data?.Ratio < 1 && widget.current?.Increase && widget.current?.Increase == \"Positive\")\r\n return (\r\n <div className=\"dl-kpi-arrow-container\">\r\n <span className={\"dl-kpi-arrow-pic dl-kpi-arrow-down-red\"}></span>\r\n </div>\r\n )\r\n\r\n if (data?.Ratio < 1 && widget.current?.Increase && widget.current?.Increase == \"Negative\")\r\n return (\r\n <div className=\"dl-kpi-arrow-container\">\r\n <span className={\"dl-kpi-arrow-pic dl-kpi-arrow-down-green\"}></span>\r\n </div>\r\n )\r\n\r\n return null;\r\n }\r\n\r\n\r\n\r\n function getPreviousValueComponent(): React.ReactNode {\r\n if (isNullOrUndefined(data) || isNullOrUndefined(data?.ComparisonValue) || isNullOrUndefined(data?.ComparisonLabel)) return \"\";\r\n // let labelFormatByDateGroupType = getLabelFormatByDateGroupType(data!.ComparisonLabel,widget.current!,false)\r\n let formatedValue = data ? data.ComparisonLabel : \"\"; //!isNullOrUndefined(labelFormatByDateGroupType) ? labelFormatByDateGroupType : \"\";\r\n let comparisonValue = data ? data?.ComparisonValue : \"\";\r\n\r\n return (\r\n <div onClick={() => drillDownToKPIValues(false)} title={formatedValue} className={\"dl-kpi-prev-container\"}>\r\n <div style={{\r\n color: getKPIFormattingPropertyValue(\"ComparisonValueFontColor\"),\r\n fontSize: getKPIFormattingPropertyValue(\"ComparisonValueFontSize\", \"px\")}} \r\n className={\"dl-kpi-prev-text\"}>\r\n {`${comparisonValue}${isPercentageMeasureField() ? \"%\" : \"\"}`}\r\n </div>\r\n\r\n {\r\n data?.ComparisonAbbreviationSymbol && \r\n <div style={{\r\n color: getKPIFormattingPropertyValue(\"ComparisonValueFontColor\"),\r\n fontSize: getKPIFormattingPropertyValue(\"ComparisonValueFontSize\", \"px\")}} \r\n className=\"dl-kpi-prev-abbreviationSymbol\">\r\n {data?.ComparisonAbbreviationSymbol}\r\n </div>\r\n }\r\n\r\n {\r\n widget.current && widget.current.ShowMeasureUnit && data?.Unit && \r\n <div style={{\r\n color: getKPIFormattingPropertyValue(\"ComparisonValueFontColor\"),\r\n fontSize: getKPIFormattingPropertyValue(\"ComparisonValueFontSize\", \"px\")}} \r\n className=\"comparison-value-dl-kpi-unit\">\r\n {data?.Unit}\r\n </div>\r\n }\r\n \r\n </div>\r\n );\r\n }\r\n\r\n const isPercentageMeasureField = () => {\r\n return widget?.current && widget?.current.WidgetMeasures && widget?.current.WidgetMeasures[0] && widget?.current.WidgetMeasures[0].MeasureFieldDataType && widget?.current.WidgetMeasures[0].MeasureFieldDataType == 'Percentage';\r\n }\r\n\r\n function getValueData(): React.ReactNode {\r\n if (data?.Value == null)\r\n return (<div className=\"dl-kpi-no-data\">No data to display.</div>);\r\n\r\n return (<div style={{\r\n color: getKPIFormattingPropertyValue(\"MainValueFontColor\"),\r\n fontSize: getKPIFormattingPropertyValue(\"MainValueFontSize\", \"px\")}} \r\n className=\"dl-kpi-value dl-kpi-textTrimming\">\r\n {`${data?.Value}${isPercentageMeasureField() ? \"%\" : \"\"}`}\r\n </div>);\r\n\r\n }\r\n\r\n function getValueComponent(): React.ReactNode {\r\n return (\r\n <div onClick={() => drillDownToKPIValues(true)} className={\"dl-kpi-sub-container\"}>\r\n {getValueData()}\r\n \r\n {\r\n data?.AbbreviationSymbol && \r\n <div style={{\r\n color: getKPIFormattingPropertyValue(\"MainValueFontColor\"),\r\n fontSize: getKPIFormattingPropertyValue(\"MainValueFontSize\", \"px\")}}\r\n className=\"dl-kpi-abbreviationSymbol\">\r\n {data?.AbbreviationSymbol}\r\n </div>\r\n }\r\n \r\n {\r\n widget.current && widget.current.ShowMeasureUnit && data?.Unit && \r\n <div style={{\r\n color: getKPIFormattingPropertyValue(\"MainValueFontColor\"),\r\n fontSize: getKPIFormattingPropertyValue(\"MainValueFontSize\", \"px\")}} \r\n className=\"dl-kpi-unit\">\r\n {data?.Unit}\r\n </div>\r\n }\r\n\r\n {getRatioComponent()}\r\n </div>\r\n );\r\n }\r\n\r\n const getPeriodLabelByPeriodCode = (code : any)=> {\r\n if(!isNullOrUndefinedOrEmpty(code)){\r\n return code.replaceAll(\"_\", \" \");\r\n }\r\n\r\n return \"\";\r\n }\r\n\r\n const getLabelFromKPISettings = ()=> {\r\n if(widget.current && widget.current.KPIComparisonSettings && widget.current.KPIComparisonSettings.length) {\r\n if (widget.current.IsGlobalFilterKPIComparison) {\r\n return getPeriodLabelByPeriodCode(widget.current.GlobalFilterDateTimeValueCode);\r\n }\r\n\r\n let kpiSettings = JSON.parse(widget.current.KPIComparisonSettings);\r\n let PeriodDateFilter = kpiSettings ? kpiSettings.PeriodDateFilter : null;\r\n\r\n let isKPISettingsActivated = !isNullOrUndefinedOrEmpty(kpiSettings.PeriodFieldId)\r\n return isKPISettingsActivated && PeriodDateFilter && PeriodDateFilter.DateTimeValueCode ? getPeriodLabelByPeriodCode(PeriodDateFilter.DateTimeValueCode) : \"\";\r\n }\r\n\r\n return \"\";\r\n }\r\n\r\n const getKPIFormattingData = () => {\r\n return isNullOrUndefinedOrEmpty(widget.current?.KPIFormatSettings) ? {} : JSON.parse(widget.current?.KPIFormatSettings!);\r\n }\r\n\r\n const getKPIFormattingPropertyValue = (propertyName: any, unit: any = \"\") => {\r\n let kpiFormattingData = getKPIFormattingData();\r\n return kpiFormattingData && kpiFormattingData[propertyName] ? kpiFormattingData[propertyName] + unit : undefined;\r\n }\r\n\r\n function getLabel():React.ReactNode{\r\n let formatedValue = data ? data.Label : \"\"; //getLabelFormatByDateGroupType(data!.Label,widget.current!,false)\r\n let label = getLabelFromKPISettings()\r\n\r\n return(\r\n <div onClick={() => drillDownToKPIValues(true)} className={\"dl-kpi-label-container\"}>\r\n <span style={{\r\n color: getKPIFormattingPropertyValue(\"MainPeriodFontColor\"),\r\n fontSize: getKPIFormattingPropertyValue(\"MainPeriodFontSize\", \"px\")}} \r\n title={formatedValue} className={\"dl-kpi-label-span dl-kpi-textTrimming\"}>{label}</span> \r\n </div>\r\n );\r\n }\r\n\r\n const getIsKPIHasSmallestHeight = () => {\r\n return props.customChartProps.widgetRef && props.customChartProps.widgetRef?.Layout && props.customChartProps.widgetRef.Layout?.h == 2\r\n }\r\n\r\n const isKPICustomResizeNeeded = () => {\r\n if(!widget || !widget.current) return;\r\n\r\n // let isThereTitle = !isNullOrUndefined(widget.current?.Title) && widget.current?.Title.length > 0;\r\n // let isThereSubTitle = !isNullOrUndefined(widget.current?.Subtitle) && widget.current?.Subtitle!.length > 0;\r\n let isKPIHasSmallestHeight = getIsKPIHasSmallestHeight();\r\n \r\n return isKPIHasSmallestHeight;\r\n }\r\n\r\n return (\r\n isLoading || !widget.current?\r\n <div className={'dl-full-hight dl-flex-content-center spinner-custome'}>\r\n <ProgressSpinner style={{ width: '40px', height: '40px' }} strokeWidth=\"4\" animationDuration=\"2s\" />\r\n </div>\r\n :\r\n !error && widget.current?\r\n <div key={triggerId} className={(widget.current?.Alighnment == \"Left\" ? \"dl-kpi-container-click db-justify-content-flex-start\" : \"dl-kpi-container-click\")}>\r\n <div className={isKPICustomSizeNeeded ? \"dl-kpi-container kpi-custom-size\" : \"dl-kpi-container\"}>\r\n {getLabel()}\r\n {getValueComponent()}\r\n {getPreviousValueComponent()}\r\n </div>\r\n </div>\r\n : <div className=\"dl-flex-content-center dl-full-hight\" style={{ width: '100%' }}>\r\n <div className=\"dl-tooltip\">\r\n <RedWarningIcon className=\"red-warning-icon\" />\r\n <span className=\"dl-tooltiptext\">{error}</span>\r\n </div>\r\n\r\n </div>\r\n );\r\n}\r\n\r\n\r\nexport default KpiChart;\r\n","import { ProgressSpinner } from \"primereact/progressspinner\";\r\nimport React, { useEffect, useState, useRef } from \"react\";\r\nimport { DashboardAnalyticsService } from \"../../../../services/DashboardAnalyticsService\";\r\nimport { Session } from \"../../../../services/session\";\r\nimport { ReactWidgetPM } from \"../../../../types/widget\";\r\nimport { CustomChartProps } from \"./CustomChart\";\r\nimport { ReactComponent as RedWarningIcon } from \"../../../../assets/images/red-warning.svg\"\r\nimport moment from \"moment\";\r\nimport { ConvertStringToPascalCaseHelper, getNumberInSystemLocalFormat, isNullOrUndefined, isNullOrUndefinedOrEmpty } from \"../../../../Utils/General\";\r\nimport { DataTable } from 'primereact/datatable';\r\nimport { Column } from 'primereact/column';\r\nimport { v4 as uuidv4 } from 'uuid';\r\nimport { WidgetLoadLogger } from \"../../../../Utils/WidgetLoadLogger\";\r\n\r\ntype TableChartProps = {\r\n customChartProps: CustomChartProps;\r\n};\r\n\r\ntype FieldColumn = {\r\n DataTypeCode: string | null;\r\n DisplayName: string | null;\r\n FieldCode: string | null;\r\n Id: string | null;\r\n IsCalculatedColumn: boolean | null;\r\n};\r\n\r\nconst TableChart = (props: TableChartProps) => {\r\n const [isLoading, setIsLoading] = useState<boolean>(true);\r\n const [isTableLoading, setIsTableLoading] = useState<boolean>(false);\r\n const [error, setError] = useState<string>();\r\n const [widget, setWidget] = useState<ReactWidgetPM>();\r\n const [tableData, setTableData] = useState<any>([]);\r\n const [tableColumns, setTableColumns] = useState<any>([]);\r\n const[sortField, setSortField]=useState<any>(null);\r\n const[sortOrder, setSortOrder]=useState<any>(null);\r\n const isDefaultSortOptionsUsed = useRef(false);\r\n const widgetRefData = useRef<ReactWidgetPM | null>(null);\r\n const [objectTableName, setObjectTableName] = useState<string | null>(null);\r\n const [triggerId, setTriggerId] = useState(null);\r\n\r\n \r\n useEffect(() => {\r\n if(props.customChartProps && props.customChartProps.widget) {\r\n setWidget(props.customChartProps.widget);\r\n widgetRefData.current = props.customChartProps.widget;\r\n getObjectTableName(props.customChartProps.widget);\r\n }\r\n\r\n props.customChartProps.dataBinding?.widgetUpdated.subscribe(updatedWidget => {\r\n if (updatedWidget?.key != widgetRefData.current?.key) return;\r\n setWidget({...updatedWidget});\r\n setTriggerId(uuidv4());\r\n });\r\n }, [])\r\n\r\n useEffect(() => {\r\n if(triggerId != null){\r\n ReOrderColumns(widget?.Columns);\r\n }\r\n \r\n }, [triggerId])\r\n\r\n const ReOrderColumns = (updatedWidgetColumns: any) => {\r\n if(updatedWidgetColumns == null || updatedWidgetColumns == undefined || (typeof updatedWidgetColumns == 'string' && updatedWidgetColumns?.length == 0)){\r\n return;\r\n }\r\n\r\n let updatedWidgetColumnsData = JSON.parse(updatedWidgetColumns);\r\n\r\n let _updatedTableColumns : any = [];\r\n updatedWidgetColumnsData.forEach((c: any)=> {\r\n let col : any = tableColumns.find(f => f.Id == c.Id);\r\n\r\n if(col){\r\n _updatedTableColumns.push(col)\r\n }\r\n });\r\n\r\n setTableColumns([..._updatedTableColumns])\r\n }\r\n\r\n const getObjectTableName = (widget : ReactWidgetPM | undefined) => {\r\n let dashboardAnalyticsService = new DashboardAnalyticsService();\r\n\r\n dashboardAnalyticsService.getObjectTableNameByWidgetEntityId(widget?.EntityId)\r\n .then((res: any) => {\r\n if (res && res.data && res.data.ObjectTableName) {\r\n setObjectTableName(res.data.ObjectTableName);\r\n getTableData(widget); \r\n } else {\r\n setError(\"Erorr: No object table name match this widget entity id\");\r\n setIsLoading(false);\r\n }\r\n })\r\n .catch(() => {\r\n setError(\"Erorr: No object table name match this widget entity id\");\r\n setIsLoading(false);\r\n })\r\n \r\n \r\n }\r\n\r\n const getTableData= (widget : any) => {\r\n if (Session.Tenant == 0) {\r\n setTableData([]);\r\n setIsLoading(false);\r\n return;\r\n }\r\n\r\n let dashboardAnalyticsService = new DashboardAnalyticsService();\r\n widget.onChange = undefined;\r\n widget.PageIndex = 0;\r\n widget.PageSize = 100;\r\n \r\n const widgetLoadLogger = new WidgetLoadLogger(widget, props.customChartProps.isPreviewModeActive);\r\n dashboardAnalyticsService.getTableData(widget as ReactWidgetPM)\r\n .then((res: any) => {\r\n if(res && res.data) {\r\n fillTableData(res.data);\r\n }\r\n setIsLoading(false);\r\n widgetLoadLogger.log(res);\r\n })\r\n .catch((error: any) => {\r\n if (error?.response?.data?.ErrorMessage) setError(error?.response?.data?.ErrorMessage);\r\n else setError(error.message);\r\n setIsLoading(false);\r\n })\r\n }\r\n\r\n const getBooleanStringValue = (value: any) => {\r\n if(isNullOrUndefined(value)) return \"\";\r\n\r\n let _value = value + \"\";\r\n return _value.charAt(0).toUpperCase() + _value.slice(1);\r\n }\r\n \r\n const getDateTimeValue = (value: any , datePart : string | null = null) => {\r\n if(!value) return value;\r\n\r\n let _date = moment(value);\r\n if(!_date || !_date.isValid()) return value;\r\n \r\n if(!datePart){\r\n return `${_date.format(\"DD MMM YYYY\")} ${_date.format(\"HH:mm\")}`;\r\n }\r\n\r\n if(datePart == 'Date'){\r\n return `${_date.format(\"DD MMM YYYY\")}`;\r\n\r\n }else{\r\n return `${_date.format(\"HH:mm\")}`;\r\n }\r\n }\r\n\r\n const fillTableData = (tableData : any) => {\r\n let tableRecords: any = [];\r\n if(tableData.Fields && tableData.Fields.length){\r\n setTableColumns([...tableData.Fields]);\r\n setDefaultSortOptions(tableData.Fields);\r\n }\r\n\r\n if(tableData.Result && tableData.Result.length){\r\n tableData.Result.forEach((item: any) => {\r\n\r\n let _tableRow: any = {...item};\r\n tableData.Fields.forEach((field: any) => {\r\n let key = field.FieldCode\r\n let valueType = field.DataTypeCode;\r\n\r\n let _value = valueType && valueType == \"Boolean\" ? getBooleanStringValue(item[key]) : item[key]\r\n _tableRow[key] = isNullOrUndefined(_value) ? \"\" : _value;\r\n })\r\n\r\n tableRecords.push(_tableRow);\r\n })\r\n }\r\n\r\n setTableData([...tableRecords]); \r\n }\r\n\r\n const setDefaultSortOptions = (tableCols: any = []) => {\r\n if(isDefaultSortOptionsUsed && isDefaultSortOptionsUsed.current) return;\r\n\r\n isDefaultSortOptionsUsed.current= true;\r\n\r\n let _widget : any = props.customChartProps ? props.customChartProps.widget : null;\r\n if(!_widget) return;\r\n \r\n let _sortFieldCode = getSortFieldCodeBySortFieldId(_widget.DefaultSortBy, tableCols);\r\n let _sortDirection = _widget.DefaultSortDirection ? _widget.DefaultSortDirection == 'asc' ? 1 : _widget.DefaultSortDirection == 'desc' ? -1 : 0 : null;\r\n\r\n setSortField(_sortFieldCode);\r\n setSortOrder(_sortDirection)\r\n }\r\n\r\n const getSortFieldCodeBySortFieldId = (sortFieldId: any, tableCols: any = []) => {\r\n if(!sortFieldId) return null;\r\n\r\n let field = tableCols.find(col => col.Id == sortFieldId);\r\n return field ? field.FieldCode : null;\r\n }\r\n\r\n const getSortFieldIdBySortFieldCode = (sortFieldCode: any) => {\r\n if(!sortFieldCode) return null;\r\n\r\n let field = tableColumns.find(col => col.FieldCode == sortFieldCode);\r\n return field ? field.Id : null;\r\n }\r\n\r\n const sortTableData = (sortedField: any, isCalculatedColumn: boolean | null)=> {\r\n if(!canSort()) return;\r\n\r\n setSortField(sortedField);\r\n let _sortOrder = sortOrder == 1 ? -1 : sortOrder == -1 ? 1 : 1;\r\n setSortOrder(_sortOrder);\r\n\r\n let _widget : any = props.customChartProps.widget;\r\n let dashboardAnalyticsService = new DashboardAnalyticsService();\r\n _widget.onChange = undefined;\r\n _widget.PageIndex = 0;\r\n _widget.PageSize = 100;\r\n _widget.ScreenSortBy = getSortFieldIdBySortFieldCode(sortedField);\r\n _widget.ScreenSortDirection = _sortOrder == 1 ? 'asc' : _sortOrder == -1 ? 'desc' : null;\r\n _widget.ScreenSortByType = isNullOrUndefinedOrEmpty(isCalculatedColumn) ? \"Field\" : isCalculatedColumn ? \"CalculatedColumn\" : \"Field\"\r\n\r\n setIsTableLoading(true);\r\n dashboardAnalyticsService.getTableData(_widget as ReactWidgetPM)\r\n .then((res: any) => {\r\n if(res && res.data) {\r\n fillTableData(res.data);\r\n }\r\n setIsTableLoading(false);\r\n })\r\n .catch((error: any) => {\r\n if (error?.response?.data?.ErrorMessage) setError(error?.response?.data?.ErrorMessage);\r\n else setError(error.message);\r\n setIsTableLoading(false);\r\n })\r\n }\r\n\r\n const canSort = ()=> {\r\n if(props.customChartProps){\r\n return !props.customChartProps.isInEditMode && !props.customChartProps.isPreviewModeActive;\r\n }\r\n return false;\r\n }\r\n\r\n const getTableFormattingData = () => {\r\n return widget && isNullOrUndefinedOrEmpty(widget.TableFormatSettings) ? {} : JSON.parse(widget?.TableFormatSettings!);\r\n }\r\n\r\n const getTableFormattingPropertyValue = (propertyName: any, unit: any = \"\") => {\r\n let tableFormattingData = getTableFormattingData();\r\n return tableFormattingData && tableFormattingData[propertyName] ? tableFormattingData[propertyName] + unit : undefined;\r\n }\r\n\r\n const getTableConditionalRulesData = () => {\r\n return widget && isNullOrUndefinedOrEmpty(widget.TableConditionalRules) ? [] : JSON.parse(widget?.TableConditionalRules!);\r\n }\r\n\r\n const isValueEmpty = (val: any) => {\r\n return val === null || val === undefined || val === \"\";\r\n }\r\n\r\n const IsValidRule = (rule, value) => {\r\n let operator = rule && rule.RuleOperator ? rule.RuleOperator.Code : null;\r\n if(!operator) return null;\r\n\r\n let ruleValue1 = rule.RuleValue1;\r\n let ruleValue2 = rule.RuleValue2;\r\n\r\n switch (operator) {\r\n case \"Equal\":\r\n return ruleValue1 == value;\r\n case \"NotEqual\":\r\n return ruleValue1 != value;\r\n case \"Between\":\r\n return !isValueEmpty(ruleValue1) && !isValueEmpty(ruleValue2) && ruleValue1 <= value && value <= ruleValue2;\r\n case \"GreaterThan\":\r\n return !isValueEmpty(ruleValue1) && value > ruleValue1;\r\n case \"GreaterThanOrEqual\":\r\n return !isValueEmpty(ruleValue1) && value >= ruleValue1;\r\n case \"LessThan\":\r\n return !isValueEmpty(ruleValue1) && value < ruleValue1;\r\n case \"LessThanOrEqual\":\r\n return !isValueEmpty(ruleValue1) && value <= ruleValue1;\r\n case \"IsEmpty\":\r\n return isValueEmpty(value);\r\n case \"IsNotEmpty\":\r\n return !isValueEmpty(value);\r\n case \"Contains\":\r\n return !isValueEmpty(value) && !isValueEmpty(ruleValue1) && value.includes(ruleValue1);\r\n case \"NotContains\":\r\n return !isValueEmpty(value) && !isValueEmpty(ruleValue1) && !value.includes(ruleValue1);\r\n default:\r\n return null;\r\n }\r\n }\r\n\r\n const getCellPropertyByRule = (column: FieldColumn, cellValue: any, propertyName: string, defaultValue: string | null = null) => {\r\n let tableFormattingData = getTableConditionalRulesData();\r\n\r\n let columnType = column.IsCalculatedColumn ? \"CalculatedColumn\" : \"Field\";\r\n let columnData = tableFormattingData.find((el: any) => el.FieldId == column.Id && el.FieldType == columnType);\r\n\r\n if(!columnData || !columnData.FieldRules || columnData.FieldRules.length == 0) {\r\n return defaultValue ? getTableFormattingPropertyValue(defaultValue) : undefined; \r\n };\r\n\r\n let firstValidRule = columnData.FieldRules.find((rule: any) => IsValidRule(rule, cellValue));\r\n\r\n if(!firstValidRule) {\r\n return defaultValue ? getTableFormattingPropertyValue(defaultValue) : undefined;\r\n }\r\n\r\n return !isNullOrUndefinedOrEmpty(firstValidRule[propertyName]) ? \r\n firstValidRule[propertyName] : defaultValue ? \r\n getTableFormattingPropertyValue(defaultValue) : undefined;\r\n }\r\n \r\n const getCellFloatAlignment = (column: FieldColumn) => {\r\n if(column.DataTypeCode == 'Decimal' || column.DataTypeCode == 'Percentage'|| column.DataTypeCode == 'Integer' \r\n || column.DataTypeCode == 'Double' || column.DataTypeCode == 'SigDouble'){\r\n return \"right\";\r\n }\r\n \r\n return \"unset\";\r\n }\r\n\r\n const isClickableCell = (fieldCode: string | null , rowDate : any | null = null) => {\r\n return ((fieldCode == \"ShipmentNumber\" && objectTableName == \"Shipment\") ||\r\n IsShipmentMasterFieldClickable(fieldCode,rowDate) ||\r\n (fieldCode == \"InvoiceNumber\" && objectTableName == \"APInvoice\") ||\r\n (fieldCode == \"InvoiceNumber\" && objectTableName == \"ARInvoice\") ||\r\n (fieldCode == \"ContainerNumber\" && objectTableName == \"Container\") ||\r\n (fieldCode == \"QuoteNumber\" && objectTableName == \"Quote\") ||\r\n (fieldCode == \"Subject\" && objectTableName == \"Opportunity\") ||\r\n (fieldCode == \"EnglishName\" && objectTableName == \"Customer\") ||\r\n (fieldCode == \"TaskNumber\" && objectTableName == \"Task\") ||\r\n (fieldCode == \"TicketNumber\" && objectTableName == \"Ticket\"))\r\n }\r\n\r\n const IsShipmentMasterFieldClickable = (fieldCode: string | null , rowData: any | null = null) => {\r\n\r\n if(Session.isMasterNumberClickable && objectTableName === \"Shipment\" && fieldCode === \"Master\" && Session.isMasterNumberClickable(rowData)){\r\n return true;\r\n }\r\n\r\n return false;\r\n }\r\n\r\n const tableCellClicked = (data: any, fieldCode: string | null) => {\r\n if(!data || !data.Id || !isClickableCell(fieldCode,data) || props.customChartProps.isInEditMode) return;\r\n\r\n props.customChartProps.onSelectDataPoint({\r\n ObjectTableName: objectTableName,\r\n TableRowEntityId: data.Id,\r\n RowData : data,\r\n FieldCode : fieldCode\r\n });\r\n }\r\n\r\n const getCellValue = (data: any, column: FieldColumn) => {\r\n if(isNullOrUndefined(data) || isNullOrUndefined(column)) {\r\n return \"\";\r\n }\r\n\r\n let columnValue = data[column.FieldCode!];\r\n if(column.DataTypeCode == \"Percentage\") {\r\n return !isNullOrUndefined(columnValue) ? getNumberInSystemLocalFormat(Number(columnValue), 2) + \"%\" : 0 + '%';\r\n }\r\n\r\n\r\n if(column.DataTypeCode == \"Decimal\" || column.DataTypeCode == \"Integer\"\r\n || column.DataTypeCode == \"Double\" || column.DataTypeCode == \"SigDouble\") {\r\n return !isNullOrUndefined(columnValue) ? getNumberInSystemLocalFormat(Number(columnValue), 2) : \"\";\r\n }\r\n\r\n return ConvertStringToPascalCaseHelper(columnValue)\r\n }\r\n\r\n const cellTemplateBody = (data: any, column: FieldColumn) => {\r\n if(!column || !column.FieldCode) return \"\";\r\n\r\n if(column.DataTypeCode == \"DateTime\" || column.DataTypeCode == \"Date\"){\r\n\r\n let fontColor : string = getTableFormattingPropertyValue(\"TableCellFontColor\");\r\n let fontSizeWithoutUnit = getTableFormattingPropertyValue(\"TableCellFontSize\");\r\n let fontSizeWitUnit = getTableFormattingPropertyValue(\"TableCellFontSize\",\"px\");\r\n let width = fontSizeWithoutUnit ? `${(fontSizeWithoutUnit * 6)}px` : `${70}px`;\r\n\r\n return <div title={getDateTimeValue(data[column.FieldCode!])}\r\n className=\"date-time-value-container\"\r\n style={{color: fontColor}}>\r\n\r\n <span className=\"table-cell-datetime\"\r\n style={{fontSize: fontSizeWitUnit, width : width , display:'inline-block'}}>\r\n {getDateTimeValue(data[column.FieldCode!],'Date')}\r\n </span> \r\n\r\n <span className=\"table-cell-datetime\" style={{fontSize: fontSizeWitUnit}}>\r\n {getDateTimeValue(data[column.FieldCode!],'Time')}\r\n </span>\r\n </div>\r\n\r\n }else{\r\n\r\n return <span \r\n onClick={() => tableCellClicked(data, column.FieldCode)}\r\n title={getCellValue(data, column)} \r\n className={`table-cell ${isClickableCell(column.FieldCode,data) ? 'table-link-cell' :''}`} \r\n style={{\r\n color: getTableFormattingPropertyValue(\"TableCellFontColor\"),\r\n backgroundColor: getCellPropertyByRule(column, data[column.FieldCode!], 'RuleBackgroundColor'),\r\n fontSize: getTableFormattingPropertyValue(\"TableCellFontSize\", \"px\"),\r\n float: getCellFloatAlignment(column)}}>\r\n {getCellValue(data, column)}\r\n </span>\r\n }\r\n }\r\n\r\n const headerTemplate = (column: FieldColumn)=> {\r\n let sortClassIcon = \"\";\r\n if(sortField != column.FieldCode) {\r\n return <div style={{ backgroundColor: getTableFormattingPropertyValue(\"TableHeaderBackgroundColor\") }}\r\n onClick={() => sortTableData(column.FieldCode, column.IsCalculatedColumn)} className=\"header-content\">\r\n <span style={{\r\n color: getTableFormattingPropertyValue(\"TableHeaderFontColor\"),\r\n fontSize: getTableFormattingPropertyValue(\"TableHeaderFontSize\", \"px\")}} \r\n className=\"p-column-title\">\r\n {column.DisplayName}\r\n {/* {canSort() && \r\n <span \r\n style={{\r\n fontSize: getTableFormattingPropertyValue(\"TableHeaderFontSize\", \"px\"),\r\n width: getTableFormattingPropertyValue(\"TableHeaderFontSize\", \"px\"),\r\n height: getTableFormattingPropertyValue(\"TableHeaderFontSize\", \"px\")}} \r\n className=\"p-sortable-column-icon p-ml-2 pi pi-fw pi-sort-alt\">\r\n\r\n </span>\r\n } */}\r\n </span>\r\n </div>\r\n }\r\n\r\n if(sortOrder == 1){\r\n // arrow up\r\n sortClassIcon = \"p-sortable-column-icon p-ml-2 pi pi-fw pi-sort-amount-up-alt\";\r\n }else if(sortOrder == -1){\r\n // arrow down\r\n sortClassIcon = \"p-sortable-column-icon p-ml-2 pi pi-fw pi-sort-amount-down\";\r\n } else {\r\n // 2 arrows, up and down\r\n sortClassIcon = \"p-sortable-column-icon p-ml-2 pi pi-fw pi-sort-alt\";\r\n }\r\n\r\n return <div style={{ backgroundColor: getTableFormattingPropertyValue(\"TableHeaderBackgroundColor\") }}\r\n onClick={() => sortTableData(column.FieldCode, column.IsCalculatedColumn)} className=\"header-content\">\r\n <span style={{\r\n color: getTableFormattingPropertyValue(\"TableHeaderFontColor\"),\r\n fontSize: getTableFormattingPropertyValue(\"TableHeaderFontSize\", \"px\")}} \r\n className=\"p-column-title\">\r\n {column.DisplayName}\r\n {/* {canSort() && \r\n <span \r\n style={{\r\n fontSize: getTableFormattingPropertyValue(\"TableHeaderFontSize\", \"px\"),\r\n width: getTableFormattingPropertyValue(\"TableHeaderFontSize\", \"px\"),\r\n height: getTableFormattingPropertyValue(\"TableHeaderFontSize\", \"px\")}} \r\n className={sortClassIcon}>\r\n </span>\r\n } */}\r\n </span>\r\n </div>\r\n }\r\n\r\n\r\n return (\r\n isLoading ?\r\n <div className={'dl-full-hight dl-flex-content-center spinner-custome'}>\r\n <ProgressSpinner style={{ width: '40px', height: '40px' }} strokeWidth=\"4\" animationDuration=\"2s\" />\r\n </div> :\r\n\r\n error ?\r\n <div className=\"dl-flex-content-center dl-full-hight\" style={{ width: '100%' }}>\r\n <div className=\"dl-tooltip\">\r\n <RedWarningIcon className=\"red-warning-icon\" />\r\n <span className=\"dl-tooltiptext\">{error}</span>\r\n </div>\r\n\r\n </div> :\r\n <DataTable loading={isTableLoading} value={tableData} resizableColumns={!props.customChartProps.isInEditMode} columnResizeMode=\"fit\" responsiveLayout=\"scroll\">\r\n {\r\n tableColumns.map((column: any, index: number) => {\r\n return <Column key={column.FieldCode + \"_\" + index} header={() => headerTemplate(column)} body={(data: any) => cellTemplateBody(data, column)}></Column> \r\n })\r\n }\r\n </DataTable> \r\n )\r\n\r\n\r\n\r\n\r\n}\r\n\r\n\r\nexport default TableChart;\r\n\r\n","import React, { forwardRef, useCallback, useEffect, useRef, useState } from 'react';\r\nimport PivotGrid, {\r\n FieldChooser, FieldPanel, Scrolling,\r\n} from 'devextreme-react/pivot-grid';\r\nimport { DashboardAnalyticsService } from '../../../../services/DashboardAnalyticsService';\r\nimport { CustomChartProps } from './CustomChart';\r\nimport { Session } from '../../../../services/session';\r\nimport PivotGridDataSource from 'devextreme/ui/pivot_grid/data_source';\r\nimport { ProgressSpinner } from 'primereact/progressspinner';\r\nimport { ConvertStringToPascalCaseHelper, getNumberInSystemLocalFormat, isNullOrUndefinedOrEmpty } from '../../../../Utils/General';\r\nimport { ReactWidgetPM } from '../../../../types/widget';\r\nimport { WidgetLoadLogger } from '../../../../Utils/WidgetLoadLogger';\r\n\r\ntype PivotChartProps = {\r\n customChartProps: CustomChartProps;\r\n};\r\n\r\nconst PivotTable = forwardRef((props: PivotChartProps, comRef) => {\r\n\r\n const [widget, setWidget] = useState<ReactWidgetPM>();\r\n const [isLoading, setIsLoading] = useState<boolean>(true);\r\n\r\n const widgetRefData = useRef<ReactWidgetPM | null>(null);\r\n const tabledata = useRef<any>();\r\n const pivotGridRef = useRef<PivotGrid>(null);\r\n\r\n const [dataSource, setDataSource] = useState<any>(new PivotGridDataSource({\r\n store: [],\r\n fields: [],\r\n }));\r\n\r\n\r\n useEffect(() => {\r\n if (props.customChartProps && props.customChartProps.widget) {\r\n setWidget(props.customChartProps.widget);\r\n widgetRefData.current = props.customChartProps.widget;\r\n getPivotTableData(props.customChartProps.widget);\r\n }\r\n\r\n props.customChartProps.dataBinding?.widgetUpdated.subscribe(updatedWidget => {\r\n if (updatedWidget?.key != widgetRefData.current?.key) return;\r\n setWidget({ ...updatedWidget });\r\n });\r\n\r\n document.addEventListener(\"resizeStop\", handleResize);\r\n return () => {\r\n document.removeEventListener(\"resizeStop\", handleResize);\r\n };\r\n }, [])\r\n\r\n useEffect(() => {\r\n if(props.customChartProps.isInEditMode){\r\n if(pivotGridRef.current && pivotGridRef.current?.instance && pivotGridRef.current.instance.element \r\n && pivotGridRef.current.instance.element().classList){\r\n pivotGridRef.current.instance.element().classList.add('force-overflow-hidden')\r\n }\r\n setTimeout(() => {\r\n handleResize();\r\n if(pivotGridRef.current && pivotGridRef.current?.instance && pivotGridRef.current.instance.element\r\n && pivotGridRef.current.instance.element().classList){\r\n pivotGridRef.current.instance.element().classList.remove('force-overflow-hidden')\r\n }\r\n }, 5);\r\n }\r\n\r\n }, [props.customChartProps.isInEditMode])\r\n\r\n const handleResize = () => {\r\n if(pivotGridRef.current && pivotGridRef.current?.instance && pivotGridRef.current?.instance.repaint){\r\n pivotGridRef.current?.instance.repaint()\r\n }\r\n }\r\n\r\n const getPivotTableData = (widget: any) => {\r\n if (Session.Tenant == 0) {\r\n tabledata.current = [];\r\n setIsLoading(false);\r\n return;\r\n }\r\n\r\n let dashboardAnalyticsService = new DashboardAnalyticsService();\r\n\r\n const widgetLoadLogger = new WidgetLoadLogger(props.customChartProps.widget as any, props.customChartProps.isPreviewModeActive);\r\n dashboardAnalyticsService.getPivotData(props.customChartProps.widget as any)\r\n .then((res) => {\r\n tabledata.current = res.data;\r\n setPivotDataSourceFields();\r\n setIsLoading(false);\r\n widgetLoadLogger.log(res);\r\n })\r\n .catch(err => {\r\n console.log(\"Error while Getting Pivot Table Data: \", err);\r\n tabledata.current = null;\r\n setPivotDataSourceFields();\r\n setIsLoading(false);\r\n })\r\n }\r\n const customizeCells = useCallback((e) => {\r\n if (e.cell.rowPath && e.cell.rowPath[0] === \"Germany\" && e.cell.columnPath && e.cell.columnPath[0] === \"Export\" && e.cell.columnPath[1] === \"Air\") {\r\n\r\n e.cellElement.children[0].style.padding = \"6px\";\r\n e.cellElement.children[0].style.borderRadius = \"6px\";\r\n e.cellElement.children[0].style.backgroundColor = \"#f4433673\";\r\n }\r\n\r\n if (e.cell.rowPath && e.cell.rowPath[0] === \"USA\" && e.cell.columnPath && e.cell.columnPath[0] === \"Import\" && e.cell.columnPath[1] === \"Inland\") {\r\n\r\n e.cellElement.children[0].style.padding = \"6px\";\r\n e.cellElement.children[0].style.borderRadius = \"6px\";\r\n e.cellElement.children[0].style.backgroundColor = \"#03a9f4ad\";\r\n }\r\n }, []);\r\n\r\n const onCellClick = useCallback((e: any) => {\r\n if (e.area === 'data') {\r\n let pivotFields: any = [];\r\n\r\n e.columnFields.forEach((c: any, index: number) => {\r\n let fieldValue = e.cell.columnPath[index];\r\n if(fieldValue !== undefined){\r\n pivotFields.push({ ...c.fieldData, FieldValue: fieldValue })\r\n }\r\n })\r\n\r\n e.rowFields.forEach((r: any, index: number) => {\r\n let fieldValue = e.cell.rowPath[index];\r\n if(fieldValue !== undefined){\r\n pivotFields.push({ ...r.fieldData, FieldValue: fieldValue })\r\n }\r\n })\r\n \r\n props.customChartProps.onSelectDataPoint({\r\n MeasureFieldId: '',\r\n Widget: props.customChartProps.widget,\r\n MeasureCode: '',\r\n Formula: '',\r\n GroupById: '',\r\n PivotFields: pivotFields\r\n });\r\n }\r\n }, []);\r\n\r\n const getColumnNameByColumnId = (fieldName, dataField, datafieldValue) => {\r\n let data = tabledata.current.PivotData.find(el => el[dataField] == datafieldValue)\r\n\r\n return data ? ConvertStringToPascalCaseHelper(data[fieldName]) : ''\r\n }\r\n\r\n const SortRowAndColumnHeaders = (a: any, b: any, field: any) => {\r\n if(field.DateCode == 'Month'){\r\n let aValue = a.value == null ? -1 : Number(a.value);\r\n let bValue = b.value == null ? -1 : Number(b.value);\r\n if(aValue < bValue) { return -1; }\r\n if(aValue > bValue) { return 1; }\r\n return 0;\r\n\r\n }else if(field.DateCode != null){\r\n\r\n let aValue = a.value == null ? '' : a.value;\r\n let bValue = b.value == null ? '' : b.value;\r\n if(aValue < bValue) { return -1; }\r\n if(aValue > bValue) { return 1; }\r\n return 0;\r\n\r\n }else{\r\n let aText = a.text == null ? '' : a.text;\r\n let bText = b.text == null ? '' : b.text;\r\n if(aText < bText) { return -1; }\r\n if(aText> bText) { return 1; }\r\n return 0;\r\n }\r\n\r\n \r\n }\r\n\r\n const setPivotDataSourceFields = () => {\r\n if (tabledata.current && tabledata.current.PivoFields && tabledata.current.PivotMeasures) {\r\n // Fill Pivot Rows & Columns fields\r\n let pivotRowsAndColumnsFields = tabledata.current.PivoFields.map(field => {\r\n return {\r\n dataField: field.PivotCode,\r\n caption: field.DisplayName,\r\n name: field.PivotName,\r\n width: 100,\r\n allowSorting: false,\r\n allowFiltering: false,\r\n area: field.PivotCode && field.PivotCode.includes('Row') ? 'row' : 'column',\r\n sortingMethod: (a, b)=> {\r\n return SortRowAndColumnHeaders(a, b, field);\r\n },\r\n expanded: true,\r\n wordWrapEnabled: true,\r\n fieldData: {\r\n FieldId: field.FieldId,\r\n FieldType: field.FieldType ? field.FieldType : \"Field\",\r\n FieldValue: '',\r\n DateCode : field.DateCode\r\n },\r\n customizeText: (cellInfo) => {\r\n return getColumnNameByColumnId(field.PivotName, field.PivotCode, cellInfo.value)\r\n }\r\n }\r\n })\r\n\r\n // Fill Pivot Data Cells fields\r\n let pivotDataCellsFields = tabledata.current.PivotMeasures.map(measure => {\r\n return {\r\n dataField: measure.PivotMeasureCode,\r\n area: 'data',\r\n dataType: 'number',\r\n wordWrapEnabled: true,\r\n caption: measure.MeasureCode == 'Sum' && typeof measure.DisplayName == 'string' ? ConvertStringToPascalCaseHelper(measure.DisplayName.replace(\"Sum of \", \"\")) : ConvertStringToPascalCaseHelper(measure.DisplayName),\r\n summaryType: 'custom',\r\n calculateCustomSummary: (options) => {\r\n if(options.summaryProcess == 'calculate'){\r\n let _value = !isNullOrUndefinedOrEmpty(options.value) ? options.value : 0;\r\n \r\n let decimalParts = _value.toString().split(\".\");\r\n let firstPart = decimalParts[0] ? decimalParts[0] : 0;\r\n \r\n let secondPart = decimalParts[1] ? decimalParts[1] : 0;\r\n secondPart = secondPart.toString().substr(0, 2);\r\n \r\n let _finalVal = firstPart + \".\" + secondPart\r\n\r\n options.value = Number(_finalVal)\r\n options.totalValue = (!isNullOrUndefinedOrEmpty(options.totalValue) ? options.totalValue : 0) + options.value\r\n }\r\n },\r\n format: (value) => {\r\n let _value = isNullOrUndefinedOrEmpty(value) ? 0 : value;\r\n return getNumberInSystemLocalFormat(_value, 2);\r\n }\r\n }\r\n })\r\n\r\n // // Push Extra Fake hidden Pivot Data Cell field\r\n // let fakeCellDataObject = {\r\n // dataField: 'PivotData0',\r\n // dataType: 'string',\r\n // area: 'data',\r\n // caption: \"\",\r\n // visible: false\r\n // }\r\n\r\n // pivotDataCellsFields.push(fakeCellDataObject);\r\n\r\n let AllfieldsData = [...pivotRowsAndColumnsFields, ...pivotDataCellsFields];\r\n\r\n setDataSource(new PivotGridDataSource({\r\n store: tabledata.current.PivotData,\r\n fields: AllfieldsData,\r\n }))\r\n }\r\n }\r\n\r\n const isRowsEmptyAndColumnsNotEmpty = () => {\r\n let pivotRows = widget && !isNullOrUndefinedOrEmpty(widget?.PivotRows) ? JSON.parse(widget?.PivotRows!) : [];\r\n let pivotColumns = widget && !isNullOrUndefinedOrEmpty(widget?.PivotColumns) ? JSON.parse(widget?.PivotColumns!) : [];\r\n\r\n return pivotRows?.length === 0 && pivotColumns?.length > 0;\r\n }\r\n\r\n const canShowRowsGrandTotal = () : boolean | undefined => {\r\n if(isRowsEmptyAndColumnsNotEmpty()) {\r\n return true;\r\n }\r\n\r\n let pivotTotalsSettings = widget && !isNullOrUndefinedOrEmpty(widget?.PivotTotalsSettings) ? JSON.parse(widget?.PivotTotalsSettings!) : {};\r\n return !isNullOrUndefinedOrEmpty(pivotTotalsSettings.ShowRowsGrandTotal) ? pivotTotalsSettings.ShowRowsGrandTotal : false;\r\n }\r\n\r\n\r\n const isRowsNotEmptyAndColumnsEmpty = () => {\r\n let pivotRows = widget && !isNullOrUndefinedOrEmpty(widget?.PivotRows) ? JSON.parse(widget?.PivotRows!) : [];\r\n let pivotColumns = widget && !isNullOrUndefinedOrEmpty(widget?.PivotColumns) ? JSON.parse(widget?.PivotColumns!) : [];\r\n\r\n return pivotRows?.length > 0 && pivotColumns?.length === 0;\r\n }\r\n\r\n const canShowColumnsGrandTotal = () : boolean | undefined => {\r\n if(isRowsNotEmptyAndColumnsEmpty()) {\r\n return true;\r\n }\r\n\r\n let pivotTotalsSettings = widget && !isNullOrUndefinedOrEmpty(widget?.PivotTotalsSettings) ? JSON.parse(widget?.PivotTotalsSettings!) : {};\r\n return !isNullOrUndefinedOrEmpty(pivotTotalsSettings.ShowColumnsGrandTotal) ? pivotTotalsSettings.ShowColumnsGrandTotal : false;\r\n }\r\n\r\n const canShowRowsTotal = () : boolean | undefined => {\r\n let pivotTotalsSettings = widget && !isNullOrUndefinedOrEmpty(widget?.PivotTotalsSettings) ? JSON.parse(widget?.PivotTotalsSettings!) : {};\r\n return !isNullOrUndefinedOrEmpty(pivotTotalsSettings.ShowRowsTotal) ? pivotTotalsSettings.ShowRowsTotal : false;\r\n }\r\n\r\n const canShowColumnsTotal = () : boolean | undefined => {\r\n let pivotTotalsSettings = widget && !isNullOrUndefinedOrEmpty(widget?.PivotTotalsSettings) ? JSON.parse(widget?.PivotTotalsSettings!) : {};\r\n return !isNullOrUndefinedOrEmpty(pivotTotalsSettings.ShowColumnsTotal) ? pivotTotalsSettings.ShowColumnsTotal : false;\r\n }\r\n\r\n return (\r\n <React.Fragment>\r\n { isLoading ?\r\n <div className={'dl-full-hight dl-flex-content-center spinner-custome'}>\r\n <ProgressSpinner style={{ width: '40px', height: '40px' }} strokeWidth=\"4\" animationDuration=\"2s\" />\r\n </div>\r\n : \r\n <PivotGrid\r\n id=\"pivotGridId\"\r\n ref={pivotGridRef}\r\n dataSource={dataSource}\r\n allowExpandAll={true}\r\n showBorders={true}\r\n className='pivot-grid-element'\r\n onCellClick={onCellClick}\r\n showRowGrandTotals={canShowRowsGrandTotal()}\r\n showColumnGrandTotals={canShowColumnsGrandTotal()}\r\n showRowTotals={canShowRowsTotal()}\r\n showColumnTotals={canShowColumnsTotal()}\r\n showTotalsPrior='none'\r\n wordWrapEnabled={true}\r\n >\r\n <FieldPanel\r\n showColumnFields={false}\r\n showDataFields={false}\r\n showFilterFields={false}\r\n showRowFields={false}\r\n texts={{rowFieldArea: \"\"}}\r\n allowFieldDragging={false}\r\n visible={true}\r\n />\r\n <FieldChooser enabled={false} />\r\n <Scrolling mode=\"virtual\" />\r\n </PivotGrid>\r\n }\r\n </React.Fragment>\r\n )\r\n});\r\n\r\nexport default PivotTable;","import React from \"react\";\r\nimport { DashboardDataBinding } from \"../../../../types/DashboardDataBinding\";\r\nimport { DataPointSelection } from \"../../../../types/SeriesMeasure\";\r\nimport { ReactWidgetPM } from \"../../../../types/widget\";\r\nimport KpiChart from \"./KpiChart\";\r\nimport TableChart from \"./TableChart\";\r\nimport PivotTable from \"./PivotGrid\";\r\n\r\n\r\nexport type CustomChartProps = {\r\n widget: ReactWidgetPM | undefined,\r\n widgetRef: ReactWidgetPM | undefined,\r\n dataBinding: DashboardDataBinding;\r\n isPreviewModeActive?:boolean;\r\n isInEditMode?:boolean;\r\n onSelectDataPoint: (dataPointSelection: DataPointSelection) => void;\r\n onShowError?: (errorMsg: string | null) => void;\r\n};\r\n\r\n\r\n\r\nconst CustomChart = (props: CustomChartProps) => {\r\n const project = () => {\r\n switch (props.widget?.TypeCode) {\r\n case \"kpi\": return <KpiChart customChartProps={props} />;\r\n case \"table\": return <TableChart customChartProps={props} />;\r\n case \"pivot\": return <PivotTable customChartProps={props} />;\r\n \r\n default: return <div>Invalid Type</div>;\r\n }\r\n }\r\n\r\n return (\r\n <React.Fragment>\r\n <div className={`dl-custom-chart-container ${props.widget && props.widget?.TypeCode == 'table' ? 'dl-table-chart-container' : ''} ${props.widget && props.widget?.TypeCode == 'pivot' ? 'dl-pivot-chart-container' : ''}`}>{project()}</div>\r\n </React.Fragment>\r\n );\r\n}\r\n\r\n\r\nexport default CustomChart;","import { getNumberInSystemLocalFormat, isNullOrUndefined } from \"../../../../Utils/General\";\r\nimport { SeriesMeasure } from \"../../../../types/SeriesMeasure\";\r\nimport { ReactWidgetPM } from \"../../../../types/widget\";\r\n\r\nexport function buildToolTip(widget: ReactWidgetPM, value: any, seriesMeasure: SeriesMeasure, label: any, index: number , groupbyId : string | null = null, secGroupbyId : string | null = null): string {\r\n var padding = (widget.TypeCode == 'line' && index > 0) ? 'padding-top: 3px' : '';\r\n \r\n let customToolTip = `\r\n <div style=\"min-width: 108px;` + padding + `\">\r\n\r\n <div style=\"display: flex;align-items: center;margin-bottom: 6px;\">\r\n <span style=\"margin: 0; min-height: 10px; min-width: 10px; height: 10px; width: 10px; background-color: transparent; border-radius: 50%; display: inline-block;\"></span>\r\n <p style=\" margin: 0; margin-left: 4px; white-space: pre-line; font-family: 'Manrope'; font-style: normal;font-weight: 400; font-size: 11px; line-height: 100%; color: #323232;\"> ` + getTooltiplabel(label, seriesMeasure) + `</p>\r\n </div>\r\n\r\n <hr style=\"margin: 0;border-top: 1px solid #F0F0F0;\">\r\n\r\n <div style=\"display: flex;align-items: center;margin:0;margin-top: 6px;\">\r\n <p style=\"margin: 0;font-family: 'Manrope'; white-space: pre-line; font-style: normal;font-weight: 400; font-size: 11px;line-height: 100%;color: #A4A4A4;\"> ` + getMeasureType(seriesMeasure) + `</p>\r\n <p style=\"margin: 0;margin-left: 6px; white-space: pre-line; font-family: 'Manrope';font-style: normal;font-weight: 500;font-size: 11px;line-height: 100%; color: #A4A4A4;\">` + getTooltipValue(value, seriesMeasure) + `</p>\r\n ` + getTooltipPercentage(widget) +\r\n ` </div> `;\r\n\r\n if(RenderStackedChartTotalsAndPercentages(widget,seriesMeasure)){\r\n\r\n customToolTip += \r\n `<div>\r\n\r\n <hr style=\"margin-top: 6px;border-top: 1px solid #F0F0F0;\">\r\n\r\n <div style=\"display: flex; flex-direction: column; gap: 6px; flex-d align-items: center;margin:0;margin-top: 6px;\">\r\n <p style=\"margin: 0;font-family: 'Manrope'; white-space: pre-line; font-style: normal;font-weight: 400; font-size: 11px;line-height: 100%;color: #A4A4A4;\"> ` + getGroupValuePercentage(seriesMeasure,groupbyId,secGroupbyId) + `</p>\r\n </div>\r\n\r\n <hr style=\"margin-top: 6px;border-top: 1px solid #F0F0F0;\">\r\n\r\n <div style=\"display: flex; flex-direction: column; gap: 6px; flex-d align-items: center;margin:0;margin-top: 6px;\">\r\n <p style=\"margin: 0;white-space: pre-line; font-family: 'Manrope';font-style: normal;font-weight: 500;font-size: 11px;line-height: 100%; color: #A4A4A4;\">` + getSumOfGroupValues(seriesMeasure,groupbyId) + `</p>\r\n </div>\r\n\r\n </div>`\r\n } \r\n \r\n customToolTip += `</div>`;\r\n\r\n return customToolTip;\r\n}\r\n\r\nfunction RenderStackedChartTotalsAndPercentages(widget: ReactWidgetPM , seriesMeasures: SeriesMeasure){\r\n\r\n if(!widget || !seriesMeasures || !seriesMeasures.MeasureCode){\r\n return false;\r\n }\r\n\r\n\r\n return widget.IsStacked && (seriesMeasures.MeasureCode === \"Count\" || seriesMeasures.MeasureCode === \"Sum\");\r\n}\r\n\r\nfunction getGroupValuePercentage(seriesMeasures: SeriesMeasure, groupbyId: string | null , secGroupbyId: string | null) {\r\n\r\n if(!seriesMeasures){\r\n return;\r\n }\r\n\r\n let total = getSumOfGroupValuesAsNumber(seriesMeasures,groupbyId);\r\n\r\n let value = seriesMeasures.Values.filter(v => v.GroupById === groupbyId && v.GroupByIdSec === secGroupbyId)[0]?.Value;\r\n\r\n let percentageValueInLocalFormat = \"0\";\r\n\r\n if(total !== 0 && value){\r\n\r\n percentageValueInLocalFormat = getNumberInSystemLocalFormat(((value/total) * 100),2,true);\r\n\r\n }\r\n\r\n return `<span style=\"margin-right:6px;\">Percentage:</span>${percentageValueInLocalFormat}%`;\r\n}\r\n\r\nfunction getSumOfGroupValues(seriesMeasure: SeriesMeasure, groupbyId: string | null) {\r\n \r\n if(!seriesMeasure){\r\n return \"\";\r\n }\r\n\r\n let total = getSumOfGroupValuesAsNumber(seriesMeasure,groupbyId);\r\n\r\n return `<span style=\"margin-right:6px;\">Total:</span>${getNumberInSystemLocalFormat(total,2,true)}`;\r\n}\r\n\r\nfunction getSumOfGroupValuesAsNumber(seriesMeasure: SeriesMeasure, groupbyId: string | null) {\r\n \r\n if(!seriesMeasure){\r\n return 0;\r\n }\r\n\r\n let total = 0;\r\n\r\n seriesMeasure.Values.filter(v => v.GroupById === groupbyId).forEach(v => {\r\n\r\n total += v.Value;\r\n\r\n });\r\n\r\n return total;\r\n}\r\n\r\nfunction getTooltipPercentage(widget: ReactWidgetPM): string {\r\n if (widget.TypeCode != \"donut\" && widget.TypeCode != \"pie\") return \"\";\r\n return `\r\n <p style=\"margin: 0;margin-left: 2px;font-family: 'Manrope';font-style: normal;font-weight: 500;font-size: 11px;line-height: 100%; color: #A4A4A4;flex: none; order: 1;flex-grow: 0;\">($percentValue)</p>\r\n `;\r\n}\r\n\r\nfunction getTooltiplabel(value: any, seriesMeasure: SeriesMeasure): string {\r\n if (value) return value;\r\n if (seriesMeasure && seriesMeasure.Name) return '$label' + \" - \" + seriesMeasure.Name;\r\n return '$label';\r\n}\r\n\r\nfunction getTooltipValue(value: any, seriesMeasure: SeriesMeasure): string | number {\r\n if (!isNullOrUndefined(value)) {\r\n return seriesMeasure && seriesMeasure.MeasureFieldDataType == 'Percentage' ? getNumberInSystemLocalFormat(value) + \"%\" : getNumberInSystemLocalFormat(value);\r\n }\r\n\r\n return '$dataValue';\r\n}\r\n\r\nfunction getMeasureType(seriesMeasure:SeriesMeasure): string {\r\n if (!seriesMeasure.Name) return \"Count:\"\r\n if(seriesMeasure.MeasureCode == \"Formula\"){\r\n var formula =JSON.parse(seriesMeasure.Formula)\r\n return formula.Name;\r\n }\r\n return seriesMeasure.Name.replace(/ .*/, '') + \":\";\r\n}\r\n\r\n\r\n","import { getLabelFormatByDateGroupType } from \"../../../../Utils/DateHelper\";\r\nimport { SeriesMeasure } from \"../../../../types/SeriesMeasure\";\r\nimport { ReactWidgetPM } from \"../../../../types/widget\";\r\nimport { ChartInfo } from \"./FusionChartObjectHelper\";\r\nimport { buildToolTip } from \"./FusionChartTooltip\";\r\n\r\nvar months = [\"Jan\", \"Feb\", \"Mar\", \"Apr\", \"May\", \"Jun\", \"Jul\", \"Aug\", \"Sep\", \"Oct\", \"Nov\", \"Dec\"];\r\nvar quarters = [\"Q\", \"Q1\", \"Q2\", \"Q3\", \"Q4\"];\r\n\r\nexport function getCategoriesBasedDataSource(chartInfo: ChartInfo, seriesMeasures: SeriesMeasure[], widget: ReactWidgetPM): any {\r\n if (seriesMeasuresIsEmpty(seriesMeasures)) return null;\r\n\r\n handelNullLabels(seriesMeasures);\r\n return {\r\n chart: chartInfo,\r\n categories: buildCategories(seriesMeasures, widget),\r\n dataset: buildDataSet(seriesMeasures, widget)\r\n }\r\n}\r\n\r\nexport function getStackedDataSource(chartInfo: ChartInfo, seriesMeasures: SeriesMeasure[], widget: ReactWidgetPM): any {\r\n if (seriesMeasuresIsEmpty(seriesMeasures)) return null;\r\n\r\n handelNullLabels(seriesMeasures);\r\n return {\r\n chart: chartInfo,\r\n categories: buildStackedCategories(seriesMeasures, widget),\r\n dataset: buildStackedDataSet(seriesMeasures, widget)\r\n }\r\n}\r\n\r\n\r\nexport function getSimpleDataSource(chartInfo: ChartInfo, seriesMeasures: SeriesMeasure[], widget: ReactWidgetPM): any {\r\n if (seriesMeasuresIsEmpty(seriesMeasures)) return null;\r\n\r\n handelNullLabels(seriesMeasures);\r\n return {\r\n chart: chartInfo,\r\n data: buildDataSource(seriesMeasures, widget),\r\n }\r\n}\r\n\r\nfunction handelNullLabels(seriesMeasures: SeriesMeasure[]) {\r\n seriesMeasures.forEach(element => {\r\n element.Values.forEach(value => {\r\n if (!value.Label || value.Label == '')\r\n value.Label = 'Not defined'\r\n });\r\n });\r\n}\r\n\r\nfunction seriesMeasuresIsEmpty(seriesMeasures: SeriesMeasure[]): boolean {\r\n if (!seriesMeasures || seriesMeasures.length == 0) return true;\r\n let hasValue = false;\r\n seriesMeasures.forEach(item => {\r\n if (item.Values && item.Values.length > 0) hasValue = true;\r\n });\r\n return !hasValue;\r\n}\r\n\r\nfunction buildDataSource(values: SeriesMeasure[], widget: ReactWidgetPM) {\r\n let data: any[] = [];\r\n if (!values || !values[0]) return data;\r\n\r\n var series = values[0];\r\n data = series.Values.map((e, index) => {\r\n let item = {\r\n value: e.Value,\r\n label: getLabelFormatByDateGroupType(e.Label, widget, false),\r\n id: {\r\n GroupById: e.GroupById,\r\n MeasureFieldId: series.MeasureFieldId,\r\n MeasureCode: series.MeasureCode,\r\n Formula: series.Formula\r\n },\r\n tooltext: buildToolTip(widget, null, series, e.Label, 0),\r\n }\r\n return item;\r\n });\r\n return data;\r\n}\r\n\r\nfunction buildDataSet(seriesMeasures: SeriesMeasure[], widget: ReactWidgetPM) {\r\n let dataSet: any[] = [];\r\n let seriesPosition = 1;\r\n seriesMeasures.forEach(seriesMeasure => {\r\n let datas = seriesMeasure.Values.map((e, index) => {\r\n return {\r\n value: e.Value,\r\n id: {\r\n GroupById: e.GroupById,\r\n MeasureFieldId: seriesMeasure.MeasureFieldId,\r\n MeasureCode: seriesMeasure.MeasureCode,\r\n Formula: seriesMeasure.Formula\r\n },\r\n tooltext: buildToolTip(widget, e.Value, seriesMeasure, null, index),\r\n }\r\n });\r\n dataSet.push({\r\n data: datas,\r\n seriesname: seriesMeasure.Name,\r\n anchorBgColor: \"inherit\",\r\n anchorBorderColor: \"#FFFFFF\",\r\n anchorBorderThickness: \"2\",\r\n anchorHoverColor: \"inherit\",\r\n parentyaxis: seriesMeasure.PlotasLineChart && seriesMeasure.PlotonSecondAxis ? 'S' : \"P\",\r\n renderAs: seriesMeasure.PlotasLineChart ? 'line' : \"column\",\r\n });\r\n seriesPosition++;\r\n });\r\n return dataSet;\r\n}\r\n\r\nfunction buildStackedDataSet(seriesMeasures: SeriesMeasure[], widget: ReactWidgetPM) {\r\n let dataSet: any[] = [];\r\n let seriesPosition = 1;\r\n\r\n var series = seriesMeasures[0];\r\n\r\n const uniqueGroups: any[] = [];\r\n\r\n series.Values.forEach(element => {\r\n if (!uniqueGroups.find(x => x.code == element.GroupByIdSec))\r\n uniqueGroups.push({ code: element.GroupByIdSec, label: getLabelFormatByDateGroupType(element.LabelSec, widget, true) })\r\n });\r\n\r\n uniqueGroups.forEach(group => {\r\n dataSet.push({\r\n seriesName: group.label,\r\n data: buildStackedGroupData(group, series, widget)\r\n });\r\n seriesPosition++;\r\n });\r\n \r\n let emptylabels = dataSet.filter(e=>e.seriesName == null);\r\n let filledLabels = dataSet.filter(e=>e.seriesName != null);\r\n\r\n dataSet = widget.SecondaryDateGroupCode ? sortDataSet(filledLabels, widget.SecondaryDateGroupCode!) : filledLabels;\r\n return emptylabels.concat(dataSet);\r\n}\r\n\r\nfunction sortDataSet(dataSet: any[], SecondaryDateGroupCode: string) {\r\n switch (SecondaryDateGroupCode) {\r\n case \"Year\":\r\n return dataSet.sort((s1, s2) => s1.seriesName - s2.seriesName);\r\n case \"Month\":\r\n return dataSet.sort(function (s1, s2) {\r\n return months.indexOf(s1.seriesName) - months.indexOf(s2.seriesName);\r\n });\r\n case \"Quarter\":\r\n return dataSet.sort(function (s1, s2) {\r\n return quarters.indexOf(s1.seriesName) - quarters.indexOf(s2.seriesName);\r\n });\r\n case \"Month & Year\": return dataSet.sort(function sort(s1, s2) {\r\n var aa = s1.seriesName.split(' '),\r\n bb = s2.seriesName.split(' ');\r\n return aa[1] - bb[1] || months.indexOf(aa[0]) - months.indexOf(bb[0]);\r\n });\r\n case \"Quarter & Year\": return dataSet.sort(function sort(s1, s2) {\r\n var aa = s1.seriesName.split(' '),\r\n bb = s2.seriesName.split(' ');\r\n return aa[1] - bb[1] || quarters.indexOf(aa[0]) - quarters.indexOf(bb[0]);\r\n });\r\n default:\r\n return dataSet;\r\n }\r\n}\r\n\r\nfunction buildStackedGroupData(secGroup: any, series: SeriesMeasure, widget: ReactWidgetPM) {\r\n const uniqueGroups: any[] = getUniqueGroupOrderdList(series);\r\n\r\n let data: any[] = [];\r\n uniqueGroups.forEach(group => {\r\n data.push({\r\n value: series.Values.find(x => x.GroupById == group.code && x.GroupByIdSec == secGroup.code)?.Value,\r\n id: {\r\n GroupById: group.code,\r\n MeasureFieldId: series.MeasureFieldId,\r\n GroupByIdSec: secGroup.code,\r\n MeasureCode: series.MeasureCode,\r\n Formula: series.Formula\r\n },\r\n tooltext: buildToolTip(widget, null, series, group.label + \" - \" + secGroup.label, 0 ,group.code , secGroup.code),\r\n })\r\n });\r\n\r\n return data;\r\n}\r\n\r\nfunction buildCategories(seriesMeasures: SeriesMeasure[], widget: ReactWidgetPM) {\r\n var categories = seriesMeasures[0].Values.map((e) => {\r\n return {\r\n label: getLabelFormatByDateGroupType(e.Label, widget, false)\r\n }\r\n });\r\n var result: any[] = [];\r\n result.push({ category: categories });\r\n return result;\r\n}\r\n\r\nfunction buildStackedCategories(seriesMeasures: SeriesMeasure[], widget: ReactWidgetPM) {\r\n const uniqueGroups: any[] = getUniqueGroupOrderdList(seriesMeasures[0]);\r\n\r\n var categories = uniqueGroups.map((e) => {\r\n return {\r\n label: getLabelFormatByDateGroupType(e.label, widget, false)\r\n }\r\n });\r\n var result: any[] = [];\r\n result.push({ category: categories });\r\n return result;\r\n}\r\n\r\nfunction getUniqueGroupOrderdList(series: SeriesMeasure) {\r\n let uniqueGroups: any[] = [];\r\n series.Values.forEach(element => {\r\n if (!uniqueGroups.find(x => x.code == element.GroupById))\r\n uniqueGroups.push({ code: element.GroupById, label: element.Label });\r\n });\r\n return uniqueGroups;\r\n}\r\n\r\n","import { ChartObject } from \"fusioncharts\";\r\nimport { SeriesMeasure } from \"../../../../types/SeriesMeasure\";\r\nimport { ReactWidgetPM } from \"../../../../types/widget\";\r\nimport { getCategoriesBasedDataSource, getSimpleDataSource, getStackedDataSource } from \"./FusionChartDataSoruceBuilder\";\r\nimport { ChartInfo } from \"./FusionChartObjectHelper\";\r\nimport { getGlobalNumberFormatting, isNullOrUndefined, isNullOrUndefinedOrEmpty } from \"../../../../Utils/General\";\r\n\r\nconst defautFontSize = \"12\";\r\nconst defautFont = \"Manrope\";\r\nconst defautColor = \"#323232\";\r\n\r\n\r\nexport function BuildFusionChartObject(seriesMeasures: SeriesMeasure[], widget: ReactWidgetPM): ChartObject {\r\n switch (widget?.TypeCode) {\r\n case 'bar':\r\n if (!widget.SecondaryGroupById) return getBarObject(seriesMeasures, widget);\r\n return getStackedBarObject(seriesMeasures, widget);\r\n case 'line':\r\n if (!widget.SecondaryGroupById) return getLineObject(seriesMeasures, widget);\r\n return getClusteredLineObject(seriesMeasures, widget);\r\n case 'pie':\r\n return getPieObject(seriesMeasures, widget);\r\n case 'donut':\r\n return getDonutObject(seriesMeasures, widget);\r\n case 'column':\r\n if (!widget.SecondaryGroupById) return getColumnObject(seriesMeasures, widget);\r\n return getClusteredColumnObject(seriesMeasures, widget); \r\n default:\r\n return {};\r\n }\r\n}\r\n\r\nconst getWidgetRanges = (widget: ReactWidgetPM, value : any) => {\r\n let gaugeRanges = widget.GaugeRanges && widget.GaugeRanges.length > 0 ? JSON.parse(widget.GaugeRanges) : null;\r\n\r\n if(gaugeRanges == null || isNullOrUndefinedOrEmpty(value)) return [];\r\n\r\n if(value < gaugeRanges[0].minValue) {\r\n gaugeRanges[0].minValue = value;\r\n } \r\n\r\n if(value > gaugeRanges[2].maxValue) {\r\n gaugeRanges[2].maxValue = value;\r\n } \r\n\r\n return gaugeRanges;\r\n}\r\n\r\nexport const getGaugeObject = (data: any, widget: ReactWidgetPM) => {\r\n let fusionObject = getDefaultChartobject();\r\n fusionObject.type = 'angulargauge'\r\n let chartInfo = getDefaultChartInfo(widget);\r\n \r\n chartInfo.manageResize = \"1\";\r\n chartInfo.valueBelowPivot = \"1\";\r\n chartInfo.showValue = \"1\";\r\n fusionObject.dataSource = {\r\n \"chart\" : chartInfo,\r\n \"colorRange\": {\r\n \"color\" : getWidgetRanges(widget, !isNullOrUndefined(data) && !isNullOrUndefined(data?.Value) ? data?.Value : 0)\r\n },\r\n \"dials\": {\r\n \"dial\": [{\r\n \"value\": !isNullOrUndefined(data) && !isNullOrUndefined(data?.Value) ? data?.Value : 0\r\n }]\r\n }\r\n }\r\n\r\n return fusionObject;\r\n}\r\n\r\nfunction getBarObject(seriesMeasures: SeriesMeasure[], widget: ReactWidgetPM): ChartObject {\r\n let chart = getDefaultChartobject();\r\n chart.type = isGroupByFieldDateTime(widget.GroupByFieldDataType) ? \"msbar2d\" : \"scrollbar2d\";\r\n\r\n let chartInfo = getDefaultChartInfo(widget);\r\n chartInfo.scrollPosition = \"right\";\r\n chartInfo.scrollPadding = \"8\";\r\n chartInfo.flatScrollBars = \"1\";\r\n chartInfo.showPercentValues = widget.ShowValueAsNumber ? \"0\" : \"1\";\r\n chartInfo.showLegend = widget.ShowLegend ? '1' : '0';\r\n setLineDash(chartInfo);\r\n chartInfo.chartTopMargin = \"10\";\r\n chartInfo.chartBottomMargin = \"10\";\r\n chartInfo.legendPosition = getWidgetLegendPosition(widget);\r\n\r\n chart.dataSource = getCategoriesBasedDataSource(chartInfo, seriesMeasures, widget);\r\n return chart;\r\n}\r\n\r\nfunction getStackedBarObject(seriesMeasures: SeriesMeasure[], widget: ReactWidgetPM): ChartObject {\r\n let chart = getDefaultChartobject();\r\n\r\n if(widget.IsStacked){\r\n chart.type = isGroupByFieldDateTime(widget.GroupByFieldDataType) ? \"stackedbar2d\" : \"scrollstackedbar2d\";\r\n }else {\r\n chart.type = isGroupByFieldDateTime(widget.GroupByFieldDataType) ? \"msbar2d\" : \"scrollbar2d\";\r\n }\r\n\r\n let chartInfo = getDefaultChartInfo(widget);\r\n chartInfo.scrollPosition = \"right\";\r\n chartInfo.scrollPadding = \"8\";\r\n chartInfo.flatScrollBars = \"1\";\r\n chartInfo.showPercentValues = widget.ShowValueAsNumber ? \"0\" : \"1\";\r\n chartInfo.showLegend = widget.ShowLegend ? '1' : '0';\r\n setLineDash(chartInfo);\r\n chartInfo.chartTopMargin = \"10\";\r\n chartInfo.chartBottomMargin = \"10\";\r\n chartInfo.legendPosition= getWidgetLegendPosition(widget);\r\n\r\n chart.dataSource = getStackedDataSource(chartInfo, seriesMeasures, widget);\r\n return chart;\r\n}\r\n\r\nfunction getClusteredColumnObject(seriesMeasures: SeriesMeasure[], widget: ReactWidgetPM): ChartObject {\r\n let chart = getDefaultChartobject();\r\n\r\n if(widget.IsStacked){\r\n chart.type = isGroupByFieldDateTime(widget.GroupByFieldDataType) ? \"stackedcolumn2d\" : \"scrollstackedcolumn2d\";\r\n }else {\r\n chart.type = isGroupByFieldDateTime(widget.GroupByFieldDataType) ? \"mscolumn2d\" : \"scrollcolumn2d\";\r\n }\r\n\r\n let chartInfo = getDefaultChartInfo(widget);\r\n chartInfo.scrollPosition = \"top\";\r\n chartInfo.scrollPadding = \"8\";\r\n chartInfo.flatScrollBars = \"1\";\r\n chartInfo.showPercentValues = widget.ShowValueAsNumber ? \"0\" : \"1\";\r\n chartInfo.showLegend = widget.ShowLegend ? '1' : '0';\r\n setLineDash(chartInfo);\r\n \r\n chartInfo.chartTopMargin = \"10\";\r\n chartInfo.chartBottomMargin = \"10\";\r\n chartInfo.legendPosition= getWidgetLegendPosition(widget);\r\n chart.dataSource = getStackedDataSource(chartInfo, seriesMeasures, widget);\r\n return chart;\r\n}\r\n\r\nfunction getClusteredLineObject(seriesMeasures: SeriesMeasure[], widget: ReactWidgetPM): ChartObject {\r\n let chart = getDefaultChartobject();\r\n chart.type = isGroupByFieldDateTime(widget.GroupByFieldDataType) ? \"msline\" : \"scrollline2d\";\r\n\r\n let chartInfo = getDefaultChartInfo(widget);\r\n chartInfo.scrollPosition = \"top\"; \r\n chartInfo.scrollPadding = \"8\";\r\n chartInfo.flatScrollBars = \"1\";\r\n chartInfo.showPercentValues = widget.ShowValueAsNumber ? \"0\" : \"1\";\r\n chartInfo.showLegend = widget.ShowLegend ? '1' : '0';\r\n setLineDash(chartInfo);\r\n \r\n chartInfo.chartTopMargin = \"10\";\r\n chartInfo.chartBottomMargin = \"10\";\r\n chartInfo.legendPosition= getWidgetLegendPosition(widget);\r\n\r\n chart.dataSource = getStackedDataSource(chartInfo, seriesMeasures, widget);\r\n return chart;\r\n}\r\n\r\n\r\nfunction getLineObject(seriesMeasures: SeriesMeasure[], widget: ReactWidgetPM): ChartObject {\r\n let chart = getDefaultChartobject();\r\n chart.type = isGroupByFieldDateTime(widget.GroupByFieldDataType) ? \"msline\" : \"scrollline2d\";\r\n \r\n let chartInfo = getDefaultChartInfo(widget);\r\n chartInfo.scrollPosition = \"top\";\r\n chartInfo.scrollPadding = \"8\";\r\n chartInfo.flatScrollBars = \"1\";\r\n chartInfo.showPercentValues = widget.ShowValueAsNumber ? \"0\" : \"1\";\r\n chartInfo.showLegend = widget.ShowLegend ? '1' : '0';\r\n setLineDash(chartInfo);\r\n chartInfo.chartTopMargin = \"20\";\r\n chartInfo.chartBottomMargin = \"10\";\r\n chartInfo.chartLeftMargin = \"20\";\r\n chartInfo.chartRightMargin = \"50\";\r\n chartInfo.anchorradius = \"5\";\r\n chartInfo.canvasBottomPadding = \"10\";\r\n chartInfo.canvasTopPadding = \"10\";\r\n chartInfo.legendPosition = getWidgetLegendPosition(widget);\r\n\r\n chart.dataSource = getCategoriesBasedDataSource(chartInfo, seriesMeasures, widget);\r\n return chart;\r\n}\r\n\r\nfunction getDonutObject(seriesMeasures: SeriesMeasure[], widget: ReactWidgetPM): ChartObject {\r\n let chart = getDefaultChartobject();\r\n chart.type = \"doughnut2d\";\r\n\r\n let chartInfo = getDefaultChartInfo(widget);\r\n chartInfo.labelFontSize = defautFontSize;\r\n chartInfo.labelFont = defautFont;\r\n chartInfo.manageLabelOverflow = \"1\";\r\n chartInfo.useEllipsesWhenOverflow = \"1\";\r\n chartInfo.enableSmartLabels = \"1\";\r\n chartInfo.legendPosition = getWidgetLegendPosition(widget);\r\n\r\n setPieDonutLegends(chartInfo, widget);\r\n chart.dataSource = getSimpleDataSource(chartInfo, seriesMeasures, widget);\r\n return chart;\r\n}\r\n\r\nfunction getPieObject(seriesMeasures: SeriesMeasure[], widget: ReactWidgetPM): ChartObject {\r\n let chart = getDefaultChartobject();\r\n chart.type = \"pie2d\";\r\n\r\n let chartInfo = getDefaultChartInfo(widget);\r\n chartInfo.labelFontSize = defautFontSize;\r\n chartInfo.labelFont = defautFont;\r\n chartInfo.manageLabelOverflow = \"1\";\r\n chartInfo.useEllipsesWhenOverflow = \"1\";\r\n chartInfo.enableSmartLabels = \"1\";\r\n setPieDonutLegends(chartInfo, widget);\r\n chart.dataSource = getSimpleDataSource(chartInfo, seriesMeasures, widget);\r\n chartInfo.legendPosition = getWidgetLegendPosition(widget);\r\n return chart;\r\n}\r\n\r\nconst isGroupByFieldDateTime = (GroupByFieldDataType : any)=> {\r\n return GroupByFieldDataType == \"DateTime\" || GroupByFieldDataType == \"Date\";\r\n}\r\n\r\nconst isFirstMeasureTypePercentage = (widget: ReactWidgetPM) => {\r\n return widget && widget.WidgetMeasures && widget.WidgetMeasures[0] && widget.WidgetMeasures[0].MeasureFieldDataType && widget.WidgetMeasures[0].MeasureFieldDataType == 'Percentage';\r\n}\r\n\r\nconst isSecondMeasureTypePercentage = (widget: ReactWidgetPM) => {\r\n return widget && widget.WidgetMeasures && widget.WidgetMeasures[1] && widget.WidgetMeasures[1].MeasureFieldDataType && widget.WidgetMeasures[1].MeasureFieldDataType == 'Percentage';\r\n}\r\n\r\nfunction getColumnObject(seriesMeasures: SeriesMeasure[], widget: ReactWidgetPM): ChartObject {\r\n let chart = getDefaultChartobject();\r\n chart.type = isGroupByFieldDateTime(widget.GroupByFieldDataType) ? \"mscombidy2d\" : \"scrollcombidy2d\";\r\n\r\n let chartInfo = getDefaultChartInfo(widget);\r\n chartInfo.scrollPadding = \"8\";\r\n chartInfo.flatScrollBars = \"1\";\r\n chartInfo.showPercentValues = widget.ShowValueAsNumber ? \"0\" : \"1\";\r\n chartInfo.showLegend = widget.ShowLegend ? '1' : '0';\r\n chartInfo.scrollPosition = \"top\";\r\n setLineDash(chartInfo);\r\n chartInfo.chartTopMargin = \"20\";\r\n chartInfo.chartBottomMargin = \"10\";\r\n chartInfo.chartLeftMargin = \"20\";\r\n chartInfo.chartRightMargin = \"50\";\r\n chartInfo.canvasBottomPadding = \"10\";\r\n setDualyAxis(chartInfo, widget, seriesMeasures);\r\n chart.dataSource = getCategoriesBasedDataSource(chartInfo, seriesMeasures, widget);\r\n chartInfo.legendPosition = getWidgetLegendPosition(widget);\r\n\r\n return chart;\r\n}\r\n\r\nfunction setLineDash(chartInfo: ChartInfo) {\r\n chartInfo.divLineDashed = \"1\";\r\n chartInfo.divLineDashLen = \"5\";\r\n chartInfo.divLineDashGap = \"5\";\r\n chartInfo.divLineColor = \"#E7E7E7\";\r\n chartInfo.divLineAlpha = \"100\";\r\n chartInfo.divLineThickness = \"1\";\r\n}\r\n\r\n\r\nfunction getDefaultChartobject(): ChartObject {\r\n let chart = {} as ChartObject;\r\n chart.type = \"column2d\";\r\n chart.width = \"100%\";\r\n chart.height = \"100%\";\r\n chart.dataFormat = \"json\";\r\n return chart;\r\n}\r\n\r\nconst getXaxisTitle = (widget: ReactWidgetPM) => {\r\n if(widget.TypeCode == 'bar'){\r\n return widget.ShowYAxisTitle ? widget.YAxisTitle || \"\" : \"\"\r\n }\r\n\r\n return widget.XAxisTitle || \"\";\r\n}\r\n\r\nconst getYaxisTitle = (widget: ReactWidgetPM) => {\r\n if(widget.TypeCode == 'bar'){\r\n return widget.ShowXAxisTitle ? widget.XAxisTitle || \"\" : \"\"\r\n }\r\n \r\n return widget.YAxisTitle || \"\";\r\n}\r\n\r\nfunction getDefaultChartInfo(widget: ReactWidgetPM): ChartInfo {\r\n let chart = {} as ChartInfo;\r\n chart.theme = \"fusion\";\r\n chart.baseFont = defautFont;\r\n chart.baseFontSize = defautFontSize;\r\n chart.baseFontColor = defautColor;\r\n chart.legendCaptionFontSize = defautFontSize;\r\n chart.legendCaptionFontColor = defautColor;\r\n chart.legendCaptionFont = defautFont;\r\n chart.labelFontColor = defautColor;\r\n chart.labelFont = defautFont;\r\n chart.legendItemFont = defautFont;\r\n chart.legendItemFontSize = defautFontSize;\r\n chart.sYAxisNameFont = defautFont;\r\n chart.sYAxisNameFontSize = defautFontSize;\r\n chart.sYAxisNameFontColor = defautColor;\r\n\r\n chart.pYAxisNameFont = defautFont;\r\n chart.pYAxisNameFontSize = defautFontSize;\r\n chart.pYAxisNameFontColor = defautColor;\r\n\r\n chart.xAxisNameFont = defautFont;\r\n chart.xAxisNameFontSize = defautFontSize;\r\n chart.xAxisNameFontColor = defautColor;\r\n\r\n chart.yAxisNameFont = defautFont;\r\n chart.yAxisNameFontSize = defautFontSize;\r\n chart.yAxisNameFontColor = defautColor;\r\n chart.drawCrossLine = \"0\";\r\n \r\n chart.xAxisName = widget.ShowXAxisTitle && widget.XAxisTitle ? widget.XAxisTitle : \"\";\r\n chart.yAxisName = widget.ShowYAxisTitle && widget.YAxisTitle ? widget.YAxisTitle : \"\";\r\n chart.labelDisplay = widget.XAxisLabelsDisplay ? widget.XAxisLabelsDisplay : \"Auto\";\r\n chart.slantLabel = \"1\"\r\n chart.labelFontSize = widget.XAxisLabelsFontSize ? widget.XAxisLabelsFontSize + \"\" : \"10\";\r\n\r\n chart.showValues = widget.ShowValue ? \"1\" : '0';\r\n chart.valuePosition = widget.ShowValue && widget.ValuePosition ? widget.ValuePosition : 'Outside';\r\n\r\n let isValuePositionInside = widget.ShowValue && widget.ValuePosition && widget.ValuePosition.toLowerCase() == 'inside';\r\n\r\n if(widget.ShowValue && widget.ValuePosition && isColumnOrBarChart(widget)) { \r\n chart.placeValuesInside = widget.ValuePosition.toLowerCase() == 'inside' ? \"1\" : \"0\"\r\n }\r\n\r\n if(widget.IsStacked && isValuePositionInside && isColumnOrBarChart(widget)) { \r\n chart.minPlotHeightForValue = \"35\"\r\n }\r\n\r\n if(isValuePositionInside && isPieOrDonutChart(widget)) { \r\n chart.minAngleForValue = \"27\"\r\n }\r\n\r\n chart.numberSuffix = isFirstMeasureTypePercentage(widget) ? \"%\" : null;\r\n\r\n let _numberSeparatorSettings = getGlobalNumberFormatting();\r\n chart.thousandSeparator = _numberSeparatorSettings.thousandsSeparator;\r\n chart.decimalSeparator = _numberSeparatorSettings.decimalSeparator;\r\n\r\n chart.palettecolors = \"#369CFB, #FCAF16, #EE5F77, #4AC76F, #935BE0, #FAD337, #32C7C7, #EB67D0, #3C9957, #FF7D4B, #78A6FF, #35838F, #BAA9F3, #C1DA72, #F0AEAD, #246EAB\";\r\n chart.enableSlicing = \"0\";\r\n chart.enableRotation = \"0\";\r\n chart.chartTopMargin = \"10\";\r\n chart.chartBottomMargin = \"10\";\r\n chart.chartLeftMargin = \"40\";\r\n chart.chartRightMargin = \"40\";\r\n chart.toolTipBgColor = \"#FFFFFF\";\r\n chart.showToolTipShadow = \"1\";\r\n chart.plotHoverEffect = \"0\";\r\n chart.scrollHeight = \"6\";\r\n chart.scrollWidth = \"6\";\r\n chart.plotColorinTooltip = \"0\";\r\n chart.formatNumberScale= \"0\"\r\n return chart;\r\n}\r\n\r\nfunction setPieDonutLegends(chart: ChartInfo, widget: ReactWidgetPM): void {\r\n chart.showLabels = widget.LabelsPosition == 'InLegend' ? '0' : '1';\r\n chart.showLegend = widget.ShowLegend ? '1' : '0';\r\n setOnChartLegend(chart, widget);\r\n setChartInLegend(chart, widget);\r\n}\r\n\r\nfunction getWidgetLegendPosition(widget: ReactWidgetPM) {\r\n if(widget.LegendPosition) return widget.LegendPosition;\r\n\r\n return widget.TypeCode == 'pie' || widget.TypeCode == 'donut' ? \"right\" : \"bottom\"\r\n}\r\n\r\nfunction isColumnOrBarChart(widget: ReactWidgetPM) {\r\n if(!widget) return false;\r\n\r\n return widget.TypeCode == 'column' || widget.TypeCode == 'bar';\r\n}\r\n\r\nfunction isPieOrDonutChart(widget: ReactWidgetPM) {\r\n if(!widget) return false;\r\n \r\n return widget.TypeCode == 'pie' || widget.TypeCode == 'donut';\r\n}\r\n\r\nfunction setOnChartLegend(chart: ChartInfo, widget: ReactWidgetPM) {\r\n if (widget.LabelsPosition != 'InLegend') return;\r\n chart.legendPosition = getWidgetLegendPosition(widget);\r\n chart.legendScrollBgColor = \"#ffffff\";\r\n chart.legendIconScale = 0.75;\r\n chart.scrollShowButtons = \"0\";\r\n chart.scrollShowButtons = \"0\";\r\n chart.legendCaptionAlignment = \"right\";\r\n chart.alignLegendWithCanvas = \"1\";\r\n chart.showPercentValues = widget.ShowValueAsNumber ? \"0\" : \"1\";\r\n chart.chartRightMargin = \"20\";\r\n}\r\n\r\nfunction setChartInLegend(chart: ChartInfo, widget: ReactWidgetPM) {\r\n if (widget.LabelsPosition == 'InLegend') return;\r\n chart.pieRadius = \"70%\";\r\n chart.showPercentValues = widget.ShowValueAsNumber ? \"0\" : \"1\";\r\n}\r\n\r\nfunction setDualyAxis(chartInfo: ChartInfo, widget: ReactWidgetPM, seriesMeasures: SeriesMeasure[]) {\r\n chartInfo.showSecondaryLimits = \"0\";\r\n chartInfo.showDivLineSecondaryValue = \"0\";\r\n \r\n if (!widget) return;\r\n if (!widget.WidgetMeasures) return;\r\n if (widget.WidgetMeasures.length < 2) return;\r\n if (!widget.WidgetMeasures[1].PlotonSecondAxis) return;\r\n\r\n chartInfo.showSecondaryLimits = \"1\";\r\n chartInfo.showDivLineSecondaryValue = \"1\";\r\n chartInfo.pYAxisNameBorderPadding = 0;\r\n chartInfo.sYAxisNameBorderPadding = 0;\r\n chartInfo.sNumberSuffix = isSecondMeasureTypePercentage(widget) ? \"%\" : null;\r\n\r\n if(isNullOrUndefined(seriesMeasures)){\r\n chartInfo.pYAxisName = \"\";\r\n chartInfo.sYAxisname = \"\";\r\n return;\r\n }\r\n\r\n var textLength = Math.max(seriesMeasures[0].Name.length, seriesMeasures[1].Name.length);\r\n chartInfo.pYAxisName = getTitle(seriesMeasures[0]?.Name , textLength);\r\n chartInfo.sYAxisname = getTitle(seriesMeasures[1]?.Name, textLength);\r\n}\r\n\r\nfunction getTitle(text: string, maxLenght: number): string {\r\n var textLenght = text.length;\r\n if (textLenght >= maxLenght) return text.replace(/\\s+/g, ' ');\r\n\r\n var neededSpaces = Math.ceil((maxLenght - textLenght) / 2);\r\n var space = ' '\r\n text = space.repeat(neededSpaces) + text + space.repeat(neededSpaces);\r\n return text.replace(/\\s+/g, ' ');\r\n}\r\n\r\n","import { ChartObject } from \"fusioncharts\";\r\nimport { ReactWidgetPM } from \"../../../../types/widget\";\r\nimport { ChartInfo } from \"./FusionChartObjectHelper\";\r\n\r\nexport class FusionChartHelper {\r\n private chart: ChartObject;\r\n private widget: ReactWidgetPM;\r\n private pieRadius: number;\r\n private legendWidth: string;\r\n\r\n constructor(widget: ReactWidgetPM, chart: ChartObject) {\r\n this.chart = chart;\r\n this.widget = widget;\r\n }\r\n\r\n public getPieRadius(): number {\r\n return this.pieRadius;\r\n }\r\n\r\n public getLegendWidth(): string {\r\n return this.legendWidth;\r\n }\r\n\r\n public trimChartLabels(chartWidth: number, chartHeight: number) {\r\n if (!this.widget || (this.widget.TypeCode != \"pie\" && this.widget.TypeCode != \"donut\")) return;\r\n if (!this.chart) return;\r\n\r\n var dataSource = this.chart?.dataSource;\r\n if (!dataSource) return;\r\n\r\n var chartInfo = (dataSource as any).chart as ChartInfo;\r\n\r\n if (this.widget.LabelsPosition == 'InLegend') this.handleLegendWidth(chartWidth, chartHeight, chartInfo);\r\n else this.handlePieRadius(chartHeight, chartInfo);\r\n }\r\n\r\n handlePieRadius(chartHeight: number, chartInfo: ChartInfo) {\r\n let chartMinumunHeight = 236;\r\n var startPercantage = 70;\r\n let stepHeight = 60;\r\n\r\n var step = Math.floor((chartHeight - chartMinumunHeight) / stepHeight);\r\n if (step < 0) step = 0;\r\n\r\n\r\n var pieRadius = startPercantage - (step * 10);\r\n if (pieRadius < 60) pieRadius = 60;\r\n\r\n if (window.innerWidth > 1700) {\r\n this.pieRadius = pieRadius;\r\n chartInfo.pieRadius = pieRadius + \"%\";\r\n return;\r\n }\r\n\r\n let reducedValue = Math.floor((1700 - window.innerWidth) / 100) + 1;\r\n if (reducedValue > 5) reducedValue = 5;\r\n pieRadius = pieRadius - (reducedValue * 5)\r\n this.pieRadius = pieRadius;\r\n chartInfo.pieRadius = pieRadius + \"%\";\r\n }\r\n\r\n handleLegendWidth(chartWidth: number, chartHeight: number, chartInfo: ChartInfo) {\r\n if (chartWidth < 730) chartInfo.legendWidth = \"200\";\r\n if (chartWidth >= 730) chartInfo.legendWidth = \"400\";\r\n if (chartWidth >= 1000) chartInfo.legendWidth = \"500\";\r\n this.legendWidth = chartInfo.legendWidth;\r\n }\r\n\r\n}\r\n","export const mainYellowColor = \"#F6CF33\"\r\nexport const mainRedColor = \"#EE5F77\"\r\nexport const mainGreenColor = \"#4AC76F\"\r\nexport const mainTurquoiseColor = \"#32C7C7\"\r\nexport const mainBlueColor = \"#369CFB\"\r\nexport const mainPurpleColor = \"#935BE0\"\r\nexport const mainOrangeColor = \"#FAAD14\"\r\n\r\nexport const lightYellowColor = \"#FBE799\"\r\nexport const lightRedColor = \"#F7AFBB\"\r\nexport const lightGreenColor = \"#A4E3B7\"\r\nexport const lightTurquoiseColor = \"#99E3E3\"\r\nexport const lightBlueColor = \"#9BCDFD\"\r\nexport const lightPurpleColor = \"#C9ADF0\"\r\nexport const lightOrangeColor = \"#FDD689\"\r\n\r\nexport const grey1Color = \"#F6F6F6\"\r\nexport const grey2Color = \"#F0F0F0\"\r\nexport const grey3Color = \"#D9D9D9\"\r\nexport const grey4Color = \"#A4A4A4\"\r\n\r\nexport const plotColorsDictionary = {\r\n plotColor0 : \"#369CFB\",\r\n plotColor1 : \"#FCAF16\",\r\n plotColor2 : \"#EE5F77\",\r\n plotColor3 : \"#4AC76F\",\r\n plotColor4 : \"#935BE0\",\r\n plotColor5 : \"#FAD337\",\r\n plotColor6 : \"#32C7C7\",\r\n plotColor7 : \"#EB67D0\",\r\n plotColor8 : \"#3C9957\",\r\n plotColor9 : \"#FF7D4B\",\r\n plotColor10 : \"#78A6FF\",\r\n plotColor11 : \"#35838F\",\r\n plotColor12 : \"#BAA9F3\",\r\n plotColor13 : \"#C1DA72\",\r\n plotColor14 : \"#F0AEAD\",\r\n plotColor15 : \"#246EAB\",\r\n}","import { lightBlueColor, lightGreenColor, lightOrangeColor, lightPurpleColor, lightRedColor, lightTurquoiseColor, lightYellowColor, mainBlueColor, mainGreenColor, mainOrangeColor, mainPurpleColor, mainRedColor, mainTurquoiseColor, mainYellowColor, plotColorsDictionary } from \"./FusionColors\";\r\n\r\nexport interface ChartInfo {\r\n theme: string;\r\n scrollPosition: string;\r\n scrollHeight: string;\r\n scrollWidth: string;\r\n scrollPadding: string;\r\n flatScrollBars: string;\r\n enableSlicing: string;\r\n chartLeftMargin: string;\r\n chartTopMargin: string;\r\n chartRightMargin: string;\r\n chartBottomMargin: string;\r\n baseFont: string;\r\n baseFontSize: string;\r\n showPercentValues: string;\r\n showValues: string;\r\n showLegend: string;\r\n lineColor: string;\r\n divLineDashed: string;\r\n divLineDashLen: string;\r\n divLineDashGap: string;\r\n divLineColor: string;\r\n divLineThickness: string;\r\n divLineAlpha: string;\r\n enableRotation: string;\r\n legendItemFont: string;\r\n legendItemFontSize: string;\r\n legendCaptionFont: string;\r\n legendCaptionFontSize: string;\r\n labelFont: string;\r\n labelFontSize: string;\r\n toolTipBorderColor: string;\r\n toolTipBgAlpha: string;\r\n showToolTipShadow: string;\r\n toolTipBgColor: string;\r\n plottooltext: string;\r\n anchorradius: string;\r\n canvasBottomPadding: string;\r\n canvasTopPadding: string;\r\n labelDisplay: string;\r\n slantLabel: string;\r\n manageLabelOverflow: string;\r\n useEllipsesWhenOverflow: string;\r\n enableSmartLabels: string;\r\n pieRadius: string;\r\n doughnutRadius: string;\r\n baseFontColor: string;\r\n legendCaptionFontColor: string;\r\n labelFontColor: string;\r\n plotColorinTooltip: string;\r\n showLabels: string;\r\n legendPosition: string;\r\n legendScrollBgColor: string;\r\n legendIconScale: number;\r\n scrollShowButtons: string;\r\n legendCaptionAlignment: string;\r\n legendWidth: string;\r\n alignLegendWithCanvas: string;\r\n centerLabelBold: string;\r\n showSecondaryLimits: string;\r\n showDivLineSecondaryValue: string;\r\n pYAxisName: string;\r\n sYAxisname: string;\r\n sYAxisNameFont: string;\r\n sYAxisNameFontColor: string;\r\n sYAxisNameFontSize: string;\r\n pYAxisNameFont: string;\r\n pYAxisNameFontColor: string;\r\n pYAxisNameFontSize: string;\r\n sYAxisNameBorderPadding: number;\r\n pYAxisNameBorderPadding: number;\r\n xAxisNameFont: string;\r\n xAxisName: string;\r\n xAxisNameFontSize: string;\r\n xAxisNameFontColor: string;\r\n yAxisNameFont: string;\r\n yAxisNameFontSize: string;\r\n yAxisNameFontColor: string;\r\n yAxisName: string;\r\n adjustDiv: string;\r\n placeValuesInside: string;\r\n valuePosition: string;\r\n minPlotHeightForValue: string;\r\n minAngleForValue: string;\r\n drawCrossLine: string;\r\n palettecolors: string;\r\n plotHoverEffect: string;\r\n numberSuffix: string | null;\r\n sNumberSuffix: string | null;\r\n decimalSeparator: string | null;\r\n thousandSeparator: string | null;\r\n formatNumberScale: string | null;\r\n manageResize: string | null;\r\n valueBelowPivot: string | null;\r\n showValue: string | null;\r\n}\r\n\r\n\r\nexport function getSeriesPositionColor(position: number): string | null {\r\n switch (position) {\r\n case 1: return mainBlueColor;\r\n case 2: return mainGreenColor;\r\n case 3: return mainYellowColor;\r\n case 4: return mainTurquoiseColor;\r\n case 5: return mainPurpleColor;\r\n case 6: return mainOrangeColor;\r\n case 7: return mainRedColor;\r\n default: return null;\r\n }\r\n}\r\n\r\nexport function getSeriesHoverPositionColor(position: number): string | null {\r\n switch (position) {\r\n case 1: return lightBlueColor;\r\n case 2: return lightGreenColor;\r\n case 3: return lightYellowColor;\r\n case 4: return lightTurquoiseColor;\r\n case 5: return lightPurpleColor;\r\n case 6: return lightOrangeColor;\r\n case 7: return lightRedColor;\r\n default: return null;\r\n }\r\n}\r\n\r\nexport const getPlotColorByIndexOrder = (index: number) => {\r\n let _index = index;\r\n\r\n if(_index >= 16) {\r\n //This conversion make sure that we always in the fusion colors range [0 - 15];\r\n // fusuin uses round-robin way for color selection.\r\n _index = _index % 16;\r\n }\r\n\r\n switch (_index) {\r\n case 0: return plotColorsDictionary.plotColor0;\r\n case 1: return plotColorsDictionary.plotColor1;\r\n case 2: return plotColorsDictionary.plotColor2;\r\n case 3: return plotColorsDictionary.plotColor3;\r\n case 4: return plotColorsDictionary.plotColor4;\r\n case 5: return plotColorsDictionary.plotColor5;\r\n case 6: return plotColorsDictionary.plotColor6;\r\n case 7: return plotColorsDictionary.plotColor7;\r\n case 8: return plotColorsDictionary.plotColor8;\r\n case 9: return plotColorsDictionary.plotColor9;\r\n case 10: return plotColorsDictionary.plotColor10;\r\n case 11: return plotColorsDictionary.plotColor11;\r\n case 12: return plotColorsDictionary.plotColor12;\r\n case 13: return plotColorsDictionary.plotColor13;\r\n case 14: return plotColorsDictionary.plotColor14;\r\n case 15: return plotColorsDictionary.plotColor15;\r\n default: return \"#0566c2\";\r\n }\r\n}\r\n\r\n","import React, { forwardRef, useImperativeHandle, useRef, useState } from \"react\";\r\nimport ReactFC from 'react-fusioncharts';\r\nimport { DashboardDataBinding } from \"../../../../types/DashboardDataBinding\";\r\nimport { DataPointSelection } from \"../../../../types/SeriesMeasure\";\r\nimport { ReactWidgetPM } from \"../../../../types/widget\";\r\nimport FusionCharts, { ChartObject } from 'fusioncharts';\r\nimport { FusionCharts as fusionCharts } from 'fusioncharts';\r\nimport Charts from 'fusioncharts/fusioncharts.charts';\r\nimport FusionTheme from 'fusioncharts/themes/fusioncharts.theme.fusion';\r\nimport { useEffect } from \"react\";\r\nimport { DashboardAnalyticsService } from \"../../../../services/DashboardAnalyticsService\";\r\nimport { ProgressSpinner } from \"primereact/progressspinner\";\r\nimport { BuildFusionChartObject } from \"./FusionChartObjectBuilder\";\r\nimport useResizeObserver from \"use-resize-observer\";\r\nimport { FusionChartHelper } from \"./FusionChartHelper\";\r\nimport { Session } from \"../../../../services/session\";\r\nimport { ReactComponent as RedWarningIcon } from \"../../../../assets/images/red-warning.svg\"\r\nimport { v4 as uuidv4 } from 'uuid';\r\nimport { getPlotColorByIndexOrder } from \"./FusionChartObjectHelper\";\r\nimport { isNullOrUndefined, isNullOrUndefinedOrEmpty } from \"../../../../Utils/General\";\r\nimport { WidgetLoadLogger } from \"../../../../Utils/WidgetLoadLogger\";\r\n\r\nReactFC.fcRoot(FusionCharts, Charts, FusionTheme);\r\n\r\nFusionCharts.options['license']({\r\n key: 'prD4C-8eiA7A3A3C7E6G4B4A3J4C7B2D3D2nyqE1C3fd1npaE4D4tlA-21D7E4F4F1F1E1F4F1A10A8C2C5F5E2F2D1hwqD1B5D1aG4A19A32twbC6D3G4lhJ-7A9C11A5B-13ddA2I3A1B9B3D7A2B4G2H3H1F-7smC8B2XB4cetB8A7A5mxD3SG4F2tvgB2A3B2E4C3I3C7B3A4A3A2D3D2G4J-7==',\r\n creditLabel: false,\r\n});\r\n\r\nexport type FusionChartProps = {\r\n widget: ReactWidgetPM | undefined,\r\n widgetRef: ReactWidgetPM | undefined,\r\n dataBinding: DashboardDataBinding;\r\n onSelectDataPoint: (dataPointSelection: DataPointSelection) => void;\r\n onShowError: (errorMsg: string | null) => void;\r\n isPreviewModeActive?: boolean;\r\n};\r\nconst FusionChart = forwardRef((props: FusionChartProps, comRef) => {\r\n const [dataLoaded, setDataLoaded] = useState<boolean>(false);\r\n const [error, setError] = useState<string>();\r\n const [fusionKey, setFusionKey] = useState(uuidv4());\r\n const chartData = useRef<any>(null);\r\n const [resizeTimer, setResizeTimer] = useState<any | null>(null);\r\n const axiosController = useRef<AbortController | null>(new AbortController());\r\n\r\n \r\n const widget = useRef<ReactWidgetPM>();\r\n const [args, setArgs] = useState<ChartObject>({});\r\n const [fChart, setFchart] = useState<fusionCharts>();\r\n const [chartContainerId, setChartContainerId] = useState<any>(uuidv4());\r\n //(Math.random() + 1).toString(36).substring(7);\r\n const progressRef = useRef<any>(null);\r\n const fusionRef = useRef<any>(null);\r\n const fusionChartHelper = useRef<FusionChartHelper>();\r\n const isDummyChangesActive = useRef(false);\r\n\r\n useEffect(() => {\r\n axiosController.current = new AbortController();\r\n widget.current = props.widget;\r\n RefreshData();\r\n\r\n props.dataBinding?.widgetUpdated.subscribe(updatedWidget => {\r\n if (updatedWidget?.key != widget.current?.key) return;\r\n widget.current = {...updatedWidget};\r\n if(chartData && chartData.current){\r\n let _data = JSON.parse(JSON.stringify(chartData.current));\r\n isDummyChangesActive.current = true;\r\n handleData(_data, true); \r\n }\r\n });\r\n\r\n window.addEventListener(\"resize\", handleResize);\r\n return () => {\r\n window.removeEventListener(\"resize\", handleResize);\r\n setDataLoaded(false);\r\n if(axiosController && axiosController?.current?.abort){\r\n axiosController?.current?.abort();\r\n }\r\n };\r\n }, []);\r\n\r\n\r\n const handleResize = () => {\r\n clearTimeout(resizeTimer);\r\n setResizeTimer(\r\n setTimeout(() => {\r\n HandleSizeChange();\r\n }, 200)\r\n );\r\n }\r\n\r\n useImperativeHandle(comRef, () => ({\r\n onResizeFinish() {\r\n HandleSizeChange();\r\n }\r\n }));\r\n\r\n const HandleSizeChange = () => {\r\n if (!widget || (widget.current?.TypeCode != \"pie\" && widget.current?.TypeCode != \"donut\")) return;\r\n setTimeout(()=> {\r\n var oldPieRadius = fusionChartHelper?.current?.getPieRadius();\r\n var oldLegendWidth = fusionChartHelper?.current?.getLegendWidth();\r\n\r\n fusionChartHelper?.current?.trimChartLabels(fusionRef?.current?.offsetWidth, fusionRef?.current?.offsetHeight)!;\r\n \r\n if (widget.current?.LabelsPosition != 'InLegend' && oldPieRadius == fusionChartHelper?.current?.getPieRadius()) return;\r\n if (widget.current?.LabelsPosition == 'InLegend' && oldLegendWidth == fusionChartHelper?.current?.getLegendWidth()) return;\r\n\r\n setDataLoaded(false);\r\n setTimeout(()=> {\r\n setDataLoaded(true);\r\n }, 100);\r\n }, 100);\r\n }\r\n\r\n const isTargetWidget = (postWidget: ReactWidgetPM)=>{\r\n return postWidget && (postWidget.TypeCode == 'column' || postWidget.TypeCode == 'bar' || postWidget.TypeCode == 'line')\r\n }\r\n\r\n const RefreshData = () => {\r\n if (Session.Tenant == 0) {\r\n handleData(null);\r\n return;\r\n }\r\n\r\n var dashboardAnalyticsService = new DashboardAnalyticsService();\r\n var postWidget: any = { ...widget.current };\r\n postWidget.onChange = undefined;\r\n\r\n let signal :any= undefined;\r\n if(axiosController) {\r\n axiosController?.current?.abort();\r\n let updatedAxiosController = new AbortController();\r\n axiosController.current= updatedAxiosController\r\n signal = updatedAxiosController?.signal;\r\n }\r\n\r\n let isTargetUsed = isTargetWidget(postWidget) && postWidget.WidgetMeasures && postWidget.WidgetMeasures[1] && postWidget.WidgetMeasures[1].MeasureCode == 'Target';\r\n if(isTargetUsed){\r\n const widgetLoadLogger = new WidgetLoadLogger(postWidget, props.isPreviewModeActive);\r\n dashboardAnalyticsService.getTargetAnalyticsData(postWidget as ReactWidgetPM, signal).then((result: any) => {\r\n if(result?.data && !isNullOrUndefined(result?.data?.SeriesMeasures)){\r\n handleData(result?.data?.SeriesMeasures);\r\n chartData.current = result?.data?.SeriesMeasures; \r\n }\r\n\r\n if(result?.data && !isNullOrUndefined(result?.data?.Errors) && result?.data?.Errors.length > 0){\r\n showTargetUsageTooltipMessageError(result?.data?.Errors[0]);\r\n } else {\r\n showTargetUsageTooltipMessageError(null);\r\n }\r\n\r\n setDataLoaded(true);\r\n widgetLoadLogger.log(result);\r\n }, error => {\r\n console.log('error', error);\r\n if (error?.response?.data?.ErrorMessage) setError(error?.response?.data?.ErrorMessage);\r\n else setError(error.message);\r\n setDataLoaded(true);\r\n })\r\n }else{\r\n const widgetLoadLogger = new WidgetLoadLogger(postWidget, props.isPreviewModeActive);\r\n dashboardAnalyticsService.getData(postWidget as ReactWidgetPM, signal).then(result => {\r\n handleData(result?.data);\r\n chartData.current = result?.data;\r\n setDataLoaded(true);\r\n widgetLoadLogger.log(result);\r\n }, error => {\r\n console.log('error', error);\r\n if (error?.response?.data?.ErrorMessage) setError(error?.response?.data?.ErrorMessage);\r\n else setError(error.message);\r\n setDataLoaded(true);\r\n })\r\n }\r\n }\r\n\r\n const handleData = (data: any, isDummyChange: boolean = false): void => {\r\n let chart = BuildFusionChartObject(data, widget.current!);\r\n fusionChartHelper.current = new FusionChartHelper(widget.current!, chart);\r\n fusionChartHelper?.current.trimChartLabels(progressRef?.current?.offsetWidth, progressRef?.current?.offsetHeight)!;\r\n setArgs(chart);\r\n \r\n if(!isDummyChange){\r\n setDataLoaded(true);\r\n }else{\r\n setTimeout(() => {\r\n isDummyChangesActive.current = false;\r\n }, 100);\r\n }\r\n }\r\n\r\n const showTargetUsageTooltipMessageError = (errorMsg: string | null = \"\") => {\r\n props.onShowError(errorMsg);\r\n }\r\n\r\n const dataplotClick = (eventObj: any, dataObj: any): void => {\r\n props.onSelectDataPoint({\r\n GroupById: dataObj.id.groupbyid,\r\n MeasureFieldId: dataObj.id.measurefieldid,\r\n MeasureCode: dataObj.id.measurecode,\r\n Formula: dataObj.id.formula,\r\n Widget: widget.current,\r\n GroupByIdSec: dataObj.id.groupbyidsec\r\n });\r\n };\r\n\r\n const { ref } = useResizeObserver<HTMLDivElement>({\r\n onResize: ({ width, height }) => {\r\n fChart?.resizeTo(width as number, height as number);\r\n },\r\n });\r\n\r\n const renderComplete = (chart: any): void => {\r\n setFchart(chart);\r\n }\r\n\r\n const handlePieDonutChartTooltip = (chartDataSource: any) => {\r\n if(chartDataSource && chartDataSource.data && chartDataSource.data.length) {\r\n chartDataSource.data.forEach((item: any, index: number) => {\r\n let color = getPlotColorByIndexOrder(index)\r\n item.tooltext = item.tooltext.replaceAll(\"transparent\", color);\r\n })\r\n\r\n setArgs({...args, dataSource: chartDataSource});\r\n }\r\n }\r\n\r\n const handleOtherChartsTooltip = (chartDataSource: any) => {\r\n if(chartDataSource && chartDataSource.dataset && chartDataSource.dataset.length) {\r\n chartDataSource.dataset.forEach((el: any, index: number) => {\r\n el.data.forEach((item: any) => {\r\n let color = getPlotColorByIndexOrder(index)\r\n item.tooltext = item.tooltext.replaceAll(\"transparent\", color);\r\n })\r\n })\r\n\r\n setArgs({...args, dataSource: chartDataSource});\r\n }\r\n }\r\n\r\n const loaded = (event: any) => {\r\n if(isDummyChangesActive && isDummyChangesActive.current) return;\r\n\r\n let chartDataSource = event.sender.args && event.sender.args.dataSource ? event.sender.args.dataSource : null;\r\n \r\n let isPieOrDonutChart = widget.current?.TypeCode == 'pie' || widget.current?.TypeCode == 'donut';\r\n \r\n if(isPieOrDonutChart){\r\n handlePieDonutChartTooltip(chartDataSource);\r\n }else {\r\n handleOtherChartsTooltip(chartDataSource);\r\n }\r\n }\r\n\r\n return (\r\n !dataLoaded ?\r\n <div ref={progressRef} className={'dl-full-hight dl-flex-content-center spinner-custome'}>\r\n <ProgressSpinner style={{ width: '40px', height: '40px' }} strokeWidth=\"4\" animationDuration=\"2s\" />\r\n </div>\r\n :\r\n !error ?\r\n <div className={'db-fc-parent-container'} ref={fusionRef}>\r\n <div className={'db-fc-container'} key={fusionKey} ref={ref} id={chartContainerId}>\r\n <ReactFC\r\n {...args}\r\n fcEvent-dataplotClick={dataplotClick}\r\n fcEvent-loaded={loaded}\r\n onRender={renderComplete}\r\n />\r\n </div>\r\n </div>\r\n : <div className=\"dl-flex-content-center dl-full-hight\" style={{ width: '100%' }}>\r\n <div className=\"dl-tooltip\">\r\n <RedWarningIcon className=\"red-warning-icon\" />\r\n <span className=\"dl-tooltiptext\">{error}</span>\r\n </div>\r\n </div>\r\n )\r\n});\r\nexport default FusionChart;\r\n\r\n","import React, { forwardRef, useImperativeHandle, useRef, useState } from \"react\";\r\nimport ReactFC from 'react-fusioncharts';\r\nimport { DashboardDataBinding } from \"../../../../types/DashboardDataBinding\";\r\nimport { DataPointSelection } from \"../../../../types/SeriesMeasure\";\r\nimport { ReactWidgetPM } from \"../../../../types/widget\";\r\nimport FusionCharts, { ChartObject } from 'fusioncharts';\r\nimport Charts from 'fusioncharts/fusioncharts.widgets';\r\nimport FusionTheme from 'fusioncharts/themes/fusioncharts.theme.fusion';\r\nimport { useEffect } from \"react\";\r\nimport { DashboardAnalyticsService } from \"../../../../services/DashboardAnalyticsService\";\r\nimport { ProgressSpinner } from \"primereact/progressspinner\";\r\nimport { getGaugeObject } from \"./FusionChartObjectBuilder\";\r\nimport { Session } from \"../../../../services/session\";\r\nimport { ReactComponent as RedWarningIcon } from \"../../../../assets/images/red-warning.svg\"\r\nimport { v4 as uuidv4 } from 'uuid';\r\nimport { WidgetLoadLogger } from \"../../../../Utils/WidgetLoadLogger\";\r\n\r\nReactFC.fcRoot(FusionCharts, Charts, FusionTheme);\r\n\r\nFusionCharts.options['license']({\r\n key: 'prD4C-8eiA7A3A3C7E6G4B4A3J4C7B2D3D2nyqE1C3fd1npaE4D4tlA-21D7E4F4F1F1E1F4F1A10A8C2C5F5E2F2D1hwqD1B5D1aG4A19A32twbC6D3G4lhJ-7A9C11A5B-13ddA2I3A1B9B3D7A2B4G2H3H1F-7smC8B2XB4cetB8A7A5mxD3SG4F2tvgB2A3B2E4C3I3C7B3A4A3A2D3D2G4J-7==',\r\n creditLabel: false,\r\n});\r\n\r\nexport type FusionChartProps = {\r\n widget: ReactWidgetPM | undefined,\r\n widgetRef: ReactWidgetPM | undefined,\r\n dataBinding: DashboardDataBinding;\r\n onSelectDataPoint: (dataPointSelection: DataPointSelection) => void;\r\n isPreviewModeActive?: boolean;\r\n};\r\nconst FusionChart = forwardRef((props: FusionChartProps, comRef) => {\r\n const [dataLoaded, setDataLoaded] = useState<boolean>(false);\r\n const [error, setError] = useState<string>();\r\n const [fusionKey, setFusionKey] = useState(uuidv4());\r\n const chartData = useRef<any>(null);\r\n const [resizeTimer, setResizeTimer] = useState<any | null>(null);\r\n const axiosController = useRef<AbortController | null>(new AbortController());\r\n\r\n \r\n const widget = useRef<ReactWidgetPM>();\r\n const [args, setArgs] = useState<ChartObject>({});\r\n const [chartContainerId, setChartContainerId] = useState<any>(uuidv4());\r\n const progressRef = useRef<any>(null);\r\n const fusionRef = useRef<any>(null);\r\n const isDummyChangesActive = useRef(false);\r\n\r\n useEffect(() => {\r\n axiosController.current = new AbortController();\r\n widget.current = props.widget;\r\n getChartData();\r\n\r\n props.dataBinding?.widgetUpdated.subscribe(updatedWidget => {\r\n if (updatedWidget?.key != widget.current?.key) return;\r\n widget.current = {...updatedWidget};\r\n if(chartData && chartData.current){\r\n let _data = JSON.parse(JSON.stringify(chartData.current));\r\n isDummyChangesActive.current = true;\r\n handleData(_data, true); \r\n }\r\n });\r\n\r\n window.addEventListener(\"resize\", handleResize);\r\n return () => {\r\n window.removeEventListener(\"resize\", handleResize);\r\n setDataLoaded(false);\r\n if(axiosController && axiosController?.current?.abort){\r\n axiosController?.current?.abort();\r\n }\r\n };\r\n }, []);\r\n\r\n\r\n const handleResize = () => {\r\n clearTimeout(resizeTimer);\r\n setResizeTimer(\r\n setTimeout(() => {\r\n setFusionKey(uuidv4());\r\n }, 200)\r\n );\r\n }\r\n\r\n useImperativeHandle(comRef, () => ({\r\n onResizeFinish() {\r\n setFusionKey(uuidv4());\r\n }\r\n }));\r\n\r\n const getChartData = () => {\r\n if (Session.Tenant == 0) {\r\n handleData(null);\r\n return;\r\n }\r\n\r\n var dashboardAnalyticsService = new DashboardAnalyticsService();\r\n var postWidget: any = { ...widget.current };\r\n postWidget.onChange = undefined;\r\n\r\n let signal :any= undefined;\r\n if(axiosController) {\r\n axiosController?.current?.abort();\r\n let updatedAxiosController = new AbortController();\r\n axiosController.current= updatedAxiosController\r\n signal = updatedAxiosController?.signal;\r\n }\r\n\r\n const widgetLoadLogger = new WidgetLoadLogger(postWidget, props.isPreviewModeActive);\r\n dashboardAnalyticsService.getGaugeData(postWidget as ReactWidgetPM, signal).then(result => {\r\n handleData(result?.data);\r\n chartData.current = result?.data;\r\n setDataLoaded(true);\r\n widgetLoadLogger.log(result);\r\n }, error => {\r\n console.log('error', error);\r\n if (error?.response?.data?.ErrorMessage) setError(error?.response?.data?.ErrorMessage);\r\n else setError(error.message);\r\n setDataLoaded(true);\r\n })\r\n }\r\n\r\n const handleData = (data: any, isDummyChange: boolean = false): void => {\r\n let chart = getGaugeObject(data, widget.current!)\r\n setArgs(chart);\r\n \r\n if(!isDummyChange){\r\n setDataLoaded(true);\r\n }else{\r\n setTimeout(() => {\r\n isDummyChangesActive.current = false;\r\n }, 100);\r\n\r\n }\r\n }\r\n \r\n return (\r\n !dataLoaded ?\r\n <div ref={progressRef} className={'dl-full-hight dl-flex-content-center spinner-custome'}>\r\n <ProgressSpinner style={{ width: '40px', height: '40px' }} strokeWidth=\"4\" animationDuration=\"2s\" />\r\n </div>\r\n :\r\n !error ?\r\n <div className={'db-fc-parent-container'} ref={fusionRef}>\r\n <div className={'db-fc-container'} key={fusionKey} id={chartContainerId}>\r\n <ReactFC {...args} />\r\n </div>\r\n </div>\r\n : <div className=\"dl-flex-content-center dl-full-hight\" style={{ width: '100%' }}>\r\n <div className=\"dl-tooltip\">\r\n <RedWarningIcon className=\"red-warning-icon\" />\r\n <span className=\"dl-tooltiptext\">{error}</span>\r\n </div>\r\n </div>\r\n )\r\n});\r\nexport default FusionChart;\r\n\r\n","import React, { forwardRef, useEffect, useImperativeHandle, useRef, useState } from \"react\";\r\nimport { DataPointSelection } from \"../../types/SeriesMeasure\";\r\nimport { ReactWidgetPM } from \"../../types/widget\";\r\nimport { DashboardDataBinding } from '../../types/DashboardDataBinding';\r\nimport CustomChart from \"./ChartsComponents/CustomCharts/CustomChart\";\r\nimport FusionChart from \"./ChartsComponents/FusionCharts/FusionChart\";\r\nimport { isNullOrUndefined } from \"../../Utils/General\";\r\nimport { ReactComponent as DeleteWidgetIcon } from \"../../assets/images/delete-icon.svg\"\r\nimport { ReactComponent as EditWidgetIcon } from \"../../assets/images/edit-icon.svg\"\r\nimport { ReactComponent as CopyWidgetIcon } from \"../../assets/images/copy-icon.svg\"\r\nimport { ReactComponent as TargetWarningIcon } from \"../../assets/images/red-circle-warning.svg\"\r\nimport Popup from 'reactjs-popup';\r\nimport { v4 as uuidv4 } from 'uuid';\r\nimport GaugeChart from \"./ChartsComponents/FusionCharts/GaugeChart\";\r\n\r\ntype WidgetCardProps = {\r\n editBtnClicked(widget: any): any;\r\n copyBtnClicked?(id: any): any;\r\n deleteBtnClicked(i: any): any;\r\n widget: ReactWidgetPM | undefined;\r\n widgetRef: ReactWidgetPM | undefined;\r\n el: any;\r\n dateFilter: any;\r\n dataBinding: DashboardDataBinding;\r\n isInEditMode: boolean;\r\n isPreviewModeActive?: boolean;\r\n onSelectDataPoint: (dataPointSelection: DataPointSelection) => void;\r\n}\r\n\r\n\r\nconst WidgetCard = forwardRef((props: WidgetCardProps, comRef) => {\r\n const widget = useRef<ReactWidgetPM>();\r\n const [isLoading, setIsLoading] = useState(false);\r\n const fusionChartRef = useRef<any>(null);\r\n const [triggerId, setTriggerId] = useState(uuidv4());\r\n\r\n const [showHeaderErrorMessages, setShowHeaderErrorMessages] = useState(false);\r\n const [headerErrorMessages, setHeaderErrorMessages] = useState(\"\");\r\n\r\n \r\n const editWidget = () => {\r\n props.editBtnClicked(widget.current)\r\n };\r\n\r\n const copyWidget = () => {\r\n if(props && props.copyBtnClicked){\r\n props.copyBtnClicked(widget.current?.key)\r\n }\r\n };\r\n \r\n useEffect(() => {\r\n widget.current = props.widget;\r\n props.dataBinding?.onEditWidget.subscribe(e => {\r\n if (e?.key != widget.current?.key) return;\r\n setIsLoading(true);\r\n widget.current = { ...e };\r\n setIsLoading(false);\r\n })\r\n\r\n props.dataBinding?.widgetUpdated.subscribe(updatedWidget => {\r\n if (updatedWidget?.key != widget.current?.key) return;\r\n widget.current = {...updatedWidget};\r\n setTriggerId(uuidv4());\r\n });\r\n }, []);\r\n\r\n useImperativeHandle(comRef, () => ({\r\n onResizeFinish() {\r\n fusionChartRef?.current?.onResizeFinish();\r\n }\r\n }));\r\n\r\n const getCSSPropertyValue = (widgetData: ReactWidgetPM | undefined, propName: string, propUnit: string = \"\", propDefaultVal: any = \"\") => {\r\n return widgetData && propName && !isNullOrUndefined(widgetData[propName]) ? widgetData[propName] + propUnit : propDefaultVal || \"\";\r\n }\r\n \r\n const GetChartComponent = () => {\r\n if (isLoading || !widget.current?.TypeCode) return \"\";\r\n if (widget.current?.TypeCode == \"kpi\") return <CustomChart isInEditMode={props.isInEditMode} isPreviewModeActive={props.isPreviewModeActive} dataBinding={props.dataBinding} widget={widget.current} widgetRef={props.widgetRef} onSelectDataPoint={props.onSelectDataPoint} onShowError={(errorMsg) => showErrorMsg(errorMsg)} />;\r\n if (widget.current?.TypeCode == \"table\" || widget.current?.TypeCode == \"pivot\") return <CustomChart isInEditMode={props.isInEditMode} isPreviewModeActive={props.isPreviewModeActive} dataBinding={props.dataBinding} widget={widget.current} widgetRef={props.widgetRef} onSelectDataPoint={props.onSelectDataPoint} />;\r\n if (widget.current?.TypeCode == \"gauge\") return <GaugeChart ref={fusionChartRef} dataBinding={props.dataBinding} widget={widget.current} widgetRef={props.widgetRef} onSelectDataPoint={props.onSelectDataPoint} isPreviewModeActive={props.isPreviewModeActive} />\r\n return <FusionChart ref={fusionChartRef} dataBinding={props.dataBinding} widget={widget.current} widgetRef={props.widgetRef} onSelectDataPoint={props.onSelectDataPoint} onShowError={(errorMsg) => showErrorMsg(errorMsg)} isPreviewModeActive={props.isPreviewModeActive} />\r\n }\r\n\r\n \r\n const showErrorMsg = (msg: string | null) => {\r\n if(msg && msg.length > 0){\r\n setHeaderErrorMessages(msg || \"\");\r\n setShowHeaderErrorMessages(true); \r\n } else {\r\n setHeaderErrorMessages(\"\");\r\n setShowHeaderErrorMessages(false); \r\n }\r\n }\r\n\r\n const isTableWidget = ()=> {\r\n return widget && widget.current && widget.current.TypeCode == 'table';\r\n }\r\n \r\n const isPivotWidget = ()=> {\r\n return widget && widget.current && widget.current.TypeCode == 'pivot';\r\n }\r\n\r\n const isTableOrPivotWidget = ()=> {\r\n return widget && widget.current && (widget.current.TypeCode == 'table' || widget.current.TypeCode == 'pivot');\r\n }\r\n\r\n const getwidgetTitlesContainer = ()=> {\r\n return isTableOrPivotWidget() ? \"widget-table-titles-container\" : \"widget-titles-container\"\r\n }\r\n\r\n const drilldownToTableData = () => {\r\n props.onSelectDataPoint({\r\n GroupById: undefined,\r\n MeasureFieldId: undefined,\r\n MeasureCode: undefined,\r\n Formula: undefined,\r\n Widget: widget.current,\r\n GroupByIdSec: undefined\r\n });\r\n }\r\n\r\n const isThereTitle = () => {\r\n return widget.current?.Title && widget.current?.Title.length! > 0;\r\n }\r\n\r\n const isThereSubtitle = () => {\r\n return widget.current?.Subtitle && widget.current?.Subtitle.length! > 0;\r\n }\r\n\r\n const tableHintMessage = () => {\r\n return <span className={`table-hint-container ${isPivotWidget() ? \"min-width-105\" : \"\"} ${isTitleAligmentRight() ? \"padding-left-12\" : \"\"}`}>\r\n <span style={{visibility : isTableWidget() ? \"visible\" : \"hidden\"}}>{isTableWidget() ? \"Showing the first 100 rows\" : \"\"}</span>\r\n {\r\n !props.isInEditMode && !props.isPreviewModeActive && isTableWidget() &&\r\n <React.Fragment>\r\n <span>{\"(\"}</span>\r\n <span onClick={drilldownToTableData} className=\"show-more-records\">{\" Show More Records \"}</span>\r\n <span>{\")\"}</span>\r\n </React.Fragment>\r\n }\r\n </span>\r\n }\r\n\r\n const isTitleAligmentRight = () => {\r\n return widget && widget.current && widget.current.TitleAlignment && widget.current.TitleAlignment.toLowerCase() == 'right'\r\n }\r\n\r\n return (\r\n <div className=\"dl-panel\" key={props.el.i} >\r\n <header key={triggerId} className={`widget-header ${isPivotWidget() ? \"pivot-header\" : \"\"}`}>\r\n <div className={`header-contents ${isTableWidget() ? \"border-bottom-light-white\" : \"\"}`}>\r\n {\r\n isTitleAligmentRight() && isTableOrPivotWidget() && tableHintMessage()\r\n }\r\n\r\n <div style={{ cursor: props.isInEditMode ? \"move\" : \"default\",\r\n justifyContent: isTableOrPivotWidget() ? getCSSPropertyValue(widget?.current, 'TitleAlignment', '', undefined) : undefined,\r\n flexDirection : isTitleAligmentRight() ? \"row-reverse\" : \"row\"\r\n }} \r\n className={getwidgetTitlesContainer()}>\r\n <div\r\n className=\"title-container\"\r\n style={{ justifyContent: getCSSPropertyValue(widget?.current, 'TitleAlignment', '', undefined) }}>\r\n <Popup\r\n className=\"title-tooltip-container\"\r\n trigger={\r\n <div\r\n className=\"title\"\r\n style={{\r\n fontSize: getCSSPropertyValue(widget.current, 'TitleFontSize', 'px'),\r\n color: getCSSPropertyValue(widget.current, 'TitleFontColor', ''),\r\n textAlign: getCSSPropertyValue(widget?.current, 'TitleAlignment', '', undefined),\r\n }}>\r\n {widget.current?.Title}\r\n </div>\r\n }\r\n position={['top center']}\r\n arrowStyle={{color: '#262626'}}\r\n offsetY={-8}\r\n on={['hover', 'focus']}\r\n >\r\n <span className=\"widget-title-tooltip-text\">{widget.current?.Title}</span>\r\n </Popup>\r\n </div>\r\n\r\n {\r\n isTableOrPivotWidget() && isThereTitle() && isThereSubtitle() && <div className=\"titles-vertical-seeparator\"></div>\r\n }\r\n\r\n <div\r\n className={ isThereSubtitle() ? \"subtitle\" : \"subtitle margin-top-4\" }\r\n style={{\r\n fontSize: getCSSPropertyValue(widget.current, 'SubtitleFontSize', 'px'),\r\n textAlign: getCSSPropertyValue(widget?.current, 'TitleAlignment', '', undefined),\r\n color: getCSSPropertyValue(widget.current, 'SubtitleFontColor', ''),\r\n minWidth: isThereSubtitle() && isTableOrPivotWidget() ? '5%' : undefined,\r\n }}>\r\n {widget.current?.Subtitle}\r\n </div>\r\n </div>\r\n \r\n {\r\n !isTitleAligmentRight() && isTableOrPivotWidget() && tableHintMessage()\r\n }\r\n\r\n {props.isInEditMode &&\r\n <div className={ isThereTitle() ? \"widget-options-container\" : \"widget-options-container margin-top-6\"}>\r\n <EditWidgetIcon onClick={() => editWidget()} />\r\n <CopyWidgetIcon onClick={() => copyWidget()} />\r\n <DeleteWidgetIcon onClick={() => props.deleteBtnClicked(props.widget?.key)} />\r\n </div>\r\n }\r\n\r\n {!props.isInEditMode && showHeaderErrorMessages &&\r\n\r\n <div\r\n className=\"header-message-error\">\r\n <Popup\r\n className=\"header-message-error-tooltip-container\"\r\n trigger={\r\n <div>\r\n <TargetWarningIcon />\r\n </div>\r\n }\r\n position={['top center']}\r\n arrowStyle={{color: '#262626'}}\r\n offsetY={-2}\r\n on={['hover', 'focus']}\r\n >\r\n <span className=\"header-message-error-tooltip-text\">{headerErrorMessages}</span>\r\n </Popup>\r\n </div>\r\n }\r\n </div>\r\n \r\n </header>\r\n <div className=\"dl-dashboard-widget\"> \r\n {GetChartComponent()}\r\n </div>\r\n </div>\r\n );\r\n});\r\n\r\nexport default WidgetCard;\r\n","export function deepClone (obj){\r\n return JSON.parse(JSON.stringify(obj))\r\n}","import { WidthProvider, Responsive, Layout, Layouts } from \"react-grid-layout\";\r\nimport React, { useEffect, useRef, useState } from \"react\";\r\nimport { ReactWidgetPM } from \"../../types/widget\";\r\nimport WidgetCard from \"./WidgetCard\";\r\nimport { DataPointSelection } from \"../../types/SeriesMeasure\";\r\nimport { DashboardDataBinding } from \"../../types/DashboardDataBinding\";\r\nimport { deepClone } from '../../services/clone';\r\nimport useResizeObserver from \"use-resize-observer\";\r\n\r\nconst ResponsiveReactGridLayout = WidthProvider(Responsive);\r\n\r\nexport type DeleteWidgetProps = {\r\n id: string, \r\n layouts: any, \r\n widgets: { lg: ReactWidgetPM[] }\r\n}\r\n\r\ntype DashboardDesignerProps = {\r\n editMode: boolean,\r\n Widgetlayouts: { lg: ReactWidgetPM[] },\r\n openEditWidget: (widget: ReactWidgetPM) => void\r\n onLayoutChange: (layouts: Layouts) => void,\r\n onWidgetDelete: (deleteProps: DeleteWidgetProps) => void,\r\n onCopyWidget?:(id: string) => void,\r\n dataBinding: DashboardDataBinding,\r\n onSelectDataPoint: (dataPointSelection: DataPointSelection) => void\r\n};\r\n\r\nconst DashboardDesigner = (props: DashboardDesignerProps) => {\r\n const array12 = Array.from({ length: 12 }).fill(null);\r\n const minimumPlaceholderRowsCount = 12;\r\n const [layouts, setLayouts] = useState<Layouts>({ lg: [] });\r\n const [placeholderRowsArray, setplaceholderRowsArray] = useState(Array.from({ length: minimumPlaceholderRowsCount }).fill(null));\r\n const [dateFilter, setDateFilter] = useState<Date | Date[] | undefined>(undefined);\r\n const [isInEditMode, setisInEditMode] = useState(false);\r\n const widgetsDictionaryRef = useRef<{ [k: string]: ReactWidgetPM }>({});\r\n const [widgets, setWidgets] = useState<{ lg: ReactWidgetPM[] }>({ lg: [] });\r\n const gridLayoutComponent = useRef<any>(null);\r\n const entered = useRef<boolean>(false);\r\n const widgetCardRef = useRef<any[]>([]);\r\n\r\n\r\n useEffect(() => {\r\n FillLayout(props.Widgetlayouts);\r\n }, [props.Widgetlayouts]);\r\n\r\n useEffect(() => {\r\n if (props?.dataBinding?.onDeleteWidgetConfirmed) {\r\n props.dataBinding.onDeleteWidgetConfirmed.subscribe(deleteProps => {\r\n if (deleteProps){\r\n deletePanel(deleteProps);\r\n }\r\n });\r\n }\r\n }, []);\r\n\r\n const FillLayout = (dashboardLayouts: { lg: ReactWidgetPM[] }) => {\r\n var clone: { lg: ReactWidgetPM[] } = deepClone(dashboardLayouts);\r\n var layout = createLayout(clone);\r\n FillWidgetDictionary(clone);\r\n setWidgets(clone);\r\n setLayouts(layout);\r\n UpdatePlaceholderDimensions(layout);\r\n }\r\n const FillWidgetDictionary = (clone: { lg: ReactWidgetPM[] }) => {\r\n for (const item of clone.lg) {\r\n widgetsDictionaryRef.current[item.key] = item;\r\n }\r\n }\r\n const createLayout = (dashboardLayouts: { lg: ReactWidgetPM[] }): Layouts => {\r\n var layout: any = { lg: [] };\r\n dashboardLayouts.lg.map(w => w.Layout as Layout).forEach(e => {\r\n layout.lg.push(e)\r\n })\r\n return layout;\r\n }\r\n\r\n useEffect(() => {\r\n setisInEditMode(props.editMode);\r\n }, [props.editMode]);\r\n\r\n function onLayoutChange(layout: any, changedLayouts: Layouts) {\r\n UpdateWidget(changedLayouts);\r\n setLayouts(changedLayouts);\r\n UpdatePlaceholderDimensions(changedLayouts);\r\n if (entered.current == false) {\r\n entered.current = true;\r\n return;\r\n }\r\n props.onLayoutChange(changedLayouts);\r\n\r\n }\r\n\r\n function onResizeStop(event: any, oldItem: any) {\r\n document.dispatchEvent(new CustomEvent(\"resizeStop\",{}));\r\n widgetCardRef?.current?.find(x => x.i == oldItem.i)?.ref.onResizeFinish(widgetsDictionaryRef.current[oldItem.i].key);\r\n }\r\n\r\n function UpdateWidget(changedLayouts: Layouts) {\r\n for (const item of changedLayouts.lg) {\r\n if (widgetsDictionaryRef.current[item.i]) {\r\n widgetsDictionaryRef.current[item.i].Layout = item;\r\n }\r\n }\r\n }\r\n\r\n const confirmDeleteWidget = (id: string) => {\r\n let deleteWidgetProps: DeleteWidgetProps = {\r\n id: id, \r\n layouts: layouts, \r\n widgets: widgets\r\n }\r\n props.onWidgetDelete(deleteWidgetProps)\r\n }\r\n\r\n function deletePanel(deleteProps: DeleteWidgetProps) {\r\n var newLayouts = { lg: deleteProps.layouts.lg.filter(e => e.i != deleteProps.id) }\r\n setLayouts(newLayouts);\r\n var newWidgets = { lg: deleteProps.widgets.lg.filter(e => e.key != deleteProps.id) }\r\n FillWidgetDictionary(newWidgets);\r\n setWidgets(newWidgets);\r\n props.onLayoutChange(newLayouts)\r\n };\r\n\r\n function editWidget(widget: ReactWidgetPM) {\r\n widget.ChangeSetOp = 'Update';\r\n props.openEditWidget(widget);\r\n };\r\n\r\n function copyWidget(key: string) {\r\n if(props && props.onCopyWidget){\r\n props.onCopyWidget(key);\r\n }\r\n };\r\n \r\n\r\n function UpdatePlaceholderDimensions(layouts: Layouts) {\r\n if (!layouts)\r\n return;\r\n var max = minimumPlaceholderRowsCount;\r\n for (const layout of layouts['lg']) {\r\n if (layout.y + layout.h > max)\r\n max = layout.y + layout.h;\r\n }\r\n\r\n var newPlaceholderRows = max + 2;\r\n newPlaceholderRows = newPlaceholderRows < minimumPlaceholderRowsCount ? minimumPlaceholderRowsCount : newPlaceholderRows;\r\n setplaceholderRowsArray(Array.from({ length: newPlaceholderRows }).fill(null));\r\n }\r\n\r\n const { ref } = useResizeObserver<HTMLDivElement>({\r\n onResize: ({ }) => {\r\n window.dispatchEvent(new Event('resize'));\r\n },\r\n });\r\n\r\n return (<div ref={ref} className=\"dl-full-hight-scroll\">\r\n <div className=\"dl-box\">\r\n <div className=\"dl-row dl-content\">\r\n <div className=\"dl-grid-container\">\r\n <div className=\"dl-grid dl-grid--bordered\">\r\n {isInEditMode ? 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 ) : null}\r\n </div>\r\n\r\n\r\n <ResponsiveReactGridLayout ref={gridLayoutComponent}\r\n {...layoutGridProps}\r\n layouts={layouts}\r\n compactType=\"vertical\"\r\n draggableCancel=\".widget-options-container\"\r\n isDraggable={isInEditMode}\r\n isResizable={isInEditMode}\r\n onWidthChange={() => { }}\r\n onResizeStop={onResizeStop}\r\n onLayoutChange={onLayoutChange}>\r\n\r\n {widgets.lg.map((widget, i) =>\r\n\r\n <div key={widget.Layout?.i}>\r\n <WidgetCard\r\n isInEditMode={isInEditMode}\r\n key={widget.Layout?.i}\r\n widget={widget}\r\n widgetRef={widgetsDictionaryRef.current[widget.key]}\r\n el={widget}\r\n dataBinding={props.dataBinding}\r\n dateFilter={dateFilter}\r\n editBtnClicked={editWidget}\r\n deleteBtnClicked={confirmDeleteWidget}\r\n onSelectDataPoint={props.onSelectDataPoint}\r\n copyBtnClicked={copyWidget}\r\n ref={el => {\r\n widgetCardRef.current[i] = {\r\n ref: el,\r\n i: widget.Layout?.i\r\n }\r\n }}\r\n />\r\n </div>\r\n )}\r\n </ResponsiveReactGridLayout>\r\n </div>\r\n\r\n </div>\r\n </div>\r\n </div>);\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\nexport default DashboardDesigner;\r\n","import * as React from 'react'\r\nimport DashboardDesigner, { DeleteWidgetProps } from './features/Dashboard/DashboardDesigner'\r\nimport \"./styles.module.css\"\r\nimport { useEffect, useRef, useState } from \"react\";\r\nimport { Session } from './services/session';\r\nimport { ReactWidgetPM } from './types/widget';\r\nimport { DashboardDataBinding } from './types/DashboardDataBinding';\r\nimport { Layout, Layouts } from 'react-grid-layout';\r\nimport { deepClone } from './services/clone';\r\nimport { DataPointSelection } from './types/SeriesMeasure';\r\nimport WidgetCard from './features/Dashboard/WidgetCard';\r\nimport 'devextreme/dist/css/dx.light.css';\r\n\r\ntype DashboardProps = {\r\n token: string,\r\n tenant: number,\r\n userId: string,\r\n numberFormatCode?:string | null,\r\n isPreviewMode: boolean,\r\n isMasterNumberClickable?: any;\r\n widgetData: ReactWidgetPM | undefined,\r\n dataBinding: DashboardDataBinding,\r\n onChangeLayouts: (layouts: { lg: ReactWidgetPM[] }) => void,\r\n openEditWidget: (Widget: ReactWidgetPM) => void,\r\n onCopyWidget?:(key: string) => void,\r\n openDeleteWidgetConfirmWindow: (deleteProps: DeleteWidgetProps) => void,\r\n onSelectDataPoint: (dataPointSelection: DataPointSelection) => void;\r\n};\r\nconst Dashboard = (props: DashboardProps) => {\r\n const Widgetlayouts = useRef<{ lg: ReactWidgetPM[] }>({ lg: [] });\r\n const [widgetlayoutsState, setWidgetlayoutsState] = useState<{ lg: ReactWidgetPM[] }>({ lg: [] });\r\n const [isInEditMode, setIsInEditMode] = useState<boolean>(false);\r\n const [isPreviewModeActive, setIsPreviewModeActive] = useState<boolean>(props.isPreviewMode !== undefined ? props.isPreviewMode : false);\r\n const [previewWidget, setPreviewWidget] = useState<ReactWidgetPM | undefined>(props.widgetData);\r\n\r\n useEffect(() => {\r\n Session.CurrentUserId = props.userId;\r\n Session.Tenant = props.tenant;\r\n Session.Token = props?.token;\r\n Session.NumberFormatCode = props?.numberFormatCode;\r\n Session.isMasterNumberClickable = props?.isMasterNumberClickable;\r\n \r\n setIsPreviewModeActive(props.isPreviewMode);\r\n\r\n props.dataBinding.onGetLayouts.subscribe(layouts => {\r\n Widgetlayouts.current = layouts;\r\n setWidgetlayoutsState(deepClone(Widgetlayouts.current));\r\n });\r\n props.dataBinding.isOnEditLayout.subscribe(e => {\r\n setIsInEditMode(e);\r\n });\r\n props.dataBinding.onAddWidget.subscribe(w => {\r\n Widgetlayouts.current.lg.push(w);\r\n setWidgetlayoutsState(deepClone(Widgetlayouts.current));\r\n });\r\n }, [])\r\n\r\n useEffect(() => {\r\n if (props.widgetData) {\r\n setPreviewWidget(JSON.parse(JSON.stringify(props.widgetData)))\r\n }\r\n }, [props.widgetData])\r\n\r\n const copyWidget = (key: string) => {\r\n if(props && props.onCopyWidget){\r\n props.onCopyWidget(key);\r\n }\r\n }\r\n\r\n const updateWidgets = (layouts: Layouts) => {\r\n var layoutsDic: { [key: string]: Layout } = {};\r\n Object.keys(layouts).forEach(sizeType => {\r\n if (layouts[sizeType].length > 0) {\r\n layouts[sizeType].map(layout => {\r\n layoutsDic[layout.i] = layout;\r\n })\r\n return;\r\n }\r\n })\r\n var newWidgetlayouts: ReactWidgetPM[] = [];\r\n Widgetlayouts.current.lg.forEach(widget => {\r\n if (layoutsDic[widget.key]) {\r\n widget.StartPotistion = `${layoutsDic[widget.key].x},${layoutsDic[widget.key].y}`;\r\n widget.EndPosition = `${layoutsDic[widget.key].w},${layoutsDic[widget.key].h}`;\r\n widget.Layout = layoutsDic[widget.key];\r\n newWidgetlayouts.push(widget);\r\n }\r\n\r\n });\r\n Widgetlayouts.current = { lg: newWidgetlayouts };\r\n props.onChangeLayouts(Widgetlayouts.current);\r\n }\r\n\r\n return isPreviewModeActive && previewWidget ? \r\n <div style={{width: \"420px\", height: \"310px\"}}>\r\n <div style={{height: \"100%\"}} key={\"widget-\" + previewWidget?.Layout?.i}>\r\n <WidgetCard\r\n isInEditMode={isInEditMode}\r\n isPreviewModeActive={isPreviewModeActive}\r\n key={previewWidget?.Layout?.i}\r\n widget={previewWidget}\r\n widgetRef={previewWidget}\r\n el={previewWidget}\r\n dataBinding={props.dataBinding}\r\n dateFilter={undefined}\r\n editBtnClicked={() => true}\r\n deleteBtnClicked={() => true}\r\n onSelectDataPoint={() => true}\r\n />\r\n </div>\r\n </div> :\r\n <div className='dl-full-hight'>\r\n <div className='dl-dashboard-body'>\r\n <DashboardDesigner \r\n onSelectDataPoint={props.onSelectDataPoint} \r\n Widgetlayouts={widgetlayoutsState} \r\n dataBinding={props.dataBinding} \r\n editMode={isInEditMode} \r\n onLayoutChange={updateWidgets} \r\n onWidgetDelete={(deleteProps: DeleteWidgetProps) => props.openDeleteWidgetConfirmWindow(deleteProps)}\r\n onCopyWidget={copyWidget}\r\n openEditWidget={(widget: ReactWidgetPM) => props.openEditWidget(widget)} ></DashboardDesigner>\r\n </div>\r\n </div >\r\n \r\n}\r\nexport default Dashboard;\r\n\r\n"],"names":["Session","Tools","GetLogitudeURL","logitude_url","location","href","replace","indexOf","urlArr","split","url","substring","lastIndexOf","length","Map","from","to","keys","Object","k","ApiServices","_apiUrl","getByFilters","api","filters","token","getTokenFromStorage","apiURL","ConcatFiltersToURL","axios","get","headers","post","date","requestSignal","undefined","signal","Token","urlparameters","mykeys","addtionalFiltersValues","i","propName","propValue","ignoreFilter","concat","encodeURIComponent","JSON","stringify","DashboardAnalyticsService","_ApiServices","getData","widget","controller","getTargetAnalyticsData","getKpiData","getTableData","getGaugeData","getObjectTableNameByWidgetEntityId","entityId","getPivotData","DateGroupCodes","Full_Date","Month","Quarter","Year","Month_Year","Quarter_Year","getDateFormat","label","_format","_date","moment","isValid","format","getQuarterYearFormat","includes","result","quarterVal","yearVal","getLabelFormatByDateGroupType","isSecondGrouping","groupFieldDataType","SecondaryDateGroupCode","DateGroupCode","getTodayDates","dateValues","fromDate","toDate","push","getYesterdayDates","subtract","getTomorrowDates","add","getCurrentWeekDates","startOf","endOf","getCurrentMonthDates","getPreviousMonthDates","getCurrentMonthToDateDates","getPreviousMonthToDateDates","getCurrentQuarterDates","getCurrentYearDates","getPreviousYearDates","getCurrentYearToDateDates","getPreviousYearToDateDates","getPreviousQuarterDates","getCurrentQuarterToDateDates","getPreviousQuarterToDateDates","getLast7DaysDates","getLast30DaysDates","getDateRangesByCode","code","_fromDate","_toDate","isNullOrUndefined","val","isNullOrUndefinedOrEmpty","getGlobalNumberFormatting","numberFormatCode","NumberFormatCode","numberSeparatorSettings","thousandsSeparator","decimalSeparator","getNumberInSystemLocalFormat","value","decimalDigitsCount","isToolTip","isNaN","decimalParts","toString","maxFractionDigits","_numberSeparatorSettings","factor","Math","pow","truncatedValue","floor","_val","toLocaleString","minimumFractionDigits","maximumFractionDigits","_formattedValue","replaceAll","ConvertStringToPascalCaseHelper","stringValue","splittedWords","filter","f","map","t","toUpperCase","slice","toLowerCase","join","WidgetLoadLogService","create","widgetLoadLog","WidgetLoadLogger","isPreviewMode","StartTime","Date","getTime","Widget","log","loadDataResponse","totalExecutionTime","widgetLoadLogService","Tenant","WidgetId","Id","DashboardId","LoadTime","getLoadTime","TotalExecutionTime","then","_response","_error","loadTimeHeaderKey","loadTimeHeader","isNumber","Number","KpiChart","props","useState","isLoading","setIsLoading","error","setError","useRef","data","setData","isKPICustomSizeNeeded","setIsKPICustomSizeNeeded","uuidv4","triggerId","setTriggerId","useEffect","current","customChartProps","HandleKPICustomSize","RefreshData","dataBinding","widgetUpdated","subscribe","updatedWidget","key","_isPreviewModeActive","isPreviewModeActive","_isKPICustomResizeNeeded","isKPICustomResizeNeeded","calculateWidgetKPISettingsDates","_updatedWidget","KPIComparisonSettings","kpiSettings","parse","isKPISettingsActivated","PeriodFieldId","PeriodDateFilterDates","PeriodDateFilter","DateTimeValueCode","ComparePeriodDateFilterDates","ComparisonPeriodType","ComparePeriodDateFilter","FieldValue","FieldValue2","emptyData","Value","dashboardAnalyticsService","postWidget","onChange","widgetLoadLogger","handleResponseErrors","console","response","ErrorMessage","message","onShowError","Errors","drillDownToKPIValues","isDrillDownToMainValues","measureFieldId","currentWidgetMeasure","WidgetMeasures","MeasureFieldId","onSelectDataPoint","MeasureCode","Formula","GroupById","IsKPISecondaryValues","isComparisonIndicatorChecked","_kpiSettings","_kpiSettingsAsObj","ComparisonIndicator","getRatioComponent","CompareWithPrevious","React","className","getArrowComponent","style","fontSize","getKPIFormattingPropertyValue","Ratio","ComparisonValue","marginTop","Increase","getPreviousValueComponent","ComparisonLabel","formatedValue","comparisonValue","onClick","title","color","isPercentageMeasureField","ComparisonAbbreviationSymbol","ShowMeasureUnit","Unit","MeasureFieldDataType","getValueData","getValueComponent","AbbreviationSymbol","getPeriodLabelByPeriodCode","getLabelFromKPISettings","IsGlobalFilterKPIComparison","GlobalFilterDateTimeValueCode","getKPIFormattingData","KPIFormatSettings","propertyName","unit","kpiFormattingData","getLabel","Label","getIsKPIHasSmallestHeight","widgetRef","Layout","h","isKPIHasSmallestHeight","ProgressSpinner","width","height","strokeWidth","animationDuration","Alighnment","RedWarningIcon","TableChart","isTableLoading","setIsTableLoading","setWidget","tableData","setTableData","tableColumns","setTableColumns","sortField","setSortField","sortOrder","setSortOrder","isDefaultSortOptionsUsed","widgetRefData","objectTableName","setObjectTableName","getObjectTableName","ReOrderColumns","Columns","updatedWidgetColumns","updatedWidgetColumnsData","_updatedTableColumns","forEach","c","col","find","EntityId","res","ObjectTableName","PageIndex","PageSize","fillTableData","getBooleanStringValue","_value","charAt","getDateTimeValue","datePart","tableRecords","Fields","setDefaultSortOptions","Result","item","_tableRow","field","FieldCode","valueType","DataTypeCode","tableCols","_widget","_sortFieldCode","getSortFieldCodeBySortFieldId","DefaultSortBy","_sortDirection","DefaultSortDirection","sortFieldId","getSortFieldIdBySortFieldCode","sortFieldCode","sortTableData","sortedField","isCalculatedColumn","canSort","_sortOrder","ScreenSortBy","ScreenSortDirection","ScreenSortByType","isInEditMode","getTableFormattingData","TableFormatSettings","getTableFormattingPropertyValue","tableFormattingData","getTableConditionalRulesData","TableConditionalRules","isValueEmpty","IsValidRule","rule","operator","RuleOperator","Code","ruleValue1","RuleValue1","ruleValue2","RuleValue2","getCellPropertyByRule","column","cellValue","defaultValue","columnType","IsCalculatedColumn","columnData","el","FieldId","FieldType","FieldRules","firstValidRule","getCellFloatAlignment","isClickableCell","fieldCode","rowDate","IsShipmentMasterFieldClickable","rowData","isMasterNumberClickable","tableCellClicked","TableRowEntityId","RowData","getCellValue","columnValue","cellTemplateBody","fontColor","fontSizeWithoutUnit","fontSizeWitUnit","display","backgroundColor","headerTemplate","DisplayName","DataTable","loading","resizableColumns","columnResizeMode","responsiveLayout","index","Column","header","body","PivotTable","forwardRef","comRef","tabledata","pivotGridRef","PivotGridDataSource","store","fields","dataSource","setDataSource","getPivotTableData","document","addEventListener","handleResize","removeEventListener","instance","element","classList","setTimeout","remove","repaint","setPivotDataSourceFields","err","customizeCells","useCallback","e","cell","rowPath","columnPath","cellElement","children","padding","borderRadius","onCellClick","area","pivotFields","columnFields","fieldValue","fieldData","rowFields","r","PivotFields","getColumnNameByColumnId","fieldName","dataField","datafieldValue","PivotData","SortRowAndColumnHeaders","a","b","DateCode","aValue","bValue","aText","text","bText","PivoFields","PivotMeasures","pivotRowsAndColumnsFields","PivotCode","caption","name","PivotName","allowSorting","allowFiltering","sortingMethod","expanded","wordWrapEnabled","customizeText","cellInfo","pivotDataCellsFields","measure","PivotMeasureCode","dataType","summaryType","calculateCustomSummary","options","summaryProcess","firstPart","secondPart","substr","_finalVal","totalValue","AllfieldsData","isRowsEmptyAndColumnsNotEmpty","pivotRows","PivotRows","pivotColumns","PivotColumns","canShowRowsGrandTotal","pivotTotalsSettings","PivotTotalsSettings","ShowRowsGrandTotal","isRowsNotEmptyAndColumnsEmpty","canShowColumnsGrandTotal","ShowColumnsGrandTotal","canShowRowsTotal","ShowRowsTotal","canShowColumnsTotal","ShowColumnsTotal","Fragment","PivotGrid","id","ref","allowExpandAll","showBorders","showRowGrandTotals","showColumnGrandTotals","showRowTotals","showColumnTotals","showTotalsPrior","FieldPanel","showColumnFields","showDataFields","showFilterFields","showRowFields","texts","rowFieldArea","allowFieldDragging","visible","FieldChooser","enabled","Scrolling","mode","CustomChart","project","TypeCode","buildToolTip","seriesMeasure","groupbyId","secGroupbyId","customToolTip","getTooltiplabel","getMeasureType","getTooltipValue","getTooltipPercentage","RenderStackedChartTotalsAndPercentages","getGroupValuePercentage","getSumOfGroupValues","seriesMeasures","IsStacked","total","getSumOfGroupValuesAsNumber","Values","v","GroupByIdSec","percentageValueInLocalFormat","Name","formula","months","quarters","getCategoriesBasedDataSource","chartInfo","seriesMeasuresIsEmpty","handelNullLabels","chart","categories","buildCategories","dataset","buildDataSet","getStackedDataSource","buildStackedCategories","buildStackedDataSet","getSimpleDataSource","buildDataSource","hasValue","values","series","tooltext","dataSet","datas","seriesname","anchorBgColor","anchorBorderColor","anchorBorderThickness","anchorHoverColor","parentyaxis","PlotasLineChart","PlotonSecondAxis","renderAs","uniqueGroups","x","LabelSec","group","seriesName","buildStackedGroupData","emptylabels","filledLabels","sortDataSet","sort","s1","s2","aa","bb","secGroup","getUniqueGroupOrderdList","category","defautFontSize","defautFont","defautColor","BuildFusionChartObject","SecondaryGroupById","getBarObject","getStackedBarObject","getLineObject","getClusteredLineObject","getPieObject","getDonutObject","getColumnObject","getClusteredColumnObject","getWidgetRanges","gaugeRanges","GaugeRanges","minValue","maxValue","getGaugeObject","fusionObject","getDefaultChartobject","type","getDefaultChartInfo","manageResize","valueBelowPivot","showValue","isGroupByFieldDateTime","GroupByFieldDataType","scrollPosition","scrollPadding","flatScrollBars","showPercentValues","ShowValueAsNumber","showLegend","ShowLegend","setLineDash","chartTopMargin","chartBottomMargin","legendPosition","getWidgetLegendPosition","chartLeftMargin","chartRightMargin","anchorradius","canvasBottomPadding","canvasTopPadding","labelFontSize","labelFont","manageLabelOverflow","useEllipsesWhenOverflow","enableSmartLabels","setPieDonutLegends","isFirstMeasureTypePercentage","isSecondMeasureTypePercentage","setDualyAxis","divLineDashed","divLineDashLen","divLineDashGap","divLineColor","divLineAlpha","divLineThickness","dataFormat","theme","baseFont","baseFontSize","baseFontColor","legendCaptionFontSize","legendCaptionFontColor","legendCaptionFont","labelFontColor","legendItemFont","legendItemFontSize","sYAxisNameFont","sYAxisNameFontSize","sYAxisNameFontColor","pYAxisNameFont","pYAxisNameFontSize","pYAxisNameFontColor","xAxisNameFont","xAxisNameFontSize","xAxisNameFontColor","yAxisNameFont","yAxisNameFontSize","yAxisNameFontColor","drawCrossLine","xAxisName","ShowXAxisTitle","XAxisTitle","yAxisName","ShowYAxisTitle","YAxisTitle","labelDisplay","XAxisLabelsDisplay","slantLabel","XAxisLabelsFontSize","showValues","ShowValue","valuePosition","ValuePosition","isValuePositionInside","isColumnOrBarChart","placeValuesInside","minPlotHeightForValue","isPieOrDonutChart","minAngleForValue","numberSuffix","thousandSeparator","palettecolors","enableSlicing","enableRotation","toolTipBgColor","showToolTipShadow","plotHoverEffect","scrollHeight","scrollWidth","plotColorinTooltip","formatNumberScale","showLabels","LabelsPosition","setOnChartLegend","setChartInLegend","LegendPosition","legendScrollBgColor","legendIconScale","scrollShowButtons","legendCaptionAlignment","alignLegendWithCanvas","pieRadius","showSecondaryLimits","showDivLineSecondaryValue","pYAxisNameBorderPadding","sYAxisNameBorderPadding","sNumberSuffix","pYAxisName","sYAxisname","textLength","max","getTitle","maxLenght","textLenght","neededSpaces","ceil","space","repeat","FusionChartHelper","getPieRadius","getLegendWidth","legendWidth","trimChartLabels","chartWidth","chartHeight","handleLegendWidth","handlePieRadius","chartMinumunHeight","startPercantage","stepHeight","step","window","innerWidth","reducedValue","plotColorsDictionary","plotColor0","plotColor1","plotColor2","plotColor3","plotColor4","plotColor5","plotColor6","plotColor7","plotColor8","plotColor9","plotColor10","plotColor11","plotColor12","plotColor13","plotColor14","plotColor15","getPlotColorByIndexOrder","_index","ReactFC","fcRoot","FusionCharts","Charts","FusionTheme","creditLabel","FusionChart","dataLoaded","setDataLoaded","fusionKey","chartData","resizeTimer","setResizeTimer","axiosController","AbortController","args","setArgs","fChart","setFchart","chartContainerId","progressRef","fusionRef","fusionChartHelper","isDummyChangesActive","_data","handleData","abort","clearTimeout","HandleSizeChange","useImperativeHandle","onResizeFinish","oldPieRadius","oldLegendWidth","offsetWidth","offsetHeight","isTargetWidget","updatedAxiosController","isTargetUsed","SeriesMeasures","showTargetUsageTooltipMessageError","isDummyChange","errorMsg","dataplotClick","eventObj","dataObj","groupbyid","measurefieldid","measurecode","groupbyidsec","useResizeObserver","onResize","resizeTo","renderComplete","handlePieDonutChartTooltip","chartDataSource","handleOtherChartsTooltip","loaded","event","sender","onRender","setFusionKey","getChartData","WidgetCard","fusionChartRef","showHeaderErrorMessages","setShowHeaderErrorMessages","headerErrorMessages","setHeaderErrorMessages","editWidget","editBtnClicked","copyWidget","copyBtnClicked","onEditWidget","getCSSPropertyValue","widgetData","propUnit","propDefaultVal","GetChartComponent","showErrorMsg","GaugeChart","msg","isTableWidget","isPivotWidget","isTableOrPivotWidget","getwidgetTitlesContainer","drilldownToTableData","isThereTitle","Title","isThereSubtitle","Subtitle","tableHintMessage","isTitleAligmentRight","visibility","TitleAlignment","cursor","justifyContent","flexDirection","Popup","trigger","textAlign","position","arrowStyle","offsetY","on","minWidth","EditWidgetIcon","CopyWidgetIcon","DeleteWidgetIcon","deleteBtnClicked","TargetWarningIcon","deepClone","obj","ResponsiveReactGridLayout","WidthProvider","Responsive","DashboardDesigner","array12","Array","fill","minimumPlaceholderRowsCount","lg","layouts","setLayouts","placeholderRowsArray","setplaceholderRowsArray","dateFilter","setisInEditMode","widgetsDictionaryRef","widgets","setWidgets","gridLayoutComponent","entered","widgetCardRef","FillLayout","Widgetlayouts","onDeleteWidgetConfirmed","deleteProps","deletePanel","dashboardLayouts","clone","layout","createLayout","FillWidgetDictionary","UpdatePlaceholderDimensions","w","editMode","onLayoutChange","changedLayouts","UpdateWidget","onResizeStop","oldItem","dispatchEvent","CustomEvent","confirmDeleteWidget","deleteWidgetProps","onWidgetDelete","newLayouts","newWidgets","ChangeSetOp","openEditWidget","onCopyWidget","y","newPlaceholderRows","Event","layoutGridProps","rowHeight","compactType","draggableCancel","isDraggable","isResizable","onWidthChange","cols","md","sm","xs","xxs","useCSSTransforms","Dashboard","widgetlayoutsState","setWidgetlayoutsState","setIsInEditMode","setIsPreviewModeActive","previewWidget","setPreviewWidget","CurrentUserId","userId","tenant","onGetLayouts","isOnEditLayout","onAddWidget","updateWidgets","layoutsDic","sizeType","newWidgetlayouts","StartPotistion","EndPosition","onChangeLayouts","openDeleteWidgetConfirmWindow"],"mappings":"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"}
|
|
1
|
+
{"version":3,"file":"index.modern.js","sources":["../src/services/session.ts","../src/services/tools.ts","../src/services/ApiServices.ts","../src/services/DashboardAnalyticsService.ts","../src/Utils/DateHelper.tsx","../src/Constant/FieldDataType.ts","../src/Constant/MeasureCode.ts","../src/Utils/General.tsx","../src/services/WidgetLoadLogService.ts","../src/Utils/WidgetLoadLogger.ts","../src/features/Dashboard/ChartsComponents/CustomCharts/KpiChart.tsx","../src/features/Dashboard/ChartsComponents/CustomCharts/TableChart.tsx","../src/features/Dashboard/ChartsComponents/CustomCharts/PivotGrid.tsx","../src/features/Dashboard/ChartsComponents/CustomCharts/CustomChart.tsx","../src/features/Dashboard/ChartsComponents/FusionCharts/FusionChartTooltip.tsx","../src/features/Dashboard/ChartsComponents/FusionCharts/FusionChartDataSoruceBuilder.tsx","../src/features/Dashboard/ChartsComponents/FusionCharts/FusionChartObjectBuilder.tsx","../src/features/Dashboard/ChartsComponents/FusionCharts/FusionChartHelper.tsx","../src/features/Dashboard/ChartsComponents/FusionCharts/FusionColors.tsx","../src/features/Dashboard/ChartsComponents/FusionCharts/FusionChartObjectHelper.tsx","../src/features/Dashboard/ChartsComponents/FusionCharts/FusionChart.tsx","../src/features/Dashboard/ChartsComponents/FusionCharts/GaugeChart.tsx","../src/features/Dashboard/WidgetCard.tsx","../src/services/clone.ts","../src/features/Dashboard/DashboardDesigner.tsx","../src/index.tsx"],"sourcesContent":["export class Session {\r\n public static CurrentUserId: string;\r\n public static Tenant: number;\r\n public static Token: string;\r\n public static NumberFormatCode: string | null | undefined;\r\n public static isMasterNumberClickable: any;\r\n}","export class Tools {\r\n public static GetLogitudeURL() {\r\n\r\n var logitude_url = location.href.replace('index.html', '');\r\n\r\n if (location.href.indexOf('localhost') > -1) {\r\n logitude_url = 'http://localhost:9996';//localhost:9996//';//\r\n }\r\n\r\n else {\r\n var urlArr = location.href.split(\"/index.html\");\r\n var url = urlArr[0];\r\n url = url.replace(url.substring(url.lastIndexOf('/'), url.length), \"\");\r\n logitude_url = url;\r\n }\r\n\r\n return logitude_url;\r\n }\r\n\r\n public static Map(from: any, to: any) {\r\n if (!from)\r\n return;\r\n if (!to)\r\n to = {};\r\n var keys = Object.keys(from);\r\n for (const k of keys) {\r\n if(from[k]){\r\n to[k] = from[k];\r\n }\r\n }\r\n }\r\n}","import axios from \"axios\";\r\nimport { ApiQueryFilters } from \"../common/data-contracts/ApiQueryFilter\";\r\nimport { APIResult } from \"../types/APIResult\";\r\nimport { Session } from \"./session\";\r\nimport { Tools } from './tools';\r\n\r\n\r\nexport class ApiServices{ \r\n private _apiUrl: string;\r\n constructor(){\r\n this._apiUrl = Tools.GetLogitudeURL() ;\r\n }\r\n getByFilters<T>(api,filters: ApiQueryFilters) {\r\n \r\n let token: string = this.getTokenFromStorage();\r\n\t\tvar apiURL = `${this._apiUrl}${api}`;\r\n\t\tapiURL = this.ConcatFiltersToURL(filters, apiURL);\r\n\r\n return axios.get<APIResult<T>>(apiURL, { headers: { 'Content-Type': 'application/json', 'Token': token } });\r\n }\r\n get<T>(api) {\r\n \r\n let token: string = this.getTokenFromStorage();\r\n\t\tvar apiURL = `${this._apiUrl}${api}`;\r\n return axios.get<T>(apiURL, { headers: { 'Content-Type': 'application/json', 'Token': token } });\r\n }\r\n \r\n post<T>(api,date, requestSignal : any= undefined){\r\n let token: string = this.getTokenFromStorage();\r\n\t\tvar apiURL = `${this._apiUrl}${api}`;\r\n return axios.post<T>(apiURL,date, { headers: { 'Content-Type': 'application/json', 'Token': token }, signal: requestSignal});\r\n }\r\n\r\n getTokenFromStorage(){\r\n return Session.Token || '';\r\n }\r\n private ConcatFiltersToURL(filters: ApiQueryFilters, urlparameters: string)\r\n {\r\n var mykeys = Object.keys(filters);\r\n var addtionalFiltersValues: string | null = null;\r\n\r\n for (var i in mykeys) {\r\n var propName = mykeys[i];\r\n var propValue = filters[propName];\r\n var ignoreFilter = ((propName.indexOf(\"Operator\") > 0 && propValue == \"Equals\") || propName == \"AdditionalFilters\");\r\n\r\n if (urlparameters != \"?\") {\r\n urlparameters = urlparameters.concat('&');\r\n }\r\n\r\n if (!ignoreFilter) {\r\n propValue = propValue ? encodeURIComponent(propValue) : '';\r\n urlparameters = urlparameters.concat(propName.concat('=').concat(propValue));\r\n }\r\n\r\n if (propName == \"AdditionalFilters\" && propValue.length > 0) {\r\n addtionalFiltersValues = JSON.stringify(propValue);\r\n }\r\n }\r\n\r\n if (addtionalFiltersValues) {\r\n urlparameters = urlparameters.concat(\"&AdditionalFilters=\").concat(addtionalFiltersValues);\r\n }\r\n return urlparameters;\r\n }\r\n}","import axios from \"axios\";\r\nimport { ApiQueryFilters } from \"../common/data-contracts/ApiQueryFilter\";\r\nimport { ReactDashboardPM } from \"../types/Dashboard\";\r\nimport { SeriesMeasure } from \"../types/SeriesMeasure\";\r\nimport { ApiServices } from \"./ApiServices\";\r\nimport { Tools } from './tools';\r\nimport { ReactWidgetPM } from '../types/widget';\r\nimport { KpiChartData } from \"../types/KpiChart\";\r\n\r\n\r\nexport class DashboardAnalyticsService{ \r\n _ApiServices:ApiServices;\r\n controller = 'DashboardAnalytics';\r\n constructor(){\r\n this._ApiServices = new ApiServices();\r\n }\r\n \r\n\r\n getData(widget: ReactWidgetPM, signal: any = undefined) {\r\n return this._ApiServices.post<SeriesMeasure[]>(`/api/${this.controller}/PostGetDataAnalytic`,widget, signal);\r\n }\r\n\r\n getTargetAnalyticsData(widget: ReactWidgetPM, signal: any = undefined) {\r\n return this._ApiServices.post<SeriesMeasure[]>(`/api/${this.controller}/PostGetTargetDataAnalytic`,widget, signal);\r\n }\r\n\r\n getKpiData(widget: ReactWidgetPM) {\r\n return this._ApiServices.post<KpiChartData>(`/api/${this.controller}/PostGetKpiData`,widget);\r\n }\r\n\r\n getTableData(widget: ReactWidgetPM) {\r\n return this._ApiServices.post<any>(`/api/${this.controller}/PostGetTableData`,widget);\r\n }\r\n \r\n getGaugeData(widget: ReactWidgetPM, signal: any = undefined) {\r\n return this._ApiServices.post<any>(`/api/${this.controller}/PostGetGaugeData`,widget, signal);\r\n }\r\n \r\n getObjectTableNameByWidgetEntityId(entityId: string | undefined) {\r\n return this._ApiServices.get<any>(`/api/analyticsfactsmetadatas/getsingle?id=` + entityId);\r\n }\r\n\r\n getPivotData(widget: ReactWidgetPM) {\r\n return this._ApiServices.post<any>(`/api/${this.controller}/PostGetPivotData`, widget);\r\n }\r\n}","import moment from \"moment\";\r\nimport { ReactWidgetPM } from \"../types/widget\";\r\n\r\nconst DateGroupCodes = {\r\n Full_Date:'Full Date',\r\n Month: 'Month',\r\n Quarter: 'Quarter',\r\n Year: 'Year',\r\n Month_Year: 'Month & Year',\r\n Quarter_Year: 'Quarter & Year',\r\n}\r\n\r\nconst getDateFormat = (label: any, _format: string) => {\r\n if(!label) return label;\r\n\r\n let _date = moment(label);\r\n if(!_date || !_date.isValid()) return label;\r\n\r\n return _date.format(_format)\r\n}\r\n\r\nconst getQuarterYearFormat = (label: string) => {\r\n if(!label) return label;\r\n\r\n if(label.includes(\"/\")) {\r\n let result = label.split(\"/\");\r\n let quarterVal = result && result[1] ? result[1] : \"\";\r\n let yearVal = result && result[0] ? result[0] : \"\";\r\n\r\n return `${quarterVal} ${yearVal}`\r\n }\r\n\r\n return label;\r\n}\r\n\r\nconst getLabelFormatByDateGroupType = (label: string, widget: ReactWidgetPM, isSecondGrouping: boolean = false)=> {\r\n\r\n if(!widget) return label;\r\n\r\n let groupFieldDataType = isSecondGrouping ? widget.SecondaryDateGroupCode : widget.DateGroupCode;\r\n if(!groupFieldDataType) return label;\r\n\r\n switch(groupFieldDataType){\r\n case DateGroupCodes.Full_Date:\r\n return getDateFormat(label, \"DD MMM YYYY\");\r\n case DateGroupCodes.Month:\r\n return getDateFormat(label, \"MMM\");\r\n case DateGroupCodes.Quarter:\r\n return label;\r\n case DateGroupCodes.Year:\r\n return getDateFormat(label, \"YYYY\");\r\n case DateGroupCodes.Month_Year:\r\n return getDateFormat(label, \"MMM YYYY\");\r\n case DateGroupCodes.Quarter_Year:\r\n return getQuarterYearFormat(label);\r\n\r\n default:\r\n return label;\r\n }\r\n}\r\n\r\nconst getTodayDates = (format: string =\"YYYYMMDD000000\") => {\r\n let dateValues: any = [];\r\n let fromDate = moment().format(format);\r\n let toDate = moment().format(format);\r\n\r\n dateValues.push(fromDate);\r\n dateValues.push(toDate);\r\n\r\n return dateValues;\r\n}\r\n\r\nconst getYesterdayDates = (format: string =\"YYYYMMDD000000\") => {\r\n let dateValues: any = [];\r\n let fromDate = moment().subtract(1, 'days').format(format);\r\n let toDate = moment().subtract(1, 'days').format(format);\r\n\r\n dateValues.push(fromDate);\r\n dateValues.push(toDate);\r\n\r\n return dateValues;\r\n}\r\n\r\nconst getTomorrowDates = (format: string =\"YYYYMMDD000000\") => {\r\n let dateValues: any = [];\r\n let fromDate = moment().add(1, 'days').format(format);\r\n let toDate = moment().add(1, 'days').format(format);\r\n\r\n dateValues.push(fromDate);\r\n dateValues.push(toDate);\r\n\r\n return dateValues;\r\n}\r\n\r\nconst getCurrentWeekDates = (format: string =\"YYYYMMDD000000\") => {\r\n let dateValues: any = [];\r\n let fromDate = moment().startOf('week').format(format);\r\n let toDate = moment().endOf('week').format(format);\r\n\r\n dateValues.push(fromDate);\r\n dateValues.push(toDate);\r\n\r\n return dateValues;\r\n}\r\n\r\nconst getCurrentMonthDates = (format: string =\"YYYYMMDD000000\") => {\r\n let dateValues: any = [];\r\n let fromDate = moment().startOf('month').format(format);\r\n let toDate = moment().endOf('month').format(format);\r\n\r\n dateValues.push(fromDate);\r\n dateValues.push(toDate);\r\n\r\n return dateValues;\r\n}\r\n\r\nconst getPreviousMonthDates = (format: string =\"YYYYMMDD000000\") => {\r\n let dateValues: any = [];\r\n let fromDate = moment().subtract(1, 'months').startOf('month').format(format);\r\n let toDate = moment().subtract(1, 'months').endOf('month').format(format);\r\n\r\n dateValues.push(fromDate);\r\n dateValues.push(toDate);\r\n\r\n return dateValues;\r\n}\r\n\r\nconst getCurrentMonthToDateDates = (format: string =\"YYYYMMDD000000\") => {\r\n let dateValues: any = [];\r\n let fromDate = moment().startOf('month').format(format);\r\n let toDate = moment().format(format);\r\n\r\n dateValues.push(fromDate);\r\n dateValues.push(toDate);\r\n\r\n return dateValues;\r\n}\r\n\r\nconst getPreviousMonthToDateDates = (format: string =\"YYYYMMDD000000\") => {\r\n let dateValues: any = [];\r\n let fromDate = moment().subtract(1, 'months').startOf('month').format(format);\r\n let toDate = moment().format(format);\r\n\r\n dateValues.push(fromDate);\r\n dateValues.push(toDate);\r\n\r\n return dateValues;\r\n}\r\n\r\nconst getCurrentQuarterDates = (format: string =\"YYYYMMDD000000\") => {\r\n let dateValues: any = [];\r\n let fromDate = moment().startOf('quarter').format(format);\r\n let toDate = moment().endOf('quarter').format(format);\r\n\r\n dateValues.push(fromDate);\r\n dateValues.push(toDate);\r\n\r\n return dateValues;\r\n}\r\n\r\nconst getCurrentYearDates = (format: string =\"YYYYMMDD000000\") => {\r\n let dateValues: any = [];\r\n let fromDate = moment().startOf('year').format(format);\r\n let toDate = moment().endOf('year').format(format);\r\n\r\n dateValues.push(fromDate);\r\n dateValues.push(toDate);\r\n\r\n return dateValues;\r\n}\r\n\r\nconst getPreviousYearDates = (format: string =\"YYYYMMDD000000\") => {\r\n let dateValues: any = [];\r\n let fromDate = moment().subtract(1, 'years').startOf('year').format(format);\r\n let toDate = moment().subtract(1, 'years').endOf('year').format(format);\r\n\r\n dateValues.push(fromDate);\r\n dateValues.push(toDate);\r\n\r\n return dateValues;\r\n}\r\n\r\nconst getCurrentYearToDateDates = (format: string =\"YYYYMMDD000000\") => {\r\n let dateValues: any = [];\r\n let fromDate = moment().startOf('year').format(format);\r\n let toDate = moment().format(format);\r\n\r\n dateValues.push(fromDate);\r\n dateValues.push(toDate);\r\n\r\n return dateValues;\r\n}\r\n\r\nconst getPreviousYearToDateDates = (format: string =\"YYYYMMDD000000\") => {\r\n let dateValues: any = [];\r\n let fromDate = moment().subtract(1, 'years').startOf('year').format(format);\r\n let toDate = moment().format(format);\r\n\r\n dateValues.push(fromDate);\r\n dateValues.push(toDate);\r\n\r\n return dateValues;\r\n}\r\n\r\nconst getPreviousQuarterDates = (format: string =\"YYYYMMDD000000\") => {\r\n let dateValues: any = [];\r\n let fromDate = moment().subtract(1, 'quarters').startOf('quarter').format(format);\r\n let toDate = moment().subtract(1, 'quarters').endOf('quarter').format(format);\r\n\r\n dateValues.push(fromDate);\r\n dateValues.push(toDate);\r\n\r\n return dateValues;\r\n}\r\n\r\nconst getCurrentQuarterToDateDates = (format: string =\"YYYYMMDD000000\") => {\r\n let dateValues: any = [];\r\n let fromDate = moment().startOf('quarter').format(format);\r\n let toDate = moment().format(format);\r\n\r\n dateValues.push(fromDate);\r\n dateValues.push(toDate);\r\n\r\n return dateValues;\r\n}\r\n\r\nconst getPreviousQuarterToDateDates = (format: string =\"YYYYMMDD000000\") => {\r\n let dateValues: any = [];\r\n let fromDate = moment().subtract(1, 'quarters').startOf('quarter').format(format);\r\n let toDate = moment().format(format);\r\n\r\n dateValues.push(fromDate);\r\n dateValues.push(toDate);\r\n\r\n return dateValues;\r\n}\r\n\r\nconst getLast7DaysDates = (format: string = \"YYYYMMDD000000\") => {\r\n let dateValues: any = [];\r\n let fromDate = moment().subtract(6, 'days').format(format);\r\n let toDate = moment().format(format);\r\n\r\n dateValues.push(fromDate);\r\n dateValues.push(toDate);\r\n\r\n return dateValues;\r\n}\r\nconst getLast30DaysDates = (format: string = \"YYYYMMDD000000\") => {\r\n let dateValues: any = [];\r\n let fromDate = moment().subtract(29, 'days').format(format);\r\n let toDate = moment().format(format);\r\n\r\n dateValues.push(fromDate);\r\n dateValues.push(toDate);\r\n\r\n return dateValues;\r\n}\r\n\r\nconst getDateRangesByCode = (code: string | null, _fromDate: string | null, _toDate: string | null) => {\r\n let result: any = {\r\n fromDate: null,\r\n toDate: null\r\n }\r\n\r\n if(!code) {\r\n return {\r\n fromDate: getTodayDates()[0],\r\n toDate: getTodayDates()[1]\r\n };\r\n }\r\n\r\n switch(code){\r\n case \"Current_Year\":\r\n result.fromDate = getCurrentYearDates()[0];\r\n result.toDate = getCurrentYearDates()[1];\r\n break;\r\n case \"Previous_Year\":\r\n result.fromDate = getPreviousYearDates()[0];\r\n result.toDate = getPreviousYearDates()[1];\r\n break;\r\n case \"Current_Year_To_Date\":\r\n result.fromDate = getCurrentYearToDateDates()[0];\r\n result.toDate = getCurrentYearToDateDates()[1];\r\n break;\r\n case \"Previous_Year_To_Date\":\r\n result.fromDate = getPreviousYearToDateDates()[0];\r\n result.toDate = getPreviousYearToDateDates()[1];\r\n break;\r\n\r\n case \"Current_Quarter\":\r\n result.fromDate = getCurrentQuarterDates()[0];\r\n result.toDate = getCurrentQuarterDates()[1];\r\n break;\r\n case \"Previous_Quarter\":\r\n result.fromDate = getPreviousQuarterDates()[0];\r\n result.toDate = getPreviousQuarterDates()[1];\r\n break;\r\n case \"Current_Quarter_To_Date\":\r\n result.fromDate = getCurrentQuarterToDateDates()[0];\r\n result.toDate = getCurrentQuarterToDateDates()[1];\r\n break;\r\n case \"Previous_Quarter_To_Date\":\r\n result.fromDate = getPreviousQuarterToDateDates()[0];\r\n result.toDate = getPreviousQuarterToDateDates()[1];\r\n break;\r\n\r\n case \"Current_Month\":\r\n result.fromDate = getCurrentMonthDates()[0];\r\n result.toDate = getCurrentMonthDates()[1];\r\n break;\r\n case \"Previous_Month\":\r\n result.fromDate = getPreviousMonthDates()[0];\r\n result.toDate = getPreviousMonthDates()[1];\r\n break;\r\n case \"Current_Month_To_Date\":\r\n result.fromDate = getCurrentMonthToDateDates()[0];\r\n result.toDate = getCurrentMonthToDateDates()[1];\r\n break;\r\n case \"Previous_Month_To_Date\":\r\n result.fromDate = getPreviousMonthToDateDates()[0];\r\n result.toDate = getPreviousMonthToDateDates()[1];\r\n break;\r\n case \"Custom_Range\":\r\n result.fromDate = _fromDate;\r\n result.toDate = _toDate;\r\n break;\r\n\r\n case \"Today\":\r\n result.fromDate = getTodayDates()[0];\r\n result.toDate = getTodayDates()[1];\r\n break;\r\n case \"Yesterday\":\r\n result.fromDate = getYesterdayDates()[0];\r\n result.toDate = getYesterdayDates()[1];\r\n break;\r\n case \"Tomorrow\":\r\n result.fromDate = getTomorrowDates()[0];\r\n result.toDate = getTomorrowDates()[1];\r\n break;\r\n case \"Last 7 Days\":\r\n result.fromDate = getLast7DaysDates()[0];\r\n result.toDate = getLast7DaysDates()[1];\r\n break;\r\n case \"Last 30 Days\":\r\n result.fromDate = getLast30DaysDates()[0];\r\n result.toDate = getLast30DaysDates()[1];\r\n break;\r\n case \"This Week\":\r\n result.fromDate = getCurrentWeekDates()[0];\r\n result.toDate = getCurrentWeekDates()[1];\r\n break;\r\n \r\n default:\r\n break;\r\n }\r\n\r\n return result;\r\n}\r\nexport {\r\n getLabelFormatByDateGroupType,\r\n getDateRangesByCode\r\n}","export class FieldDataType {\r\n\r\n static readonly Decimal: string = \"Decimal\";\r\n static readonly Double: string = \"Double\";\r\n static readonly UnsDecimal: string = \"UnsDecimal\";\r\n static readonly Integer: string = \"Integer\";\r\n static readonly UnsInteger: string = \"UnsInteger\";\r\n static readonly SigDouble: string = \"SigDouble\";\r\n static readonly LookUp: string = \"LookUp\";\r\n static readonly PickList: string = \"PickList\";\r\n static readonly PickList2: string = \"PickList2\";\r\n static readonly Text: string = \"Text\";\r\n static readonly nText: string = \"nText\";\r\n static readonly Boolean: string = \"Boolean\";\r\n static readonly Date: string = \"Date\";\r\n static readonly DateTime: string = \"DateTime\";\r\n static readonly Percentage: string = \"Percentage\";\r\n\r\n\r\n static isNumericType(fieldDataType: string | null | undefined | any): boolean {\r\n if (!fieldDataType || typeof fieldDataType !== \"string\") {\r\n return false;\r\n }\r\n\r\n return [\r\n FieldDataType.Decimal,\r\n FieldDataType.Double,\r\n FieldDataType.UnsDecimal,\r\n FieldDataType.SigDouble,\r\n FieldDataType.Integer,\r\n FieldDataType.UnsInteger,\r\n FieldDataType.Percentage\r\n ].includes(fieldDataType);\r\n }\r\n\r\n static isInteger(fieldDataType: string | null | undefined | any): boolean {\r\n if (!fieldDataType || typeof fieldDataType !== \"string\") {\r\n return false;\r\n }\r\n\r\n return [FieldDataType.Integer, FieldDataType.UnsInteger].includes(fieldDataType);\r\n }\r\n\r\n static isPercentage(fieldDataType: string | null | undefined | any) {\r\n\r\n if (!fieldDataType || typeof fieldDataType !== \"string\") {\r\n return false;\r\n }\r\n\r\n return fieldDataType === FieldDataType.Percentage;\r\n }\r\n\r\n static isLookUpType(fieldDataType: string | null | undefined | any): boolean {\r\n if (!fieldDataType || typeof fieldDataType !== \"string\") {\r\n return false;\r\n }\r\n\r\n return fieldDataType === FieldDataType.LookUp;\r\n }\r\n\r\n static isPickListType(fieldDataType: string | null | undefined | any): boolean {\r\n if (!fieldDataType || typeof fieldDataType !== \"string\") {\r\n return false;\r\n }\r\n\r\n return [FieldDataType.PickList, FieldDataType.PickList2].includes(fieldDataType);\r\n }\r\n\r\n static isTextOrNTextType(fieldDataType: string | null | undefined | any): boolean {\r\n if (!fieldDataType || typeof fieldDataType !== \"string\") {\r\n return false;\r\n }\r\n\r\n return [FieldDataType.Text, FieldDataType.nText].includes(fieldDataType);\r\n }\r\n\r\n static isTextType(fieldDataType: string | null | undefined | any): boolean {\r\n if (!fieldDataType || typeof fieldDataType !== \"string\") {\r\n return false;\r\n }\r\n\r\n return fieldDataType === FieldDataType.Text;\r\n }\r\n\r\n static isNTextType(fieldDataType: string | null | undefined | any): boolean {\r\n if (!fieldDataType || typeof fieldDataType !== \"string\") {\r\n return false;\r\n }\r\n\r\n return fieldDataType === FieldDataType.nText;\r\n }\r\n\r\n static isBooleanType(fieldDataType: string | null | undefined | any): boolean {\r\n if (!fieldDataType || typeof fieldDataType !== \"string\") {\r\n return false;\r\n }\r\n\r\n return fieldDataType === FieldDataType.Boolean;\r\n }\r\n\r\n static isDateOrDateTimeType(fieldDataType: string | null | undefined | any): boolean {\r\n if (!fieldDataType || typeof fieldDataType !== \"string\") {\r\n return false;\r\n }\r\n\r\n return [FieldDataType.Date, FieldDataType.DateTime].includes(fieldDataType);\r\n }\r\n}\r\n","export enum MeasureCode {\r\n Average = \"Avg\",\r\n CalculatedColumn = \"CalculatedColumn\",\r\n Formula = \"Formula\",\r\n Max = \"Max\",\r\n Min = \"Min\",\r\n Sum = \"Sum\",\r\n Target = \"Target\",\r\n Count = \"Count\"\r\n}\r\n","import { FieldDataType } from \"../Constant/FieldDataType\";\r\nimport { MeasureCode } from \"../Constant/MeasureCode\";\r\nimport { Session } from \"../services/session\";\r\n\r\nconst isNullOrUndefined = (val: any) => {\r\n return val == null || val == undefined;\r\n}\r\n\r\nconst isNullOrUndefinedOrEmpty = (val: any) => {\r\n return val == null || val == undefined || val == \"\";\r\n}\r\n\r\nconst getGlobalNumberFormatting = () => {\r\n let numberFormatCode = Session.NumberFormatCode;\r\n \r\n let numberSeparatorSettings = {\r\n thousandsSeparator: \",\",\r\n decimalSeparator: \".\",\r\n }\r\n\r\n if (isNullOrUndefinedOrEmpty(numberFormatCode)) return numberSeparatorSettings;\r\n\r\n switch (numberFormatCode) {\r\n case \"CD\":\r\n numberSeparatorSettings.thousandsSeparator = \",\";\r\n numberSeparatorSettings.decimalSeparator = \".\";\r\n break;\r\n case \"DC\":\r\n numberSeparatorSettings.thousandsSeparator = \".\";\r\n numberSeparatorSettings.decimalSeparator = \",\";\r\n break;\r\n case \"AD\":\r\n numberSeparatorSettings.thousandsSeparator = \"'\";\r\n numberSeparatorSettings.decimalSeparator = \".\";\r\n break;\r\n default:\r\n numberSeparatorSettings.thousandsSeparator = \",\";\r\n numberSeparatorSettings.decimalSeparator = \".\";\r\n break;\r\n }\r\n\r\n return numberSeparatorSettings;\r\n}\r\n\r\nconst isValueInteger = (measureCode : string | null | undefined , measureFieldType : string | null | undefined) =>{\r\n\r\n if(measureCode === MeasureCode.Count || measureFieldType === FieldDataType.Integer){\r\n return true;\r\n }\r\n\r\n return false;\r\n}\r\n\r\nconst getTruncatedValue = (value: number | null | undefined | any, decimalDigitsCount: number = 2): number | null | undefined => {\r\n\r\n if(value == null || value == undefined || isNaN(value)) return value ;\r\n \r\n return truncateDecimals(value,decimalDigitsCount);\r\n \r\n}\r\n\r\nconst getNumberInSystemLocalFormat = (value: number | null | undefined, decimalDigitsCount: number = -1 , minimumFractionDigits: number = 0, isValueTruncated : boolean = true): string => {\r\n\r\n if(value == null || value == undefined || isNaN(value)) return value + \"\" ;\r\n \r\n const decimalParts = value.toString().split(\".\");\r\n const maxFractionDigits = decimalParts[1] ? decimalParts[1].length : 0;\r\n decimalDigitsCount = decimalDigitsCount == -1 ? maxFractionDigits : decimalDigitsCount;\r\n\r\n let _numberSeparatorSettings = getGlobalNumberFormatting();\r\n\r\n if(isValueTruncated){\r\n\r\n value = truncateDecimals(value,decimalDigitsCount);\r\n }\r\n\r\n \r\n let _val = value.toLocaleString('en-US', {\r\n minimumFractionDigits: minimumFractionDigits, \r\n maximumFractionDigits: decimalDigitsCount\r\n });\r\n\r\n if(_val){ \r\n\r\n let _formattedValue = _val.replaceAll(\",\", \"*\");\r\n _formattedValue = _formattedValue.replaceAll(\".\", \"#\");\r\n _formattedValue = _formattedValue.replaceAll(\"*\", _numberSeparatorSettings.thousandsSeparator);\r\n _formattedValue = _formattedValue.replaceAll(\"#\", _numberSeparatorSettings.decimalSeparator);\r\n\r\n return _formattedValue;\r\n }\r\n\r\n return value + \"\";\r\n}\r\n\r\nconst truncateDecimals = (value: number , numberOfDecimalParts : number) => {\r\n // Handle non-finite numbers (NaN, Infinity)\r\n if (!Number.isFinite(value)) return value;\r\n \r\n const numStr = value.toString();\r\n\r\n if(numStr.toLocaleLowerCase().includes(\"e\")){\r\n return value;\r\n }\r\n\r\n // Split into integer/decimal parts without floating-point errors\r\n\r\n const [integerPart, decimalPart = ''] = numStr.split('.');\r\n \r\n // Truncate to two decimals and parse\r\n const truncated = decimalPart.slice(0, numberOfDecimalParts);\r\n const resultStr = truncated.length > 0 \r\n ? `${integerPart}.${truncated}` \r\n : integerPart;\r\n \r\n return parseFloat(resultStr);\r\n }\r\n\r\nconst ConvertStringToPascalCaseHelper = (stringValue: string) => {\r\n if(isNullOrUndefinedOrEmpty(stringValue) || typeof stringValue !== 'string') return stringValue || '';\r\n\r\n let splittedWords = stringValue.split(' ').filter(f => f != '');\r\n if(splittedWords.length == 0) return stringValue;\r\n\r\n return stringValue.split(' ').map((t) => {\r\n if(t.length > 0){\r\n return t[0].toUpperCase() + t.slice(1).toLowerCase()\r\n }\r\n\r\n return t;\r\n }).join(' ');\r\n}\r\n\r\nexport {\r\n isNullOrUndefined,\r\n isNullOrUndefinedOrEmpty,\r\n getGlobalNumberFormatting,\r\n getNumberInSystemLocalFormat,\r\n ConvertStringToPascalCaseHelper,\r\n isValueInteger,\r\n getTruncatedValue\r\n}","import { WidgetLoadLog } from \"../types/WidgetLoadLog\";\r\nimport { ApiServices } from \"./ApiServices\";\r\n\r\nexport class WidgetLoadLogService {\r\n _ApiServices: ApiServices;\r\n controller = 'WidgetLoadLogs';\r\n\r\n constructor() {\r\n this._ApiServices = new ApiServices();\r\n }\r\n\r\n create(widgetLoadLog: WidgetLoadLog) {\r\n return this._ApiServices.post<any>(`/api/${this.controller}`, widgetLoadLog, undefined);\r\n }\r\n}","import { WidgetLoadLogService } from \"../services/WidgetLoadLogService\";\r\nimport { ReactWidgetPM } from \"../types/widget\";\r\nimport { WidgetLoadLog } from \"../types/WidgetLoadLog\";\r\nimport { AxiosResponse } from \"axios\";\r\n\r\nexport class WidgetLoadLogger {\r\n\r\n private StartTime: number | null = null;\r\n private Widget: ReactWidgetPM | null = null;\r\n\r\n constructor(widget: ReactWidgetPM, isPreviewMode: boolean | null | undefined) {\r\n if (!isPreviewMode) {\r\n this.StartTime = new Date().getTime();\r\n this.Widget = widget;\r\n }\r\n }\r\n\r\n log(loadDataResponse: AxiosResponse<any, any>) {\r\n if (this.StartTime && this.Widget && loadDataResponse) {\r\n let totalExecutionTime = new Date().getTime() - this.StartTime;\r\n let widgetLoadLogService: WidgetLoadLogService = new WidgetLoadLogService();\r\n let widgetLoadLog: WidgetLoadLog = {\r\n Tenant: this.Widget.Tenant,\r\n WidgetId: this.Widget.Id,\r\n DashboardId: this.Widget.DashboardId,\r\n LoadTime: this.getLoadTime(loadDataResponse),\r\n TotalExecutionTime: totalExecutionTime\r\n };\r\n widgetLoadLogService.create(widgetLoadLog).then(_response => { }, _error => { });\r\n }\r\n this.StartTime = null;\r\n this.Widget = null;\r\n }\r\n\r\n private getLoadTime(loadDataResponse: AxiosResponse<any, any>) {\r\n let loadTimeHeaderKey = \"load-time\";\r\n let loadTimeHeader = loadDataResponse && loadDataResponse.headers && loadDataResponse.headers[loadTimeHeaderKey] ?\r\n loadDataResponse.headers[loadTimeHeaderKey] : \"\";\r\n return this.isNumber(loadTimeHeader) ? Number(loadTimeHeader) : 0;\r\n }\r\n\r\n private isNumber(value: string) {\r\n return value !== null &&\r\n value !== undefined &&\r\n value !== \"\" &&\r\n !isNaN(Number(value.toString()));\r\n }\r\n\r\n}","import { ProgressSpinner } from \"primereact/progressspinner\";\r\nimport React, { useEffect, useRef, useState } from \"react\";\r\nimport { DashboardAnalyticsService } from \"../../../../services/DashboardAnalyticsService\";\r\nimport { Session } from \"../../../../services/session\";\r\nimport { KpiChartData } from \"../../../../types/KpiChart\";\r\nimport { ReactWidgetPM } from \"../../../../types/widget\";\r\nimport { CustomChartProps } from \"./CustomChart\";\r\nimport { ReactComponent as RedWarningIcon } from \"../../../../assets/images/red-warning.svg\"\r\nimport { getDateRangesByCode } from \"../../../../Utils/DateHelper\";\r\nimport { isNullOrUndefined, isNullOrUndefinedOrEmpty } from \"../../../../Utils/General\";\r\nimport { v4 as uuidv4 } from 'uuid';\r\nimport { WidgetLoadLogger } from \"../../../../Utils/WidgetLoadLogger\";\r\n\r\ntype KpiChartProps = {\r\n customChartProps: CustomChartProps;\r\n};\r\n\r\nexport type kPIComparisonSettingsProps = {\r\n\tPeriodFieldId: string | null;\r\n\tPeriodDateFilter: {\r\n\t\tFieldValue: string | null;\r\n\t\tFieldValue2: string | null;\r\n\t\tDatePickerTextFieldValue: string | null;\r\n\t\tDateTimeValueCode: string;\r\n\t\tDateGroupCode: string | null;\r\n\t\tOperator: string | null;\r\n\t};\r\n\tComparePeriodDateFilter: {\r\n\t\tFieldValue: string | null;\r\n\t\tFieldValue2: string | null;\r\n\t\tDatePickerTextFieldValue: string | null;\r\n\t\tDateTimeValueCode: string;\r\n\t\tDateGroupCode: string | null;\r\n\t\tOperator: string | null;\r\n\t};\r\n\tComparisonPeriodType: string | null;\r\n\tComparisonIndicator: boolean;\r\n\tComparisonIncrease: string | null;\r\n}\r\n\r\nconst KpiChart = (props: KpiChartProps) => {\r\n const [isLoading, setIsLoading] = useState<boolean>(true);\r\n const [error, setError] = useState<string>();\r\n const widget = useRef<ReactWidgetPM>();\r\n const [data, setData] = useState<KpiChartData>();\r\n const [isKPICustomSizeNeeded, setIsKPICustomSizeNeeded] = useState<boolean | undefined>(false);\r\n const [triggerId, setTriggerId] = useState(uuidv4());\r\n\r\n useEffect(() => {\r\n widget.current = props.customChartProps.widget;\r\n HandleKPICustomSize();\r\n RefreshData();\r\n\r\n props.customChartProps.dataBinding?.widgetUpdated.subscribe(updatedWidget => {\r\n if (updatedWidget?.key != widget.current?.key) return;\r\n widget.current = {...updatedWidget};\r\n setTriggerId(uuidv4());\r\n });\r\n }, [])\r\n\r\n useEffect(() => {\r\n HandleKPICustomSize();\r\n }, [props.customChartProps])\r\n\r\n const HandleKPICustomSize = () => {\r\n let _isPreviewModeActive = props.customChartProps && props.customChartProps.isPreviewModeActive;\r\n let _isKPICustomResizeNeeded = isKPICustomResizeNeeded();\r\n\r\n setIsKPICustomSizeNeeded(_isKPICustomResizeNeeded && !_isPreviewModeActive)\r\n }\r\n\r\n const calculateWidgetKPISettingsDates = () => {\r\n let _updatedWidget : any = { ...widget.current };\r\n\r\n if(_updatedWidget && _updatedWidget.KPIComparisonSettings && _updatedWidget.KPIComparisonSettings.length) {\r\n let kpiSettings : kPIComparisonSettingsProps = JSON.parse(_updatedWidget.KPIComparisonSettings);\r\n let isKPISettingsActivated = !isNullOrUndefinedOrEmpty(kpiSettings.PeriodFieldId);\r\n\r\n if(isKPISettingsActivated){\r\n let PeriodDateFilterDates = getDateRangesByCode(kpiSettings.PeriodDateFilter.DateTimeValueCode, null, null);\r\n let ComparePeriodDateFilterDates = kpiSettings.ComparisonPeriodType == 'Manually' ? \r\n getDateRangesByCode(kpiSettings.ComparePeriodDateFilter.DateTimeValueCode, kpiSettings.ComparePeriodDateFilter.FieldValue, kpiSettings.ComparePeriodDateFilter.FieldValue2) \r\n : getDateRangesByCode(null, null, null);\r\n\r\n kpiSettings.PeriodDateFilter.FieldValue = PeriodDateFilterDates.fromDate;\r\n kpiSettings.PeriodDateFilter.FieldValue2 = PeriodDateFilterDates.toDate;\r\n\r\n kpiSettings.ComparePeriodDateFilter.FieldValue = ComparePeriodDateFilterDates.fromDate;\r\n kpiSettings.ComparePeriodDateFilter.FieldValue2 = ComparePeriodDateFilterDates.toDate;\r\n\r\n _updatedWidget.KPIComparisonSettings = JSON.stringify(kpiSettings);\r\n }\r\n\r\n return _updatedWidget;\r\n }\r\n\r\n return _updatedWidget;\r\n }\r\n\r\n const RefreshData = () => {\r\n if (Session.Tenant == 0) {\r\n const emptyData = {} as KpiChartData;\r\n emptyData.Value = 0;\r\n setData(emptyData);\r\n setIsLoading(false);\r\n return;\r\n }\r\n \r\n var dashboardAnalyticsService = new DashboardAnalyticsService();\r\n var postWidget: any = calculateWidgetKPISettingsDates();\r\n postWidget.onChange = undefined;\r\n \r\n const widgetLoadLogger = new WidgetLoadLogger(postWidget, props.customChartProps.isPreviewModeActive);\r\n dashboardAnalyticsService.getKpiData(postWidget as ReactWidgetPM).then(result => {\r\n setData(result.data);\r\n handleResponseErrors(result)\r\n setIsLoading(false);\r\n widgetLoadLogger.log(result);\r\n }, error => {\r\n console.log('error', error);\r\n if (error?.response?.data?.ErrorMessage) setError(error?.response?.data?.ErrorMessage);\r\n else setError(error.message);\r\n setIsLoading(false);\r\n })\r\n }\r\n\r\n const handleResponseErrors = (result: any) => {\r\n if(props.customChartProps.onShowError){\r\n if(result?.data && !isNullOrUndefined(result?.data?.Errors) && result?.data?.Errors.length > 0){\r\n props.customChartProps.onShowError(result?.data?.Errors[0]);\r\n }else {\r\n props.customChartProps.onShowError(null);\r\n }\r\n }\r\n }\r\n \r\n const drillDownToKPIValues = (isDrillDownToMainValues: boolean) => {\r\n var measureFieldId;\r\n var currentWidgetMeasure = widget?.current?.WidgetMeasures![0];\r\n if (widget?.current?.WidgetMeasures) measureFieldId = widget?.current?.WidgetMeasures[0]?.MeasureFieldId;\r\n props.customChartProps.onSelectDataPoint({\r\n MeasureFieldId: measureFieldId,\r\n Widget: calculateWidgetKPISettingsDates(),\r\n MeasureCode : currentWidgetMeasure!.MeasureCode,\r\n Formula : currentWidgetMeasure!.Formula,\r\n GroupById: data?.GroupById,\r\n IsKPISecondaryValues: !isDrillDownToMainValues\r\n });\r\n }\r\n\r\n const isComparisonIndicatorChecked = () => {\r\n let _kpiSettings = widget.current?.KPIComparisonSettings;\r\n\r\n if(_kpiSettings){\r\n let _kpiSettingsAsObj = JSON.parse(_kpiSettings);\r\n\r\n return !isNullOrUndefined(_kpiSettingsAsObj.ComparisonIndicator) ? _kpiSettingsAsObj.ComparisonIndicator : false;\r\n }\r\n\r\n return false;\r\n }\r\n\r\n function getRatioComponent(): React.ReactNode {\r\n if (!data?.CompareWithPrevious || !isComparisonIndicatorChecked()) return null;\r\n return (\r\n <div className={\"dl-kpi-ratio-container\"}>\r\n {getArrowComponent()}\r\n <div style={{\r\n fontSize: getKPIFormattingPropertyValue(\"PercentageFontSize\", \"px\")}} \r\n className={'dl-kpi-ratio-text'}>\r\n {data?.Ratio} %\r\n </div>\r\n </div>\r\n );\r\n }\r\n\r\n function getArrowComponent(): React.ReactNode {\r\n if (!data) return null;\r\n\r\n if (data?.Ratio == 0 || data.Value == data.ComparisonValue || ((data.Value == \"0\" || data.Value == 0) && (data.ComparisonValue == \"0\" || data.ComparisonValue == 0)))\r\n return (\r\n <div className=\"dl-kpi-arrow-container\">\r\n <span className={\"dl-kpi-arrow-pic dl-kpi-arrow-up-green\"}></span>\r\n <span className={\"dl-kpi-arrow-pic dl-kpi-arrow-down-red\"} style={{ marginTop: \"2px\" }}></span>\r\n </div>\r\n );\r\n\r\n if (data?.Ratio > 1 && widget.current?.Increase && widget.current?.Increase == \"Positive\")\r\n return (\r\n <div className=\"dl-kpi-arrow-container\">\r\n <span className={\"dl-kpi-arrow-pic dl-kpi-arrow-up-green\"}></span>\r\n </div>\r\n )\r\n\r\n if (data?.Ratio > 1 && widget.current?.Increase && widget.current?.Increase == \"Negative\")\r\n return (\r\n <div className=\"dl-kpi-arrow-container\">\r\n <span className={\"dl-kpi-arrow-pic dl-kpi-arrow-up-red\"}></span>\r\n </div>\r\n )\r\n\r\n if (data?.Ratio < 1 && widget.current?.Increase && widget.current?.Increase == \"Positive\")\r\n return (\r\n <div className=\"dl-kpi-arrow-container\">\r\n <span className={\"dl-kpi-arrow-pic dl-kpi-arrow-down-red\"}></span>\r\n </div>\r\n )\r\n\r\n if (data?.Ratio < 1 && widget.current?.Increase && widget.current?.Increase == \"Negative\")\r\n return (\r\n <div className=\"dl-kpi-arrow-container\">\r\n <span className={\"dl-kpi-arrow-pic dl-kpi-arrow-down-green\"}></span>\r\n </div>\r\n )\r\n\r\n return null;\r\n }\r\n\r\n\r\n\r\n function getPreviousValueComponent(): React.ReactNode {\r\n if (isNullOrUndefined(data) || isNullOrUndefined(data?.ComparisonValue) || isNullOrUndefined(data?.ComparisonLabel)) return \"\";\r\n // let labelFormatByDateGroupType = getLabelFormatByDateGroupType(data!.ComparisonLabel,widget.current!,false)\r\n let formatedValue = data ? data.ComparisonLabel : \"\"; //!isNullOrUndefined(labelFormatByDateGroupType) ? labelFormatByDateGroupType : \"\";\r\n let comparisonValue = data ? data?.ComparisonValue : \"\";\r\n\r\n return (\r\n <div onClick={() => drillDownToKPIValues(false)} title={formatedValue} className={\"dl-kpi-prev-container\"}>\r\n <div style={{\r\n color: getKPIFormattingPropertyValue(\"ComparisonValueFontColor\"),\r\n fontSize: getKPIFormattingPropertyValue(\"ComparisonValueFontSize\", \"px\")}} \r\n className={\"dl-kpi-prev-text\"}>\r\n {`${comparisonValue}${isPercentageMeasureField() ? \"%\" : \"\"}`}\r\n </div>\r\n\r\n {\r\n data?.ComparisonAbbreviationSymbol && \r\n <div style={{\r\n color: getKPIFormattingPropertyValue(\"ComparisonValueFontColor\"),\r\n fontSize: getKPIFormattingPropertyValue(\"ComparisonValueFontSize\", \"px\")}} \r\n className=\"dl-kpi-prev-abbreviationSymbol\">\r\n {data?.ComparisonAbbreviationSymbol}\r\n </div>\r\n }\r\n\r\n {\r\n widget.current && widget.current.ShowMeasureUnit && data?.Unit && \r\n <div style={{\r\n color: getKPIFormattingPropertyValue(\"ComparisonValueFontColor\"),\r\n fontSize: getKPIFormattingPropertyValue(\"ComparisonValueFontSize\", \"px\")}} \r\n className=\"comparison-value-dl-kpi-unit\">\r\n {data?.Unit}\r\n </div>\r\n }\r\n \r\n </div>\r\n );\r\n }\r\n\r\n const isPercentageMeasureField = () => {\r\n return widget?.current && widget?.current.WidgetMeasures && widget?.current.WidgetMeasures[0] && widget?.current.WidgetMeasures[0].MeasureFieldDataType && widget?.current.WidgetMeasures[0].MeasureFieldDataType == 'Percentage';\r\n }\r\n\r\n function getValueData(): React.ReactNode {\r\n if (data?.Value == null)\r\n return (<div className=\"dl-kpi-no-data\">No data to display.</div>);\r\n\r\n return (<div style={{\r\n color: getKPIFormattingPropertyValue(\"MainValueFontColor\"),\r\n fontSize: getKPIFormattingPropertyValue(\"MainValueFontSize\", \"px\")}} \r\n className=\"dl-kpi-value dl-kpi-textTrimming\">\r\n {`${data?.Value}${isPercentageMeasureField() ? \"%\" : \"\"}`}\r\n </div>);\r\n\r\n }\r\n\r\n function getValueComponent(): React.ReactNode {\r\n return (\r\n <div onClick={() => drillDownToKPIValues(true)} className={\"dl-kpi-sub-container\"}>\r\n {getValueData()}\r\n \r\n {\r\n data?.AbbreviationSymbol && \r\n <div style={{\r\n color: getKPIFormattingPropertyValue(\"MainValueFontColor\"),\r\n fontSize: getKPIFormattingPropertyValue(\"MainValueFontSize\", \"px\")}}\r\n className=\"dl-kpi-abbreviationSymbol\">\r\n {data?.AbbreviationSymbol}\r\n </div>\r\n }\r\n \r\n {\r\n widget.current && widget.current.ShowMeasureUnit && data?.Unit && \r\n <div style={{\r\n color: getKPIFormattingPropertyValue(\"MainValueFontColor\"),\r\n fontSize: getKPIFormattingPropertyValue(\"MainValueFontSize\", \"px\")}} \r\n className=\"dl-kpi-unit\">\r\n {data?.Unit}\r\n </div>\r\n }\r\n\r\n {getRatioComponent()}\r\n </div>\r\n );\r\n }\r\n\r\n const getPeriodLabelByPeriodCode = (code : any)=> {\r\n if(!isNullOrUndefinedOrEmpty(code)){\r\n return code.replaceAll(\"_\", \" \");\r\n }\r\n\r\n return \"\";\r\n }\r\n\r\n const getLabelFromKPISettings = ()=> {\r\n if(widget.current && widget.current.KPIComparisonSettings && widget.current.KPIComparisonSettings.length) {\r\n if (widget.current.IsGlobalFilterKPIComparison) {\r\n return getPeriodLabelByPeriodCode(widget.current.GlobalFilterDateTimeValueCode);\r\n }\r\n\r\n let kpiSettings = JSON.parse(widget.current.KPIComparisonSettings);\r\n let PeriodDateFilter = kpiSettings ? kpiSettings.PeriodDateFilter : null;\r\n\r\n let isKPISettingsActivated = !isNullOrUndefinedOrEmpty(kpiSettings.PeriodFieldId)\r\n return isKPISettingsActivated && PeriodDateFilter && PeriodDateFilter.DateTimeValueCode ? getPeriodLabelByPeriodCode(PeriodDateFilter.DateTimeValueCode) : \"\";\r\n }\r\n\r\n return \"\";\r\n }\r\n\r\n const getKPIFormattingData = () => {\r\n return isNullOrUndefinedOrEmpty(widget.current?.KPIFormatSettings) ? {} : JSON.parse(widget.current?.KPIFormatSettings!);\r\n }\r\n\r\n const getKPIFormattingPropertyValue = (propertyName: any, unit: any = \"\") => {\r\n let kpiFormattingData = getKPIFormattingData();\r\n return kpiFormattingData && kpiFormattingData[propertyName] ? kpiFormattingData[propertyName] + unit : undefined;\r\n }\r\n\r\n function getLabel():React.ReactNode{\r\n let formatedValue = data ? data.Label : \"\"; //getLabelFormatByDateGroupType(data!.Label,widget.current!,false)\r\n let label = getLabelFromKPISettings()\r\n\r\n return(\r\n <div onClick={() => drillDownToKPIValues(true)} className={\"dl-kpi-label-container\"}>\r\n <span style={{\r\n color: getKPIFormattingPropertyValue(\"MainPeriodFontColor\"),\r\n fontSize: getKPIFormattingPropertyValue(\"MainPeriodFontSize\", \"px\")}} \r\n title={formatedValue} className={\"dl-kpi-label-span dl-kpi-textTrimming\"}>{label}</span> \r\n </div>\r\n );\r\n }\r\n\r\n const getIsKPIHasSmallestHeight = () => {\r\n return props.customChartProps.widgetRef && props.customChartProps.widgetRef?.Layout && props.customChartProps.widgetRef.Layout?.h == 2\r\n }\r\n\r\n const isKPICustomResizeNeeded = () => {\r\n if(!widget || !widget.current) return;\r\n\r\n // let isThereTitle = !isNullOrUndefined(widget.current?.Title) && widget.current?.Title.length > 0;\r\n // let isThereSubTitle = !isNullOrUndefined(widget.current?.Subtitle) && widget.current?.Subtitle!.length > 0;\r\n let isKPIHasSmallestHeight = getIsKPIHasSmallestHeight();\r\n \r\n return isKPIHasSmallestHeight;\r\n }\r\n\r\n return (\r\n isLoading || !widget.current?\r\n <div className={'dl-full-hight dl-flex-content-center spinner-custome'}>\r\n <ProgressSpinner style={{ width: '40px', height: '40px' }} strokeWidth=\"4\" animationDuration=\"2s\" />\r\n </div>\r\n :\r\n !error && widget.current?\r\n <div key={triggerId} className={(widget.current?.Alighnment == \"Left\" ? \"dl-kpi-container-click db-justify-content-flex-start\" : \"dl-kpi-container-click\")}>\r\n <div className={isKPICustomSizeNeeded ? \"dl-kpi-container kpi-custom-size\" : \"dl-kpi-container\"}>\r\n {getLabel()}\r\n {getValueComponent()}\r\n {getPreviousValueComponent()}\r\n </div>\r\n </div>\r\n : <div className=\"dl-flex-content-center dl-full-hight\" style={{ width: '100%' }}>\r\n <div className=\"dl-tooltip\">\r\n <RedWarningIcon className=\"red-warning-icon\" />\r\n <span className=\"dl-tooltiptext\">{error}</span>\r\n </div>\r\n\r\n </div>\r\n );\r\n}\r\n\r\n\r\nexport default KpiChart;\r\n","import { ProgressSpinner } from \"primereact/progressspinner\";\r\nimport React, { useEffect, useState, useRef } from \"react\";\r\nimport { DashboardAnalyticsService } from \"../../../../services/DashboardAnalyticsService\";\r\nimport { Session } from \"../../../../services/session\";\r\nimport { ReactWidgetPM } from \"../../../../types/widget\";\r\nimport { CustomChartProps } from \"./CustomChart\";\r\nimport { ReactComponent as RedWarningIcon } from \"../../../../assets/images/red-warning.svg\"\r\nimport moment from \"moment\";\r\nimport { ConvertStringToPascalCaseHelper, getNumberInSystemLocalFormat, isNullOrUndefined, isNullOrUndefinedOrEmpty } from \"../../../../Utils/General\";\r\nimport { DataTable } from 'primereact/datatable';\r\nimport { Column } from 'primereact/column';\r\nimport { v4 as uuidv4 } from 'uuid';\r\nimport { WidgetLoadLogger } from \"../../../../Utils/WidgetLoadLogger\";\r\nimport { FieldDataType } from \"../../../../Constant/FieldDataType\";\r\n\r\ntype TableChartProps = {\r\n customChartProps: CustomChartProps;\r\n};\r\n\r\ntype FieldColumn = {\r\n DataTypeCode: string | null;\r\n DisplayName: string | null;\r\n FieldCode: string | null;\r\n Id: string | null;\r\n IsCalculatedColumn: boolean | null;\r\n};\r\n\r\nconst TableChart = (props: TableChartProps) => {\r\n const [isLoading, setIsLoading] = useState<boolean>(true);\r\n const [isTableLoading, setIsTableLoading] = useState<boolean>(false);\r\n const [error, setError] = useState<string>();\r\n const [widget, setWidget] = useState<ReactWidgetPM>();\r\n const [tableData, setTableData] = useState<any>([]);\r\n const [tableColumns, setTableColumns] = useState<any>([]);\r\n const[sortField, setSortField]=useState<any>(null);\r\n const[sortOrder, setSortOrder]=useState<any>(null);\r\n const isDefaultSortOptionsUsed = useRef(false);\r\n const widgetRefData = useRef<ReactWidgetPM | null>(null);\r\n const [objectTableName, setObjectTableName] = useState<string | null>(null);\r\n const [triggerId, setTriggerId] = useState(null);\r\n\r\n \r\n useEffect(() => {\r\n if(props.customChartProps && props.customChartProps.widget) {\r\n setWidget(props.customChartProps.widget);\r\n widgetRefData.current = props.customChartProps.widget;\r\n getObjectTableName(props.customChartProps.widget);\r\n }\r\n\r\n props.customChartProps.dataBinding?.widgetUpdated.subscribe(updatedWidget => {\r\n if (updatedWidget?.key != widgetRefData.current?.key) return;\r\n setWidget({...updatedWidget});\r\n setTriggerId(uuidv4());\r\n });\r\n }, [])\r\n\r\n useEffect(() => {\r\n if(triggerId != null){\r\n ReOrderColumns(widget?.Columns);\r\n }\r\n \r\n }, [triggerId])\r\n\r\n const ReOrderColumns = (updatedWidgetColumns: any) => {\r\n if(updatedWidgetColumns == null || updatedWidgetColumns == undefined || (typeof updatedWidgetColumns == 'string' && updatedWidgetColumns?.length == 0)){\r\n return;\r\n }\r\n\r\n let updatedWidgetColumnsData = JSON.parse(updatedWidgetColumns);\r\n\r\n let _updatedTableColumns : any = [];\r\n updatedWidgetColumnsData.forEach((c: any)=> {\r\n let col : any = tableColumns.find(f => f.Id == c.Id);\r\n\r\n if(col){\r\n _updatedTableColumns.push(col)\r\n }\r\n });\r\n\r\n setTableColumns([..._updatedTableColumns])\r\n }\r\n\r\n const getObjectTableName = (widget : ReactWidgetPM | undefined) => {\r\n let dashboardAnalyticsService = new DashboardAnalyticsService();\r\n\r\n dashboardAnalyticsService.getObjectTableNameByWidgetEntityId(widget?.EntityId)\r\n .then((res: any) => {\r\n if (res && res.data && res.data.ObjectTableName) {\r\n setObjectTableName(res.data.ObjectTableName);\r\n getTableData(widget); \r\n } else {\r\n setError(\"Erorr: No object table name match this widget entity id\");\r\n setIsLoading(false);\r\n }\r\n })\r\n .catch(() => {\r\n setError(\"Erorr: No object table name match this widget entity id\");\r\n setIsLoading(false);\r\n })\r\n \r\n \r\n }\r\n\r\n const getTableData= (widget : any) => {\r\n if (Session.Tenant == 0) {\r\n setTableData([]);\r\n setIsLoading(false);\r\n return;\r\n }\r\n\r\n let dashboardAnalyticsService = new DashboardAnalyticsService();\r\n widget.onChange = undefined;\r\n widget.PageIndex = 0;\r\n widget.PageSize = 100;\r\n \r\n const widgetLoadLogger = new WidgetLoadLogger(widget, props.customChartProps.isPreviewModeActive);\r\n dashboardAnalyticsService.getTableData(widget as ReactWidgetPM)\r\n .then((res: any) => {\r\n if(res && res.data) {\r\n fillTableData(res.data);\r\n }\r\n setIsLoading(false);\r\n widgetLoadLogger.log(res);\r\n })\r\n .catch((error: any) => {\r\n if (error?.response?.data?.ErrorMessage) setError(error?.response?.data?.ErrorMessage);\r\n else setError(error.message);\r\n setIsLoading(false);\r\n })\r\n }\r\n\r\n const getBooleanStringValue = (value: any) => {\r\n if(isNullOrUndefined(value)) return \"\";\r\n\r\n let _value = value + \"\";\r\n return _value.charAt(0).toUpperCase() + _value.slice(1);\r\n }\r\n \r\n const getDateTimeValue = (value: any , datePart : string | null = null) => {\r\n if(!value) return value;\r\n\r\n let _date = moment(value);\r\n if(!_date || !_date.isValid()) return value;\r\n \r\n if(!datePart){\r\n return `${_date.format(\"DD MMM YYYY\")} ${_date.format(\"HH:mm\")}`;\r\n }\r\n\r\n if(datePart == 'Date'){\r\n return `${_date.format(\"DD MMM YYYY\")}`;\r\n\r\n }else{\r\n return `${_date.format(\"HH:mm\")}`;\r\n }\r\n }\r\n\r\n const fillTableData = (tableData : any) => {\r\n let tableRecords: any = [];\r\n if(tableData.Fields && tableData.Fields.length){\r\n setTableColumns([...tableData.Fields]);\r\n setDefaultSortOptions(tableData.Fields);\r\n }\r\n\r\n if(tableData.Result && tableData.Result.length){\r\n tableData.Result.forEach((item: any) => {\r\n\r\n let _tableRow: any = {...item};\r\n tableData.Fields.forEach((field: any) => {\r\n let key = field.FieldCode\r\n let valueType = field.DataTypeCode;\r\n\r\n let _value = valueType && valueType == \"Boolean\" ? getBooleanStringValue(item[key]) : item[key]\r\n _tableRow[key] = isNullOrUndefined(_value) ? \"\" : _value;\r\n })\r\n\r\n tableRecords.push(_tableRow);\r\n })\r\n }\r\n\r\n setTableData([...tableRecords]); \r\n }\r\n\r\n const setDefaultSortOptions = (tableCols: any = []) => {\r\n if(isDefaultSortOptionsUsed && isDefaultSortOptionsUsed.current) return;\r\n\r\n isDefaultSortOptionsUsed.current= true;\r\n\r\n let _widget : any = props.customChartProps ? props.customChartProps.widget : null;\r\n if(!_widget) return;\r\n \r\n let _sortFieldCode = getSortFieldCodeBySortFieldId(_widget.DefaultSortBy, tableCols);\r\n let _sortDirection = _widget.DefaultSortDirection ? _widget.DefaultSortDirection == 'asc' ? 1 : _widget.DefaultSortDirection == 'desc' ? -1 : 0 : null;\r\n\r\n setSortField(_sortFieldCode);\r\n setSortOrder(_sortDirection)\r\n }\r\n\r\n const getSortFieldCodeBySortFieldId = (sortFieldId: any, tableCols: any = []) => {\r\n if(!sortFieldId) return null;\r\n\r\n let field = tableCols.find(col => col.Id == sortFieldId);\r\n return field ? field.FieldCode : null;\r\n }\r\n\r\n const getSortFieldIdBySortFieldCode = (sortFieldCode: any) => {\r\n if(!sortFieldCode) return null;\r\n\r\n let field = tableColumns.find(col => col.FieldCode == sortFieldCode);\r\n return field ? field.Id : null;\r\n }\r\n\r\n const sortTableData = (sortedField: any, isCalculatedColumn: boolean | null)=> {\r\n if(!canSort()) return;\r\n\r\n setSortField(sortedField);\r\n let _sortOrder = sortOrder == 1 ? -1 : sortOrder == -1 ? 1 : 1;\r\n setSortOrder(_sortOrder);\r\n\r\n let _widget : any = props.customChartProps.widget;\r\n let dashboardAnalyticsService = new DashboardAnalyticsService();\r\n _widget.onChange = undefined;\r\n _widget.PageIndex = 0;\r\n _widget.PageSize = 100;\r\n _widget.ScreenSortBy = getSortFieldIdBySortFieldCode(sortedField);\r\n _widget.ScreenSortDirection = _sortOrder == 1 ? 'asc' : _sortOrder == -1 ? 'desc' : null;\r\n _widget.ScreenSortByType = isNullOrUndefinedOrEmpty(isCalculatedColumn) ? \"Field\" : isCalculatedColumn ? \"CalculatedColumn\" : \"Field\"\r\n\r\n setIsTableLoading(true);\r\n dashboardAnalyticsService.getTableData(_widget as ReactWidgetPM)\r\n .then((res: any) => {\r\n if(res && res.data) {\r\n fillTableData(res.data);\r\n }\r\n setIsTableLoading(false);\r\n })\r\n .catch((error: any) => {\r\n if (error?.response?.data?.ErrorMessage) setError(error?.response?.data?.ErrorMessage);\r\n else setError(error.message);\r\n setIsTableLoading(false);\r\n })\r\n }\r\n\r\n const canSort = ()=> {\r\n if(props.customChartProps){\r\n return !props.customChartProps.isInEditMode && !props.customChartProps.isPreviewModeActive;\r\n }\r\n return false;\r\n }\r\n\r\n const getTableFormattingData = () => {\r\n return widget && isNullOrUndefinedOrEmpty(widget.TableFormatSettings) ? {} : JSON.parse(widget?.TableFormatSettings!);\r\n }\r\n\r\n const getTableFormattingPropertyValue = (propertyName: any, unit: any = \"\") => {\r\n let tableFormattingData = getTableFormattingData();\r\n return tableFormattingData && tableFormattingData[propertyName] ? tableFormattingData[propertyName] + unit : undefined;\r\n }\r\n\r\n const getTableConditionalRulesData = () => {\r\n return widget && isNullOrUndefinedOrEmpty(widget.TableConditionalRules) ? [] : JSON.parse(widget?.TableConditionalRules!);\r\n }\r\n\r\n const isValueEmpty = (val: any) => {\r\n return val === null || val === undefined || val === \"\";\r\n }\r\n\r\n const IsValidRule = (rule, value) => {\r\n let operator = rule && rule.RuleOperator ? rule.RuleOperator.Code : null;\r\n if(!operator) return null;\r\n\r\n let ruleValue1 = rule.RuleValue1;\r\n let ruleValue2 = rule.RuleValue2;\r\n\r\n switch (operator) {\r\n case \"Equal\":\r\n return ruleValue1 == value;\r\n case \"NotEqual\":\r\n return ruleValue1 != value;\r\n case \"Between\":\r\n return !isValueEmpty(ruleValue1) && !isValueEmpty(ruleValue2) && ruleValue1 <= value && value <= ruleValue2;\r\n case \"GreaterThan\":\r\n return !isValueEmpty(ruleValue1) && value > ruleValue1;\r\n case \"GreaterThanOrEqual\":\r\n return !isValueEmpty(ruleValue1) && value >= ruleValue1;\r\n case \"LessThan\":\r\n return !isValueEmpty(ruleValue1) && value < ruleValue1;\r\n case \"LessThanOrEqual\":\r\n return !isValueEmpty(ruleValue1) && value <= ruleValue1;\r\n case \"IsEmpty\":\r\n return isValueEmpty(value);\r\n case \"IsNotEmpty\":\r\n return !isValueEmpty(value);\r\n case \"Contains\":\r\n return !isValueEmpty(value) && !isValueEmpty(ruleValue1) && value.includes(ruleValue1);\r\n case \"NotContains\":\r\n return !isValueEmpty(value) && !isValueEmpty(ruleValue1) && !value.includes(ruleValue1);\r\n default:\r\n return null;\r\n }\r\n }\r\n\r\n const getCellPropertyByRule = (column: FieldColumn, cellValue: any, propertyName: string, defaultValue: string | null = null) => {\r\n let tableFormattingData = getTableConditionalRulesData();\r\n\r\n let columnType = column.IsCalculatedColumn ? \"CalculatedColumn\" : \"Field\";\r\n let columnData = tableFormattingData.find((el: any) => el.FieldId == column.Id && el.FieldType == columnType);\r\n\r\n if(!columnData || !columnData.FieldRules || columnData.FieldRules.length == 0) {\r\n return defaultValue ? getTableFormattingPropertyValue(defaultValue) : undefined; \r\n };\r\n\r\n let firstValidRule = columnData.FieldRules.find((rule: any) => IsValidRule(rule, cellValue));\r\n\r\n if(!firstValidRule) {\r\n return defaultValue ? getTableFormattingPropertyValue(defaultValue) : undefined;\r\n }\r\n\r\n return !isNullOrUndefinedOrEmpty(firstValidRule[propertyName]) ? \r\n firstValidRule[propertyName] : defaultValue ? \r\n getTableFormattingPropertyValue(defaultValue) : undefined;\r\n }\r\n \r\n const getCellFloatAlignment = (column: FieldColumn) => {\r\n if(column.DataTypeCode == 'Decimal' || column.DataTypeCode == 'Percentage'|| column.DataTypeCode == 'Integer' \r\n || column.DataTypeCode == 'Double' || column.DataTypeCode == 'SigDouble'){\r\n return \"right\";\r\n }\r\n \r\n return \"unset\";\r\n }\r\n\r\n const isClickableCell = (fieldCode: string | null , rowDate : any | null = null) => {\r\n return ((fieldCode == \"ShipmentNumber\" && objectTableName == \"Shipment\") ||\r\n IsShipmentMasterFieldClickable(fieldCode,rowDate) ||\r\n (fieldCode == \"InvoiceNumber\" && objectTableName == \"APInvoice\") ||\r\n (fieldCode == \"InvoiceNumber\" && objectTableName == \"ARInvoice\") ||\r\n (fieldCode == \"ContainerNumber\" && objectTableName == \"Container\") ||\r\n (fieldCode == \"QuoteNumber\" && objectTableName == \"Quote\") ||\r\n (fieldCode == \"Subject\" && objectTableName == \"Opportunity\") ||\r\n (fieldCode == \"EnglishName\" && objectTableName == \"Customer\") ||\r\n (fieldCode == \"TaskNumber\" && objectTableName == \"Task\") ||\r\n (fieldCode == \"TicketNumber\" && objectTableName == \"Ticket\"))\r\n }\r\n\r\n const IsShipmentMasterFieldClickable = (fieldCode: string | null , rowData: any | null = null) => {\r\n\r\n if(Session.isMasterNumberClickable && objectTableName === \"Shipment\" && fieldCode === \"Master\" && Session.isMasterNumberClickable(rowData)){\r\n return true;\r\n }\r\n\r\n return false;\r\n }\r\n\r\n const tableCellClicked = (data: any, fieldCode: string | null) => {\r\n if(!data || !data.Id || !isClickableCell(fieldCode,data) || props.customChartProps.isInEditMode) return;\r\n\r\n props.customChartProps.onSelectDataPoint({\r\n ObjectTableName: objectTableName,\r\n TableRowEntityId: data.Id,\r\n RowData : data,\r\n FieldCode : fieldCode\r\n });\r\n }\r\n\r\n const getCellValue = (data: any, column: FieldColumn) => {\r\n if(isNullOrUndefined(data) || isNullOrUndefined(column)) {\r\n return \"\";\r\n }\r\n\r\n let columnValue = data[column.FieldCode!];\r\n \r\n if(FieldDataType.isPercentage(column.DataTypeCode)) {\r\n return !isNullOrUndefined(columnValue) ? getNumberInSystemLocalFormat(Number(columnValue), 2,2) + \"%\" : 0 + '%';\r\n }\r\n\r\n if(FieldDataType.isInteger(column.DataTypeCode)) {\r\n return !isNullOrUndefined(columnValue) ? getNumberInSystemLocalFormat(Number(columnValue), 0, 0,false) : \"\";\r\n }\r\n\r\n\r\n if(FieldDataType.isNumericType(column.DataTypeCode)) {\r\n return !isNullOrUndefined(columnValue) ? getNumberInSystemLocalFormat(Number(columnValue), 2,2) : \"\";\r\n }\r\n\r\n \r\n return ConvertStringToPascalCaseHelper(columnValue)\r\n }\r\n\r\n const cellTemplateBody = (data: any, column: FieldColumn) => {\r\n if(!column || !column.FieldCode) return \"\";\r\n\r\n if(column.DataTypeCode == \"DateTime\" || column.DataTypeCode == \"Date\"){\r\n\r\n let fontColor : string = getTableFormattingPropertyValue(\"TableCellFontColor\");\r\n let fontSizeWithoutUnit = getTableFormattingPropertyValue(\"TableCellFontSize\");\r\n let fontSizeWitUnit = getTableFormattingPropertyValue(\"TableCellFontSize\",\"px\");\r\n let width = fontSizeWithoutUnit ? `${(fontSizeWithoutUnit * 6)}px` : `${70}px`;\r\n\r\n return <div title={getDateTimeValue(data[column.FieldCode!])}\r\n className=\"date-time-value-container\"\r\n style={{color: fontColor}}>\r\n\r\n <span className=\"table-cell-datetime\"\r\n style={{fontSize: fontSizeWitUnit, width : width , display:'inline-block'}}>\r\n {getDateTimeValue(data[column.FieldCode!],'Date')}\r\n </span> \r\n\r\n <span className=\"table-cell-datetime\" style={{fontSize: fontSizeWitUnit}}>\r\n {getDateTimeValue(data[column.FieldCode!],'Time')}\r\n </span>\r\n </div>\r\n\r\n }else{\r\n\r\n return <span \r\n onClick={() => tableCellClicked(data, column.FieldCode)}\r\n title={getCellValue(data, column)} \r\n className={`table-cell ${isClickableCell(column.FieldCode,data) ? 'table-link-cell' :''}`} \r\n style={{\r\n color: getTableFormattingPropertyValue(\"TableCellFontColor\"),\r\n backgroundColor: getCellPropertyByRule(column, data[column.FieldCode!], 'RuleBackgroundColor'),\r\n fontSize: getTableFormattingPropertyValue(\"TableCellFontSize\", \"px\"),\r\n float: getCellFloatAlignment(column)}}>\r\n {getCellValue(data, column)}\r\n </span>\r\n }\r\n }\r\n\r\n const headerTemplate = (column: FieldColumn)=> {\r\n let sortClassIcon = \"\";\r\n if(sortField != column.FieldCode) {\r\n return <div style={{ backgroundColor: getTableFormattingPropertyValue(\"TableHeaderBackgroundColor\") }}\r\n onClick={() => sortTableData(column.FieldCode, column.IsCalculatedColumn)} className=\"header-content\">\r\n <span style={{\r\n color: getTableFormattingPropertyValue(\"TableHeaderFontColor\"),\r\n fontSize: getTableFormattingPropertyValue(\"TableHeaderFontSize\", \"px\")}} \r\n className=\"p-column-title\">\r\n {column.DisplayName}\r\n {/* {canSort() && \r\n <span \r\n style={{\r\n fontSize: getTableFormattingPropertyValue(\"TableHeaderFontSize\", \"px\"),\r\n width: getTableFormattingPropertyValue(\"TableHeaderFontSize\", \"px\"),\r\n height: getTableFormattingPropertyValue(\"TableHeaderFontSize\", \"px\")}} \r\n className=\"p-sortable-column-icon p-ml-2 pi pi-fw pi-sort-alt\">\r\n\r\n </span>\r\n } */}\r\n </span>\r\n </div>\r\n }\r\n\r\n if(sortOrder == 1){\r\n // arrow up\r\n sortClassIcon = \"p-sortable-column-icon p-ml-2 pi pi-fw pi-sort-amount-up-alt\";\r\n }else if(sortOrder == -1){\r\n // arrow down\r\n sortClassIcon = \"p-sortable-column-icon p-ml-2 pi pi-fw pi-sort-amount-down\";\r\n } else {\r\n // 2 arrows, up and down\r\n sortClassIcon = \"p-sortable-column-icon p-ml-2 pi pi-fw pi-sort-alt\";\r\n }\r\n\r\n return <div style={{ backgroundColor: getTableFormattingPropertyValue(\"TableHeaderBackgroundColor\") }}\r\n onClick={() => sortTableData(column.FieldCode, column.IsCalculatedColumn)} className=\"header-content\">\r\n <span style={{\r\n color: getTableFormattingPropertyValue(\"TableHeaderFontColor\"),\r\n fontSize: getTableFormattingPropertyValue(\"TableHeaderFontSize\", \"px\")}} \r\n className=\"p-column-title\">\r\n {column.DisplayName}\r\n {/* {canSort() && \r\n <span \r\n style={{\r\n fontSize: getTableFormattingPropertyValue(\"TableHeaderFontSize\", \"px\"),\r\n width: getTableFormattingPropertyValue(\"TableHeaderFontSize\", \"px\"),\r\n height: getTableFormattingPropertyValue(\"TableHeaderFontSize\", \"px\")}} \r\n className={sortClassIcon}>\r\n </span>\r\n } */}\r\n </span>\r\n </div>\r\n }\r\n\r\n\r\n return (\r\n isLoading ?\r\n <div className={'dl-full-hight dl-flex-content-center spinner-custome'}>\r\n <ProgressSpinner style={{ width: '40px', height: '40px' }} strokeWidth=\"4\" animationDuration=\"2s\" />\r\n </div> :\r\n\r\n error ?\r\n <div className=\"dl-flex-content-center dl-full-hight\" style={{ width: '100%' }}>\r\n <div className=\"dl-tooltip\">\r\n <RedWarningIcon className=\"red-warning-icon\" />\r\n <span className=\"dl-tooltiptext\">{error}</span>\r\n </div>\r\n\r\n </div> :\r\n <DataTable loading={isTableLoading} value={tableData} resizableColumns={!props.customChartProps.isInEditMode} columnResizeMode=\"fit\" responsiveLayout=\"scroll\">\r\n {\r\n tableColumns.map((column: any, index: number) => {\r\n return <Column key={column.FieldCode + \"_\" + index} header={() => headerTemplate(column)} body={(data: any) => cellTemplateBody(data, column)}></Column> \r\n })\r\n }\r\n </DataTable> \r\n )\r\n\r\n\r\n\r\n\r\n}\r\n\r\n\r\nexport default TableChart;\r\n\r\n","import React, { forwardRef, useCallback, useEffect, useRef, useState } from 'react';\r\nimport PivotGrid, {\r\n FieldChooser, FieldPanel, Scrolling,\r\n} from 'devextreme-react/pivot-grid';\r\nimport { DashboardAnalyticsService } from '../../../../services/DashboardAnalyticsService';\r\nimport { CustomChartProps } from './CustomChart';\r\nimport { Session } from '../../../../services/session';\r\nimport PivotGridDataSource from 'devextreme/ui/pivot_grid/data_source';\r\nimport { ProgressSpinner } from 'primereact/progressspinner';\r\nimport { ConvertStringToPascalCaseHelper, getNumberInSystemLocalFormat, isNullOrUndefinedOrEmpty, isValueInteger } from '../../../../Utils/General';\r\nimport { ReactWidgetPM } from '../../../../types/widget';\r\nimport { WidgetLoadLogger } from '../../../../Utils/WidgetLoadLogger';\r\n\r\ntype PivotChartProps = {\r\n customChartProps: CustomChartProps;\r\n};\r\n\r\nconst PivotTable = forwardRef((props: PivotChartProps, comRef) => {\r\n\r\n const [widget, setWidget] = useState<ReactWidgetPM>();\r\n const [isLoading, setIsLoading] = useState<boolean>(true);\r\n\r\n const widgetRefData = useRef<ReactWidgetPM | null>(null);\r\n const tabledata = useRef<any>();\r\n const pivotGridRef = useRef<PivotGrid>(null);\r\n\r\n const [dataSource, setDataSource] = useState<any>(new PivotGridDataSource({\r\n store: [],\r\n fields: [],\r\n }));\r\n\r\n\r\n useEffect(() => {\r\n if (props.customChartProps && props.customChartProps.widget) {\r\n setWidget(props.customChartProps.widget);\r\n widgetRefData.current = props.customChartProps.widget;\r\n getPivotTableData(props.customChartProps.widget);\r\n }\r\n\r\n props.customChartProps.dataBinding?.widgetUpdated.subscribe(updatedWidget => {\r\n if (updatedWidget?.key != widgetRefData.current?.key) return;\r\n setWidget({ ...updatedWidget });\r\n });\r\n\r\n document.addEventListener(\"resizeStop\", handleResize);\r\n return () => {\r\n document.removeEventListener(\"resizeStop\", handleResize);\r\n };\r\n }, [])\r\n\r\n useEffect(() => {\r\n if(props.customChartProps.isInEditMode){\r\n if(pivotGridRef.current && pivotGridRef.current?.instance && pivotGridRef.current.instance.element \r\n && pivotGridRef.current.instance.element().classList){\r\n pivotGridRef.current.instance.element().classList.add('force-overflow-hidden')\r\n }\r\n setTimeout(() => {\r\n handleResize();\r\n if(pivotGridRef.current && pivotGridRef.current?.instance && pivotGridRef.current.instance.element\r\n && pivotGridRef.current.instance.element().classList){\r\n pivotGridRef.current.instance.element().classList.remove('force-overflow-hidden')\r\n }\r\n }, 5);\r\n }\r\n\r\n }, [props.customChartProps.isInEditMode])\r\n\r\n const handleResize = () => {\r\n if(pivotGridRef.current && pivotGridRef.current?.instance && pivotGridRef.current?.instance.repaint){\r\n pivotGridRef.current?.instance.repaint()\r\n }\r\n }\r\n\r\n const getPivotTableData = (widget: any) => {\r\n if (Session.Tenant == 0) {\r\n tabledata.current = [];\r\n setIsLoading(false);\r\n return;\r\n }\r\n\r\n let dashboardAnalyticsService = new DashboardAnalyticsService();\r\n\r\n const widgetLoadLogger = new WidgetLoadLogger(props.customChartProps.widget as any, props.customChartProps.isPreviewModeActive);\r\n dashboardAnalyticsService.getPivotData(props.customChartProps.widget as any)\r\n .then((res) => {\r\n tabledata.current = res.data;\r\n setPivotDataSourceFields();\r\n setIsLoading(false);\r\n widgetLoadLogger.log(res);\r\n })\r\n .catch(err => {\r\n console.log(\"Error while Getting Pivot Table Data: \", err);\r\n tabledata.current = null;\r\n setPivotDataSourceFields();\r\n setIsLoading(false);\r\n })\r\n }\r\n const customizeCells = useCallback((e) => {\r\n if (e.cell.rowPath && e.cell.rowPath[0] === \"Germany\" && e.cell.columnPath && e.cell.columnPath[0] === \"Export\" && e.cell.columnPath[1] === \"Air\") {\r\n\r\n e.cellElement.children[0].style.padding = \"6px\";\r\n e.cellElement.children[0].style.borderRadius = \"6px\";\r\n e.cellElement.children[0].style.backgroundColor = \"#f4433673\";\r\n }\r\n\r\n if (e.cell.rowPath && e.cell.rowPath[0] === \"USA\" && e.cell.columnPath && e.cell.columnPath[0] === \"Import\" && e.cell.columnPath[1] === \"Inland\") {\r\n\r\n e.cellElement.children[0].style.padding = \"6px\";\r\n e.cellElement.children[0].style.borderRadius = \"6px\";\r\n e.cellElement.children[0].style.backgroundColor = \"#03a9f4ad\";\r\n }\r\n }, []);\r\n\r\n const onCellClick = useCallback((e: any) => {\r\n if (e.area === 'data') {\r\n let pivotFields: any = [];\r\n\r\n e.columnFields.forEach((c: any, index: number) => {\r\n let fieldValue = e.cell.columnPath[index];\r\n if(fieldValue !== undefined){\r\n pivotFields.push({ ...c.fieldData, FieldValue: fieldValue })\r\n }\r\n })\r\n\r\n e.rowFields.forEach((r: any, index: number) => {\r\n let fieldValue = e.cell.rowPath[index];\r\n if(fieldValue !== undefined){\r\n pivotFields.push({ ...r.fieldData, FieldValue: fieldValue })\r\n }\r\n })\r\n \r\n props.customChartProps.onSelectDataPoint({\r\n MeasureFieldId: '',\r\n Widget: props.customChartProps.widget,\r\n MeasureCode: '',\r\n Formula: '',\r\n GroupById: '',\r\n PivotFields: pivotFields\r\n });\r\n }\r\n }, []);\r\n\r\n const getColumnNameByColumnId = (fieldName, dataField, datafieldValue) => {\r\n let data = tabledata.current.PivotData.find(el => el[dataField] == datafieldValue)\r\n\r\n return data ? ConvertStringToPascalCaseHelper(data[fieldName]) : ''\r\n }\r\n\r\n const SortRowAndColumnHeaders = (a: any, b: any, field: any) => {\r\n if(field.DateCode == 'Month'){\r\n let aValue = a.value == null ? -1 : Number(a.value);\r\n let bValue = b.value == null ? -1 : Number(b.value);\r\n if(aValue < bValue) { return -1; }\r\n if(aValue > bValue) { return 1; }\r\n return 0;\r\n\r\n }else if(field.DateCode != null){\r\n\r\n let aValue = a.value == null ? '' : a.value;\r\n let bValue = b.value == null ? '' : b.value;\r\n if(aValue < bValue) { return -1; }\r\n if(aValue > bValue) { return 1; }\r\n return 0;\r\n\r\n }else{\r\n let aText = a.text == null ? '' : a.text;\r\n let bText = b.text == null ? '' : b.text;\r\n if(aText < bText) { return -1; }\r\n if(aText> bText) { return 1; }\r\n return 0;\r\n }\r\n\r\n \r\n }\r\n\r\n const setPivotDataSourceFields = () => {\r\n if (tabledata.current && tabledata.current.PivoFields && tabledata.current.PivotMeasures) {\r\n // Fill Pivot Rows & Columns fields\r\n let pivotRowsAndColumnsFields = tabledata.current.PivoFields.map(field => {\r\n return {\r\n dataField: field.PivotCode,\r\n caption: field.DisplayName,\r\n name: field.PivotName,\r\n width: 100,\r\n allowSorting: false,\r\n allowFiltering: false,\r\n area: field.PivotCode && field.PivotCode.includes('Row') ? 'row' : 'column',\r\n sortingMethod: (a, b)=> {\r\n return SortRowAndColumnHeaders(a, b, field);\r\n },\r\n expanded: true,\r\n wordWrapEnabled: true,\r\n fieldData: {\r\n FieldId: field.FieldId,\r\n FieldType: field.FieldType ? field.FieldType : \"Field\",\r\n FieldValue: '',\r\n DateCode : field.DateCode\r\n },\r\n customizeText: (cellInfo) => {\r\n return getColumnNameByColumnId(field.PivotName, field.PivotCode, cellInfo.value)\r\n }\r\n }\r\n })\r\n\r\n // Fill Pivot Data Cells fields\r\n let pivotDataCellsFields = tabledata.current.PivotMeasures.map(measure => {\r\n return {\r\n dataField: measure.PivotMeasureCode,\r\n area: 'data',\r\n dataType: 'number',\r\n wordWrapEnabled: true,\r\n caption: measure.MeasureCode == 'Sum' && typeof measure.DisplayName == 'string' ? ConvertStringToPascalCaseHelper(measure.DisplayName.replace(\"Sum of \", \"\")) : ConvertStringToPascalCaseHelper(measure.DisplayName),\r\n summaryType: 'custom',\r\n calculateCustomSummary: (options) => {\r\n if(options.summaryProcess == 'calculate'){\r\n let _value = !isNullOrUndefinedOrEmpty(options.value) ? options.value : 0;\r\n \r\n let decimalParts = _value.toString().split(\".\");\r\n let firstPart = decimalParts[0] ? decimalParts[0] : 0;\r\n \r\n let secondPart = decimalParts[1] ? decimalParts[1] : 0;\r\n secondPart = secondPart.toString().substr(0, 2);\r\n \r\n let _finalVal = firstPart + \".\" + secondPart\r\n\r\n options.value = Number(_finalVal)\r\n options.totalValue = (!isNullOrUndefinedOrEmpty(options.totalValue) ? options.totalValue : 0) + options.value\r\n }\r\n },\r\n format: (value) => {\r\n let isInteger = isValueInteger(measure.MeasureCode , measure.MeasureFieldDataType)\r\n let minimumFraction = isInteger ? 0 : 2;\r\n let _value = isNullOrUndefinedOrEmpty(value) ? 0 : value;\r\n return getNumberInSystemLocalFormat(_value, 2,minimumFraction);\r\n }\r\n }\r\n })\r\n\r\n let AllfieldsData = [...pivotRowsAndColumnsFields, ...pivotDataCellsFields];\r\n\r\n setDataSource(new PivotGridDataSource({\r\n store: tabledata.current.PivotData,\r\n fields: AllfieldsData,\r\n }))\r\n }\r\n }\r\n\r\n const isRowsEmptyAndColumnsNotEmpty = () => {\r\n let pivotRows = widget && !isNullOrUndefinedOrEmpty(widget?.PivotRows) ? JSON.parse(widget?.PivotRows!) : [];\r\n let pivotColumns = widget && !isNullOrUndefinedOrEmpty(widget?.PivotColumns) ? JSON.parse(widget?.PivotColumns!) : [];\r\n\r\n return pivotRows?.length === 0 && pivotColumns?.length > 0;\r\n }\r\n\r\n const canShowRowsGrandTotal = () : boolean | undefined => {\r\n if(isRowsEmptyAndColumnsNotEmpty()) {\r\n return true;\r\n }\r\n\r\n let pivotTotalsSettings = widget && !isNullOrUndefinedOrEmpty(widget?.PivotTotalsSettings) ? JSON.parse(widget?.PivotTotalsSettings!) : {};\r\n return !isNullOrUndefinedOrEmpty(pivotTotalsSettings.ShowRowsGrandTotal) ? pivotTotalsSettings.ShowRowsGrandTotal : false;\r\n }\r\n\r\n\r\n const isRowsNotEmptyAndColumnsEmpty = () => {\r\n let pivotRows = widget && !isNullOrUndefinedOrEmpty(widget?.PivotRows) ? JSON.parse(widget?.PivotRows!) : [];\r\n let pivotColumns = widget && !isNullOrUndefinedOrEmpty(widget?.PivotColumns) ? JSON.parse(widget?.PivotColumns!) : [];\r\n\r\n return pivotRows?.length > 0 && pivotColumns?.length === 0;\r\n }\r\n\r\n const canShowColumnsGrandTotal = () : boolean | undefined => {\r\n if(isRowsNotEmptyAndColumnsEmpty()) {\r\n return true;\r\n }\r\n\r\n let pivotTotalsSettings = widget && !isNullOrUndefinedOrEmpty(widget?.PivotTotalsSettings) ? JSON.parse(widget?.PivotTotalsSettings!) : {};\r\n return !isNullOrUndefinedOrEmpty(pivotTotalsSettings.ShowColumnsGrandTotal) ? pivotTotalsSettings.ShowColumnsGrandTotal : false;\r\n }\r\n\r\n const canShowRowsTotal = () : boolean | undefined => {\r\n let pivotTotalsSettings = widget && !isNullOrUndefinedOrEmpty(widget?.PivotTotalsSettings) ? JSON.parse(widget?.PivotTotalsSettings!) : {};\r\n return !isNullOrUndefinedOrEmpty(pivotTotalsSettings.ShowRowsTotal) ? pivotTotalsSettings.ShowRowsTotal : false;\r\n }\r\n\r\n const canShowColumnsTotal = () : boolean | undefined => {\r\n let pivotTotalsSettings = widget && !isNullOrUndefinedOrEmpty(widget?.PivotTotalsSettings) ? JSON.parse(widget?.PivotTotalsSettings!) : {};\r\n return !isNullOrUndefinedOrEmpty(pivotTotalsSettings.ShowColumnsTotal) ? pivotTotalsSettings.ShowColumnsTotal : false;\r\n }\r\n\r\n return (\r\n <React.Fragment>\r\n { isLoading ?\r\n <div className={'dl-full-hight dl-flex-content-center spinner-custome'}>\r\n <ProgressSpinner style={{ width: '40px', height: '40px' }} strokeWidth=\"4\" animationDuration=\"2s\" />\r\n </div>\r\n : \r\n <PivotGrid\r\n id=\"pivotGridId\"\r\n ref={pivotGridRef}\r\n dataSource={dataSource}\r\n allowExpandAll={true}\r\n showBorders={true}\r\n className='pivot-grid-element'\r\n onCellClick={onCellClick}\r\n showRowGrandTotals={canShowRowsGrandTotal()}\r\n showColumnGrandTotals={canShowColumnsGrandTotal()}\r\n showRowTotals={canShowRowsTotal()}\r\n showColumnTotals={canShowColumnsTotal()}\r\n showTotalsPrior='none'\r\n wordWrapEnabled={true}\r\n >\r\n <FieldPanel\r\n showColumnFields={false}\r\n showDataFields={false}\r\n showFilterFields={false}\r\n showRowFields={false}\r\n texts={{rowFieldArea: \"\"}}\r\n allowFieldDragging={false}\r\n visible={true}\r\n />\r\n <FieldChooser enabled={false} />\r\n <Scrolling mode=\"virtual\" />\r\n </PivotGrid>\r\n }\r\n </React.Fragment>\r\n )\r\n});\r\n\r\nexport default PivotTable;","import React from \"react\";\r\nimport { DashboardDataBinding } from \"../../../../types/DashboardDataBinding\";\r\nimport { DataPointSelection } from \"../../../../types/SeriesMeasure\";\r\nimport { ReactWidgetPM } from \"../../../../types/widget\";\r\nimport KpiChart from \"./KpiChart\";\r\nimport TableChart from \"./TableChart\";\r\nimport PivotTable from \"./PivotGrid\";\r\n\r\n\r\nexport type CustomChartProps = {\r\n widget: ReactWidgetPM | undefined,\r\n widgetRef: ReactWidgetPM | undefined,\r\n dataBinding: DashboardDataBinding;\r\n isPreviewModeActive?:boolean;\r\n isInEditMode?:boolean;\r\n onSelectDataPoint: (dataPointSelection: DataPointSelection) => void;\r\n onShowError?: (errorMsg: string | null) => void;\r\n};\r\n\r\n\r\n\r\nconst CustomChart = (props: CustomChartProps) => {\r\n const project = () => {\r\n switch (props.widget?.TypeCode) {\r\n case \"kpi\": return <KpiChart customChartProps={props} />;\r\n case \"table\": return <TableChart customChartProps={props} />;\r\n case \"pivot\": return <PivotTable customChartProps={props} />;\r\n \r\n default: return <div>Invalid Type</div>;\r\n }\r\n }\r\n\r\n return (\r\n <React.Fragment>\r\n <div className={`dl-custom-chart-container ${props.widget && props.widget?.TypeCode == 'table' ? 'dl-table-chart-container' : ''} ${props.widget && props.widget?.TypeCode == 'pivot' ? 'dl-pivot-chart-container' : ''}`}>{project()}</div>\r\n </React.Fragment>\r\n );\r\n}\r\n\r\n\r\nexport default CustomChart;","import { FieldDataType } from \"../../../../Constant/FieldDataType\";\r\nimport { MeasureCode } from \"../../../../Constant/MeasureCode\";\r\nimport { getNumberInSystemLocalFormat, isNullOrUndefined } from \"../../../../Utils/General\";\r\nimport { SeriesMeasure } from \"../../../../types/SeriesMeasure\";\r\nimport { ReactWidgetPM } from \"../../../../types/widget\";\r\n\r\nexport function buildToolTip(widget: ReactWidgetPM, value: any, seriesMeasure: SeriesMeasure, label: any, index: number , groupbyId : string | null = null, secGroupbyId : string | null = null): string {\r\n var padding = (widget.TypeCode == 'line' && index > 0) ? 'padding-top: 3px' : '';\r\n \r\n let customToolTip = `\r\n <div style=\"min-width: 108px;` + padding + `\">\r\n\r\n <div style=\"display: flex;align-items: center;margin-bottom: 6px;\">\r\n <span style=\"margin: 0; min-height: 10px; min-width: 10px; height: 10px; width: 10px; background-color: transparent; border-radius: 50%; display: inline-block;\"></span>\r\n <p style=\" margin: 0; margin-left: 4px; white-space: pre-line; font-family: 'Manrope'; font-style: normal;font-weight: 400; font-size: 11px; line-height: 100%; color: #323232;\"> ` + getTooltiplabel(label, seriesMeasure) + `</p>\r\n </div>\r\n\r\n <hr style=\"margin: 0;border-top: 1px solid #F0F0F0;\">\r\n\r\n <div style=\"display: flex;align-items: center;margin:0;margin-top: 6px;\">\r\n <p style=\"margin: 0;font-family: 'Manrope'; white-space: pre-line; font-style: normal;font-weight: 400; font-size: 11px;line-height: 100%;color: #A4A4A4;\"> ` + getMeasureType(seriesMeasure) + `</p>\r\n <p style=\"margin: 0;margin-left: 6px; white-space: pre-line; font-family: 'Manrope';font-style: normal;font-weight: 500;font-size: 11px;line-height: 100%; color: #A4A4A4;\">` + getTooltipValue(value, seriesMeasure) + `</p>\r\n ` + getPieDonutToolTipPercentage(widget,seriesMeasure,groupbyId,secGroupbyId) +\r\n ` </div> `;\r\n\r\n if(RenderStackedChartTotalsAndPercentages(widget,seriesMeasure)){\r\n\r\n customToolTip += \r\n `<div>\r\n\r\n <hr style=\"margin-top: 6px;border-top: 1px solid #F0F0F0;\">\r\n\r\n <div style=\"display: flex; flex-direction: column; gap: 6px; flex-d align-items: center;margin:0;margin-top: 6px;\">\r\n <p style=\"margin: 0;font-family: 'Manrope'; white-space: pre-line; font-style: normal;font-weight: 400; font-size: 11px;line-height: 100%;color: #A4A4A4;\"> ` + getGroupValuePercentage(seriesMeasure,groupbyId,secGroupbyId) + `</p>\r\n </div>\r\n\r\n <hr style=\"margin-top: 6px;border-top: 1px solid #F0F0F0;\">\r\n\r\n <div style=\"display: flex; flex-direction: column; gap: 6px; flex-d align-items: center;margin:0;margin-top: 6px;\">\r\n <p style=\"margin: 0;white-space: pre-line; font-family: 'Manrope';font-style: normal;font-weight: 500;font-size: 11px;line-height: 100%; color: #A4A4A4;\">` + getSumOfGroupValues(seriesMeasure,groupbyId) + `</p>\r\n </div>\r\n\r\n </div>`\r\n } \r\n \r\n customToolTip += `</div>`;\r\n\r\n return customToolTip;\r\n}\r\n\r\nfunction RenderStackedChartTotalsAndPercentages(widget: ReactWidgetPM , seriesMeasures: SeriesMeasure){\r\n\r\n if(!widget || !seriesMeasures || !seriesMeasures.MeasureCode){\r\n return false;\r\n }\r\n\r\n return widget.IsStacked && (seriesMeasures.MeasureCode === MeasureCode.Count || seriesMeasures.MeasureCode === MeasureCode.Sum);\r\n}\r\n\r\nfunction getGroupValuePercentage(seriesMeasures: SeriesMeasure, groupbyId: string | null , secGroupbyId: string | null) {\r\n\r\n if(!seriesMeasures){\r\n return;\r\n }\r\n\r\n let percentageValueInLocalFormat = getPercentageGroupValueAsNumber(seriesMeasures,groupbyId,secGroupbyId);\r\n\r\n return `<span style=\"margin-right:6px;\">Percentage:</span>${percentageValueInLocalFormat}%`;\r\n}\r\n\r\nfunction getSumOfGroupValues(seriesMeasure: SeriesMeasure, groupbyId: string | null) {\r\n \r\n if(!seriesMeasure){\r\n return \"\";\r\n }\r\n\r\n let total = getSumOfGroupValuesAsNumber(seriesMeasure,groupbyId);\r\n\r\n return `<span style=\"margin-right:6px;\">Total:</span>${getNumberInSystemLocalFormat(total,2,0)}`;\r\n}\r\n\r\nfunction getPercentageGroupValueAsNumber(seriesMeasure: SeriesMeasure, groupbyId: string | null, secGroupbyId: string | null) {\r\n \r\n if(!seriesMeasure){\r\n return;\r\n }\r\n\r\n let total = getSumOfGroupValuesAsNumber(seriesMeasure,groupbyId);\r\n\r\n let value = seriesMeasure.Values.filter(v => v.GroupById === groupbyId && v.GroupByIdSec === secGroupbyId)[0]?.Value;\r\n\r\n let percentageValueInLocalFormat = \"0.00\";\r\n\r\n if(total !== 0 && value){\r\n\r\n percentageValueInLocalFormat = getNumberInSystemLocalFormat(((value/total) * 100),2,0,false);\r\n\r\n }\r\n\r\n return percentageValueInLocalFormat;\r\n}\r\n\r\nfunction getSumOfValuesAsNumber(seriesMeasure: SeriesMeasure) {\r\n \r\n if(!seriesMeasure){\r\n return 0;\r\n }\r\n\r\n let total = 0;\r\n\r\n seriesMeasure.Values.forEach(v => {\r\n\r\n total += v.Value;\r\n\r\n });\r\n\r\n return total;\r\n}\r\n\r\nfunction getSumOfGroupValuesAsNumber(seriesMeasure: SeriesMeasure, groupbyId: string | null) {\r\n \r\n if(!seriesMeasure){\r\n return 0;\r\n }\r\n\r\n let total = 0;\r\n\r\n seriesMeasure.Values.filter(v => v.GroupById === groupbyId).forEach(v => {\r\n\r\n total += v.Value;\r\n\r\n });\r\n\r\n return total;\r\n}\r\n\r\nfunction getPieDonutToolTipPercentage(widget: ReactWidgetPM, seriesMeasures: SeriesMeasure, groupbyId: string | null , secGroupbyId: string | null): string {\r\n if (widget.TypeCode != \"donut\" && widget.TypeCode != \"pie\") return \"\";\r\n\r\n if(!seriesMeasures){\r\n return \"\";\r\n }\r\n\r\n let percentageValueInLocalFormat = getDonutPiePercentageGroupValueAsNumber(seriesMeasures,groupbyId,secGroupbyId);\r\n\r\n return `<p style=\"margin: 0;margin-left: 2px;font-family: 'Manrope';font-style: normal;font-weight: 500;font-size: 11px;line-height: 100%; color: #A4A4A4;flex: none; order: 1;flex-grow: 0;\">(${percentageValueInLocalFormat})%</p>`;\r\n}\r\n\r\nfunction getDonutPiePercentageGroupValueAsNumber(seriesMeasure: SeriesMeasure, groupbyId: string | null, secGroupbyId: string | null) {\r\n \r\n if(!seriesMeasure){\r\n return;\r\n }\r\n\r\n let total = getSumOfValuesAsNumber(seriesMeasure);\r\n\r\n let value = seriesMeasure.Values.filter(v => v.GroupById === groupbyId && v.GroupByIdSec === secGroupbyId)[0]?.Value;\r\n\r\n let percentageValueInLocalFormat = \"0.00\";\r\n\r\n if(total !== 0 && value){\r\n\r\n percentageValueInLocalFormat = getNumberInSystemLocalFormat(((value/total) * 100),2,0,false);\r\n\r\n }\r\n\r\n return percentageValueInLocalFormat;\r\n}\r\n\r\nfunction getTooltiplabel(value: any, seriesMeasure: SeriesMeasure): string {\r\n if (value) return value;\r\n if (seriesMeasure && seriesMeasure.Name) return '$label' + \" - \" + seriesMeasure.Name;\r\n return '$label';\r\n}\r\n\r\nfunction getTooltipValue(value: any, seriesMeasure: SeriesMeasure): string | number {\r\n\r\n if(isNullOrUndefined(value)){\r\n return '$dataValue';\r\n }\r\n\r\n if(FieldDataType.isPercentage(seriesMeasure?.MeasureFieldDataType)){\r\n\r\n return getNumberInSystemLocalFormat(value,2,0) + \"%\";\r\n\r\n }\r\n\r\n return getNumberInSystemLocalFormat(value,2,0);\r\n}\r\n\r\nfunction getMeasureType(seriesMeasure:SeriesMeasure): string {\r\n if (!seriesMeasure.Name) return \"Count:\"\r\n if(seriesMeasure.MeasureCode == \"Formula\"){\r\n var formula =JSON.parse(seriesMeasure.Formula)\r\n return formula.Name;\r\n }\r\n return seriesMeasure.Name.replace(/ .*/, '') + \":\";\r\n}\r\n\r\n\r\n","import { getLabelFormatByDateGroupType } from \"../../../../Utils/DateHelper\";\r\nimport { getTruncatedValue } from \"../../../../Utils/General\";\r\nimport { SeriesMeasure } from \"../../../../types/SeriesMeasure\";\r\nimport { ReactWidgetPM } from \"../../../../types/widget\";\r\nimport { ChartInfo } from \"./FusionChartObjectHelper\";\r\nimport { buildToolTip } from \"./FusionChartTooltip\";\r\n\r\nvar months = [\"Jan\", \"Feb\", \"Mar\", \"Apr\", \"May\", \"Jun\", \"Jul\", \"Aug\", \"Sep\", \"Oct\", \"Nov\", \"Dec\"];\r\nvar quarters = [\"Q\", \"Q1\", \"Q2\", \"Q3\", \"Q4\"];\r\n\r\nexport function getCategoriesBasedDataSource(chartInfo: ChartInfo, seriesMeasures: SeriesMeasure[], widget: ReactWidgetPM): any {\r\n if (seriesMeasuresIsEmpty(seriesMeasures)) return null;\r\n\r\n handelNullLabels(seriesMeasures);\r\n return {\r\n chart: chartInfo,\r\n categories: buildCategories(seriesMeasures, widget),\r\n dataset: buildDataSet(seriesMeasures, widget)\r\n }\r\n}\r\n\r\nexport function getStackedDataSource(chartInfo: ChartInfo, seriesMeasures: SeriesMeasure[], widget: ReactWidgetPM): any {\r\n if (seriesMeasuresIsEmpty(seriesMeasures)) return null;\r\n\r\n handelNullLabels(seriesMeasures);\r\n return {\r\n chart: chartInfo,\r\n categories: buildStackedCategories(seriesMeasures, widget),\r\n dataset: buildStackedDataSet(seriesMeasures, widget)\r\n }\r\n}\r\n\r\n\r\nexport function getSimpleDataSource(chartInfo: ChartInfo, seriesMeasures: SeriesMeasure[], widget: ReactWidgetPM): any {\r\n if (seriesMeasuresIsEmpty(seriesMeasures)) return null;\r\n\r\n handelNullLabels(seriesMeasures);\r\n return {\r\n chart: chartInfo,\r\n data: buildDataSource(seriesMeasures, widget)\r\n }\r\n}\r\n\r\n\r\nfunction handelNullLabels(seriesMeasures: SeriesMeasure[]) {\r\n seriesMeasures.forEach(element => {\r\n element.Values.forEach(value => {\r\n if (!value.Label || value.Label == '')\r\n value.Label = 'Not defined'\r\n });\r\n });\r\n}\r\n\r\nfunction seriesMeasuresIsEmpty(seriesMeasures: SeriesMeasure[]): boolean {\r\n if (!seriesMeasures || seriesMeasures.length == 0) return true;\r\n let hasValue = false;\r\n seriesMeasures.forEach(item => {\r\n if (item.Values && item.Values.length > 0) hasValue = true;\r\n });\r\n return !hasValue;\r\n}\r\n\r\nfunction buildDataSource(values: SeriesMeasure[], widget: ReactWidgetPM) {\r\n\r\n let data: any[] = [];\r\n\r\n if (!values || !values[0]) return data;\r\n\r\n var series = values[0];\r\n\r\n data = series.Values.map((e) => {\r\n let item = {\r\n value: getTruncatedValue(e.Value),\r\n label: getLabelFormatByDateGroupType(e.Label, widget, false),\r\n id: {\r\n GroupById: e.GroupById,\r\n MeasureFieldId: series.MeasureFieldId,\r\n MeasureCode: series.MeasureCode,\r\n Formula: series.Formula\r\n },\r\n tooltext: buildToolTip(widget, e.Value, series, e.Label, 0,e.GroupById,e.GroupByIdSec),\r\n }\r\n return item;\r\n });\r\n return data;\r\n}\r\n\r\nfunction buildDataSet(seriesMeasures: SeriesMeasure[], widget: ReactWidgetPM) {\r\n let dataSet: any[] = [];\r\n let seriesPosition = 1;\r\n seriesMeasures.forEach(seriesMeasure => {\r\n\r\n \r\n let datas = seriesMeasure.Values.map((e, index) => {\r\n return {\r\n value: getTruncatedValue(e.Value),\r\n id: {\r\n GroupById: e.GroupById,\r\n MeasureFieldId: seriesMeasure.MeasureFieldId,\r\n MeasureCode: seriesMeasure.MeasureCode,\r\n Formula: seriesMeasure.Formula\r\n },\r\n tooltext: buildToolTip(widget, e.Value, seriesMeasure, null, index),\r\n }\r\n });\r\n dataSet.push({\r\n data: datas,\r\n seriesname: seriesMeasure.Name,\r\n anchorBgColor: \"inherit\",\r\n anchorBorderColor: \"#FFFFFF\",\r\n anchorBorderThickness: \"2\",\r\n anchorHoverColor: \"inherit\",\r\n parentyaxis: seriesMeasure.PlotasLineChart && seriesMeasure.PlotonSecondAxis ? 'S' : \"P\",\r\n renderAs: seriesMeasure.PlotasLineChart ? 'line' : \"column\",\r\n });\r\n seriesPosition++;\r\n });\r\n return dataSet;\r\n}\r\n\r\nfunction buildStackedDataSet(seriesMeasures: SeriesMeasure[], widget: ReactWidgetPM) {\r\n let dataSet: any[] = [];\r\n let seriesPosition = 1;\r\n\r\n var series = seriesMeasures[0];\r\n\r\n const uniqueGroups: any[] = [];\r\n\r\n series.Values.forEach(element => {\r\n if (!uniqueGroups.find(x => x.code == element.GroupByIdSec))\r\n uniqueGroups.push({ code: element.GroupByIdSec, label: getLabelFormatByDateGroupType(element.LabelSec, widget, true) })\r\n });\r\n\r\n uniqueGroups.forEach(group => {\r\n dataSet.push({\r\n seriesName: group.label,\r\n data: buildStackedGroupData(group, series, widget)\r\n });\r\n seriesPosition++;\r\n });\r\n \r\n let emptylabels = dataSet.filter(e=>e.seriesName == null);\r\n let filledLabels = dataSet.filter(e=>e.seriesName != null);\r\n\r\n dataSet = widget.SecondaryDateGroupCode ? sortDataSet(filledLabels, widget.SecondaryDateGroupCode!) : filledLabels;\r\n return emptylabels.concat(dataSet);\r\n}\r\n\r\nfunction sortDataSet(dataSet: any[], SecondaryDateGroupCode: string) {\r\n switch (SecondaryDateGroupCode) {\r\n case \"Year\":\r\n return dataSet.sort((s1, s2) => s1.seriesName - s2.seriesName);\r\n case \"Month\":\r\n return dataSet.sort(function (s1, s2) {\r\n return months.indexOf(s1.seriesName) - months.indexOf(s2.seriesName);\r\n });\r\n case \"Quarter\":\r\n return dataSet.sort(function (s1, s2) {\r\n return quarters.indexOf(s1.seriesName) - quarters.indexOf(s2.seriesName);\r\n });\r\n case \"Month & Year\": return dataSet.sort(function sort(s1, s2) {\r\n var aa = s1.seriesName.split(' '),\r\n bb = s2.seriesName.split(' ');\r\n return aa[1] - bb[1] || months.indexOf(aa[0]) - months.indexOf(bb[0]);\r\n });\r\n case \"Quarter & Year\": return dataSet.sort(function sort(s1, s2) {\r\n var aa = s1.seriesName.split(' '),\r\n bb = s2.seriesName.split(' ');\r\n return aa[1] - bb[1] || quarters.indexOf(aa[0]) - quarters.indexOf(bb[0]);\r\n });\r\n default:\r\n return dataSet;\r\n }\r\n}\r\n\r\nfunction buildStackedGroupData(secGroup: any, series: SeriesMeasure, widget: ReactWidgetPM) {\r\n\r\n const uniqueGroups: any[] = getUniqueGroupOrderdList(series);\r\n\r\n let data: any[] = [];\r\n uniqueGroups.forEach(group => {\r\n let value = series.Values.find(x => x.GroupById == group.code && x.GroupByIdSec == secGroup.code)?.Value;\r\n data.push({\r\n value: getTruncatedValue(value),\r\n id: {\r\n GroupById: group.code,\r\n MeasureFieldId: series.MeasureFieldId,\r\n GroupByIdSec: secGroup.code,\r\n MeasureCode: series.MeasureCode,\r\n Formula: series.Formula\r\n },\r\n tooltext: buildToolTip(widget, null, series, group.label + \" - \" + secGroup.label, 0 ,group.code , secGroup.code),\r\n })\r\n });\r\n\r\n return data;\r\n}\r\n\r\nfunction buildCategories(seriesMeasures: SeriesMeasure[], widget: ReactWidgetPM) {\r\n var categories = seriesMeasures[0].Values.map((e) => {\r\n return {\r\n label: getLabelFormatByDateGroupType(e.Label, widget, false)\r\n }\r\n });\r\n var result: any[] = [];\r\n result.push({ category: categories });\r\n return result;\r\n}\r\n\r\nfunction buildStackedCategories(seriesMeasures: SeriesMeasure[], widget: ReactWidgetPM) {\r\n const uniqueGroups: any[] = getUniqueGroupOrderdList(seriesMeasures[0]);\r\n\r\n var categories = uniqueGroups.map((e) => {\r\n return {\r\n label: getLabelFormatByDateGroupType(e.label, widget, false)\r\n }\r\n });\r\n var result: any[] = [];\r\n result.push({ category: categories });\r\n return result;\r\n}\r\n\r\nfunction getUniqueGroupOrderdList(series: SeriesMeasure) {\r\n let uniqueGroups: any[] = [];\r\n series.Values.forEach(element => {\r\n if (!uniqueGroups.find(x => x.code == element.GroupById))\r\n uniqueGroups.push({ code: element.GroupById, label: element.Label });\r\n });\r\n return uniqueGroups;\r\n}\r\n\r\n","import { ChartObject } from \"fusioncharts\";\r\nimport { SeriesMeasure } from \"../../../../types/SeriesMeasure\";\r\nimport { ReactWidgetPM } from \"../../../../types/widget\";\r\nimport { getCategoriesBasedDataSource, getSimpleDataSource, getStackedDataSource } from \"./FusionChartDataSoruceBuilder\";\r\nimport { ChartInfo } from \"./FusionChartObjectHelper\";\r\nimport { getGlobalNumberFormatting, getTruncatedValue, isNullOrUndefined, isNullOrUndefinedOrEmpty} from \"../../../../Utils/General\";\r\n\r\nconst defautFontSize = \"12\";\r\nconst defautFont = \"Manrope\";\r\nconst defautColor = \"#323232\";\r\n\r\n\r\nexport function BuildFusionChartObject(seriesMeasures: SeriesMeasure[], widget: ReactWidgetPM): ChartObject {\r\n switch (widget?.TypeCode) {\r\n case 'bar':\r\n if (!widget.SecondaryGroupById) return getBarObject(seriesMeasures, widget);\r\n return getStackedBarObject(seriesMeasures, widget);\r\n case 'line':\r\n if (!widget.SecondaryGroupById) return getLineObject(seriesMeasures, widget);\r\n return getClusteredLineObject(seriesMeasures, widget);\r\n case 'pie':\r\n return getPieObject(seriesMeasures, widget);\r\n case 'donut':\r\n return getDonutObject(seriesMeasures, widget);\r\n case 'column':\r\n if (!widget.SecondaryGroupById) return getColumnObject(seriesMeasures, widget);\r\n return getClusteredColumnObject(seriesMeasures, widget); \r\n default:\r\n return {};\r\n }\r\n}\r\n\r\nconst getWidgetRanges = (widget: ReactWidgetPM, value : any) => {\r\n let gaugeRanges = widget.GaugeRanges && widget.GaugeRanges.length > 0 ? JSON.parse(widget.GaugeRanges) : null;\r\n\r\n if(gaugeRanges == null || isNullOrUndefinedOrEmpty(value)) return [];\r\n\r\n if(value < gaugeRanges[0].minValue) {\r\n gaugeRanges[0].minValue = value;\r\n } \r\n\r\n if(value > gaugeRanges[2].maxValue) {\r\n gaugeRanges[2].maxValue = value;\r\n } \r\n\r\n return gaugeRanges;\r\n}\r\n\r\nexport const getGaugeObject = (data: any, widget: ReactWidgetPM) => {\r\n let fusionObject = getDefaultChartobject();\r\n fusionObject.type = 'angulargauge'\r\n let chartInfo = getDefaultChartInfo(widget);\r\n \r\n chartInfo.manageResize = \"1\";\r\n chartInfo.valueBelowPivot = \"1\";\r\n chartInfo.showValue = \"1\";\r\n chartInfo.autoScale = \"1\";\r\n chartInfo.chartTopMargin = \"0\";\r\n chartInfo.chartBottomMargin = \"0\";\r\n chartInfo.chartLeftMargin = \"0\";\r\n chartInfo.chartRightMargin = \"0\";\r\n\r\n let value = !isNullOrUndefined(data) && !isNullOrUndefined(data?.Value) ? data?.Value : 0;\r\n\r\n fusionObject.dataSource = {\r\n \"chart\" : chartInfo,\r\n \"colorRange\": {\r\n \"color\" : getWidgetRanges(widget, !isNullOrUndefined(data) && !isNullOrUndefined(data?.Value) ? data?.Value : 0)\r\n },\r\n \"dials\": {\r\n \"dial\": [{\r\n \"value\": getTruncatedValue(value),\r\n }]\r\n }\r\n }\r\n\r\n return fusionObject;\r\n}\r\n\r\nfunction getBarObject(seriesMeasures: SeriesMeasure[], widget: ReactWidgetPM): ChartObject {\r\n let chart = getDefaultChartobject();\r\n chart.type = isGroupByFieldDateTime(widget.GroupByFieldDataType) ? \"msbar2d\" : \"scrollbar2d\";\r\n\r\n let chartInfo = getDefaultChartInfo(widget);\r\n chartInfo.scrollPosition = \"right\";\r\n chartInfo.scrollPadding = \"8\";\r\n chartInfo.flatScrollBars = \"1\";\r\n chartInfo.showPercentValues = widget.ShowValueAsNumber ? \"0\" : \"1\";\r\n chartInfo.showLegend = widget.ShowLegend ? '1' : '0';\r\n setLineDash(chartInfo);\r\n chartInfo.chartTopMargin = \"10\";\r\n chartInfo.chartBottomMargin = \"10\";\r\n chartInfo.legendPosition = getWidgetLegendPosition(widget);\r\n\r\n chart.dataSource = getCategoriesBasedDataSource(chartInfo, seriesMeasures, widget);\r\n return chart;\r\n}\r\n\r\nfunction getStackedBarObject(seriesMeasures: SeriesMeasure[], widget: ReactWidgetPM): ChartObject {\r\n let chart = getDefaultChartobject();\r\n\r\n if(widget.IsStacked){\r\n chart.type = isGroupByFieldDateTime(widget.GroupByFieldDataType) ? \"stackedbar2d\" : \"scrollstackedbar2d\";\r\n }else {\r\n chart.type = isGroupByFieldDateTime(widget.GroupByFieldDataType) ? \"msbar2d\" : \"scrollbar2d\";\r\n }\r\n\r\n let chartInfo = getDefaultChartInfo(widget);\r\n chartInfo.scrollPosition = \"right\";\r\n chartInfo.scrollPadding = \"8\";\r\n chartInfo.flatScrollBars = \"1\";\r\n chartInfo.showPercentValues = widget.ShowValueAsNumber ? \"0\" : \"1\";\r\n chartInfo.showLegend = widget.ShowLegend ? '1' : '0';\r\n setLineDash(chartInfo);\r\n chartInfo.chartTopMargin = \"10\";\r\n chartInfo.chartBottomMargin = \"10\";\r\n chartInfo.legendPosition= getWidgetLegendPosition(widget);\r\n\r\n chart.dataSource = getStackedDataSource(chartInfo, seriesMeasures, widget);\r\n return chart;\r\n}\r\n\r\nfunction getClusteredColumnObject(seriesMeasures: SeriesMeasure[], widget: ReactWidgetPM): ChartObject {\r\n let chart = getDefaultChartobject();\r\n\r\n if(widget.IsStacked){\r\n chart.type = isGroupByFieldDateTime(widget.GroupByFieldDataType) ? \"stackedcolumn2d\" : \"scrollstackedcolumn2d\";\r\n }else {\r\n chart.type = isGroupByFieldDateTime(widget.GroupByFieldDataType) ? \"mscolumn2d\" : \"scrollcolumn2d\";\r\n }\r\n\r\n let chartInfo = getDefaultChartInfo(widget);\r\n chartInfo.scrollPosition = \"top\";\r\n chartInfo.scrollPadding = \"8\";\r\n chartInfo.flatScrollBars = \"1\";\r\n chartInfo.showPercentValues = widget.ShowValueAsNumber ? \"0\" : \"1\";\r\n chartInfo.showLegend = widget.ShowLegend ? '1' : '0';\r\n setLineDash(chartInfo);\r\n \r\n chartInfo.chartTopMargin = \"10\";\r\n chartInfo.chartBottomMargin = \"10\";\r\n chartInfo.legendPosition= getWidgetLegendPosition(widget);\r\n chart.dataSource = getStackedDataSource(chartInfo, seriesMeasures, widget);\r\n return chart;\r\n}\r\n\r\nfunction getClusteredLineObject(seriesMeasures: SeriesMeasure[], widget: ReactWidgetPM): ChartObject {\r\n let chart = getDefaultChartobject();\r\n chart.type = isGroupByFieldDateTime(widget.GroupByFieldDataType) ? \"msline\" : \"scrollline2d\";\r\n\r\n let chartInfo = getDefaultChartInfo(widget);\r\n chartInfo.scrollPosition = \"top\"; \r\n chartInfo.scrollPadding = \"8\";\r\n chartInfo.flatScrollBars = \"1\";\r\n chartInfo.showPercentValues = widget.ShowValueAsNumber ? \"0\" : \"1\";\r\n chartInfo.showLegend = widget.ShowLegend ? '1' : '0';\r\n setLineDash(chartInfo);\r\n \r\n chartInfo.chartTopMargin = \"10\";\r\n chartInfo.chartBottomMargin = \"10\";\r\n chartInfo.legendPosition= getWidgetLegendPosition(widget);\r\n\r\n chart.dataSource = getStackedDataSource(chartInfo, seriesMeasures, widget);\r\n return chart;\r\n}\r\n\r\n\r\nfunction getLineObject(seriesMeasures: SeriesMeasure[], widget: ReactWidgetPM): ChartObject {\r\n let chart = getDefaultChartobject();\r\n chart.type = isGroupByFieldDateTime(widget.GroupByFieldDataType) ? \"msline\" : \"scrollline2d\";\r\n \r\n let chartInfo = getDefaultChartInfo(widget);\r\n chartInfo.scrollPosition = \"top\";\r\n chartInfo.scrollPadding = \"8\";\r\n chartInfo.flatScrollBars = \"1\";\r\n chartInfo.showPercentValues = widget.ShowValueAsNumber ? \"0\" : \"1\";\r\n chartInfo.showLegend = widget.ShowLegend ? '1' : '0';\r\n setLineDash(chartInfo);\r\n chartInfo.chartTopMargin = \"20\";\r\n chartInfo.chartBottomMargin = \"10\";\r\n chartInfo.chartLeftMargin = \"20\";\r\n chartInfo.chartRightMargin = \"50\";\r\n chartInfo.anchorradius = \"5\";\r\n chartInfo.canvasBottomPadding = \"10\";\r\n chartInfo.canvasTopPadding = \"10\";\r\n chartInfo.legendPosition = getWidgetLegendPosition(widget);\r\n\r\n chart.dataSource = getCategoriesBasedDataSource(chartInfo, seriesMeasures, widget);\r\n return chart;\r\n}\r\n\r\nfunction getDonutObject(seriesMeasures: SeriesMeasure[], widget: ReactWidgetPM): ChartObject {\r\n let chart = getDefaultChartobject();\r\n chart.type = \"doughnut2d\";\r\n\r\n let chartInfo = getDefaultChartInfo(widget);\r\n chartInfo.labelFontSize = defautFontSize;\r\n chartInfo.labelFont = defautFont;\r\n chartInfo.manageLabelOverflow = \"1\";\r\n chartInfo.useEllipsesWhenOverflow = \"1\";\r\n chartInfo.enableSmartLabels = \"1\";\r\n chartInfo.legendPosition = getWidgetLegendPosition(widget);\r\n\r\n setPieDonutLegends(chartInfo, widget);\r\n chart.dataSource = getSimpleDataSource(chartInfo, seriesMeasures, widget);\r\n return chart;\r\n}\r\n\r\nfunction getPieObject(seriesMeasures: SeriesMeasure[], widget: ReactWidgetPM): ChartObject {\r\n let chart = getDefaultChartobject();\r\n chart.type = \"pie2d\";\r\n\r\n let chartInfo = getDefaultChartInfo(widget);\r\n chartInfo.labelFontSize = defautFontSize;\r\n chartInfo.labelFont = defautFont;\r\n chartInfo.manageLabelOverflow = \"1\";\r\n chartInfo.useEllipsesWhenOverflow = \"1\";\r\n chartInfo.enableSmartLabels = \"1\";\r\n setPieDonutLegends(chartInfo, widget);\r\n chart.dataSource = getSimpleDataSource(chartInfo, seriesMeasures, widget);\r\n chartInfo.legendPosition = getWidgetLegendPosition(widget);\r\n return chart;\r\n}\r\n\r\nconst isGroupByFieldDateTime = (GroupByFieldDataType : any)=> {\r\n return GroupByFieldDataType == \"DateTime\" || GroupByFieldDataType == \"Date\";\r\n}\r\n\r\nconst isFirstMeasureTypePercentage = (widget: ReactWidgetPM) => {\r\n return widget && widget.WidgetMeasures && widget.WidgetMeasures[0] && widget.WidgetMeasures[0].MeasureFieldDataType && widget.WidgetMeasures[0].MeasureFieldDataType == 'Percentage';\r\n}\r\n\r\nconst isSecondMeasureTypePercentage = (widget: ReactWidgetPM) => {\r\n return widget && widget.WidgetMeasures && widget.WidgetMeasures[1] && widget.WidgetMeasures[1].MeasureFieldDataType && widget.WidgetMeasures[1].MeasureFieldDataType == 'Percentage';\r\n}\r\n\r\nfunction getColumnObject(seriesMeasures: SeriesMeasure[], widget: ReactWidgetPM): ChartObject {\r\n let chart = getDefaultChartobject();\r\n chart.type = isGroupByFieldDateTime(widget.GroupByFieldDataType) ? \"mscombidy2d\" : \"scrollcombidy2d\";\r\n\r\n let chartInfo = getDefaultChartInfo(widget);\r\n chartInfo.scrollPadding = \"8\";\r\n chartInfo.flatScrollBars = \"1\";\r\n chartInfo.showPercentValues = widget.ShowValueAsNumber ? \"0\" : \"1\";\r\n chartInfo.showLegend = widget.ShowLegend ? '1' : '0';\r\n chartInfo.scrollPosition = \"top\";\r\n setLineDash(chartInfo);\r\n chartInfo.chartTopMargin = \"20\";\r\n chartInfo.chartBottomMargin = \"10\";\r\n chartInfo.chartLeftMargin = \"20\";\r\n chartInfo.chartRightMargin = \"50\";\r\n chartInfo.canvasBottomPadding = \"10\";\r\n setDualyAxis(chartInfo, widget, seriesMeasures);\r\n chart.dataSource = getCategoriesBasedDataSource(chartInfo, seriesMeasures, widget);\r\n chartInfo.legendPosition = getWidgetLegendPosition(widget);\r\n\r\n return chart;\r\n}\r\n\r\nfunction setLineDash(chartInfo: ChartInfo) {\r\n chartInfo.divLineDashed = \"1\";\r\n chartInfo.divLineDashLen = \"5\";\r\n chartInfo.divLineDashGap = \"5\";\r\n chartInfo.divLineColor = \"#E7E7E7\";\r\n chartInfo.divLineAlpha = \"100\";\r\n chartInfo.divLineThickness = \"1\";\r\n}\r\n\r\n\r\nfunction getDefaultChartobject(): ChartObject {\r\n let chart = {} as ChartObject;\r\n chart.type = \"column2d\";\r\n chart.width = \"100%\";\r\n chart.height = \"100%\";\r\n chart.dataFormat = \"json\";\r\n return chart;\r\n}\r\n\r\nconst getXaxisTitle = (widget: ReactWidgetPM) => {\r\n if(widget.TypeCode == 'bar'){\r\n return widget.ShowYAxisTitle ? widget.YAxisTitle || \"\" : \"\"\r\n }\r\n\r\n return widget.XAxisTitle || \"\";\r\n}\r\n\r\nconst getYaxisTitle = (widget: ReactWidgetPM) => {\r\n if(widget.TypeCode == 'bar'){\r\n return widget.ShowXAxisTitle ? widget.XAxisTitle || \"\" : \"\"\r\n }\r\n \r\n return widget.YAxisTitle || \"\";\r\n}\r\n\r\nfunction getDefaultChartInfo(widget: ReactWidgetPM): ChartInfo {\r\n let chart = {} as ChartInfo;\r\n chart.theme = \"fusion\";\r\n chart.baseFont = defautFont;\r\n chart.baseFontSize = defautFontSize;\r\n chart.baseFontColor = defautColor;\r\n chart.legendCaptionFontSize = defautFontSize;\r\n chart.legendCaptionFontColor = defautColor;\r\n chart.legendCaptionFont = defautFont;\r\n chart.labelFontColor = defautColor;\r\n chart.labelFont = defautFont;\r\n chart.legendItemFont = defautFont;\r\n chart.legendItemFontSize = defautFontSize;\r\n chart.sYAxisNameFont = defautFont;\r\n chart.sYAxisNameFontSize = defautFontSize;\r\n chart.sYAxisNameFontColor = defautColor;\r\n\r\n chart.pYAxisNameFont = defautFont;\r\n chart.pYAxisNameFontSize = defautFontSize;\r\n chart.pYAxisNameFontColor = defautColor;\r\n\r\n chart.xAxisNameFont = defautFont;\r\n chart.xAxisNameFontSize = defautFontSize;\r\n chart.xAxisNameFontColor = defautColor;\r\n\r\n chart.yAxisNameFont = defautFont;\r\n chart.yAxisNameFontSize = defautFontSize;\r\n chart.yAxisNameFontColor = defautColor;\r\n chart.drawCrossLine = \"0\";\r\n \r\n chart.xAxisName = widget.ShowXAxisTitle && widget.XAxisTitle ? widget.XAxisTitle : \"\";\r\n chart.yAxisName = widget.ShowYAxisTitle && widget.YAxisTitle ? widget.YAxisTitle : \"\";\r\n chart.labelDisplay = widget.XAxisLabelsDisplay ? widget.XAxisLabelsDisplay : \"Auto\";\r\n chart.slantLabel = \"1\"\r\n chart.labelFontSize = widget.XAxisLabelsFontSize ? widget.XAxisLabelsFontSize + \"\" : \"10\";\r\n\r\n chart.showValues = widget.ShowValue ? \"1\" : '0';\r\n chart.valuePosition = widget.ShowValue && widget.ValuePosition ? widget.ValuePosition : 'Outside';\r\n\r\n let isValuePositionInside = widget.ShowValue && widget.ValuePosition && widget.ValuePosition.toLowerCase() == 'inside';\r\n\r\n if(widget.ShowValue && widget.ValuePosition && isColumnOrBarChart(widget)) { \r\n chart.placeValuesInside = widget.ValuePosition.toLowerCase() == 'inside' ? \"1\" : \"0\"\r\n }\r\n\r\n if(widget.IsStacked && isValuePositionInside && isColumnOrBarChart(widget)) { \r\n chart.minPlotHeightForValue = \"35\"\r\n }\r\n\r\n if(isValuePositionInside && isPieOrDonutChart(widget)) { \r\n chart.minAngleForValue = \"27\"\r\n }\r\n\r\n chart.numberSuffix = isFirstMeasureTypePercentage(widget) ? \"%\" : null;\r\n\r\n let _numberSeparatorSettings = getGlobalNumberFormatting();\r\n chart.thousandSeparator = _numberSeparatorSettings.thousandsSeparator;\r\n chart.decimalSeparator = _numberSeparatorSettings.decimalSeparator;\r\n\r\n chart.palettecolors = \"#369CFB, #FCAF16, #EE5F77, #4AC76F, #935BE0, #FAD337, #32C7C7, #EB67D0, #3C9957, #FF7D4B, #78A6FF, #35838F, #BAA9F3, #C1DA72, #F0AEAD, #246EAB\";\r\n chart.enableSlicing = \"0\";\r\n chart.enableRotation = \"0\";\r\n chart.chartTopMargin = \"10\";\r\n chart.chartBottomMargin = \"10\";\r\n chart.chartLeftMargin = \"40\";\r\n chart.chartRightMargin = \"40\";\r\n chart.toolTipBgColor = \"#FFFFFF\";\r\n chart.showToolTipShadow = \"1\";\r\n chart.plotHoverEffect = \"0\";\r\n chart.scrollHeight = \"6\";\r\n chart.scrollWidth = \"6\";\r\n chart.plotColorinTooltip = \"0\";\r\n chart.formatNumberScale= \"0\"\r\n return chart;\r\n}\r\n\r\nfunction setPieDonutLegends(chart: ChartInfo, widget: ReactWidgetPM): void {\r\n chart.showLabels = widget.LabelsPosition == 'InLegend' ? '0' : '1';\r\n chart.showLegend = widget.ShowLegend ? '1' : '0';\r\n setOnChartLegend(chart, widget);\r\n setChartInLegend(chart, widget);\r\n}\r\n\r\nfunction getWidgetLegendPosition(widget: ReactWidgetPM) {\r\n if(widget.LegendPosition) return widget.LegendPosition;\r\n\r\n return widget.TypeCode == 'pie' || widget.TypeCode == 'donut' ? \"right\" : \"bottom\"\r\n}\r\n\r\nfunction isColumnOrBarChart(widget: ReactWidgetPM) {\r\n if(!widget) return false;\r\n\r\n return widget.TypeCode == 'column' || widget.TypeCode == 'bar';\r\n}\r\n\r\nfunction isPieOrDonutChart(widget: ReactWidgetPM) {\r\n if(!widget) return false;\r\n \r\n return widget.TypeCode == 'pie' || widget.TypeCode == 'donut';\r\n}\r\n\r\nfunction setOnChartLegend(chart: ChartInfo, widget: ReactWidgetPM) {\r\n if (widget.LabelsPosition != 'InLegend') return;\r\n chart.legendPosition = getWidgetLegendPosition(widget);\r\n chart.legendScrollBgColor = \"#ffffff\";\r\n chart.legendIconScale = 0.75;\r\n chart.scrollShowButtons = \"0\";\r\n chart.scrollShowButtons = \"0\";\r\n chart.legendCaptionAlignment = \"right\";\r\n chart.alignLegendWithCanvas = \"1\";\r\n chart.showPercentValues = widget.ShowValueAsNumber ? \"0\" : \"1\";\r\n chart.chartRightMargin = \"20\";\r\n}\r\n\r\nfunction setChartInLegend(chart: ChartInfo, widget: ReactWidgetPM) {\r\n if (widget.LabelsPosition == 'InLegend') return;\r\n chart.pieRadius = \"70%\";\r\n chart.showPercentValues = widget.ShowValueAsNumber ? \"0\" : \"1\";\r\n}\r\n\r\nfunction setDualyAxis(chartInfo: ChartInfo, widget: ReactWidgetPM, seriesMeasures: SeriesMeasure[]) {\r\n chartInfo.showSecondaryLimits = \"0\";\r\n chartInfo.showDivLineSecondaryValue = \"0\";\r\n \r\n if (!widget) return;\r\n if (!widget.WidgetMeasures) return;\r\n if (widget.WidgetMeasures.length < 2) return;\r\n if (!widget.WidgetMeasures[1].PlotonSecondAxis) return;\r\n\r\n chartInfo.showSecondaryLimits = \"1\";\r\n chartInfo.showDivLineSecondaryValue = \"1\";\r\n chartInfo.pYAxisNameBorderPadding = 0;\r\n chartInfo.sYAxisNameBorderPadding = 0;\r\n chartInfo.sNumberSuffix = isSecondMeasureTypePercentage(widget) ? \"%\" : null;\r\n\r\n if(isNullOrUndefined(seriesMeasures)){\r\n chartInfo.pYAxisName = \"\";\r\n chartInfo.sYAxisname = \"\";\r\n return;\r\n }\r\n\r\n var textLength = Math.max(seriesMeasures[0].Name.length, seriesMeasures[1].Name.length);\r\n chartInfo.pYAxisName = getTitle(seriesMeasures[0]?.Name , textLength);\r\n chartInfo.sYAxisname = getTitle(seriesMeasures[1]?.Name, textLength);\r\n}\r\n\r\nfunction getTitle(text: string, maxLenght: number): string {\r\n var textLenght = text.length;\r\n if (textLenght >= maxLenght) return text.replace(/\\s+/g, ' ');\r\n\r\n var neededSpaces = Math.ceil((maxLenght - textLenght) / 2);\r\n var space = ' '\r\n text = space.repeat(neededSpaces) + text + space.repeat(neededSpaces);\r\n return text.replace(/\\s+/g, ' ');\r\n}\r\n\r\n","import { ChartObject } from \"fusioncharts\";\r\nimport { ReactWidgetPM } from \"../../../../types/widget\";\r\nimport { ChartInfo } from \"./FusionChartObjectHelper\";\r\n\r\nexport class FusionChartHelper {\r\n private chart: ChartObject;\r\n private widget: ReactWidgetPM;\r\n private pieRadius: number;\r\n private legendWidth: string;\r\n\r\n constructor(widget: ReactWidgetPM, chart: ChartObject) {\r\n this.chart = chart;\r\n this.widget = widget;\r\n }\r\n\r\n public getPieRadius(): number {\r\n return this.pieRadius;\r\n }\r\n\r\n public getLegendWidth(): string {\r\n return this.legendWidth;\r\n }\r\n\r\n public trimChartLabels(chartWidth: number, chartHeight: number) {\r\n if (!this.widget || (this.widget.TypeCode != \"pie\" && this.widget.TypeCode != \"donut\")) return;\r\n if (!this.chart) return;\r\n\r\n var dataSource = this.chart?.dataSource;\r\n if (!dataSource) return;\r\n\r\n var chartInfo = (dataSource as any).chart as ChartInfo;\r\n\r\n if (this.widget.LabelsPosition == 'InLegend') this.handleLegendWidth(chartWidth, chartHeight, chartInfo);\r\n else this.handlePieRadius(chartHeight, chartInfo);\r\n }\r\n\r\n handlePieRadius(chartHeight: number, chartInfo: ChartInfo) {\r\n let chartMinumunHeight = 236;\r\n var startPercantage = 70;\r\n let stepHeight = 60;\r\n\r\n var step = Math.floor((chartHeight - chartMinumunHeight) / stepHeight);\r\n if (step < 0) step = 0;\r\n\r\n\r\n var pieRadius = startPercantage - (step * 10);\r\n if (pieRadius < 60) pieRadius = 60;\r\n\r\n if (window.innerWidth > 1700) {\r\n this.pieRadius = pieRadius;\r\n chartInfo.pieRadius = pieRadius + \"%\";\r\n return;\r\n }\r\n\r\n let reducedValue = Math.floor((1700 - window.innerWidth) / 100) + 1;\r\n if (reducedValue > 5) reducedValue = 5;\r\n pieRadius = pieRadius - (reducedValue * 5)\r\n this.pieRadius = pieRadius;\r\n chartInfo.pieRadius = pieRadius + \"%\";\r\n }\r\n\r\n handleLegendWidth(chartWidth: number, chartHeight: number, chartInfo: ChartInfo) {\r\n if (chartWidth < 730) chartInfo.legendWidth = \"200\";\r\n if (chartWidth >= 730) chartInfo.legendWidth = \"400\";\r\n if (chartWidth >= 1000) chartInfo.legendWidth = \"500\";\r\n this.legendWidth = chartInfo.legendWidth;\r\n }\r\n\r\n}\r\n","export const mainYellowColor = \"#F6CF33\"\r\nexport const mainRedColor = \"#EE5F77\"\r\nexport const mainGreenColor = \"#4AC76F\"\r\nexport const mainTurquoiseColor = \"#32C7C7\"\r\nexport const mainBlueColor = \"#369CFB\"\r\nexport const mainPurpleColor = \"#935BE0\"\r\nexport const mainOrangeColor = \"#FAAD14\"\r\n\r\nexport const lightYellowColor = \"#FBE799\"\r\nexport const lightRedColor = \"#F7AFBB\"\r\nexport const lightGreenColor = \"#A4E3B7\"\r\nexport const lightTurquoiseColor = \"#99E3E3\"\r\nexport const lightBlueColor = \"#9BCDFD\"\r\nexport const lightPurpleColor = \"#C9ADF0\"\r\nexport const lightOrangeColor = \"#FDD689\"\r\n\r\nexport const grey1Color = \"#F6F6F6\"\r\nexport const grey2Color = \"#F0F0F0\"\r\nexport const grey3Color = \"#D9D9D9\"\r\nexport const grey4Color = \"#A4A4A4\"\r\n\r\nexport const plotColorsDictionary = {\r\n plotColor0 : \"#369CFB\",\r\n plotColor1 : \"#FCAF16\",\r\n plotColor2 : \"#EE5F77\",\r\n plotColor3 : \"#4AC76F\",\r\n plotColor4 : \"#935BE0\",\r\n plotColor5 : \"#FAD337\",\r\n plotColor6 : \"#32C7C7\",\r\n plotColor7 : \"#EB67D0\",\r\n plotColor8 : \"#3C9957\",\r\n plotColor9 : \"#FF7D4B\",\r\n plotColor10 : \"#78A6FF\",\r\n plotColor11 : \"#35838F\",\r\n plotColor12 : \"#BAA9F3\",\r\n plotColor13 : \"#C1DA72\",\r\n plotColor14 : \"#F0AEAD\",\r\n plotColor15 : \"#246EAB\",\r\n}","import { lightBlueColor, lightGreenColor, lightOrangeColor, lightPurpleColor, lightRedColor, lightTurquoiseColor, lightYellowColor, mainBlueColor, mainGreenColor, mainOrangeColor, mainPurpleColor, mainRedColor, mainTurquoiseColor, mainYellowColor, plotColorsDictionary } from \"./FusionColors\";\r\n\r\nexport interface ChartInfo {\r\n theme: string;\r\n scrollPosition: string;\r\n scrollHeight: string;\r\n scrollWidth: string;\r\n scrollPadding: string;\r\n flatScrollBars: string;\r\n enableSlicing: string;\r\n chartLeftMargin: string;\r\n chartTopMargin: string;\r\n chartRightMargin: string;\r\n chartBottomMargin: string;\r\n baseFont: string;\r\n baseFontSize: string;\r\n showPercentValues: string;\r\n showValues: string;\r\n showLegend: string;\r\n lineColor: string;\r\n divLineDashed: string;\r\n divLineDashLen: string;\r\n divLineDashGap: string;\r\n divLineColor: string;\r\n divLineThickness: string;\r\n divLineAlpha: string;\r\n enableRotation: string;\r\n legendItemFont: string;\r\n legendItemFontSize: string;\r\n legendCaptionFont: string;\r\n legendCaptionFontSize: string;\r\n labelFont: string;\r\n labelFontSize: string;\r\n toolTipBorderColor: string;\r\n toolTipBgAlpha: string;\r\n showToolTipShadow: string;\r\n toolTipBgColor: string;\r\n plottooltext: string;\r\n anchorradius: string;\r\n canvasBottomPadding: string;\r\n canvasTopPadding: string;\r\n labelDisplay: string;\r\n slantLabel: string;\r\n manageLabelOverflow: string;\r\n useEllipsesWhenOverflow: string;\r\n enableSmartLabels: string;\r\n pieRadius: string;\r\n doughnutRadius: string;\r\n baseFontColor: string;\r\n legendCaptionFontColor: string;\r\n labelFontColor: string;\r\n plotColorinTooltip: string;\r\n showLabels: string;\r\n legendPosition: string;\r\n legendScrollBgColor: string;\r\n legendIconScale: number;\r\n scrollShowButtons: string;\r\n legendCaptionAlignment: string;\r\n legendWidth: string;\r\n alignLegendWithCanvas: string;\r\n centerLabelBold: string;\r\n showSecondaryLimits: string;\r\n showDivLineSecondaryValue: string;\r\n pYAxisName: string;\r\n sYAxisname: string;\r\n sYAxisNameFont: string;\r\n sYAxisNameFontColor: string;\r\n sYAxisNameFontSize: string;\r\n pYAxisNameFont: string;\r\n pYAxisNameFontColor: string;\r\n pYAxisNameFontSize: string;\r\n sYAxisNameBorderPadding: number;\r\n pYAxisNameBorderPadding: number;\r\n xAxisNameFont: string;\r\n xAxisName: string;\r\n xAxisNameFontSize: string;\r\n xAxisNameFontColor: string;\r\n yAxisNameFont: string;\r\n yAxisNameFontSize: string;\r\n yAxisNameFontColor: string;\r\n yAxisName: string;\r\n adjustDiv: string;\r\n placeValuesInside: string;\r\n valuePosition: string;\r\n minPlotHeightForValue: string;\r\n minAngleForValue: string;\r\n drawCrossLine: string;\r\n palettecolors: string;\r\n plotHoverEffect: string;\r\n numberSuffix: string | null;\r\n sNumberSuffix: string | null;\r\n decimalSeparator: string | null;\r\n thousandSeparator: string | null;\r\n formatNumberScale: string | null;\r\n manageResize: string | null;\r\n valueBelowPivot: string | null;\r\n showValue: string | null;\r\n autoScale: string | null;\r\n}\r\n\r\n\r\nexport function getSeriesPositionColor(position: number): string | null {\r\n switch (position) {\r\n case 1: return mainBlueColor;\r\n case 2: return mainGreenColor;\r\n case 3: return mainYellowColor;\r\n case 4: return mainTurquoiseColor;\r\n case 5: return mainPurpleColor;\r\n case 6: return mainOrangeColor;\r\n case 7: return mainRedColor;\r\n default: return null;\r\n }\r\n}\r\n\r\nexport function getSeriesHoverPositionColor(position: number): string | null {\r\n switch (position) {\r\n case 1: return lightBlueColor;\r\n case 2: return lightGreenColor;\r\n case 3: return lightYellowColor;\r\n case 4: return lightTurquoiseColor;\r\n case 5: return lightPurpleColor;\r\n case 6: return lightOrangeColor;\r\n case 7: return lightRedColor;\r\n default: return null;\r\n }\r\n}\r\n\r\nexport const getPlotColorByIndexOrder = (index: number) => {\r\n let _index = index;\r\n\r\n if(_index >= 16) {\r\n //This conversion make sure that we always in the fusion colors range [0 - 15];\r\n // fusuin uses round-robin way for color selection.\r\n _index = _index % 16;\r\n }\r\n\r\n switch (_index) {\r\n case 0: return plotColorsDictionary.plotColor0;\r\n case 1: return plotColorsDictionary.plotColor1;\r\n case 2: return plotColorsDictionary.plotColor2;\r\n case 3: return plotColorsDictionary.plotColor3;\r\n case 4: return plotColorsDictionary.plotColor4;\r\n case 5: return plotColorsDictionary.plotColor5;\r\n case 6: return plotColorsDictionary.plotColor6;\r\n case 7: return plotColorsDictionary.plotColor7;\r\n case 8: return plotColorsDictionary.plotColor8;\r\n case 9: return plotColorsDictionary.plotColor9;\r\n case 10: return plotColorsDictionary.plotColor10;\r\n case 11: return plotColorsDictionary.plotColor11;\r\n case 12: return plotColorsDictionary.plotColor12;\r\n case 13: return plotColorsDictionary.plotColor13;\r\n case 14: return plotColorsDictionary.plotColor14;\r\n case 15: return plotColorsDictionary.plotColor15;\r\n default: return \"#0566c2\";\r\n }\r\n}\r\n\r\n","import React, { forwardRef, useImperativeHandle, useRef, useState } from \"react\";\r\nimport ReactFC from 'react-fusioncharts';\r\nimport { DashboardDataBinding } from \"../../../../types/DashboardDataBinding\";\r\nimport { DataPointSelection } from \"../../../../types/SeriesMeasure\";\r\nimport { ReactWidgetPM } from \"../../../../types/widget\";\r\nimport FusionCharts, { ChartObject } from 'fusioncharts';\r\nimport { FusionCharts as fusionCharts } from 'fusioncharts';\r\nimport Charts from 'fusioncharts/fusioncharts.charts';\r\nimport FusionTheme from 'fusioncharts/themes/fusioncharts.theme.fusion';\r\nimport { useEffect } from \"react\";\r\nimport { DashboardAnalyticsService } from \"../../../../services/DashboardAnalyticsService\";\r\nimport { ProgressSpinner } from \"primereact/progressspinner\";\r\nimport { BuildFusionChartObject } from \"./FusionChartObjectBuilder\";\r\nimport useResizeObserver from \"use-resize-observer\";\r\nimport { FusionChartHelper } from \"./FusionChartHelper\";\r\nimport { Session } from \"../../../../services/session\";\r\nimport { ReactComponent as RedWarningIcon } from \"../../../../assets/images/red-warning.svg\"\r\nimport { v4 as uuidv4 } from 'uuid';\r\nimport { getPlotColorByIndexOrder } from \"./FusionChartObjectHelper\";\r\nimport { isNullOrUndefined, isNullOrUndefinedOrEmpty } from \"../../../../Utils/General\";\r\nimport { WidgetLoadLogger } from \"../../../../Utils/WidgetLoadLogger\";\r\n\r\nReactFC.fcRoot(FusionCharts, Charts, FusionTheme);\r\n\r\nFusionCharts.options['license']({\r\n key: 'prD4C-8eiA7A3A3C7E6G4B4A3J4C7B2D3D2nyqE1C3fd1npaE4D4tlA-21D7E4F4F1F1E1F4F1A10A8C2C5F5E2F2D1hwqD1B5D1aG4A19A32twbC6D3G4lhJ-7A9C11A5B-13ddA2I3A1B9B3D7A2B4G2H3H1F-7smC8B2XB4cetB8A7A5mxD3SG4F2tvgB2A3B2E4C3I3C7B3A4A3A2D3D2G4J-7==',\r\n creditLabel: false,\r\n});\r\n\r\nexport type FusionChartProps = {\r\n widget: ReactWidgetPM | undefined,\r\n widgetRef: ReactWidgetPM | undefined,\r\n dataBinding: DashboardDataBinding;\r\n onSelectDataPoint: (dataPointSelection: DataPointSelection) => void;\r\n onShowError: (errorMsg: string | null) => void;\r\n isPreviewModeActive?: boolean;\r\n};\r\nconst FusionChart = forwardRef((props: FusionChartProps, comRef) => {\r\n const [dataLoaded, setDataLoaded] = useState<boolean>(false);\r\n const [error, setError] = useState<string>();\r\n const [fusionKey, setFusionKey] = useState(uuidv4());\r\n const chartData = useRef<any>(null);\r\n const [resizeTimer, setResizeTimer] = useState<any | null>(null);\r\n const axiosController = useRef<AbortController | null>(new AbortController());\r\n\r\n \r\n const widget = useRef<ReactWidgetPM>();\r\n const [args, setArgs] = useState<ChartObject>({});\r\n const [fChart, setFchart] = useState<fusionCharts>();\r\n const [chartContainerId, setChartContainerId] = useState<any>(uuidv4());\r\n //(Math.random() + 1).toString(36).substring(7);\r\n const progressRef = useRef<any>(null);\r\n const fusionRef = useRef<any>(null);\r\n const fusionChartHelper = useRef<FusionChartHelper>();\r\n const isDummyChangesActive = useRef(false);\r\n\r\n useEffect(() => {\r\n axiosController.current = new AbortController();\r\n widget.current = props.widget;\r\n RefreshData();\r\n\r\n props.dataBinding?.widgetUpdated.subscribe(updatedWidget => {\r\n if (updatedWidget?.key != widget.current?.key) return;\r\n widget.current = {...updatedWidget};\r\n if(chartData && chartData.current){\r\n let _data = JSON.parse(JSON.stringify(chartData.current));\r\n isDummyChangesActive.current = true;\r\n handleData(_data, true); \r\n }\r\n });\r\n\r\n window.addEventListener(\"resize\", handleResize);\r\n return () => {\r\n window.removeEventListener(\"resize\", handleResize);\r\n setDataLoaded(false);\r\n if(axiosController && axiosController?.current?.abort){\r\n axiosController?.current?.abort();\r\n }\r\n };\r\n }, []);\r\n\r\n\r\n const handleResize = () => {\r\n clearTimeout(resizeTimer);\r\n setResizeTimer(\r\n setTimeout(() => {\r\n HandleSizeChange();\r\n }, 200)\r\n );\r\n }\r\n\r\n useImperativeHandle(comRef, () => ({\r\n onResizeFinish() {\r\n HandleSizeChange();\r\n }\r\n }));\r\n\r\n const HandleSizeChange = () => {\r\n if (!widget || (widget.current?.TypeCode != \"pie\" && widget.current?.TypeCode != \"donut\")) return;\r\n setTimeout(()=> {\r\n var oldPieRadius = fusionChartHelper?.current?.getPieRadius();\r\n var oldLegendWidth = fusionChartHelper?.current?.getLegendWidth();\r\n\r\n fusionChartHelper?.current?.trimChartLabels(fusionRef?.current?.offsetWidth, fusionRef?.current?.offsetHeight)!;\r\n \r\n if (widget.current?.LabelsPosition != 'InLegend' && oldPieRadius == fusionChartHelper?.current?.getPieRadius()) return;\r\n if (widget.current?.LabelsPosition == 'InLegend' && oldLegendWidth == fusionChartHelper?.current?.getLegendWidth()) return;\r\n\r\n setDataLoaded(false);\r\n setTimeout(()=> {\r\n setDataLoaded(true);\r\n }, 100);\r\n }, 100);\r\n }\r\n\r\n const isTargetWidget = (postWidget: ReactWidgetPM)=>{\r\n return postWidget && (postWidget.TypeCode == 'column' || postWidget.TypeCode == 'bar' || postWidget.TypeCode == 'line')\r\n }\r\n\r\n const RefreshData = () => {\r\n if (Session.Tenant == 0) {\r\n handleData(null);\r\n return;\r\n }\r\n\r\n var dashboardAnalyticsService = new DashboardAnalyticsService();\r\n var postWidget: any = { ...widget.current };\r\n postWidget.onChange = undefined;\r\n\r\n let signal :any= undefined;\r\n if(axiosController) {\r\n axiosController?.current?.abort();\r\n let updatedAxiosController = new AbortController();\r\n axiosController.current= updatedAxiosController\r\n signal = updatedAxiosController?.signal;\r\n }\r\n\r\n let isTargetUsed = isTargetWidget(postWidget) && postWidget.WidgetMeasures && postWidget.WidgetMeasures[1] && postWidget.WidgetMeasures[1].MeasureCode == 'Target';\r\n if(isTargetUsed){\r\n const widgetLoadLogger = new WidgetLoadLogger(postWidget, props.isPreviewModeActive);\r\n dashboardAnalyticsService.getTargetAnalyticsData(postWidget as ReactWidgetPM, signal).then((result: any) => {\r\n if(result?.data && !isNullOrUndefined(result?.data?.SeriesMeasures)){\r\n handleData(result?.data?.SeriesMeasures);\r\n chartData.current = result?.data?.SeriesMeasures; \r\n }\r\n\r\n if(result?.data && !isNullOrUndefined(result?.data?.Errors) && result?.data?.Errors.length > 0){\r\n showTargetUsageTooltipMessageError(result?.data?.Errors[0]);\r\n } else {\r\n showTargetUsageTooltipMessageError(null);\r\n }\r\n\r\n setDataLoaded(true);\r\n widgetLoadLogger.log(result);\r\n }, error => {\r\n console.log('error', error);\r\n if (error?.response?.data?.ErrorMessage) setError(error?.response?.data?.ErrorMessage);\r\n else setError(error.message);\r\n setDataLoaded(true);\r\n })\r\n }else{\r\n const widgetLoadLogger = new WidgetLoadLogger(postWidget, props.isPreviewModeActive);\r\n dashboardAnalyticsService.getData(postWidget as ReactWidgetPM, signal).then(result => {\r\n handleData(result?.data);\r\n chartData.current = result?.data;\r\n setDataLoaded(true);\r\n widgetLoadLogger.log(result);\r\n }, error => {\r\n console.log('error', error);\r\n if (error?.response?.data?.ErrorMessage) setError(error?.response?.data?.ErrorMessage);\r\n else setError(error.message);\r\n setDataLoaded(true);\r\n })\r\n }\r\n }\r\n\r\n const handleData = (data: any, isDummyChange: boolean = false): void => {\r\n let chart = BuildFusionChartObject(data, widget.current!);\r\n fusionChartHelper.current = new FusionChartHelper(widget.current!, chart);\r\n fusionChartHelper?.current.trimChartLabels(progressRef?.current?.offsetWidth, progressRef?.current?.offsetHeight)!;\r\n setArgs(chart);\r\n \r\n if(!isDummyChange){\r\n setDataLoaded(true);\r\n }else{\r\n setTimeout(() => {\r\n isDummyChangesActive.current = false;\r\n }, 100);\r\n }\r\n }\r\n\r\n const showTargetUsageTooltipMessageError = (errorMsg: string | null = \"\") => {\r\n props.onShowError(errorMsg);\r\n }\r\n\r\n const dataplotClick = (eventObj: any, dataObj: any): void => {\r\n props.onSelectDataPoint({\r\n GroupById: dataObj.id.groupbyid,\r\n MeasureFieldId: dataObj.id.measurefieldid,\r\n MeasureCode: dataObj.id.measurecode,\r\n Formula: dataObj.id.formula,\r\n Widget: widget.current,\r\n GroupByIdSec: dataObj.id.groupbyidsec\r\n });\r\n };\r\n\r\n const { ref } = useResizeObserver<HTMLDivElement>({\r\n onResize: ({ width, height }) => {\r\n fChart?.resizeTo(width as number, height as number);\r\n },\r\n });\r\n\r\n const renderComplete = (chart: any): void => {\r\n setFchart(chart);\r\n }\r\n\r\n const handlePieDonutChartTooltip = (chartDataSource: any) => {\r\n if(chartDataSource && chartDataSource.data && chartDataSource.data.length) {\r\n chartDataSource.data.forEach((item: any, index: number) => {\r\n let color = getPlotColorByIndexOrder(index)\r\n item.tooltext = item.tooltext.replaceAll(\"transparent\", color);\r\n })\r\n\r\n setArgs({...args, dataSource: chartDataSource});\r\n }\r\n }\r\n\r\n const handleOtherChartsTooltip = (chartDataSource: any) => {\r\n if(chartDataSource && chartDataSource.dataset && chartDataSource.dataset.length) {\r\n chartDataSource.dataset.forEach((el: any, index: number) => {\r\n el.data.forEach((item: any) => {\r\n let color = getPlotColorByIndexOrder(index)\r\n item.tooltext = item.tooltext.replaceAll(\"transparent\", color);\r\n })\r\n })\r\n\r\n setArgs({...args, dataSource: chartDataSource});\r\n }\r\n }\r\n\r\n const loaded = (event: any) => {\r\n if(isDummyChangesActive && isDummyChangesActive.current) return;\r\n\r\n let chartDataSource = event.sender.args && event.sender.args.dataSource ? event.sender.args.dataSource : null;\r\n \r\n let isPieOrDonutChart = widget.current?.TypeCode == 'pie' || widget.current?.TypeCode == 'donut';\r\n \r\n if(isPieOrDonutChart){\r\n handlePieDonutChartTooltip(chartDataSource);\r\n }else {\r\n handleOtherChartsTooltip(chartDataSource);\r\n }\r\n }\r\n\r\n return (\r\n !dataLoaded ?\r\n <div ref={progressRef} className={'dl-full-hight dl-flex-content-center spinner-custome'}>\r\n <ProgressSpinner style={{ width: '40px', height: '40px' }} strokeWidth=\"4\" animationDuration=\"2s\" />\r\n </div>\r\n :\r\n !error ?\r\n <div className={'db-fc-parent-container'} ref={fusionRef}>\r\n <div className={'db-fc-container'} key={fusionKey} ref={ref} id={chartContainerId}>\r\n <ReactFC\r\n {...args}\r\n fcEvent-dataplotClick={dataplotClick}\r\n fcEvent-loaded={loaded}\r\n onRender={renderComplete}\r\n />\r\n </div>\r\n </div>\r\n : <div className=\"dl-flex-content-center dl-full-hight\" style={{ width: '100%' }}>\r\n <div className=\"dl-tooltip\">\r\n <RedWarningIcon className=\"red-warning-icon\" />\r\n <span className=\"dl-tooltiptext\">{error}</span>\r\n </div>\r\n </div>\r\n )\r\n});\r\nexport default FusionChart;\r\n\r\n","import React, { forwardRef, useImperativeHandle, useRef, useState } from \"react\";\r\nimport ReactFC from 'react-fusioncharts';\r\nimport { DashboardDataBinding } from \"../../../../types/DashboardDataBinding\";\r\nimport { DataPointSelection } from \"../../../../types/SeriesMeasure\";\r\nimport { ReactWidgetPM } from \"../../../../types/widget\";\r\nimport FusionCharts, { ChartObject } from 'fusioncharts';\r\nimport Charts from 'fusioncharts/fusioncharts.widgets';\r\nimport FusionTheme from 'fusioncharts/themes/fusioncharts.theme.fusion';\r\nimport { useEffect } from \"react\";\r\nimport { DashboardAnalyticsService } from \"../../../../services/DashboardAnalyticsService\";\r\nimport { ProgressSpinner } from \"primereact/progressspinner\";\r\nimport { getGaugeObject } from \"./FusionChartObjectBuilder\";\r\nimport { Session } from \"../../../../services/session\";\r\nimport { ReactComponent as RedWarningIcon } from \"../../../../assets/images/red-warning.svg\"\r\nimport { v4 as uuidv4 } from 'uuid';\r\nimport { WidgetLoadLogger } from \"../../../../Utils/WidgetLoadLogger\";\r\n\r\nReactFC.fcRoot(FusionCharts, Charts, FusionTheme);\r\n\r\nFusionCharts.options['license']({\r\n key: 'prD4C-8eiA7A3A3C7E6G4B4A3J4C7B2D3D2nyqE1C3fd1npaE4D4tlA-21D7E4F4F1F1E1F4F1A10A8C2C5F5E2F2D1hwqD1B5D1aG4A19A32twbC6D3G4lhJ-7A9C11A5B-13ddA2I3A1B9B3D7A2B4G2H3H1F-7smC8B2XB4cetB8A7A5mxD3SG4F2tvgB2A3B2E4C3I3C7B3A4A3A2D3D2G4J-7==',\r\n creditLabel: false,\r\n});\r\n\r\nexport type FusionChartProps = {\r\n widget: ReactWidgetPM | undefined,\r\n widgetRef: ReactWidgetPM | undefined,\r\n dataBinding: DashboardDataBinding;\r\n onSelectDataPoint: (dataPointSelection: DataPointSelection) => void;\r\n isPreviewModeActive?: boolean;\r\n};\r\nconst FusionChart = forwardRef((props: FusionChartProps, comRef) => {\r\n const [dataLoaded, setDataLoaded] = useState<boolean>(false);\r\n const [error, setError] = useState<string>();\r\n const [fusionKey, setFusionKey] = useState(uuidv4());\r\n const chartData = useRef<any>(null);\r\n const [resizeTimer, setResizeTimer] = useState<any | null>(null);\r\n const axiosController = useRef<AbortController | null>(new AbortController());\r\n\r\n \r\n const widget = useRef<ReactWidgetPM>();\r\n const [args, setArgs] = useState<ChartObject>({});\r\n const [chartContainerId, setChartContainerId] = useState<any>(uuidv4());\r\n const progressRef = useRef<any>(null);\r\n const fusionRef = useRef<any>(null);\r\n const isDummyChangesActive = useRef(false);\r\n\r\n useEffect(() => {\r\n axiosController.current = new AbortController();\r\n widget.current = props.widget;\r\n getChartData();\r\n\r\n props.dataBinding?.widgetUpdated.subscribe(updatedWidget => {\r\n if (updatedWidget?.key != widget.current?.key) return;\r\n widget.current = {...updatedWidget};\r\n if(chartData && chartData.current){\r\n let _data = JSON.parse(JSON.stringify(chartData.current));\r\n isDummyChangesActive.current = true;\r\n handleData(_data, true); \r\n }\r\n });\r\n\r\n window.addEventListener(\"resize\", handleResize);\r\n return () => {\r\n window.removeEventListener(\"resize\", handleResize);\r\n setDataLoaded(false);\r\n if(axiosController && axiosController?.current?.abort){\r\n axiosController?.current?.abort();\r\n }\r\n };\r\n }, []);\r\n\r\n\r\n const handleResize = () => {\r\n clearTimeout(resizeTimer);\r\n setResizeTimer(\r\n setTimeout(() => {\r\n setFusionKey(uuidv4());\r\n }, 200)\r\n );\r\n }\r\n\r\n useImperativeHandle(comRef, () => ({\r\n onResizeFinish() {\r\n setFusionKey(uuidv4());\r\n }\r\n }));\r\n\r\n const getChartData = () => {\r\n if (Session.Tenant == 0) {\r\n handleData(null);\r\n return;\r\n }\r\n\r\n var dashboardAnalyticsService = new DashboardAnalyticsService();\r\n var postWidget: any = { ...widget.current };\r\n postWidget.onChange = undefined;\r\n\r\n let signal :any= undefined;\r\n if(axiosController) {\r\n axiosController?.current?.abort();\r\n let updatedAxiosController = new AbortController();\r\n axiosController.current= updatedAxiosController\r\n signal = updatedAxiosController?.signal;\r\n }\r\n\r\n const widgetLoadLogger = new WidgetLoadLogger(postWidget, props.isPreviewModeActive);\r\n dashboardAnalyticsService.getGaugeData(postWidget as ReactWidgetPM, signal).then(result => {\r\n handleData(result?.data);\r\n chartData.current = result?.data;\r\n setDataLoaded(true);\r\n widgetLoadLogger.log(result);\r\n }, error => {\r\n console.log('error', error);\r\n if (error?.response?.data?.ErrorMessage) setError(error?.response?.data?.ErrorMessage);\r\n else setError(error.message);\r\n setDataLoaded(true);\r\n })\r\n }\r\n\r\n const handleData = (data: any, isDummyChange: boolean = false): void => {\r\n let chart = getGaugeObject(data, widget.current!)\r\n setArgs(chart);\r\n \r\n if(!isDummyChange){\r\n setDataLoaded(true);\r\n }else{\r\n setTimeout(() => {\r\n isDummyChangesActive.current = false;\r\n }, 100);\r\n\r\n }\r\n }\r\n \r\n return (\r\n !dataLoaded ?\r\n <div ref={progressRef} className={'dl-full-hight dl-flex-content-center spinner-custome'}>\r\n <ProgressSpinner style={{ width: '40px', height: '40px' }} strokeWidth=\"4\" animationDuration=\"2s\" />\r\n </div>\r\n :\r\n !error ?\r\n <div className={'db-fc-parent-container'} ref={fusionRef}>\r\n <div className={'db-fc-container'} key={fusionKey} id={chartContainerId}>\r\n <ReactFC {...args} />\r\n </div>\r\n </div>\r\n : <div className=\"dl-flex-content-center dl-full-hight\" style={{ width: '100%' }}>\r\n <div className=\"dl-tooltip\">\r\n <RedWarningIcon className=\"red-warning-icon\" />\r\n <span className=\"dl-tooltiptext\">{error}</span>\r\n </div>\r\n </div>\r\n )\r\n});\r\nexport default FusionChart;\r\n\r\n","import React, { forwardRef, useEffect, useImperativeHandle, useRef, useState } from \"react\";\r\nimport { DataPointSelection } from \"../../types/SeriesMeasure\";\r\nimport { ReactWidgetPM } from \"../../types/widget\";\r\nimport { DashboardDataBinding } from '../../types/DashboardDataBinding';\r\nimport CustomChart from \"./ChartsComponents/CustomCharts/CustomChart\";\r\nimport FusionChart from \"./ChartsComponents/FusionCharts/FusionChart\";\r\nimport { isNullOrUndefined } from \"../../Utils/General\";\r\nimport { ReactComponent as DeleteWidgetIcon } from \"../../assets/images/delete-icon.svg\"\r\nimport { ReactComponent as EditWidgetIcon } from \"../../assets/images/edit-icon.svg\"\r\nimport { ReactComponent as CopyWidgetIcon } from \"../../assets/images/copy-icon.svg\"\r\nimport { ReactComponent as TargetWarningIcon } from \"../../assets/images/red-circle-warning.svg\"\r\nimport Popup from 'reactjs-popup';\r\nimport { v4 as uuidv4 } from 'uuid';\r\nimport GaugeChart from \"./ChartsComponents/FusionCharts/GaugeChart\";\r\n\r\ntype WidgetCardProps = {\r\n editBtnClicked(widget: any): any;\r\n copyBtnClicked?(id: any): any;\r\n deleteBtnClicked(i: any): any;\r\n widget: ReactWidgetPM | undefined;\r\n widgetRef: ReactWidgetPM | undefined;\r\n el: any;\r\n dateFilter: any;\r\n dataBinding: DashboardDataBinding;\r\n isInEditMode: boolean;\r\n isPreviewModeActive?: boolean;\r\n onSelectDataPoint: (dataPointSelection: DataPointSelection) => void;\r\n}\r\n\r\n\r\nconst WidgetCard = forwardRef((props: WidgetCardProps, comRef) => {\r\n const widget = useRef<ReactWidgetPM>();\r\n const [isLoading, setIsLoading] = useState(false);\r\n const fusionChartRef = useRef<any>(null);\r\n const [triggerId, setTriggerId] = useState(uuidv4());\r\n\r\n const [showHeaderErrorMessages, setShowHeaderErrorMessages] = useState(false);\r\n const [headerErrorMessages, setHeaderErrorMessages] = useState(\"\");\r\n\r\n \r\n const editWidget = () => {\r\n props.editBtnClicked(widget.current)\r\n };\r\n\r\n const copyWidget = () => {\r\n if(props && props.copyBtnClicked){\r\n props.copyBtnClicked(widget.current?.key)\r\n }\r\n };\r\n \r\n useEffect(() => {\r\n widget.current = props.widget;\r\n props.dataBinding?.onEditWidget.subscribe(e => {\r\n if (e?.key != widget.current?.key) return;\r\n setIsLoading(true);\r\n widget.current = { ...e };\r\n setIsLoading(false);\r\n })\r\n\r\n props.dataBinding?.widgetUpdated.subscribe(updatedWidget => {\r\n if (updatedWidget?.key != widget.current?.key) return;\r\n widget.current = {...updatedWidget};\r\n setTriggerId(uuidv4());\r\n });\r\n }, []);\r\n\r\n useImperativeHandle(comRef, () => ({\r\n onResizeFinish() {\r\n fusionChartRef?.current?.onResizeFinish();\r\n }\r\n }));\r\n\r\n const getCSSPropertyValue = (widgetData: ReactWidgetPM | undefined, propName: string, propUnit: string = \"\", propDefaultVal: any = \"\") => {\r\n return widgetData && propName && !isNullOrUndefined(widgetData[propName]) ? widgetData[propName] + propUnit : propDefaultVal || \"\";\r\n }\r\n \r\n const GetChartComponent = () => {\r\n if (isLoading || !widget.current?.TypeCode) return \"\";\r\n if (widget.current?.TypeCode == \"kpi\") return <CustomChart isInEditMode={props.isInEditMode} isPreviewModeActive={props.isPreviewModeActive} dataBinding={props.dataBinding} widget={widget.current} widgetRef={props.widgetRef} onSelectDataPoint={props.onSelectDataPoint} onShowError={(errorMsg) => showErrorMsg(errorMsg)} />;\r\n if (widget.current?.TypeCode == \"table\" || widget.current?.TypeCode == \"pivot\") return <CustomChart isInEditMode={props.isInEditMode} isPreviewModeActive={props.isPreviewModeActive} dataBinding={props.dataBinding} widget={widget.current} widgetRef={props.widgetRef} onSelectDataPoint={props.onSelectDataPoint} />;\r\n if (widget.current?.TypeCode == \"gauge\") return <GaugeChart ref={fusionChartRef} dataBinding={props.dataBinding} widget={widget.current} widgetRef={props.widgetRef} onSelectDataPoint={props.onSelectDataPoint} isPreviewModeActive={props.isPreviewModeActive} />\r\n return <FusionChart ref={fusionChartRef} dataBinding={props.dataBinding} widget={widget.current} widgetRef={props.widgetRef} onSelectDataPoint={props.onSelectDataPoint} onShowError={(errorMsg) => showErrorMsg(errorMsg)} isPreviewModeActive={props.isPreviewModeActive} />\r\n }\r\n\r\n \r\n const showErrorMsg = (msg: string | null) => {\r\n if(msg && msg.length > 0){\r\n setHeaderErrorMessages(msg || \"\");\r\n setShowHeaderErrorMessages(true); \r\n } else {\r\n setHeaderErrorMessages(\"\");\r\n setShowHeaderErrorMessages(false); \r\n }\r\n }\r\n\r\n const isTableWidget = ()=> {\r\n return widget && widget.current && widget.current.TypeCode == 'table';\r\n }\r\n \r\n const isPivotWidget = ()=> {\r\n return widget && widget.current && widget.current.TypeCode == 'pivot';\r\n }\r\n\r\n const isTableOrPivotWidget = ()=> {\r\n return widget && widget.current && (widget.current.TypeCode == 'table' || widget.current.TypeCode == 'pivot');\r\n }\r\n\r\n const getwidgetTitlesContainer = ()=> {\r\n return isTableOrPivotWidget() ? \"widget-table-titles-container\" : \"widget-titles-container\"\r\n }\r\n\r\n const drilldownToTableData = () => {\r\n props.onSelectDataPoint({\r\n GroupById: undefined,\r\n MeasureFieldId: undefined,\r\n MeasureCode: undefined,\r\n Formula: undefined,\r\n Widget: widget.current,\r\n GroupByIdSec: undefined\r\n });\r\n }\r\n\r\n const isThereTitle = () => {\r\n return widget.current?.Title && widget.current?.Title.length! > 0;\r\n }\r\n\r\n const isThereSubtitle = () => {\r\n return widget.current?.Subtitle && widget.current?.Subtitle.length! > 0;\r\n }\r\n\r\n const tableHintMessage = () => {\r\n return <span className={`table-hint-container ${isPivotWidget() ? \"min-width-105\" : \"\"} ${isTitleAligmentRight() ? \"padding-left-12\" : \"\"}`}>\r\n <span style={{visibility : isTableWidget() ? \"visible\" : \"hidden\"}}>{isTableWidget() ? \"Showing the first 100 rows\" : \"\"}</span>\r\n {\r\n !props.isInEditMode && !props.isPreviewModeActive && isTableWidget() &&\r\n <React.Fragment>\r\n <span>{\"(\"}</span>\r\n <span onClick={drilldownToTableData} className=\"show-more-records\">{\" Show More Records \"}</span>\r\n <span>{\")\"}</span>\r\n </React.Fragment>\r\n }\r\n </span>\r\n }\r\n\r\n const isTitleAligmentRight = () => {\r\n return widget && widget.current && widget.current.TitleAlignment && widget.current.TitleAlignment.toLowerCase() == 'right'\r\n }\r\n\r\n return (\r\n <div className=\"dl-panel\" key={props.el.i} >\r\n <header key={triggerId} className={`widget-header ${isPivotWidget() ? \"pivot-header\" : \"\"}`}>\r\n <div className={`header-contents ${isTableWidget() ? \"border-bottom-light-white\" : \"\"}`}>\r\n {\r\n isTitleAligmentRight() && isTableOrPivotWidget() && tableHintMessage()\r\n }\r\n\r\n <div style={{ cursor: props.isInEditMode ? \"move\" : \"default\",\r\n justifyContent: isTableOrPivotWidget() ? getCSSPropertyValue(widget?.current, 'TitleAlignment', '', undefined) : undefined,\r\n flexDirection : isTitleAligmentRight() ? \"row-reverse\" : \"row\"\r\n }} \r\n className={getwidgetTitlesContainer()}>\r\n <div\r\n className=\"title-container\"\r\n style={{ justifyContent: getCSSPropertyValue(widget?.current, 'TitleAlignment', '', undefined) }}>\r\n <Popup\r\n className=\"title-tooltip-container\"\r\n trigger={\r\n <div\r\n className=\"title\"\r\n style={{\r\n fontSize: getCSSPropertyValue(widget.current, 'TitleFontSize', 'px'),\r\n color: getCSSPropertyValue(widget.current, 'TitleFontColor', ''),\r\n textAlign: getCSSPropertyValue(widget?.current, 'TitleAlignment', '', undefined),\r\n }}>\r\n {widget.current?.Title}\r\n </div>\r\n }\r\n position={['top center']}\r\n arrowStyle={{color: '#262626'}}\r\n offsetY={-8}\r\n on={['hover', 'focus']}\r\n >\r\n <span className=\"widget-title-tooltip-text\">{widget.current?.Title}</span>\r\n </Popup>\r\n </div>\r\n\r\n {\r\n isTableOrPivotWidget() && isThereTitle() && isThereSubtitle() && <div className=\"titles-vertical-seeparator\"></div>\r\n }\r\n\r\n <div\r\n className={ isThereSubtitle() ? \"subtitle\" : \"subtitle margin-top-4\" }\r\n style={{\r\n fontSize: getCSSPropertyValue(widget.current, 'SubtitleFontSize', 'px'),\r\n textAlign: getCSSPropertyValue(widget?.current, 'TitleAlignment', '', undefined),\r\n color: getCSSPropertyValue(widget.current, 'SubtitleFontColor', ''),\r\n minWidth: isThereSubtitle() && isTableOrPivotWidget() ? '5%' : undefined,\r\n }}>\r\n {widget.current?.Subtitle}\r\n </div>\r\n </div>\r\n \r\n {\r\n !isTitleAligmentRight() && isTableOrPivotWidget() && tableHintMessage()\r\n }\r\n\r\n {props.isInEditMode &&\r\n <div className={ isThereTitle() ? \"widget-options-container\" : \"widget-options-container margin-top-6\"}>\r\n <EditWidgetIcon onClick={() => editWidget()} />\r\n <CopyWidgetIcon onClick={() => copyWidget()} />\r\n <DeleteWidgetIcon onClick={() => props.deleteBtnClicked(props.widget?.key)} />\r\n </div>\r\n }\r\n\r\n {!props.isInEditMode && showHeaderErrorMessages &&\r\n\r\n <div\r\n className=\"header-message-error\">\r\n <Popup\r\n className=\"header-message-error-tooltip-container\"\r\n trigger={\r\n <div>\r\n <TargetWarningIcon />\r\n </div>\r\n }\r\n position={['top center']}\r\n arrowStyle={{color: '#262626'}}\r\n offsetY={-2}\r\n on={['hover', 'focus']}\r\n >\r\n <span className=\"header-message-error-tooltip-text\">{headerErrorMessages}</span>\r\n </Popup>\r\n </div>\r\n }\r\n </div>\r\n \r\n </header>\r\n <div className=\"dl-dashboard-widget\"> \r\n {GetChartComponent()}\r\n </div>\r\n </div>\r\n );\r\n});\r\n\r\nexport default WidgetCard;\r\n","export function deepClone (obj){\r\n return JSON.parse(JSON.stringify(obj))\r\n}","import { WidthProvider, Responsive, Layout, Layouts } from \"react-grid-layout\";\r\nimport React, { useEffect, useRef, useState } from \"react\";\r\nimport { ReactWidgetPM } from \"../../types/widget\";\r\nimport WidgetCard from \"./WidgetCard\";\r\nimport { DataPointSelection } from \"../../types/SeriesMeasure\";\r\nimport { DashboardDataBinding } from \"../../types/DashboardDataBinding\";\r\nimport { deepClone } from '../../services/clone';\r\nimport useResizeObserver from \"use-resize-observer\";\r\n\r\nconst ResponsiveReactGridLayout = WidthProvider(Responsive);\r\n\r\nexport type DeleteWidgetProps = {\r\n id: string, \r\n layouts: any, \r\n widgets: { lg: ReactWidgetPM[] }\r\n}\r\n\r\ntype DashboardDesignerProps = {\r\n editMode: boolean,\r\n Widgetlayouts: { lg: ReactWidgetPM[] },\r\n openEditWidget: (widget: ReactWidgetPM) => void\r\n onLayoutChange: (layouts: Layouts) => void,\r\n onWidgetDelete: (deleteProps: DeleteWidgetProps) => void,\r\n onCopyWidget?:(id: string) => void,\r\n dataBinding: DashboardDataBinding,\r\n onSelectDataPoint: (dataPointSelection: DataPointSelection) => void\r\n};\r\n\r\nconst DashboardDesigner = (props: DashboardDesignerProps) => {\r\n const array12 = Array.from({ length: 12 }).fill(null);\r\n const minimumPlaceholderRowsCount = 12;\r\n const [layouts, setLayouts] = useState<Layouts>({ lg: [] });\r\n const [placeholderRowsArray, setplaceholderRowsArray] = useState(Array.from({ length: minimumPlaceholderRowsCount }).fill(null));\r\n const [dateFilter, setDateFilter] = useState<Date | Date[] | undefined>(undefined);\r\n const [isInEditMode, setisInEditMode] = useState(false);\r\n const widgetsDictionaryRef = useRef<{ [k: string]: ReactWidgetPM }>({});\r\n const [widgets, setWidgets] = useState<{ lg: ReactWidgetPM[] }>({ lg: [] });\r\n const gridLayoutComponent = useRef<any>(null);\r\n const entered = useRef<boolean>(false);\r\n const widgetCardRef = useRef<any[]>([]);\r\n\r\n\r\n useEffect(() => {\r\n FillLayout(props.Widgetlayouts);\r\n }, [props.Widgetlayouts]);\r\n\r\n useEffect(() => {\r\n if (props?.dataBinding?.onDeleteWidgetConfirmed) {\r\n props.dataBinding.onDeleteWidgetConfirmed.subscribe(deleteProps => {\r\n if (deleteProps){\r\n deletePanel(deleteProps);\r\n }\r\n });\r\n }\r\n }, []);\r\n\r\n const FillLayout = (dashboardLayouts: { lg: ReactWidgetPM[] }) => {\r\n var clone: { lg: ReactWidgetPM[] } = deepClone(dashboardLayouts);\r\n var layout = createLayout(clone);\r\n FillWidgetDictionary(clone);\r\n setWidgets(clone);\r\n setLayouts(layout);\r\n UpdatePlaceholderDimensions(layout);\r\n }\r\n const FillWidgetDictionary = (clone: { lg: ReactWidgetPM[] }) => {\r\n for (const item of clone.lg) {\r\n widgetsDictionaryRef.current[item.key] = item;\r\n }\r\n }\r\n const createLayout = (dashboardLayouts: { lg: ReactWidgetPM[] }): Layouts => {\r\n var layout: any = { lg: [] };\r\n dashboardLayouts.lg.map(w => w.Layout as Layout).forEach(e => {\r\n layout.lg.push(e)\r\n })\r\n return layout;\r\n }\r\n\r\n useEffect(() => {\r\n setisInEditMode(props.editMode);\r\n }, [props.editMode]);\r\n\r\n function onLayoutChange(layout: any, changedLayouts: Layouts) {\r\n UpdateWidget(changedLayouts);\r\n setLayouts(changedLayouts);\r\n UpdatePlaceholderDimensions(changedLayouts);\r\n if (entered.current == false) {\r\n entered.current = true;\r\n return;\r\n }\r\n props.onLayoutChange(changedLayouts);\r\n\r\n }\r\n\r\n function onResizeStop(event: any, oldItem: any) {\r\n document.dispatchEvent(new CustomEvent(\"resizeStop\",{}));\r\n widgetCardRef?.current?.find(x => x.i == oldItem.i)?.ref.onResizeFinish(widgetsDictionaryRef.current[oldItem.i].key);\r\n }\r\n\r\n function UpdateWidget(changedLayouts: Layouts) {\r\n for (const item of changedLayouts.lg) {\r\n if (widgetsDictionaryRef.current[item.i]) {\r\n widgetsDictionaryRef.current[item.i].Layout = item;\r\n }\r\n }\r\n }\r\n\r\n const confirmDeleteWidget = (id: string) => {\r\n let deleteWidgetProps: DeleteWidgetProps = {\r\n id: id, \r\n layouts: layouts, \r\n widgets: widgets\r\n }\r\n props.onWidgetDelete(deleteWidgetProps)\r\n }\r\n\r\n function deletePanel(deleteProps: DeleteWidgetProps) {\r\n var newLayouts = { lg: deleteProps.layouts.lg.filter(e => e.i != deleteProps.id) }\r\n setLayouts(newLayouts);\r\n var newWidgets = { lg: deleteProps.widgets.lg.filter(e => e.key != deleteProps.id) }\r\n FillWidgetDictionary(newWidgets);\r\n setWidgets(newWidgets);\r\n props.onLayoutChange(newLayouts)\r\n };\r\n\r\n function editWidget(widget: ReactWidgetPM) {\r\n widget.ChangeSetOp = 'Update';\r\n props.openEditWidget(widget);\r\n };\r\n\r\n function copyWidget(key: string) {\r\n if(props && props.onCopyWidget){\r\n props.onCopyWidget(key);\r\n }\r\n };\r\n \r\n\r\n function UpdatePlaceholderDimensions(layouts: Layouts) {\r\n if (!layouts)\r\n return;\r\n var max = minimumPlaceholderRowsCount;\r\n for (const layout of layouts['lg']) {\r\n if (layout.y + layout.h > max)\r\n max = layout.y + layout.h;\r\n }\r\n\r\n var newPlaceholderRows = max + 2;\r\n newPlaceholderRows = newPlaceholderRows < minimumPlaceholderRowsCount ? minimumPlaceholderRowsCount : newPlaceholderRows;\r\n setplaceholderRowsArray(Array.from({ length: newPlaceholderRows }).fill(null));\r\n }\r\n\r\n const { ref } = useResizeObserver<HTMLDivElement>({\r\n onResize: ({ }) => {\r\n window.dispatchEvent(new Event('resize'));\r\n },\r\n });\r\n\r\n return (<div ref={ref} className=\"dl-full-hight-scroll\">\r\n <div className=\"dl-box\">\r\n <div className=\"dl-row dl-content\">\r\n <div className=\"dl-grid-container\">\r\n <div className=\"dl-grid dl-grid--bordered\">\r\n {isInEditMode ? 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 ) : null}\r\n </div>\r\n\r\n\r\n <ResponsiveReactGridLayout ref={gridLayoutComponent}\r\n {...layoutGridProps}\r\n layouts={layouts}\r\n compactType=\"vertical\"\r\n draggableCancel=\".widget-options-container\"\r\n isDraggable={isInEditMode}\r\n isResizable={isInEditMode}\r\n onWidthChange={() => { }}\r\n onResizeStop={onResizeStop}\r\n onLayoutChange={onLayoutChange}>\r\n\r\n {widgets.lg.map((widget, i) =>\r\n\r\n <div key={widget.Layout?.i}>\r\n <WidgetCard\r\n isInEditMode={isInEditMode}\r\n key={widget.Layout?.i}\r\n widget={widget}\r\n widgetRef={widgetsDictionaryRef.current[widget.key]}\r\n el={widget}\r\n dataBinding={props.dataBinding}\r\n dateFilter={dateFilter}\r\n editBtnClicked={editWidget}\r\n deleteBtnClicked={confirmDeleteWidget}\r\n onSelectDataPoint={props.onSelectDataPoint}\r\n copyBtnClicked={copyWidget}\r\n ref={el => {\r\n widgetCardRef.current[i] = {\r\n ref: el,\r\n i: widget.Layout?.i\r\n }\r\n }}\r\n />\r\n </div>\r\n )}\r\n </ResponsiveReactGridLayout>\r\n </div>\r\n\r\n </div>\r\n </div>\r\n </div>);\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\nexport default DashboardDesigner;\r\n","import * as React from 'react'\r\nimport DashboardDesigner, { DeleteWidgetProps } from './features/Dashboard/DashboardDesigner'\r\nimport \"./styles.module.css\"\r\nimport { useEffect, useRef, useState } from \"react\";\r\nimport { Session } from './services/session';\r\nimport { ReactWidgetPM } from './types/widget';\r\nimport { DashboardDataBinding } from './types/DashboardDataBinding';\r\nimport { Layout, Layouts } from 'react-grid-layout';\r\nimport { deepClone } from './services/clone';\r\nimport { DataPointSelection } from './types/SeriesMeasure';\r\nimport WidgetCard from './features/Dashboard/WidgetCard';\r\nimport 'devextreme/dist/css/dx.light.css';\r\n\r\ntype DashboardProps = {\r\n token: string,\r\n tenant: number,\r\n userId: string,\r\n numberFormatCode?:string | null,\r\n isPreviewMode: boolean,\r\n isMasterNumberClickable?: any;\r\n widgetData: ReactWidgetPM | undefined,\r\n dataBinding: DashboardDataBinding,\r\n onChangeLayouts: (layouts: { lg: ReactWidgetPM[] }) => void,\r\n openEditWidget: (Widget: ReactWidgetPM) => void,\r\n onCopyWidget?:(key: string) => void,\r\n openDeleteWidgetConfirmWindow: (deleteProps: DeleteWidgetProps) => void,\r\n onSelectDataPoint: (dataPointSelection: DataPointSelection) => void;\r\n};\r\nconst Dashboard = (props: DashboardProps) => {\r\n const Widgetlayouts = useRef<{ lg: ReactWidgetPM[] }>({ lg: [] });\r\n const [widgetlayoutsState, setWidgetlayoutsState] = useState<{ lg: ReactWidgetPM[] }>({ lg: [] });\r\n const [isInEditMode, setIsInEditMode] = useState<boolean>(false);\r\n const [isPreviewModeActive, setIsPreviewModeActive] = useState<boolean>(props.isPreviewMode !== undefined ? props.isPreviewMode : false);\r\n const [previewWidget, setPreviewWidget] = useState<ReactWidgetPM | undefined>(props.widgetData);\r\n\r\n useEffect(() => {\r\n Session.CurrentUserId = props.userId;\r\n Session.Tenant = props.tenant;\r\n Session.Token = props?.token;\r\n Session.NumberFormatCode = props?.numberFormatCode;\r\n Session.isMasterNumberClickable = props?.isMasterNumberClickable;\r\n \r\n setIsPreviewModeActive(props.isPreviewMode);\r\n\r\n props.dataBinding.onGetLayouts.subscribe(layouts => {\r\n Widgetlayouts.current = layouts;\r\n setWidgetlayoutsState(deepClone(Widgetlayouts.current));\r\n });\r\n props.dataBinding.isOnEditLayout.subscribe(e => {\r\n setIsInEditMode(e);\r\n });\r\n props.dataBinding.onAddWidget.subscribe(w => {\r\n Widgetlayouts.current.lg.push(w);\r\n setWidgetlayoutsState(deepClone(Widgetlayouts.current));\r\n });\r\n }, [])\r\n\r\n useEffect(() => {\r\n if (props.widgetData) {\r\n setPreviewWidget(JSON.parse(JSON.stringify(props.widgetData)))\r\n }\r\n }, [props.widgetData])\r\n\r\n const copyWidget = (key: string) => {\r\n if(props && props.onCopyWidget){\r\n props.onCopyWidget(key);\r\n }\r\n }\r\n\r\n const updateWidgets = (layouts: Layouts) => {\r\n var layoutsDic: { [key: string]: Layout } = {};\r\n Object.keys(layouts).forEach(sizeType => {\r\n if (layouts[sizeType].length > 0) {\r\n layouts[sizeType].map(layout => {\r\n layoutsDic[layout.i] = layout;\r\n })\r\n return;\r\n }\r\n })\r\n var newWidgetlayouts: ReactWidgetPM[] = [];\r\n Widgetlayouts.current.lg.forEach(widget => {\r\n if (layoutsDic[widget.key]) {\r\n widget.StartPotistion = `${layoutsDic[widget.key].x},${layoutsDic[widget.key].y}`;\r\n widget.EndPosition = `${layoutsDic[widget.key].w},${layoutsDic[widget.key].h}`;\r\n widget.Layout = layoutsDic[widget.key];\r\n newWidgetlayouts.push(widget);\r\n }\r\n\r\n });\r\n Widgetlayouts.current = { lg: newWidgetlayouts };\r\n props.onChangeLayouts(Widgetlayouts.current);\r\n }\r\n\r\n return isPreviewModeActive && previewWidget ? \r\n <div style={{width: \"420px\", height: \"310px\"}}>\r\n <div style={{height: \"100%\"}} key={\"widget-\" + previewWidget?.Layout?.i}>\r\n <WidgetCard\r\n isInEditMode={isInEditMode}\r\n isPreviewModeActive={isPreviewModeActive}\r\n key={previewWidget?.Layout?.i}\r\n widget={previewWidget}\r\n widgetRef={previewWidget}\r\n el={previewWidget}\r\n dataBinding={props.dataBinding}\r\n dateFilter={undefined}\r\n editBtnClicked={() => true}\r\n deleteBtnClicked={() => true}\r\n onSelectDataPoint={() => true}\r\n />\r\n </div>\r\n </div> :\r\n <div className='dl-full-hight'>\r\n <div className='dl-dashboard-body'>\r\n <DashboardDesigner \r\n onSelectDataPoint={props.onSelectDataPoint} \r\n Widgetlayouts={widgetlayoutsState} \r\n dataBinding={props.dataBinding} \r\n editMode={isInEditMode} \r\n onLayoutChange={updateWidgets} \r\n onWidgetDelete={(deleteProps: DeleteWidgetProps) => props.openDeleteWidgetConfirmWindow(deleteProps)}\r\n onCopyWidget={copyWidget}\r\n openEditWidget={(widget: ReactWidgetPM) => props.openEditWidget(widget)} ></DashboardDesigner>\r\n </div>\r\n </div >\r\n \r\n}\r\nexport default Dashboard;\r\n\r\n"],"names":["Session","Tools","GetLogitudeURL","logitude_url","location","href","replace","indexOf","urlArr","split","url","substring","lastIndexOf","length","Map","from","to","keys","Object","k","ApiServices","_apiUrl","getByFilters","api","filters","token","getTokenFromStorage","apiURL","ConcatFiltersToURL","axios","get","headers","post","date","requestSignal","undefined","signal","Token","urlparameters","mykeys","addtionalFiltersValues","i","propName","propValue","ignoreFilter","concat","encodeURIComponent","JSON","stringify","DashboardAnalyticsService","_ApiServices","getData","widget","controller","getTargetAnalyticsData","getKpiData","getTableData","getGaugeData","getObjectTableNameByWidgetEntityId","entityId","getPivotData","DateGroupCodes","Full_Date","Month","Quarter","Year","Month_Year","Quarter_Year","getDateFormat","label","_format","_date","moment","isValid","format","getQuarterYearFormat","includes","result","quarterVal","yearVal","getLabelFormatByDateGroupType","isSecondGrouping","groupFieldDataType","SecondaryDateGroupCode","DateGroupCode","getTodayDates","dateValues","fromDate","toDate","push","getYesterdayDates","subtract","getTomorrowDates","add","getCurrentWeekDates","startOf","endOf","getCurrentMonthDates","getPreviousMonthDates","getCurrentMonthToDateDates","getPreviousMonthToDateDates","getCurrentQuarterDates","getCurrentYearDates","getPreviousYearDates","getCurrentYearToDateDates","getPreviousYearToDateDates","getPreviousQuarterDates","getCurrentQuarterToDateDates","getPreviousQuarterToDateDates","getLast7DaysDates","getLast30DaysDates","getDateRangesByCode","code","_fromDate","_toDate","FieldDataType","isNumericType","fieldDataType","Decimal","Double","UnsDecimal","SigDouble","Integer","UnsInteger","Percentage","isInteger","isPercentage","isLookUpType","LookUp","isPickListType","PickList","PickList2","isTextOrNTextType","Text","nText","isTextType","isNTextType","isBooleanType","Boolean","isDateOrDateTimeType","Date","DateTime","MeasureCode","isNullOrUndefined","val","isNullOrUndefinedOrEmpty","getGlobalNumberFormatting","numberFormatCode","NumberFormatCode","numberSeparatorSettings","thousandsSeparator","decimalSeparator","isValueInteger","measureCode","measureFieldType","Count","getTruncatedValue","value","decimalDigitsCount","isNaN","truncateDecimals","getNumberInSystemLocalFormat","minimumFractionDigits","isValueTruncated","decimalParts","toString","maxFractionDigits","_numberSeparatorSettings","_val","toLocaleString","maximumFractionDigits","_formattedValue","replaceAll","numberOfDecimalParts","Number","isFinite","numStr","toLocaleLowerCase","integerPart","decimalPart","truncated","slice","resultStr","parseFloat","ConvertStringToPascalCaseHelper","stringValue","splittedWords","filter","f","map","t","toUpperCase","toLowerCase","join","WidgetLoadLogService","create","widgetLoadLog","WidgetLoadLogger","isPreviewMode","StartTime","getTime","Widget","log","loadDataResponse","totalExecutionTime","widgetLoadLogService","Tenant","WidgetId","Id","DashboardId","LoadTime","getLoadTime","TotalExecutionTime","then","_response","_error","loadTimeHeaderKey","loadTimeHeader","isNumber","KpiChart","props","useState","isLoading","setIsLoading","error","setError","useRef","data","setData","isKPICustomSizeNeeded","setIsKPICustomSizeNeeded","uuidv4","triggerId","setTriggerId","useEffect","current","customChartProps","HandleKPICustomSize","RefreshData","dataBinding","widgetUpdated","subscribe","updatedWidget","key","_isPreviewModeActive","isPreviewModeActive","_isKPICustomResizeNeeded","isKPICustomResizeNeeded","calculateWidgetKPISettingsDates","_updatedWidget","KPIComparisonSettings","kpiSettings","parse","isKPISettingsActivated","PeriodFieldId","PeriodDateFilterDates","PeriodDateFilter","DateTimeValueCode","ComparePeriodDateFilterDates","ComparisonPeriodType","ComparePeriodDateFilter","FieldValue","FieldValue2","emptyData","Value","dashboardAnalyticsService","postWidget","onChange","widgetLoadLogger","handleResponseErrors","console","response","ErrorMessage","message","onShowError","Errors","drillDownToKPIValues","isDrillDownToMainValues","measureFieldId","currentWidgetMeasure","WidgetMeasures","MeasureFieldId","onSelectDataPoint","Formula","GroupById","IsKPISecondaryValues","isComparisonIndicatorChecked","_kpiSettings","_kpiSettingsAsObj","ComparisonIndicator","getRatioComponent","CompareWithPrevious","React","className","getArrowComponent","style","fontSize","getKPIFormattingPropertyValue","Ratio","ComparisonValue","marginTop","Increase","getPreviousValueComponent","ComparisonLabel","formatedValue","comparisonValue","onClick","title","color","isPercentageMeasureField","ComparisonAbbreviationSymbol","ShowMeasureUnit","Unit","MeasureFieldDataType","getValueData","getValueComponent","AbbreviationSymbol","getPeriodLabelByPeriodCode","getLabelFromKPISettings","IsGlobalFilterKPIComparison","GlobalFilterDateTimeValueCode","getKPIFormattingData","KPIFormatSettings","propertyName","unit","kpiFormattingData","getLabel","Label","getIsKPIHasSmallestHeight","widgetRef","Layout","h","isKPIHasSmallestHeight","ProgressSpinner","width","height","strokeWidth","animationDuration","Alighnment","RedWarningIcon","TableChart","isTableLoading","setIsTableLoading","setWidget","tableData","setTableData","tableColumns","setTableColumns","sortField","setSortField","sortOrder","setSortOrder","isDefaultSortOptionsUsed","widgetRefData","objectTableName","setObjectTableName","getObjectTableName","ReOrderColumns","Columns","updatedWidgetColumns","updatedWidgetColumnsData","_updatedTableColumns","forEach","c","col","find","EntityId","res","ObjectTableName","PageIndex","PageSize","fillTableData","getBooleanStringValue","_value","charAt","getDateTimeValue","datePart","tableRecords","Fields","setDefaultSortOptions","Result","item","_tableRow","field","FieldCode","valueType","DataTypeCode","tableCols","_widget","_sortFieldCode","getSortFieldCodeBySortFieldId","DefaultSortBy","_sortDirection","DefaultSortDirection","sortFieldId","getSortFieldIdBySortFieldCode","sortFieldCode","sortTableData","sortedField","isCalculatedColumn","canSort","_sortOrder","ScreenSortBy","ScreenSortDirection","ScreenSortByType","isInEditMode","getTableFormattingData","TableFormatSettings","getTableFormattingPropertyValue","tableFormattingData","getTableConditionalRulesData","TableConditionalRules","isValueEmpty","IsValidRule","rule","operator","RuleOperator","Code","ruleValue1","RuleValue1","ruleValue2","RuleValue2","getCellPropertyByRule","column","cellValue","defaultValue","columnType","IsCalculatedColumn","columnData","el","FieldId","FieldType","FieldRules","firstValidRule","getCellFloatAlignment","isClickableCell","fieldCode","rowDate","IsShipmentMasterFieldClickable","rowData","isMasterNumberClickable","tableCellClicked","TableRowEntityId","RowData","getCellValue","columnValue","cellTemplateBody","fontColor","fontSizeWithoutUnit","fontSizeWitUnit","display","backgroundColor","headerTemplate","DisplayName","DataTable","loading","resizableColumns","columnResizeMode","responsiveLayout","index","Column","header","body","PivotTable","forwardRef","comRef","tabledata","pivotGridRef","PivotGridDataSource","store","fields","dataSource","setDataSource","getPivotTableData","document","addEventListener","handleResize","removeEventListener","instance","element","classList","setTimeout","remove","repaint","setPivotDataSourceFields","err","customizeCells","useCallback","e","cell","rowPath","columnPath","cellElement","children","padding","borderRadius","onCellClick","area","pivotFields","columnFields","fieldValue","fieldData","rowFields","r","PivotFields","getColumnNameByColumnId","fieldName","dataField","datafieldValue","PivotData","SortRowAndColumnHeaders","a","b","DateCode","aValue","bValue","aText","text","bText","PivoFields","PivotMeasures","pivotRowsAndColumnsFields","PivotCode","caption","name","PivotName","allowSorting","allowFiltering","sortingMethod","expanded","wordWrapEnabled","customizeText","cellInfo","pivotDataCellsFields","measure","PivotMeasureCode","dataType","summaryType","calculateCustomSummary","options","summaryProcess","firstPart","secondPart","substr","_finalVal","totalValue","minimumFraction","AllfieldsData","isRowsEmptyAndColumnsNotEmpty","pivotRows","PivotRows","pivotColumns","PivotColumns","canShowRowsGrandTotal","pivotTotalsSettings","PivotTotalsSettings","ShowRowsGrandTotal","isRowsNotEmptyAndColumnsEmpty","canShowColumnsGrandTotal","ShowColumnsGrandTotal","canShowRowsTotal","ShowRowsTotal","canShowColumnsTotal","ShowColumnsTotal","Fragment","PivotGrid","id","ref","allowExpandAll","showBorders","showRowGrandTotals","showColumnGrandTotals","showRowTotals","showColumnTotals","showTotalsPrior","FieldPanel","showColumnFields","showDataFields","showFilterFields","showRowFields","texts","rowFieldArea","allowFieldDragging","visible","FieldChooser","enabled","Scrolling","mode","CustomChart","project","TypeCode","buildToolTip","seriesMeasure","groupbyId","secGroupbyId","customToolTip","getTooltiplabel","getMeasureType","getTooltipValue","getPieDonutToolTipPercentage","RenderStackedChartTotalsAndPercentages","getGroupValuePercentage","getSumOfGroupValues","seriesMeasures","IsStacked","Sum","percentageValueInLocalFormat","getPercentageGroupValueAsNumber","total","getSumOfGroupValuesAsNumber","Values","v","GroupByIdSec","getSumOfValuesAsNumber","getDonutPiePercentageGroupValueAsNumber","Name","formula","months","quarters","getCategoriesBasedDataSource","chartInfo","seriesMeasuresIsEmpty","handelNullLabels","chart","categories","buildCategories","dataset","buildDataSet","getStackedDataSource","buildStackedCategories","buildStackedDataSet","getSimpleDataSource","buildDataSource","hasValue","values","series","tooltext","dataSet","datas","seriesname","anchorBgColor","anchorBorderColor","anchorBorderThickness","anchorHoverColor","parentyaxis","PlotasLineChart","PlotonSecondAxis","renderAs","uniqueGroups","x","LabelSec","group","seriesName","buildStackedGroupData","emptylabels","filledLabels","sortDataSet","sort","s1","s2","aa","bb","secGroup","getUniqueGroupOrderdList","category","defautFontSize","defautFont","defautColor","BuildFusionChartObject","SecondaryGroupById","getBarObject","getStackedBarObject","getLineObject","getClusteredLineObject","getPieObject","getDonutObject","getColumnObject","getClusteredColumnObject","getWidgetRanges","gaugeRanges","GaugeRanges","minValue","maxValue","getGaugeObject","fusionObject","getDefaultChartobject","type","getDefaultChartInfo","manageResize","valueBelowPivot","showValue","autoScale","chartTopMargin","chartBottomMargin","chartLeftMargin","chartRightMargin","isGroupByFieldDateTime","GroupByFieldDataType","scrollPosition","scrollPadding","flatScrollBars","showPercentValues","ShowValueAsNumber","showLegend","ShowLegend","setLineDash","legendPosition","getWidgetLegendPosition","anchorradius","canvasBottomPadding","canvasTopPadding","labelFontSize","labelFont","manageLabelOverflow","useEllipsesWhenOverflow","enableSmartLabels","setPieDonutLegends","isFirstMeasureTypePercentage","isSecondMeasureTypePercentage","setDualyAxis","divLineDashed","divLineDashLen","divLineDashGap","divLineColor","divLineAlpha","divLineThickness","dataFormat","theme","baseFont","baseFontSize","baseFontColor","legendCaptionFontSize","legendCaptionFontColor","legendCaptionFont","labelFontColor","legendItemFont","legendItemFontSize","sYAxisNameFont","sYAxisNameFontSize","sYAxisNameFontColor","pYAxisNameFont","pYAxisNameFontSize","pYAxisNameFontColor","xAxisNameFont","xAxisNameFontSize","xAxisNameFontColor","yAxisNameFont","yAxisNameFontSize","yAxisNameFontColor","drawCrossLine","xAxisName","ShowXAxisTitle","XAxisTitle","yAxisName","ShowYAxisTitle","YAxisTitle","labelDisplay","XAxisLabelsDisplay","slantLabel","XAxisLabelsFontSize","showValues","ShowValue","valuePosition","ValuePosition","isValuePositionInside","isColumnOrBarChart","placeValuesInside","minPlotHeightForValue","isPieOrDonutChart","minAngleForValue","numberSuffix","thousandSeparator","palettecolors","enableSlicing","enableRotation","toolTipBgColor","showToolTipShadow","plotHoverEffect","scrollHeight","scrollWidth","plotColorinTooltip","formatNumberScale","showLabels","LabelsPosition","setOnChartLegend","setChartInLegend","LegendPosition","legendScrollBgColor","legendIconScale","scrollShowButtons","legendCaptionAlignment","alignLegendWithCanvas","pieRadius","showSecondaryLimits","showDivLineSecondaryValue","pYAxisNameBorderPadding","sYAxisNameBorderPadding","sNumberSuffix","pYAxisName","sYAxisname","textLength","Math","max","getTitle","maxLenght","textLenght","neededSpaces","ceil","space","repeat","FusionChartHelper","getPieRadius","getLegendWidth","legendWidth","trimChartLabels","chartWidth","chartHeight","handleLegendWidth","handlePieRadius","chartMinumunHeight","startPercantage","stepHeight","step","floor","window","innerWidth","reducedValue","plotColorsDictionary","plotColor0","plotColor1","plotColor2","plotColor3","plotColor4","plotColor5","plotColor6","plotColor7","plotColor8","plotColor9","plotColor10","plotColor11","plotColor12","plotColor13","plotColor14","plotColor15","getPlotColorByIndexOrder","_index","ReactFC","fcRoot","FusionCharts","Charts","FusionTheme","creditLabel","FusionChart","dataLoaded","setDataLoaded","fusionKey","chartData","resizeTimer","setResizeTimer","axiosController","AbortController","args","setArgs","fChart","setFchart","chartContainerId","progressRef","fusionRef","fusionChartHelper","isDummyChangesActive","_data","handleData","abort","clearTimeout","HandleSizeChange","useImperativeHandle","onResizeFinish","oldPieRadius","oldLegendWidth","offsetWidth","offsetHeight","isTargetWidget","updatedAxiosController","isTargetUsed","SeriesMeasures","showTargetUsageTooltipMessageError","isDummyChange","errorMsg","dataplotClick","eventObj","dataObj","groupbyid","measurefieldid","measurecode","groupbyidsec","useResizeObserver","onResize","resizeTo","renderComplete","handlePieDonutChartTooltip","chartDataSource","handleOtherChartsTooltip","loaded","event","sender","onRender","setFusionKey","getChartData","WidgetCard","fusionChartRef","showHeaderErrorMessages","setShowHeaderErrorMessages","headerErrorMessages","setHeaderErrorMessages","editWidget","editBtnClicked","copyWidget","copyBtnClicked","onEditWidget","getCSSPropertyValue","widgetData","propUnit","propDefaultVal","GetChartComponent","showErrorMsg","GaugeChart","msg","isTableWidget","isPivotWidget","isTableOrPivotWidget","getwidgetTitlesContainer","drilldownToTableData","isThereTitle","Title","isThereSubtitle","Subtitle","tableHintMessage","isTitleAligmentRight","visibility","TitleAlignment","cursor","justifyContent","flexDirection","Popup","trigger","textAlign","position","arrowStyle","offsetY","on","minWidth","EditWidgetIcon","CopyWidgetIcon","DeleteWidgetIcon","deleteBtnClicked","TargetWarningIcon","deepClone","obj","ResponsiveReactGridLayout","WidthProvider","Responsive","DashboardDesigner","array12","Array","fill","minimumPlaceholderRowsCount","lg","layouts","setLayouts","placeholderRowsArray","setplaceholderRowsArray","dateFilter","setisInEditMode","widgetsDictionaryRef","widgets","setWidgets","gridLayoutComponent","entered","widgetCardRef","FillLayout","Widgetlayouts","onDeleteWidgetConfirmed","deleteProps","deletePanel","dashboardLayouts","clone","layout","createLayout","FillWidgetDictionary","UpdatePlaceholderDimensions","w","editMode","onLayoutChange","changedLayouts","UpdateWidget","onResizeStop","oldItem","dispatchEvent","CustomEvent","confirmDeleteWidget","deleteWidgetProps","onWidgetDelete","newLayouts","newWidgets","ChangeSetOp","openEditWidget","onCopyWidget","y","newPlaceholderRows","Event","layoutGridProps","rowHeight","compactType","draggableCancel","isDraggable","isResizable","onWidthChange","cols","md","sm","xs","xxs","useCSSTransforms","Dashboard","widgetlayoutsState","setWidgetlayoutsState","setIsInEditMode","setIsPreviewModeActive","previewWidget","setPreviewWidget","CurrentUserId","userId","tenant","onGetLayouts","isOnEditLayout","onAddWidget","updateWidgets","layoutsDic","sizeType","newWidgetlayouts","StartPotistion","EndPosition","onChangeLayouts","openDeleteWidgetConfirmWindow"],"mappings":"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"}
|