logitude-dashboard-library 3.2.63 → 3.2.65
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/Utils/DateHelper.d.ts +1 -1
- package/dist/assets/styles/dl-dashboard.scss +11 -0
- package/dist/features/Dashboard/ChartsComponents/CustomCharts/KpiChart.d.ts +1 -0
- package/dist/features/Dashboard/ChartsComponents/CustomCharts/PivotAgGridSupport.d.ts +13 -0
- package/dist/index.js +769 -400
- package/dist/index.js.map +1 -1
- package/dist/index.modern.js +769 -400
- package/dist/index.modern.js.map +1 -1
- package/dist/styles/dl-dashboard.scss +11 -0
- 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/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/PivotAgGridSupport.ts","../src/features/Dashboard/ChartsComponents/CustomCharts/AgPivotGrid.tsx","../src/features/Dashboard/ChartsComponents/CustomCharts/ViewsChart.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 public static UseAgGridPivot: boolean = false;\r\n public static AgGridLicenseKey: string | null | undefined;\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 let requestHeaders = { 'Content-Type': 'application/json', 'Token': token };\r\n if (this.isDashboardClickHouseActive()) {\r\n requestHeaders['Dashboard-Clickhouse'] = \"True\";\r\n }\r\n\t\tvar apiURL = `${this._apiUrl}${api}`;\r\n return axios.post<T>(apiURL,date, { headers: requestHeaders, signal: requestSignal});\r\n }\r\n\r\n getTokenFromStorage(){\r\n return Session.Token || '';\r\n }\r\n\r\n isDashboardClickHouseActive(){\r\n return (window as any)?.IsDashboardClickHouseActive === true;\r\n }\r\n\r\n private ConcatFiltersToURL(filters: ApiQueryFilters, urlparameters: string)\r\n {\r\n var mykeys = Object.keys(filters);\r\n var addtionalFiltersValues: string | null = null;\r\n\r\n for (var i in mykeys) {\r\n var propName = mykeys[i];\r\n var propValue = filters[propName];\r\n var ignoreFilter = ((propName.indexOf(\"Operator\") > 0 && propValue == \"Equals\") || propName == \"AdditionalFilters\");\r\n\r\n if (urlparameters != \"?\") {\r\n urlparameters = urlparameters.concat('&');\r\n }\r\n\r\n if (!ignoreFilter) {\r\n propValue = propValue ? encodeURIComponent(propValue) : '';\r\n urlparameters = urlparameters.concat(propName.concat('=').concat(propValue));\r\n }\r\n\r\n if (propName == \"AdditionalFilters\" && propValue.length > 0) {\r\n addtionalFiltersValues = JSON.stringify(propValue);\r\n }\r\n }\r\n\r\n if (addtionalFiltersValues) {\r\n urlparameters = urlparameters.concat(\"&AdditionalFilters=\").concat(addtionalFiltersValues);\r\n }\r\n return urlparameters;\r\n }\r\n}","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\nimport { ReactWidgetPM } from \"../types/widget\";\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, widget : ReactWidgetPM): number | null | undefined => {\r\n\r\n if(value == null || value == undefined || isNaN(value)) return value;\r\n \r\n return truncateDecimals(value,widget.DecimalPlaces || 0);\r\n}\r\n\r\nconst getNumberInSystemLocalFormat = (value: number | null | undefined, decimalDigitsCount: number = -1 , minimumFractionDigits: number = 0, isValueTruncated : boolean = true , applyAbbreviation : boolean = false): 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 let abbreviationSymbol : string | null = null;\r\n\r\n if(applyAbbreviation){\r\n\r\n if(Math.abs(value) >= 1000 && Math.abs(value) < 1000_000){\r\n\r\n value = value / 1000;\r\n abbreviationSymbol = \"K\";\r\n\r\n }else if(Math.abs(value) >= 1000_000){\r\n\r\n value = value / 1000_000;\r\n abbreviationSymbol = \"M\";\r\n }\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 (applyAbbreviation && abbreviationSymbol) ? `${_formattedValue}${abbreviationSymbol}` : _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 private RequestName: string | null | undefined = null;\r\n\r\n constructor(widget: ReactWidgetPM, isPreviewMode: boolean | null | undefined, requestName: string | null | undefined) {\r\n if (!isPreviewMode) {\r\n this.StartTime = new Date().getTime();\r\n this.Widget = widget;\r\n this.RequestName = requestName;\r\n }\r\n }\r\n\r\n log(loadDataResponse: AxiosResponse<any, any>) {\r\n if (this.canCreateLog(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 IsClickHouse: this.isClickHouse(loadDataResponse),\r\n RequestName: this.RequestName,\r\n WidgetType: this.Widget!.TypeCode,\r\n IsDrillDown: false\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 canCreateLog(loadDataResponse: AxiosResponse<any, any>) {\r\n return this.StartTime !== null && this.StartTime !== undefined &&\r\n this.Widget !== null && this.Widget !== undefined &&\r\n this.Widget.Id !== null && this.Widget.Id !== undefined && this.Widget.Id !== \"\" &&\r\n this.Widget.DashboardId !== null && this.Widget.DashboardId !== undefined && this.Widget.DashboardId !== \"\" &&\r\n this.Widget.Tenant !== null && this.Widget.Tenant !== undefined &&\r\n loadDataResponse !== null && loadDataResponse !== undefined;\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 private isClickHouse(loadDataResponse: AxiosResponse<any, any>) {\r\n let clickHouseHeaderKey = \"click-house\";\r\n let clickHouseHeader = loadDataResponse && loadDataResponse.headers && loadDataResponse.headers[clickHouseHeaderKey] ?\r\n loadDataResponse.headers[clickHouseHeaderKey] : null;\r\n return clickHouseHeader === \"true\";\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, \"PostGetKpiData\");\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 { 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 MeasureUnit: string | null;\r\n DateTimeDisplayMode: string | 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<any>(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\r\n\r\n let columns : any = tableColumns.filter(f => f.Id == c.Id);\r\n\r\n if(columns && columns.length == 1){\r\n\r\n _updatedTableColumns.push(columns[0])\r\n\r\n }else if(columns && columns.length > 1){\r\n\r\n let isCalculatedColumn = c.ColumnVariableType === \"CalculatedColumn\";\r\n let dataTypeCode = c.ColumnVariableDataType;\r\n let dateDisplayMode = c.DateTimeDisplayMode || \"Date\";\r\n\r\n\r\n let column = columns.find(f => f.IsCalculatedColumn === isCalculatedColumn && f.DataTypeCode === dataTypeCode && f.DateTimeDisplayMode === dateDisplayMode);\r\n\r\n if(column){\r\n\r\n _updatedTableColumns.push(column)\r\n }\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, \"PostGetTableData\");\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\r\n // Strip time from a Date (normalize to midnight)\r\n function stripTime(date: Date | null): Date | null {\r\n if (!date) return null;\r\n return new Date(date.getFullYear(), date.getMonth(), date.getDate());\r\n }\r\n \r\n // Parse ISO-like local date string (e.g., \"2024-05-01T00:00:00\")\r\n function parseLocalDate(dateStr: string): Date | null {\r\n\r\n try{\r\n\r\n if (!dateStr) return null;\r\n const [year, month, day] = dateStr.split('T')[0].split('-').map(Number);\r\n return new Date(year, month - 1, day); // Local time\r\n\r\n }catch(error){\r\n\r\n return null;\r\n\r\n } \r\n }\r\n \r\n // Parse custom \"YYYYMMDD\" format\r\n function parseCustomDateLocalDate(dateStr: string): Date | null {\r\n try{\r\n\r\n if (!dateStr || dateStr.length < 8) return null;\r\n const year = Number(dateStr.substring(0, 4));\r\n const month = Number(dateStr.substring(4, 6));\r\n const day = Number(dateStr.substring(6, 8));\r\n return new Date(year, month - 1, day); // Local time\r\n\r\n }catch(error){\r\n\r\n return null;\r\n\r\n } \r\n }\r\n \r\n function isDateValidRule(rule: any, value: string): boolean | null {\r\n const operator = rule?.RuleOperator?.Code;\r\n if (!operator) return null;\r\n \r\n const ruleValue1 = stripTime(parseCustomDateLocalDate(rule.RuleValue1));\r\n const ruleValue2 = stripTime(parseCustomDateLocalDate(rule.RuleValue2));\r\n const actualValue = stripTime(parseLocalDate(value));\r\n \r\n switch (operator) {\r\n case \"Equal\":\r\n case \"Between\":\r\n return (\r\n !isValueEmpty(ruleValue1) &&\r\n !isValueEmpty(ruleValue2) &&\r\n !isValueEmpty(actualValue) &&\r\n ruleValue1! <= actualValue! &&\r\n actualValue! <= ruleValue2!\r\n );\r\n case \"NotEqual\":\r\n case \"NotBetween\":\r\n return (\r\n !isValueEmpty(ruleValue1) &&\r\n !isValueEmpty(ruleValue2) &&\r\n !isValueEmpty(actualValue) &&\r\n (ruleValue1! > actualValue! || actualValue! > ruleValue2!)\r\n );\r\n case \"GreaterThan\":\r\n return (\r\n !isValueEmpty(ruleValue2) &&\r\n !isValueEmpty(actualValue) &&\r\n actualValue! > ruleValue2!\r\n );\r\n case \"GreaterThanOrEqual\":\r\n return (\r\n !isValueEmpty(ruleValue2) &&\r\n !isValueEmpty(actualValue) &&\r\n actualValue! >= ruleValue2!\r\n );\r\n case \"LessThan\":\r\n return (\r\n !isValueEmpty(ruleValue2) &&\r\n !isValueEmpty(actualValue) &&\r\n actualValue! < ruleValue2!\r\n );\r\n case \"LessThanOrEqual\":\r\n return (\r\n !isValueEmpty(ruleValue2) &&\r\n !isValueEmpty(actualValue) &&\r\n actualValue! <= ruleValue2!\r\n );\r\n case \"IsEmpty\":\r\n return isValueEmpty(actualValue);\r\n case \"IsNotEmpty\":\r\n return !isValueEmpty(actualValue);\r\n default:\r\n return null;\r\n }\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 || columnData.FieldDataType != column?.DataTypeCode) {\r\n return defaultValue ? getTableFormattingPropertyValue(defaultValue) : undefined; \r\n };\r\n\r\n let firstValidRule = null;\r\n\r\n\r\n if(FieldDataType.isDateOrDateTimeType(column?.DataTypeCode)){\r\n\r\n firstValidRule = columnData.FieldRules.find((rule: any) => isDateValidRule(rule, cellValue));\r\n\r\n }else{\r\n\r\n firstValidRule = columnData.FieldRules.find((rule: any) => IsValidRule(rule, cellValue));\r\n }\r\n\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 isRowTenantMatched = (rowData: any | null = null) => {\r\n if (!rowData) return true;\r\n\r\n return Number(rowData.Tenant) === Number(Session.Tenant);\r\n }\r\n\r\n const isClickableCell = (fieldCode: string | null , rowData : any | null = null) => {\r\n if (!isRowTenantMatched(rowData)) {\r\n return false;\r\n }\r\n\r\n return ((fieldCode == \"ShipmentNumber\" && objectTableName == \"Shipment\") ||\r\n IsShipmentMasterFieldClickable(fieldCode,rowData) ||\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 == \"Subject\" && objectTableName == \"Activity\") ||\r\n (fieldCode == \"TicketNumber\" && objectTableName == \"Ticket\")||\r\n (fieldCode == \"ReleaseNumber\" && objectTableName == \"WarehouseRelease\") ||\r\n (fieldCode == \"EntryNumber\" && objectTableName == \"WarehouseEntry\"))\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 let decimalPlaces = widget?.DecimalPlaces || 0;\r\n let isAbbreviationApplied = widget?.UseNumberAbbreviation || false;\r\n\r\n if(FieldDataType.isPercentage(column.DataTypeCode)) {\r\n return !isNullOrUndefined(columnValue) ? getNumberInSystemLocalFormat(Number(columnValue), decimalPlaces,decimalPlaces,true,isAbbreviationApplied) + \"%\" : 0 + '%';\r\n }\r\n\r\n if(FieldDataType.isInteger(column.DataTypeCode)) {\r\n return !isNullOrUndefined(columnValue) ? getNumberInSystemLocalFormat(Number(columnValue), decimalPlaces, decimalPlaces,false,isAbbreviationApplied) : \"\";\r\n }\r\n\r\n\r\n if(FieldDataType.isNumericType(column.DataTypeCode)) {\r\n return !isNullOrUndefined(columnValue) ? getNumberInSystemLocalFormat(Number(columnValue), decimalPlaces,decimalPlaces,true,isAbbreviationApplied) : \"\";\r\n }\r\n\r\n \r\n return 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 dateTimeDisplayMode : string | null = column.DateTimeDisplayMode;\r\n\r\n let fontColor : string = getTableFormattingPropertyValue(\"TableCellFontColor\");\r\n let fontSizeWithoutUnit = getTableFormattingPropertyValue(\"TableCellFontSize\");\r\n let fontSizeWitUnit = getTableFormattingPropertyValue(\"TableCellFontSize\",\"px\");\r\n\r\n return (\r\n <div\r\n title={\r\n dateTimeDisplayMode === 'DateTime'\r\n ? getDateTimeValue(data[column.FieldCode!])\r\n : getDateTimeValue(data[column.FieldCode!], 'Date')\r\n }\r\n className=\"date-time-value-container\"\r\n style={{ color: fontColor }}\r\n >\r\n <span\r\n className=\"table-cell-datetime\"\r\n style={{\r\n fontSize: fontSizeWitUnit,\r\n display: 'inline-block',\r\n backgroundColor: getCellPropertyByRule(\r\n column,\r\n data[column.FieldCode!],\r\n 'RuleBackgroundColor'\r\n ),\r\n }}\r\n >\r\n {getDateTimeValue(data[column.FieldCode!], 'Date')}\r\n {dateTimeDisplayMode === 'DateTime' && (\r\n ' ' + getDateTimeValue(data[column.FieldCode!], 'Time')\r\n )}\r\n </span>\r\n </div>\r\n );\r\n \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\r\n let _widget : any = props.customChartProps.widget;\r\n let showMeasureUnit = _widget.ShowMeasureUnit || false;\r\n\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 dl-table-chart-header-container\">\r\n <span style={{\r\n color: getTableFormattingPropertyValue(\"TableHeaderFontColor\"),\r\n fontSize: getTableFormattingPropertyValue(\"TableHeaderFontSize\", \"px\")}} \r\n className=\"p-column-title\">\r\n {(column.MeasureUnit && showMeasureUnit) ? `${column.DisplayName} (${column.MeasureUnit})` : 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 dl-table-chart-header-container\">\r\n <span style={{\r\n color: getTableFormattingPropertyValue(\"TableHeaderFontColor\"),\r\n fontSize: getTableFormattingPropertyValue(\"TableHeaderFontSize\", \"px\")}} \r\n className=\"p-column-title\">\r\n {(column.MeasureUnit && showMeasureUnit) ? `${column.DisplayName} (${column.MeasureUnit})` : 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, \"PostGetPivotData\");\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 { ConvertStringToPascalCaseHelper, getNumberInSystemLocalFormat, isNullOrUndefinedOrEmpty, isValueInteger } from '../../../../Utils/General';\r\n\r\nexport type PivotApiField = {\r\n FieldId: string;\r\n FieldCode?: string;\r\n PivotCode: string;\r\n PivotName: string;\r\n DisplayName: string;\r\n DataTypeCode?: string;\r\n DateCode: string | null;\r\n FieldType: string | null;\r\n};\r\n\r\nexport type PivotApiMeasure = {\r\n PivotMeasureCode: string;\r\n MeasureCode: string;\r\n MeasureFieldId?: string;\r\n MeasureFieldDataType?: string | null;\r\n DisplayName: string;\r\n FieldType?: string;\r\n};\r\n\r\nexport const isRowPivotField = (field: PivotApiField): boolean => {\r\n return !!(field.PivotCode && field.PivotCode.indexOf('Row') !== -1);\r\n};\r\n\r\nexport const truncateToTwoDecimals = (value: any): number => {\r\n const numericValue = isNullOrUndefinedOrEmpty(value) ? 0 : Number(value);\r\n const safeValue = isNaN(numericValue) ? 0 : numericValue;\r\n const decimalParts = safeValue.toString().split('.');\r\n const firstPart = decimalParts[0] ? decimalParts[0] : '0';\r\n const secondPart = decimalParts[1] ? decimalParts[1].toString().substr(0, 2) : '0';\r\n return Number(firstPart + '.' + secondPart);\r\n};\r\n\r\nexport const isPivotMeasureValueEmpty = (value: any): boolean => {\r\n return value === null || value === undefined || value === '';\r\n};\r\n\r\nexport const logitudeSumAgg = (params: { values: any[] }): number | null => {\r\n const values = params && params.values ? params.values : [];\r\n if (values.length === 0) return null;\r\n\r\n let total = 0;\r\n let hasValue = false;\r\n for (let i = 0; i < values.length; i++) {\r\n if (isPivotMeasureValueEmpty(values[i])) continue;\r\n hasValue = true;\r\n total += truncateToTwoDecimals(values[i]);\r\n }\r\n return hasValue ? total : null;\r\n};\r\n\r\nexport const formatPivotMeasureValue = (value: any, measure: PivotApiMeasure): string => {\r\n if (isPivotMeasureValueEmpty(value)) return '';\r\n\r\n const isInteger = isValueInteger(measure.MeasureCode, measure.MeasureFieldDataType);\r\n const minimumFraction = isInteger ? 0 : 2;\r\n return getNumberInSystemLocalFormat(value, 2, minimumFraction);\r\n};\r\n\r\nexport const getPivotGroupFooterLabel = (\r\n node: any,\r\n fieldCode: string | null | undefined,\r\n rawValue: any,\r\n lookupDisplayName: (fieldCode: string, rawValue: any) => string\r\n): string => {\r\n if (!node || !node.footer) return '';\r\n\r\n if (node.level === -1) {\r\n return 'Grand Total';\r\n }\r\n\r\n if (!fieldCode) return '';\r\n\r\n const displayName = lookupDisplayName(fieldCode, rawValue);\r\n return displayName ? `${displayName} Total` : '';\r\n};\r\n\r\nexport const compareDimensionValues = (aValue: any, bValue: any, dateCode: string | null, aText?: any, bText?: any): number => {\r\n if (dateCode === 'Month') {\r\n const aNumber = aValue == null ? -1 : Number(aValue);\r\n const bNumber = bValue == null ? -1 : Number(bValue);\r\n if (aNumber < bNumber) return -1;\r\n if (aNumber > bNumber) return 1;\r\n return 0;\r\n }\r\n\r\n if (dateCode != null) {\r\n const aCompare = aValue == null ? '' : aValue;\r\n const bCompare = bValue == null ? '' : bValue;\r\n if (aCompare < bCompare) return -1;\r\n if (aCompare > bCompare) return 1;\r\n return 0;\r\n }\r\n\r\n const aDisplay = aText == null || aText === '' ? (aValue == null ? '' : aValue) : aText;\r\n const bDisplay = bText == null || bText === '' ? (bValue == null ? '' : bValue) : bText;\r\n if (aDisplay < bDisplay) return -1;\r\n if (aDisplay > bDisplay) return 1;\r\n return 0;\r\n};\r\n\r\nexport const getPivotDisplayName = (pivotData: any[], fieldName: string, dataField: string, dataFieldValue: any): string => {\r\n if (!pivotData || pivotData.length === 0) return '';\r\n const data = pivotData.find(el => el[dataField] == dataFieldValue);\r\n return data ? ConvertStringToPascalCaseHelper(data[fieldName]) : '';\r\n};\r\n\r\nexport const isPivotRowGrandTotalColumnDef = (colDef: any): boolean => {\r\n if (!colDef || !colDef.colId) {\r\n return false;\r\n }\r\n return String(colDef.colId).indexOf('PivotRowTotal_') === 0;\r\n};\r\n\r\nexport const isPivotRowGrandTotalGroupDef = (colGroupDef: any): boolean => {\r\n if (!colGroupDef) {\r\n return false;\r\n }\r\n\r\n const groupId = colGroupDef.groupId || colGroupDef.colId || '';\r\n if (String(groupId).indexOf('PivotRowTotal') >= 0) {\r\n return true;\r\n }\r\n\r\n const children = colGroupDef.children;\r\n if (!children || children.length === 0) {\r\n return false;\r\n }\r\n\r\n return children.every((child: any) => {\r\n if (child && child.children) {\r\n return isPivotRowGrandTotalGroupDef(child);\r\n }\r\n return isPivotRowGrandTotalColumnDef(child);\r\n });\r\n};\r\n\r\nexport const resolvePivotGroupHeaderName = (\r\n colGroupDef: any,\r\n columnFields: PivotApiField[],\r\n lookupDisplayName: (field: PivotApiField, rawValue: any) => string\r\n): string | null => {\r\n if (isPivotRowGrandTotalGroupDef(colGroupDef)) {\r\n return 'Grand Total';\r\n }\r\n\r\n const pivotKeys: string[] = colGroupDef && colGroupDef.pivotKeys ? colGroupDef.pivotKeys : [];\r\n if (pivotKeys.length === 0) {\r\n return null;\r\n }\r\n\r\n const field = columnFields[pivotKeys.length - 1];\r\n if (!field) {\r\n return null;\r\n }\r\n\r\n return lookupDisplayName(field, pivotKeys[pivotKeys.length - 1]);\r\n};\r\n\r\nexport const getPivotValueColumnId = (pivotValueColumn: any): string | null => {\r\n if (!pivotValueColumn) {\r\n return null;\r\n }\r\n\r\n if (typeof pivotValueColumn.getId === 'function') {\r\n return pivotValueColumn.getId();\r\n }\r\n\r\n if (typeof pivotValueColumn.getColId === 'function') {\r\n return pivotValueColumn.getColId();\r\n }\r\n\r\n if (pivotValueColumn.colId) {\r\n return String(pivotValueColumn.colId);\r\n }\r\n\r\n if (pivotValueColumn.field) {\r\n return String(pivotValueColumn.field);\r\n }\r\n\r\n return null;\r\n};\r\n\r\nexport const resolveMeasureFromPivotValueColumn = (\r\n colDef: any,\r\n measures: PivotApiMeasure[]\r\n): PivotApiMeasure | undefined => {\r\n if (!colDef || measures.length === 0) {\r\n return undefined;\r\n }\r\n\r\n if (measures.length === 1) {\r\n return measures[0];\r\n }\r\n\r\n const valueColumnId = getPivotValueColumnId(colDef.pivotValueColumn);\r\n if (valueColumnId) {\r\n const measureByValueColumn = measures.find(measure => measure.PivotMeasureCode === valueColumnId);\r\n if (measureByValueColumn) {\r\n return measureByValueColumn;\r\n }\r\n }\r\n\r\n const colId = colDef.colId ? String(colDef.colId) : '';\r\n if (colId) {\r\n const sortedMeasures = [...measures].sort(\r\n (left, right) => right.PivotMeasureCode.length - left.PivotMeasureCode.length\r\n );\r\n for (let index = 0; index < sortedMeasures.length; index++) {\r\n const measureCode = sortedMeasures[index].PivotMeasureCode;\r\n if (colId.endsWith('_' + measureCode)) {\r\n return sortedMeasures[index];\r\n }\r\n }\r\n }\r\n\r\n return undefined;\r\n};\r\n\r\nexport const resolvePivotLeafHeaderName = (\r\n colDef: any,\r\n columnFields: PivotApiField[],\r\n lookupDisplayName: (field: PivotApiField, rawValue: any) => string,\r\n measureCount: number,\r\n measures: PivotApiMeasure[]\r\n): string | null => {\r\n if (isPivotRowGrandTotalColumnDef(colDef)) {\r\n return null;\r\n }\r\n\r\n if (measureCount > 1 && colDef.pivotValueColumn) {\r\n return null;\r\n }\r\n\r\n const pivotKeys: string[] = colDef && colDef.pivotKeys ? colDef.pivotKeys : [];\r\n if (pivotKeys.length === 0) {\r\n return null;\r\n }\r\n\r\n const field = columnFields[pivotKeys.length - 1];\r\n if (!field) {\r\n return null;\r\n }\r\n\r\n return lookupDisplayName(field, pivotKeys[pivotKeys.length - 1]);\r\n};\r\n\r\nexport const resolveMeasureForSecondaryColDef = (\r\n colDef: any,\r\n measures: PivotApiMeasure[]\r\n): PivotApiMeasure | undefined => {\r\n return resolveMeasureFromPivotValueColumn(colDef, measures);\r\n};\r\n\r\nconst getColumnGroupAtHeaderLevel = (column: any, targetLevel: number): any | null => {\r\n if (!column || typeof column.getParent !== 'function') {\r\n return null;\r\n }\r\n\r\n let groupPointer = column.getParent();\r\n while (groupPointer) {\r\n const providedColumnGroup = typeof groupPointer.getProvidedColumnGroup === 'function'\r\n ? groupPointer.getProvidedColumnGroup()\r\n : null;\r\n if (!providedColumnGroup) {\r\n groupPointer = typeof groupPointer.getParent === 'function' ? groupPointer.getParent() : null;\r\n continue;\r\n }\r\n\r\n const originalGroupLevel = typeof providedColumnGroup.getLevel === 'function'\r\n ? providedColumnGroup.getLevel()\r\n : 0;\r\n const groupPointerLevel = typeof groupPointer.getPaddingLevel === 'function'\r\n ? groupPointer.getPaddingLevel()\r\n : 0;\r\n\r\n if (originalGroupLevel + groupPointerLevel <= targetLevel) {\r\n return groupPointer;\r\n }\r\n\r\n groupPointer = typeof groupPointer.getParent === 'function' ? groupPointer.getParent() : null;\r\n }\r\n\r\n return null;\r\n};\r\n\r\nconst escapeColumnIdSelector = (columnId: string): string => {\r\n if (typeof CSS !== 'undefined' && typeof CSS.escape === 'function') {\r\n return CSS.escape(columnId);\r\n }\r\n\r\n return columnId.replace(/\\\\/g, '\\\\\\\\').replace(/\"/g, '\\\\\"');\r\n};\r\n\r\nconst findHeaderGroupCellByColumnGroup = (\r\n headerContainer: HTMLElement,\r\n groupRows: HTMLElement[],\r\n targetGroupLevel: number,\r\n columnGroup: any\r\n): HTMLElement | null => {\r\n if (!columnGroup || typeof columnGroup.getUniqueId !== 'function') {\r\n return null;\r\n }\r\n\r\n const groupId = columnGroup.getUniqueId();\r\n const groupRowIndex = Math.min(Math.max(targetGroupLevel, 0), groupRows.length - 1);\r\n const targetGroupRow = groupRows[groupRowIndex];\r\n if (!targetGroupRow) {\r\n return null;\r\n }\r\n\r\n return targetGroupRow.querySelector(`[col-id=\"${escapeColumnIdSelector(groupId)}\"]`) as HTMLElement | null;\r\n};\r\n\r\nexport const applyPivotRowGrandTotalGroupHeaderLabel = (\r\n gridRootElement: HTMLElement | null,\r\n columnApi: any,\r\n measureCount: number,\r\n columnPivotFieldCount: number\r\n): void => {\r\n if (!gridRootElement || !columnApi || measureCount <= 1) {\r\n return;\r\n }\r\n\r\n clearPivotRowGrandTotalGroupHeaderMarkup(gridRootElement);\r\n\r\n const displayedColumns = typeof columnApi.getAllDisplayedColumns === 'function'\r\n ? columnApi.getAllDisplayedColumns()\r\n : [];\r\n const rowGrandTotalColumns = displayedColumns.filter((column: any) =>\r\n String(column.getColId()).indexOf('PivotRowTotal_') === 0\r\n );\r\n if (rowGrandTotalColumns.length <= 1) {\r\n return;\r\n }\r\n\r\n const centerHeaderContainer = gridRootElement.querySelector('.ag-header-viewport .ag-header-container') as HTMLElement | null;\r\n if (!centerHeaderContainer) {\r\n return;\r\n }\r\n\r\n const groupRows = Array.from(\r\n centerHeaderContainer.querySelectorAll('.ag-header-row-column-group')\r\n ) as HTMLElement[];\r\n if (groupRows.length === 0) {\r\n return;\r\n }\r\n\r\n const targetGroupLevel = columnPivotFieldCount > 0 ? columnPivotFieldCount - 1 : 0;\r\n const rowGrandTotalGroupCells = findRowGrandTotalGroupHeaderCells(\r\n centerHeaderContainer,\r\n groupRows,\r\n targetGroupLevel,\r\n rowGrandTotalColumns\r\n );\r\n if (rowGrandTotalGroupCells.length === 0) {\r\n return;\r\n }\r\n\r\n applyGrandTotalLabelToGroupHeaderCells(rowGrandTotalGroupCells);\r\n};\r\n\r\nconst clearPivotRowGrandTotalGroupHeaderMarkup = (gridRootElement: HTMLElement): void => {\r\n gridRootElement.querySelectorAll('.dl-pivot-row-grand-total-group-header, .dl-pivot-row-grand-total-group-header-sibling')\r\n .forEach(element => {\r\n element.classList.remove('dl-pivot-row-grand-total-group-header', 'dl-pivot-row-grand-total-group-header-sibling');\r\n });\r\n\r\n gridRootElement.querySelectorAll('.dl-pivot-row-grand-total-group-header-label')\r\n .forEach(label => {\r\n label.classList.remove('dl-pivot-row-grand-total-group-header-label');\r\n const labelElement = label as HTMLElement;\r\n labelElement.textContent = '';\r\n labelElement.style.width = '';\r\n labelElement.style.display = '';\r\n labelElement.style.textAlign = '';\r\n });\r\n};\r\n\r\nconst findRowGrandTotalGroupHeaderCells = (\r\n centerHeaderContainer: HTMLElement,\r\n groupRows: HTMLElement[],\r\n targetGroupLevel: number,\r\n rowGrandTotalColumns: any[]\r\n): HTMLElement[] => {\r\n const cellsByColumnGroup: HTMLElement[] = [];\r\n\r\n rowGrandTotalColumns.forEach((column: any) => {\r\n const columnGroup = getColumnGroupAtHeaderLevel(column, targetGroupLevel);\r\n const matchingCell = findHeaderGroupCellByColumnGroup(\r\n centerHeaderContainer,\r\n groupRows,\r\n targetGroupLevel,\r\n columnGroup\r\n );\r\n if (matchingCell) {\r\n cellsByColumnGroup.push(matchingCell);\r\n }\r\n });\r\n\r\n if (cellsByColumnGroup.length === rowGrandTotalColumns.length) {\r\n return cellsByColumnGroup;\r\n }\r\n\r\n const groupRowIndex = Math.min(Math.max(targetGroupLevel, 0), groupRows.length - 1);\r\n const targetGroupRow = groupRows[groupRowIndex];\r\n if (!targetGroupRow) {\r\n return cellsByColumnGroup;\r\n }\r\n\r\n const paddingCells = Array.from(\r\n targetGroupRow.querySelectorAll('.ag-header-group-cell-no-group')\r\n ) as HTMLElement[];\r\n const trailingPaddingCells = paddingCells.slice(-rowGrandTotalColumns.length);\r\n if (trailingPaddingCells.length === rowGrandTotalColumns.length) {\r\n return trailingPaddingCells;\r\n }\r\n\r\n return cellsByColumnGroup;\r\n};\r\n\r\nconst applyGrandTotalLabelToGroupHeaderCells = (rowGrandTotalGroupCells: HTMLElement[]): void => {\r\n const firstCell = rowGrandTotalGroupCells[0];\r\n const firstLabel = firstCell.querySelector('.ag-header-group-text, .ag-header-cell-text') as HTMLElement | null;\r\n if (!firstLabel) {\r\n return;\r\n }\r\n\r\n const combinedWidth = rowGrandTotalGroupCells.reduce((totalWidth, cell) => totalWidth + cell.offsetWidth, 0);\r\n firstLabel.textContent = 'Grand Total';\r\n firstLabel.style.width = `${combinedWidth}px`;\r\n firstLabel.style.display = 'inline-block';\r\n firstLabel.style.textAlign = 'center';\r\n firstLabel.classList.add('dl-pivot-row-grand-total-group-header-label');\r\n firstCell.classList.add('dl-pivot-row-grand-total-group-header');\r\n\r\n for (let index = 1; index < rowGrandTotalGroupCells.length; index++) {\r\n rowGrandTotalGroupCells[index].classList.add('dl-pivot-row-grand-total-group-header-sibling');\r\n const siblingLabel = rowGrandTotalGroupCells[index].querySelector('.ag-header-group-text, .ag-header-cell-text') as HTMLElement | null;\r\n if (siblingLabel) {\r\n siblingLabel.textContent = '';\r\n }\r\n }\r\n};\r\n\r\nexport const applyPivotRowGrandTotalHeader = (\r\n colDef: any,\r\n measureCount: number,\r\n measures: PivotApiMeasure[]\r\n): void => {\r\n if (!isPivotRowGrandTotalColumnDef(colDef)) {\r\n return;\r\n }\r\n\r\n if (measureCount <= 1) {\r\n colDef.headerName = 'Grand Total';\r\n return;\r\n }\r\n\r\n const measure = resolveMeasureFromPivotValueColumn(colDef, measures);\r\n if (measure) {\r\n colDef.headerName = getMeasureCaption(measure);\r\n }\r\n delete colDef.headerValueGetter;\r\n};\r\n\r\nexport const collectPivotRowPath = (startNode: any): { field: string, key: any }[] => {\r\n const path: { field: string, key: any }[] = [];\r\n if (!startNode) {\r\n return path;\r\n }\r\n\r\n if (startNode.footer) {\r\n if (startNode.level === -1) {\r\n return path;\r\n }\r\n\r\n if (startNode.field != null && startNode.key !== undefined) {\r\n path.unshift({ field: startNode.field, key: startNode.key });\r\n }\r\n }\r\n\r\n let node = startNode.parent;\r\n while (node && node.level >= 0) {\r\n if (!node.footer && node.field != null && node.key !== undefined) {\r\n path.unshift({ field: node.field, key: node.key });\r\n }\r\n node = node.parent;\r\n }\r\n\r\n return path;\r\n};\r\n\r\nexport const buildPivotDrillDownPivotFields = (\r\n colDef: any,\r\n startNode: any,\r\n apiFields: PivotApiField[]\r\n): any[] => {\r\n const columnFields = apiFields.filter(field => !isRowPivotField(field));\r\n const rowFields = apiFields.filter(isRowPivotField);\r\n const pivotFields: any[] = [];\r\n\r\n const columnKeys: string[] = colDef && colDef.pivotKeys ? colDef.pivotKeys : [];\r\n columnKeys.forEach((key, index) => {\r\n if (key === undefined) {\r\n return;\r\n }\r\n const field = columnFields[index];\r\n if (!field) {\r\n return;\r\n }\r\n pivotFields.push({\r\n FieldId: field.FieldId,\r\n FieldType: field.FieldType ? field.FieldType : 'Field',\r\n FieldValue: key,\r\n DateCode: field.DateCode\r\n });\r\n });\r\n\r\n collectPivotRowPath(startNode).forEach((pathItem) => {\r\n const field = rowFields.find(f => f.PivotCode === pathItem.field) || apiFields.find(f => f.PivotCode === pathItem.field);\r\n if (!field) {\r\n return;\r\n }\r\n pivotFields.push({\r\n FieldId: field.FieldId,\r\n FieldType: field.FieldType ? field.FieldType : 'Field',\r\n FieldValue: pathItem.key,\r\n DateCode: field.DateCode\r\n });\r\n });\r\n\r\n return pivotFields;\r\n};\r\n\r\nexport const getMeasureCaption = (measure: PivotApiMeasure): string => {\r\n const displayName = typeof measure.DisplayName == 'string' ? measure.DisplayName : '';\r\n if (measure.MeasureCode == 'Sum') {\r\n return ConvertStringToPascalCaseHelper(displayName.replace('Sum of ', ''));\r\n }\r\n return ConvertStringToPascalCaseHelper(displayName);\r\n};\r\n\r\nexport const parseJsonArray = (json: string | null | undefined): any[] => {\r\n if (isNullOrUndefinedOrEmpty(json)) return [];\r\n try {\r\n const parsed = JSON.parse(json as string);\r\n return parsed || [];\r\n } catch (error) {\r\n return [];\r\n }\r\n};\r\n\r\nexport const parsePivotTotalsSettings = (json: string | null | undefined): any => {\r\n if (isNullOrUndefinedOrEmpty(json)) return {};\r\n try {\r\n return JSON.parse(json as string) || {};\r\n } catch (error) {\r\n return {};\r\n }\r\n};\r\n","import React, { forwardRef, useCallback, useEffect, useMemo, useRef, useState } from 'react';\r\nimport { AgGridReact } from 'ag-grid-react';\r\nimport { LicenseManager } from 'ag-grid-enterprise';\r\nimport 'ag-grid-enterprise';\r\nimport 'ag-grid-community/dist/styles/ag-grid.css';\r\nimport 'ag-grid-community/dist/styles/ag-theme-balham.css';\r\nimport { ColDef, ColGroupDef, GridApi, GridReadyEvent, CellClickedEvent, FirstDataRenderedEvent } from 'ag-grid-community';\r\nimport { ProgressSpinner } from 'primereact/progressspinner';\r\nimport { DashboardAnalyticsService } from '../../../../services/DashboardAnalyticsService';\r\nimport { CustomChartProps } from './CustomChart';\r\nimport { Session } from '../../../../services/session';\r\nimport { isNullOrUndefinedOrEmpty } from '../../../../Utils/General';\r\nimport { ReactWidgetPM } from '../../../../types/widget';\r\nimport { WidgetLoadLogger } from '../../../../Utils/WidgetLoadLogger';\r\nimport {\r\n PivotApiField,\r\n PivotApiMeasure,\r\n compareDimensionValues,\r\n formatPivotMeasureValue,\r\n getMeasureCaption,\r\n getPivotDisplayName,\r\n getPivotGroupFooterLabel,\r\n isPivotMeasureValueEmpty,\r\n isRowPivotField,\r\n logitudeSumAgg,\r\n parseJsonArray,\r\n parsePivotTotalsSettings,\r\n resolveMeasureForSecondaryColDef,\r\n resolvePivotGroupHeaderName,\r\n resolvePivotLeafHeaderName,\r\n applyPivotRowGrandTotalHeader,\r\n applyPivotRowGrandTotalGroupHeaderLabel,\r\n buildPivotDrillDownPivotFields\r\n} from './PivotAgGridSupport';\r\n\r\ntype PivotChartProps = {\r\n customChartProps: CustomChartProps;\r\n};\r\n\r\nconst ROW_GROUP_COLUMN_MIN_WIDTH = 100;\r\n\r\nconst applyAgGridLicense = () => {\r\n if (!Session.AgGridLicenseKey) return;\r\n LicenseManager.setLicenseKey(Session.AgGridLicenseKey);\r\n};\r\n\r\nconst AgPivotGrid = forwardRef((props: PivotChartProps, _comRef) => {\r\n const [widget, setWidget] = useState<ReactWidgetPM>();\r\n const [isLoading, setIsLoading] = useState<boolean>(true);\r\n const [rowData, setRowData] = useState<any[]>([]);\r\n const [columnDefs, setColumnDefs] = useState<ColDef[]>([]);\r\n const [measureCount, setMeasureCount] = useState<number>(0);\r\n\r\n const widgetRefData = useRef<ReactWidgetPM | null>(null);\r\n const tabledata = useRef<any>();\r\n const gridApiRef = useRef<GridApi | null>(null);\r\n const columnApiRef = useRef<any>(null);\r\n const gridContainerRef = useRef<HTMLDivElement | null>(null);\r\n const pivotFieldsRef = useRef<PivotApiField[]>([]);\r\n const pivotMeasuresRef = useRef<PivotApiMeasure[]>([]);\r\n\r\n useEffect(() => {\r\n applyAgGridLicense();\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) return;\r\n\r\n if (gridContainerRef.current && gridContainerRef.current.classList) {\r\n gridContainerRef.current.classList.add('force-overflow-hidden');\r\n }\r\n setTimeout(() => {\r\n handleResize();\r\n if (gridContainerRef.current && gridContainerRef.current.classList) {\r\n gridContainerRef.current.classList.remove('force-overflow-hidden');\r\n }\r\n }, 5);\r\n }, [props.customChartProps.isInEditMode]);\r\n\r\n const handleResize = () => {\r\n if (gridApiRef.current && gridApiRef.current.resetRowHeights) {\r\n gridApiRef.current.resetRowHeights();\r\n }\r\n };\r\n\r\n const getPivotTableData = (widgetPm: any) => {\r\n if (Session.Tenant == 0) {\r\n tabledata.current = [];\r\n setRowData([]);\r\n setIsLoading(false);\r\n return;\r\n }\r\n\r\n const dashboardAnalyticsService = new DashboardAnalyticsService();\r\n const widgetLoadLogger = new WidgetLoadLogger(props.customChartProps.widget as any, props.customChartProps.isPreviewModeActive, 'PostGetPivotData');\r\n dashboardAnalyticsService.getPivotData(widgetPm)\r\n .then((res) => {\r\n tabledata.current = res.data;\r\n buildGridFromPivotResponse();\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 setRowData([]);\r\n setIsLoading(false);\r\n });\r\n };\r\n\r\n const lookupDisplayName = (field: PivotApiField, rawValue: any): string => {\r\n const pivotData = tabledata.current && tabledata.current.PivotData ? tabledata.current.PivotData : [];\r\n return getPivotDisplayName(pivotData, field.PivotName, field.PivotCode, rawValue);\r\n };\r\n\r\n const lookupDisplayNameByFieldCode = (fieldCode: string, rawValue: any): string => {\r\n const field = pivotFieldsRef.current.find(f => f.PivotCode === fieldCode);\r\n if (!field) return rawValue == null ? '' : String(rawValue);\r\n return lookupDisplayName(field, rawValue);\r\n };\r\n\r\n const applyPivotDataCellFormatting = (colDef: ColDef) => {\r\n colDef.sortable = false;\r\n colDef.filter = false;\r\n colDef.cellClass = 'dl-ag-pivot-data-cell';\r\n colDef.type = 'numericColumn';\r\n };\r\n\r\n const buildGridFromPivotResponse = () => {\r\n if (!tabledata.current || !tabledata.current.PivoFields || !tabledata.current.PivotMeasures) {\r\n setRowData([]);\r\n return;\r\n }\r\n\r\n const apiFields: PivotApiField[] = tabledata.current.PivoFields;\r\n const apiMeasures: PivotApiMeasure[] = tabledata.current.PivotMeasures;\r\n pivotFieldsRef.current = apiFields;\r\n pivotMeasuresRef.current = apiMeasures;\r\n setMeasureCount(apiMeasures.length);\r\n\r\n const rowFields = apiFields.filter(isRowPivotField);\r\n const columnFields = apiFields.filter(field => !isRowPivotField(field));\r\n const defs: ColDef[] = [];\r\n\r\n rowFields.forEach((field, index) => {\r\n defs.push(createRowGroupColDef(field, index));\r\n });\r\n columnFields.forEach((field, index) => {\r\n defs.push(createPivotColDef(field, index));\r\n });\r\n apiMeasures.forEach((measure) => {\r\n defs.push(createMeasureColDef(measure));\r\n });\r\n\r\n setColumnDefs(defs);\r\n setRowData(tabledata.current.PivotData || []);\r\n };\r\n\r\n const createRowGroupColDef = (field: PivotApiField, index: number): ColDef => {\r\n return {\r\n field: field.PivotCode,\r\n headerName: field.DisplayName,\r\n rowGroup: true,\r\n rowGroupIndex: index,\r\n enableRowGroup: true,\r\n hide: true,\r\n width: ROW_GROUP_COLUMN_MIN_WIDTH,\r\n wrapText: true,\r\n autoHeight: true,\r\n sortable: false,\r\n filter: false,\r\n comparator: (a, b) => compareDimensionValues(a, b, field.DateCode, lookupDisplayName(field, a), lookupDisplayName(field, b)),\r\n valueFormatter: (params) => lookupDisplayName(field, params.value)\r\n };\r\n };\r\n\r\n const createPivotColDef = (field: PivotApiField, index: number): ColDef => {\r\n return {\r\n field: field.PivotCode,\r\n headerName: field.DisplayName,\r\n pivot: true,\r\n pivotIndex: index,\r\n enablePivot: true,\r\n hide: true,\r\n sortable: false,\r\n filter: false,\r\n pivotComparator: (a, b) => compareDimensionValues(\r\n a,\r\n b,\r\n field.DateCode,\r\n lookupDisplayName(field, a),\r\n lookupDisplayName(field, b)\r\n )\r\n };\r\n };\r\n\r\n const createMeasureColDef = (measure: PivotApiMeasure): ColDef => {\r\n return {\r\n field: measure.PivotMeasureCode,\r\n headerName: getMeasureCaption(measure),\r\n aggFunc: 'logitudeSum',\r\n enableValue: true,\r\n wrapText: true,\r\n autoHeight: true,\r\n sortable: false,\r\n filter: false,\r\n cellClass: 'dl-ag-pivot-data-cell',\r\n type: 'numericColumn',\r\n valueFormatter: (params) => formatPivotMeasureValue(params.value, measure)\r\n };\r\n };\r\n\r\n const isRowsEmptyAndColumnsNotEmpty = () => {\r\n const pivotRows = parseJsonArray(widget?.PivotRows);\r\n const pivotColumns = parseJsonArray(widget?.PivotColumns);\r\n return pivotRows.length === 0 && pivotColumns.length > 0;\r\n };\r\n\r\n const isRowsNotEmptyAndColumnsEmpty = () => {\r\n const pivotRows = parseJsonArray(widget?.PivotRows);\r\n const pivotColumns = parseJsonArray(widget?.PivotColumns);\r\n return pivotRows.length > 0 && pivotColumns.length === 0;\r\n };\r\n\r\n const canShowRowsGrandTotal = (): boolean => {\r\n if (isRowsEmptyAndColumnsNotEmpty()) return true;\r\n const settings = parsePivotTotalsSettings(widget?.PivotTotalsSettings);\r\n return !isNullOrUndefinedOrEmpty(settings.ShowRowsGrandTotal) ? !!settings.ShowRowsGrandTotal : false;\r\n };\r\n\r\n const canShowColumnsGrandTotal = (): boolean => {\r\n if (isRowsNotEmptyAndColumnsEmpty()) return true;\r\n const settings = parsePivotTotalsSettings(widget?.PivotTotalsSettings);\r\n return !isNullOrUndefinedOrEmpty(settings.ShowColumnsGrandTotal) ? !!settings.ShowColumnsGrandTotal : false;\r\n };\r\n\r\n const canShowRowsTotal = (): boolean => {\r\n const settings = parsePivotTotalsSettings(widget?.PivotTotalsSettings);\r\n return !isNullOrUndefinedOrEmpty(settings.ShowRowsTotal) ? !!settings.ShowRowsTotal : false;\r\n };\r\n\r\n const canShowColumnsTotal = (): boolean => {\r\n const settings = parsePivotTotalsSettings(widget?.PivotTotalsSettings);\r\n return !isNullOrUndefinedOrEmpty(settings.ShowColumnsTotal) ? !!settings.ShowColumnsTotal : false;\r\n };\r\n\r\n const isSingleMeasurePivot = measureCount <= 1;\r\n\r\n const processSecondaryColGroupDef = useCallback((colGroupDef: ColGroupDef) => {\r\n const columnFields = pivotFieldsRef.current.filter(field => !isRowPivotField(field));\r\n const headerName = resolvePivotGroupHeaderName(colGroupDef, columnFields, lookupDisplayName);\r\n if (headerName) {\r\n colGroupDef.headerName = headerName;\r\n }\r\n }, []);\r\n\r\n const processSecondaryColDef = useCallback((colDef: ColDef) => {\r\n const columnFields = pivotFieldsRef.current.filter(field => !isRowPivotField(field));\r\n const colDefAny: any = colDef;\r\n\r\n if (colDefAny.colId && String(colDefAny.colId).indexOf('PivotRowTotal_') === 0) {\r\n applyPivotRowGrandTotalHeader(\r\n colDefAny,\r\n pivotMeasuresRef.current.length,\r\n pivotMeasuresRef.current\r\n );\r\n } else {\r\n const headerName = resolvePivotLeafHeaderName(\r\n colDefAny,\r\n columnFields,\r\n lookupDisplayName,\r\n pivotMeasuresRef.current.length,\r\n pivotMeasuresRef.current\r\n );\r\n if (headerName) {\r\n colDef.headerName = headerName;\r\n }\r\n }\r\n\r\n applyPivotDataCellFormatting(colDef);\r\n colDef.valueFormatter = (params) => {\r\n const measure = resolveMeasureForSecondaryColDef(params.colDef, pivotMeasuresRef.current);\r\n if (!measure) return '';\r\n return formatPivotMeasureValue(params.value, measure);\r\n };\r\n }, []);\r\n\r\n const onCellClicked = useCallback((event: CellClickedEvent) => {\r\n const colDef: any = event.colDef;\r\n if (!colDef || !colDef.pivotValueColumn) return;\r\n if (isPivotMeasureValueEmpty(event.value)) return;\r\n\r\n const pivotFields = buildPivotDrillDownPivotFields(colDef, event.node, pivotFieldsRef.current);\r\n\r\n props.customChartProps.onSelectDataPoint({\r\n MeasureFieldId: '',\r\n MeasureFieldType: '',\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 const defaultColDef = useMemo<ColDef>(() => ({\r\n sortable: false,\r\n filter: false,\r\n resizable: false,\r\n suppressMenu: true,\r\n wrapText: true,\r\n autoHeight: true\r\n }), []);\r\n\r\n const autoGroupColumnDef = useMemo<ColDef>(() => ({\r\n minWidth: ROW_GROUP_COLUMN_MIN_WIDTH,\r\n width: ROW_GROUP_COLUMN_MIN_WIDTH,\r\n sortable: false,\r\n filter: false,\r\n wrapText: true,\r\n autoHeight: true,\r\n cellClass: 'dl-ag-pivot-row-label-cell',\r\n headerValueGetter: (params) => {\r\n const colDef: any = params.colDef;\r\n const showRowGroup = colDef && colDef.showRowGroup;\r\n if (!showRowGroup) return '';\r\n const field = pivotFieldsRef.current.find(f => f.PivotCode === showRowGroup);\r\n return field ? field.DisplayName : '';\r\n },\r\n valueFormatter: (params) => {\r\n const colDef: any = params.colDef;\r\n const showRowGroup = colDef && colDef.showRowGroup;\r\n const field = pivotFieldsRef.current.find(f => f.PivotCode === showRowGroup);\r\n if (!field) return params.value == null ? '' : String(params.value);\r\n return lookupDisplayName(field, params.value);\r\n },\r\n cellRendererParams: {\r\n suppressCount: true,\r\n footerValueGetter: (params: any) => {\r\n const fieldCode = params.node && params.node.field\r\n ? params.node.field\r\n : (params.colDef && params.colDef.showRowGroup ? params.colDef.showRowGroup : null);\r\n return getPivotGroupFooterLabel(\r\n params.node,\r\n fieldCode,\r\n params.value,\r\n lookupDisplayNameByFieldCode\r\n );\r\n }\r\n }\r\n }), []);\r\n\r\n const aggFuncs = useMemo(() => ({\r\n logitudeSum: logitudeSumAgg\r\n }), []);\r\n\r\n const scheduleRowGrandTotalHeaderLabel = useCallback(() => {\r\n const columnPivotFieldCount = pivotFieldsRef.current.filter(field => !isRowPivotField(field)).length;\r\n const applyLabel = () => {\r\n applyPivotRowGrandTotalGroupHeaderLabel(\r\n gridContainerRef.current,\r\n columnApiRef.current,\r\n measureCount,\r\n columnPivotFieldCount\r\n );\r\n };\r\n\r\n window.requestAnimationFrame(() => {\r\n window.requestAnimationFrame(() => {\r\n applyLabel();\r\n window.setTimeout(applyLabel, 150);\r\n });\r\n });\r\n }, [measureCount]);\r\n\r\n const onGridReady = (event: GridReadyEvent) => {\r\n gridApiRef.current = event.api;\r\n columnApiRef.current = event.columnApi;\r\n };\r\n\r\n const onFirstDataRendered = (event: FirstDataRenderedEvent) => {\r\n columnApiRef.current = event.columnApi;\r\n const columnApi: any = event.columnApi;\r\n if (!columnApi || !columnApi.getAllDisplayedColumns) return;\r\n\r\n const autoGroupColumnIds = columnApi.getAllDisplayedColumns()\r\n .map((col: any) => col.getColId())\r\n .filter((colId: string) => colId.indexOf('ag-Grid-AutoColumn') === 0);\r\n\r\n if (autoGroupColumnIds.length > 0 && columnApi.autoSizeColumns) {\r\n columnApi.autoSizeColumns(autoGroupColumnIds, false);\r\n }\r\n\r\n scheduleRowGrandTotalHeaderLabel();\r\n };\r\n\r\n const onColumnPivotChanged = () => {\r\n scheduleRowGrandTotalHeaderLabel();\r\n };\r\n\r\n const onColumnResized = () => {\r\n scheduleRowGrandTotalHeaderLabel();\r\n };\r\n\r\n const gridWrapperClassName = 'ag-theme-balham pivot-grid-element dl-ag-pivot-grid';\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 <div ref={gridContainerRef} className={gridWrapperClassName}>\r\n <AgGridReact\r\n rowData={rowData}\r\n columnDefs={columnDefs}\r\n defaultColDef={defaultColDef}\r\n autoGroupColumnDef={autoGroupColumnDef}\r\n aggFuncs={aggFuncs}\r\n pivotMode={true}\r\n groupDisplayType=\"multipleColumns\"\r\n groupDefaultExpanded={-1}\r\n suppressAggFuncInHeader={true}\r\n removePivotHeaderRowWhenSingleValueColumn={isSingleMeasurePivot}\r\n groupIncludeFooter={canShowRowsTotal()}\r\n groupIncludeTotalFooter={canShowRowsGrandTotal()}\r\n pivotRowTotals={canShowColumnsGrandTotal() ? 'after' : undefined}\r\n pivotColumnGroupTotals={canShowColumnsTotal() ? 'after' : undefined}\r\n processSecondaryColGroupDef={processSecondaryColGroupDef}\r\n processSecondaryColDef={processSecondaryColDef}\r\n onCellClicked={onCellClicked}\r\n onGridReady={onGridReady}\r\n onFirstDataRendered={onFirstDataRendered}\r\n onColumnPivotChanged={onColumnPivotChanged}\r\n onColumnResized={onColumnResized}\r\n animateRows={false}\r\n suppressContextMenu={true}\r\n suppressMovableColumns={true}\r\n headerHeight={36}\r\n rowHeight={36}\r\n />\r\n </div>\r\n }\r\n </React.Fragment>\r\n );\r\n});\r\n\r\nexport default AgPivotGrid;\r\n","import React, { useMemo } from \"react\";\r\nimport { CustomChartProps } from \"./CustomChart\";\r\nimport { DataPointSelection } from \"../../../../types/SeriesMeasure\";\r\n\r\ndeclare var window: any;\r\n\r\ntype SelectedQueryItem = {\r\n UniqueCode: string;\r\n DisplayLabel: string;\r\n GroupKey?: string;\r\n};\r\n\r\nconst parseSelectedQueries = (widgetJson: string | null | undefined): SelectedQueryItem[] => {\r\n if (!widgetJson) {\r\n return [];\r\n }\r\n try {\r\n const parsed = JSON.parse(widgetJson);\r\n if (parsed && Array.isArray(parsed.SelectedQueries)) {\r\n return parsed.SelectedQueries;\r\n }\r\n } catch {\r\n //\r\n }\r\n return [];\r\n};\r\n\r\nconst ViewsChart = (props: { customChartProps: CustomChartProps }) => {\r\n const widget = props.customChartProps.widget;\r\n const objectTableName = (widget as any)?.ViewsWidgetObjectTableName as string | undefined;\r\n\r\n const entries = useMemo(() => parseSelectedQueries((widget as any)?.WidgetJson), [widget]);\r\n\r\n const handleClick = (uniqueCode: string) => {\r\n if (!objectTableName || !uniqueCode) {\r\n return;\r\n }\r\n const selection: DataPointSelection = {\r\n Widget: widget,\r\n ViewsNavigation: {\r\n ObjectTableName: objectTableName,\r\n QueryUniqueCode: uniqueCode,\r\n },\r\n };\r\n props.customChartProps.onSelectDataPoint(selection);\r\n };\r\n\r\n if (!entries.length) {\r\n return (\r\n <div className=\"dl-views-widget-empty\">\r\n <span className=\"dl-views-widget-empty-text\">No views configured</span>\r\n </div>\r\n );\r\n }\r\n\r\n return (\r\n <div className=\"dl-views-widget-list\">\r\n {entries.map((row) => (\r\n <div key={row.UniqueCode} className=\"dl-views-widget-row\">\r\n <button\r\n type=\"button\"\r\n className=\"dl-views-widget-link\"\r\n onClick={() => handleClick(row.UniqueCode)}\r\n >\r\n {row.DisplayLabel || row.UniqueCode}\r\n </button>\r\n </div>\r\n ))}\r\n </div>\r\n );\r\n};\r\n\r\nexport default ViewsChart;\r\n","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\nimport AgPivotGrid from \"./AgPivotGrid\";\r\nimport ViewsChart from \"./ViewsChart\";\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 useAgGridPivot?: 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 props.useAgGridPivot\r\n ? <AgPivotGrid customChartProps={props} />\r\n : <PivotTable customChartProps={props} />;\r\n case \"views\": return <ViewsChart 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' : ''} ${props.widget && props.widget?.TypeCode == 'views' ? 'dl-views-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,widget) + `</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,widget) + `</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,widget) + `</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, widget: ReactWidgetPM) {\r\n\r\n if(!seriesMeasures){\r\n return;\r\n }\r\n\r\n let percentageValueInLocalFormat = getPercentageGroupValueAsNumber(seriesMeasures,groupbyId,secGroupbyId,widget);\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, widget: ReactWidgetPM) {\r\n \r\n if(!seriesMeasure){\r\n return \"\";\r\n }\r\n\r\n let decimalPlaces = widget?.DecimalPlaces || 0;\r\n\r\n let total = getSumOfGroupValuesAsNumber(seriesMeasure,groupbyId);\r\n\r\n return `<span style=\"margin-right:6px;\">Total:</span>${getNumberInSystemLocalFormat(total,decimalPlaces,decimalPlaces,true)}`;\r\n}\r\n\r\nfunction getPercentageGroupValueAsNumber(seriesMeasure: SeriesMeasure, groupbyId: string | null, secGroupbyId: string | null, widget: ReactWidgetPM) {\r\n \r\n if(!seriesMeasure){\r\n return;\r\n }\r\n\r\n let decimalPlaces = widget?.DecimalPlaces || 0;\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),decimalPlaces,decimalPlaces,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,widget);\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, widget: ReactWidgetPM) {\r\n \r\n if(!seriesMeasure){\r\n return;\r\n }\r\n let decimalPlaces = widget?.DecimalPlaces || 0;\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),decimalPlaces,decimalPlaces,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, widget: ReactWidgetPM): string | number {\r\n\r\n if(isNullOrUndefined(value)){\r\n return '$dataValue';\r\n }\r\n\r\n let decimalPlaces = widget?.DecimalPlaces || 0;\r\n\r\n if(FieldDataType.isPercentage(seriesMeasure?.MeasureFieldDataType)){\r\n\r\n return getNumberInSystemLocalFormat(value,decimalPlaces,decimalPlaces,true) + \"%\";\r\n\r\n }\r\n\r\n return getNumberInSystemLocalFormat(value,decimalPlaces,decimalPlaces,true);\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 setSafeYAxisMaxValue(chartInfo, seriesMeasures, widget);\r\n\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 setSafeYAxisMaxValue(chartInfo, seriesMeasures, widget);\r\n\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 setSafeYAxisMaxValue(chartInfo: ChartInfo, seriesMeasures: SeriesMeasure[], widget: ReactWidgetPM): void {\r\n if (!isColumnOrBarChart(widget)) return;\r\n\r\n const maxMeasureValue = getMaxMeasureValue(seriesMeasures, widget);\r\n if (maxMeasureValue === null) return;\r\n\r\n // Keep a 20% headroom so outside value labels do not overlap the top canvas edge.\r\n const safeYAxisMaxValue = Math.max(1, Math.ceil(maxMeasureValue * 1.2));\r\n chartInfo.yAxisMaxValue = safeYAxisMaxValue.toString();\r\n}\r\n\r\nfunction getMaxMeasureValue(seriesMeasures: SeriesMeasure[], widget: ReactWidgetPM): number | null {\r\n if (!seriesMeasures || seriesMeasures.length === 0) return null;\r\n\r\n if (widget?.IsStacked) {\r\n const stackedTotalsByGroupId = new Map<any, number>();\r\n\r\n seriesMeasures.forEach((seriesMeasure) => {\r\n seriesMeasure?.Values?.forEach((valueItem) => {\r\n const numericValue = toNumericValue(valueItem?.Value);\r\n if (numericValue === null) return;\r\n\r\n const groupId = valueItem?.GroupById;\r\n const currentTotal = stackedTotalsByGroupId.get(groupId) || 0;\r\n stackedTotalsByGroupId.set(groupId, currentTotal + numericValue);\r\n });\r\n });\r\n\r\n let maxStackedTotal: number | null = null;\r\n stackedTotalsByGroupId.forEach((total) => {\r\n if (maxStackedTotal === null || total > maxStackedTotal) {\r\n maxStackedTotal = total;\r\n }\r\n });\r\n\r\n return maxStackedTotal;\r\n }\r\n\r\n let maxValue: number | null = null;\r\n\r\n seriesMeasures.forEach((seriesMeasure) => {\r\n seriesMeasure?.Values?.forEach((valueItem) => {\r\n const numericValue = toNumericValue(valueItem?.Value);\r\n if (numericValue === null) return;\r\n\r\n if (maxValue === null || numericValue > maxValue) {\r\n maxValue = numericValue;\r\n }\r\n });\r\n });\r\n\r\n return maxValue;\r\n}\r\n\r\nfunction toNumericValue(value: any): number | null {\r\n if (value === null || value === undefined || value === \"\") return null;\r\n\r\n const numericValue = typeof value === \"number\" ? value : Number(value);\r\n if (!Number.isFinite(numericValue)) return null;\r\n\r\n return numericValue;\r\n}\r\n\r\nfunction isColumnOrBarChart(widget: ReactWidgetPM): boolean {\r\n return widget?.TypeCode === \"column\" || widget?.TypeCode === \"bar\";\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,widget),\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,widget),\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,widget),\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, value, 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, isPreviewModeActive?: boolean) => {\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 = widget.ShowValue ? \"1\" : '0';\r\n chartInfo.valueFontSize = widget.ShowValue ? widget.ValueFontSize : null;\r\n chartInfo.valueFontColor = widget.ShowValue ? widget.ValueFontColor : null;\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,widget),\r\n \"tooltext\": !isPreviewModeActive ? \"Click for more details\" : null\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\r\n let chart = {} as ChartInfo;\r\n \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 chart.pYAxisNameFont = defautFont;\r\n chart.pYAxisNameFontSize = defautFontSize;\r\n chart.pYAxisNameFontColor = defautColor;\r\n chart.xAxisNameFont = defautFont;\r\n chart.xAxisNameFontSize = defautFontSize;\r\n chart.xAxisNameFontColor = defautColor;\r\n chart.yAxisNameFont = defautFont;\r\n chart.yAxisNameFontSize = defautFontSize;\r\n chart.yAxisNameFontColor = defautColor;\r\n chart.drawCrossLine = \"0\";\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(isColumnOrBarChart(widget)) {\r\n chart.canvasTopPadding = \"40\";\r\n }\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 = \"15\"\r\n }\r\n\r\n if(isValuePositionInside && isPieOrDonutChart(widget)) {\r\n chart.minAngleForValue = \"27\"\r\n }\r\n\r\n chart.formatNumber = \"1\";\r\n\r\n let _numberSeparatorSettings = getGlobalNumberFormatting();\r\n chart.thousandSeparator = _numberSeparatorSettings.thousandsSeparator;\r\n chart.decimalSeparator = _numberSeparatorSettings.decimalSeparator;\r\n\r\n chart.numberSuffix = isFirstMeasureTypePercentage(widget) ? \"%\" : null;\r\n\r\n if(widget.ShowMeasureUnit && widget.MeasureUnit1){\r\n\r\n chart.numberSuffix = (chart.numberSuffix) ? ` ${widget.MeasureUnit1} ${chart.numberSuffix}` : ` ${widget.MeasureUnit1}`;\r\n }\r\n\r\n if(widget.ShowMeasureUnit && widget.MeasureUnit2){\r\n\r\n chart.sNumberSuffix = ` ${widget.MeasureUnit2}`; // Suffix for the secondary Y-axis\r\n }\r\n\r\n if(isDecimalPlacesEnabled(widget)){\r\n\r\n if(widget.DecimalPlaces && widget.DecimalPlaces > 0){\r\n\r\n chart.forceDecimals = \"1\";\r\n chart.decimals = `${widget.DecimalPlaces}`;\r\n\r\n }else{\r\n\r\n chart.forceDecimals = \"0\";\r\n chart.decimals = \"0\";\r\n }\r\n }\r\n\r\n\r\n if(isWidgetUsedAbbreviation(widget)){\r\n\r\n chart.formatNumberScale= \"1\";\r\n\r\n }else{\r\n chart.formatNumberScale= \"0\";\r\n }\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 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\r\n if(chartInfo.sNumberSuffix){\r\n\r\n if(isSecondMeasureTypePercentage(widget)){\r\n\r\n chartInfo.sNumberSuffix = `${chartInfo.sNumberSuffix} % `;\r\n\r\n }\r\n \r\n }else{\r\n\r\n chartInfo.sNumberSuffix = isSecondMeasureTypePercentage(widget) ? \"%\" : null;\r\n\r\n }\r\n\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\nfunction isDecimalPlacesEnabled(widget: ReactWidgetPM): boolean | null {\r\n \r\n if(widget.TypeCode == \"pivot\"){\r\n return false;\r\n }\r\n\r\n return true;\r\n}\r\n\r\n\r\nfunction isWidgetUsedAbbreviation(widget: ReactWidgetPM) {\r\n \r\n if(!widget || widget.TypeCode == 'kpi' || widget.TypeCode == 'pivot'){\r\n return false;\r\n }\r\n\r\n if(widget.UseNumberAbbreviation){\r\n\r\n return true;\r\n }\r\n\r\n return false;\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 yAxisMaxValue: 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 valueFontSize: string | null;\r\n valueFontColor: string | null;\r\n autoScale: string | null;\r\n formatNumber: string | null;\r\n forceDecimals: string | null;\r\n decimals: string | null; \r\n\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, \"PostGetTargetDataAnalytic\");\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, \"PostGetDataAnalytic\");\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\n\r\n\r\n return (\r\n <div className={'db-fc-parent-container'} ref={fusionRef}>\r\n <div className={'db-fc-container' + (dataLoaded && error ? \" db-fc-container-error\" : \"\")} key={fusionKey} ref={ref} id={chartContainerId}>\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 {dataLoaded && !error &&\r\n <ReactFC\r\n {...args}\r\n fcEvent-dataplotClick={dataplotClick}\r\n fcEvent-loaded={loaded}\r\n onRender={renderComplete}\r\n />\r\n }\r\n {dataLoaded && 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 </div>\r\n }\r\n </div>\r\n </div>\r\n )\r\n\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, \"PostGetGaugeData\");\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!, props.isPreviewModeActive)\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 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 renderComplete = (eventObj) => {\r\n // Access the chart's container\r\n const chartRef = eventObj.sender;\r\n const chartContainer = FusionCharts.getObjectReference(chartRef.id);\r\n if (!chartContainer) {\r\n console.error('Chart container is undefined');\r\n return;\r\n }\r\n const svgContainer = chartContainer.querySelector('svg');\r\n if (!svgContainer) {\r\n console.error('SVG Container is undefined');\r\n return;\r\n }\r\n\r\n const textElements = svgContainer.querySelectorAll('text');\r\n if (textElements.length > 0) {\r\n\r\n const lastTextElement = textElements[textElements.length - 1];\r\n\r\n if (!props.isPreviewModeActive) {\r\n\r\n lastTextElement.style.cursor = 'pointer';\r\n lastTextElement.style.transition = 'fill 0.2s, text-decoration 0.2s';\r\n\r\n lastTextElement.addEventListener('mouseenter', function () {\r\n lastTextElement.style.fill = '#007bff';\r\n lastTextElement.style.textDecoration = 'underline';\r\n });\r\n\r\n lastTextElement.addEventListener('mouseleave', function () {\r\n lastTextElement.style.fill = '';\r\n lastTextElement.style.textDecoration = 'none';\r\n });\r\n }\r\n\r\n lastTextElement.addEventListener('click', function () {\r\n\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.onSelectDataPoint({\r\n MeasureFieldId: measureFieldId,\r\n Widget: widget.current,\r\n MeasureCode: currentWidgetMeasure!.MeasureCode,\r\n Formula: currentWidgetMeasure!.Formula,\r\n });\r\n });\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-guage'} key={fusionKey} id={chartContainerId}>\r\n <ReactFC\r\n {...args}\r\n fcEvent-dataplotClick={dataplotClick}\r\n fcEvent-renderComplete={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, 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 { PopupActions } from 'reactjs-popup/dist/types';\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 duplicateBtnClicked?(id: any): any;\r\n copyToClipboardBtnClicked?(key: any, widget: ReactWidgetPM): 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 useAgGridPivot?: 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 const [showCopiedNotification, setShowCopiedNotification] = useState(false);\r\n const copyPopupRef = useRef<PopupActions>(null);\r\n const copiedNotificationTimer = useRef<any>(null);\r\n\r\n\r\n const editWidget = () => {\r\n props.editBtnClicked(widget.current)\r\n };\r\n\r\n const duplicateWidget = () => {\r\n if(props && props.duplicateBtnClicked){\r\n props.duplicateBtnClicked(widget.current?.key)\r\n } else if(props && props.copyBtnClicked){\r\n props.copyBtnClicked(widget.current?.key)\r\n }\r\n };\r\n\r\n const copyWidgetToClipboard = () => {\r\n if(props && props.copyToClipboardBtnClicked && widget.current){\r\n props.copyToClipboardBtnClicked(widget.current?.key, widget.current);\r\n setShowCopiedNotification(true);\r\n if (copiedNotificationTimer.current) clearTimeout(copiedNotificationTimer.current);\r\n copiedNotificationTimer.current = setTimeout(() => {\r\n setShowCopiedNotification(false);\r\n }, 700);\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 return () => {\r\n if (copiedNotificationTimer.current) clearTimeout(copiedNotificationTimer.current);\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} useAgGridPivot={props.useAgGridPivot} 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\" || widget.current?.TypeCode == \"views\") return <CustomChart isInEditMode={props.isInEditMode} isPreviewModeActive={props.isPreviewModeActive} useAgGridPivot={props.useAgGridPivot} 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: '#19395C'}}\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 <div> <EditWidgetIcon className=\"widget-card-edit-icon\" onClick={() => editWidget()} /> </div>\r\n <Popup\r\n ref={copyPopupRef}\r\n className=\"widget-copy-dropdown-container\"\r\n trigger={\r\n <div>\r\n <CopyWidgetIcon className=\"widget-card-copy-icon\" />\r\n </div>\r\n }\r\n position={['bottom left', 'bottom center']}\r\n closeOnDocumentClick\r\n closeOnEscape\r\n arrow={false}\r\n offsetY={2}\r\n >\r\n <div className=\"widget-copy-dropdown-menu\">\r\n <div className=\"widget-copy-dropdown-item\" onClick={() => { copyPopupRef.current?.close(); duplicateWidget(); }}>Duplicate</div>\r\n <div className=\"widget-copy-dropdown-item\" onClick={() => { copyPopupRef.current?.close(); copyWidgetToClipboard(); }}>Copy</div>\r\n </div>\r\n </Popup>\r\n <div> <DeleteWidgetIcon onClick={() => props.deleteBtnClicked(props.widget?.key)} /> </div>\r\n </div>\r\n }\r\n\r\n {showCopiedNotification &&\r\n <div className=\"widget-copied-notification\">\r\n <span className=\"widget-copied-notification-check\">✓</span>\r\n <span className=\"widget-copied-notification-title\">{widget.current?.Title}</span>\r\n <span className=\"widget-copied-notification-text\">widget copied</span>\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: '#19395C'}}\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 onCopyWidgetToClipboard?:(key: string, widget: ReactWidgetPM) => void,\r\n dataBinding: DashboardDataBinding,\r\n onSelectDataPoint: (dataPointSelection: DataPointSelection) => void,\r\n useAgGridPivot?: boolean;\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 function copyWidgetToClipboard(key: string, widget: ReactWidgetPM) {\r\n if(props && props.onCopyWidgetToClipboard){\r\n props.onCopyWidgetToClipboard(key, widget);\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 useAgGridPivot={props.useAgGridPivot}\r\n duplicateBtnClicked={copyWidget}\r\n copyToClipboardBtnClicked={copyWidgetToClipboard}\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 onCopyWidgetToClipboard?:(key: string, widget: ReactWidgetPM) => void,\r\n openDeleteWidgetConfirmWindow: (deleteProps: DeleteWidgetProps) => void,\r\n onSelectDataPoint: (dataPointSelection: DataPointSelection) => void;\r\n useAgGridPivot?: boolean;\r\n agGridLicenseKey?: string;\r\n};\r\nconst Dashboard = (props: DashboardProps) => {\r\n Session.UseAgGridPivot = !!props.useAgGridPivot;\r\n Session.AgGridLicenseKey = props.agGridLicenseKey;\r\n\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 Session.UseAgGridPivot = !!props.useAgGridPivot;\r\n Session.AgGridLicenseKey = props.agGridLicenseKey;\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 Session.UseAgGridPivot = !!props.useAgGridPivot;\r\n Session.AgGridLicenseKey = props.agGridLicenseKey;\r\n }, [props.useAgGridPivot, props.agGridLicenseKey])\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 copyWidgetToClipboard = (key: string, widget: ReactWidgetPM) => {\r\n if(props && props.onCopyWidgetToClipboard){\r\n props.onCopyWidgetToClipboard(key, widget);\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 useAgGridPivot={props.useAgGridPivot}\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 useAgGridPivot={props.useAgGridPivot}\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 onCopyWidgetToClipboard={copyWidgetToClipboard}\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","requestHeaders","isDashboardClickHouseActive","signal","Token","window","IsDashboardClickHouseActive","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","isNaN","truncateDecimals","DecimalPlaces","getNumberInSystemLocalFormat","decimalDigitsCount","minimumFractionDigits","isValueTruncated","applyAbbreviation","decimalParts","toString","maxFractionDigits","_numberSeparatorSettings","abbreviationSymbol","Math","abs","_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","requestName","StartTime","getTime","Widget","RequestName","log","loadDataResponse","canCreateLog","totalExecutionTime","widgetLoadLogService","Tenant","WidgetId","Id","DashboardId","LoadTime","getLoadTime","TotalExecutionTime","IsClickHouse","isClickHouse","WidgetType","TypeCode","IsDrillDown","then","_response","_error","loadTimeHeaderKey","loadTimeHeader","isNumber","clickHouseHeaderKey","clickHouseHeader","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","columns","isCalculatedColumn","ColumnVariableType","dataTypeCode","ColumnVariableDataType","dateDisplayMode","DateTimeDisplayMode","column","find","IsCalculatedColumn","DataTypeCode","EntityId","res","ObjectTableName","PageIndex","PageSize","fillTableData","getBooleanStringValue","_value","charAt","getDateTimeValue","datePart","tableRecords","Fields","setDefaultSortOptions","Result","item","_tableRow","field","FieldCode","valueType","tableCols","_widget","_sortFieldCode","getSortFieldCodeBySortFieldId","DefaultSortBy","_sortDirection","DefaultSortDirection","sortFieldId","col","getSortFieldIdBySortFieldCode","sortFieldCode","sortTableData","sortedField","canSort","_sortOrder","ScreenSortBy","ScreenSortDirection","ScreenSortByType","isInEditMode","getTableFormattingData","TableFormatSettings","getTableFormattingPropertyValue","tableFormattingData","getTableConditionalRulesData","TableConditionalRules","isValueEmpty","IsValidRule","rule","operator","RuleOperator","Code","ruleValue1","RuleValue1","ruleValue2","RuleValue2","stripTime","getFullYear","getMonth","getDate","parseLocalDate","dateStr","year","month","day","parseCustomDateLocalDate","isDateValidRule","actualValue","getCellPropertyByRule","cellValue","defaultValue","columnType","columnData","el","FieldId","FieldType","FieldRules","firstValidRule","getCellFloatAlignment","isRowTenantMatched","rowData","isClickableCell","fieldCode","IsShipmentMasterFieldClickable","isMasterNumberClickable","tableCellClicked","TableRowEntityId","RowData","getCellValue","columnValue","decimalPlaces","isAbbreviationApplied","UseNumberAbbreviation","cellTemplateBody","dateTimeDisplayMode","fontColor","fontSizeWithoutUnit","fontSizeWitUnit","display","backgroundColor","headerTemplate","showMeasureUnit","MeasureUnit","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","isRowPivotField","truncateToTwoDecimals","numericValue","safeValue","isPivotMeasureValueEmpty","logitudeSumAgg","params","values","total","hasValue","formatPivotMeasureValue","getPivotGroupFooterLabel","node","rawValue","lookupDisplayName","footer","level","displayName","compareDimensionValues","dateCode","aNumber","bNumber","aCompare","bCompare","aDisplay","bDisplay","getPivotDisplayName","pivotData","dataFieldValue","isPivotRowGrandTotalColumnDef","colDef","colId","String","isPivotRowGrandTotalGroupDef","colGroupDef","groupId","every","child","resolvePivotGroupHeaderName","pivotKeys","getPivotValueColumnId","pivotValueColumn","getId","getColId","resolveMeasureFromPivotValueColumn","measures","valueColumnId","measureByValueColumn","sortedMeasures","sort","left","right","endsWith","resolvePivotLeafHeaderName","measureCount","resolveMeasureForSecondaryColDef","getColumnGroupAtHeaderLevel","targetLevel","getParent","groupPointer","providedColumnGroup","getProvidedColumnGroup","originalGroupLevel","getLevel","groupPointerLevel","getPaddingLevel","escapeColumnIdSelector","columnId","CSS","escape","findHeaderGroupCellByColumnGroup","headerContainer","groupRows","targetGroupLevel","columnGroup","getUniqueId","groupRowIndex","min","max","targetGroupRow","querySelector","applyPivotRowGrandTotalGroupHeaderLabel","gridRootElement","columnApi","columnPivotFieldCount","clearPivotRowGrandTotalGroupHeaderMarkup","displayedColumns","getAllDisplayedColumns","rowGrandTotalColumns","centerHeaderContainer","Array","querySelectorAll","rowGrandTotalGroupCells","findRowGrandTotalGroupHeaderCells","applyGrandTotalLabelToGroupHeaderCells","labelElement","textContent","textAlign","cellsByColumnGroup","matchingCell","paddingCells","trailingPaddingCells","firstCell","firstLabel","combinedWidth","reduce","totalWidth","offsetWidth","siblingLabel","applyPivotRowGrandTotalHeader","headerName","getMeasureCaption","headerValueGetter","collectPivotRowPath","startNode","path","unshift","parent","buildPivotDrillDownPivotFields","apiFields","columnKeys","pathItem","parseJsonArray","json","parsed","parsePivotTotalsSettings","ROW_GROUP_COLUMN_MIN_WIDTH","applyAgGridLicense","AgGridLicenseKey","LicenseManager","setLicenseKey","AgPivotGrid","_comRef","setRowData","columnDefs","setColumnDefs","setMeasureCount","gridApiRef","columnApiRef","gridContainerRef","pivotFieldsRef","pivotMeasuresRef","resetRowHeights","widgetPm","buildGridFromPivotResponse","lookupDisplayNameByFieldCode","applyPivotDataCellFormatting","sortable","cellClass","type","apiMeasures","defs","createRowGroupColDef","createPivotColDef","createMeasureColDef","rowGroup","rowGroupIndex","enableRowGroup","hide","wrapText","autoHeight","comparator","valueFormatter","pivot","pivotIndex","enablePivot","pivotComparator","aggFunc","enableValue","settings","isSingleMeasurePivot","processSecondaryColGroupDef","processSecondaryColDef","colDefAny","onCellClicked","event","MeasureFieldType","defaultColDef","useMemo","resizable","suppressMenu","autoGroupColumnDef","minWidth","showRowGroup","cellRendererParams","suppressCount","footerValueGetter","aggFuncs","logitudeSum","scheduleRowGrandTotalHeaderLabel","applyLabel","requestAnimationFrame","onGridReady","onFirstDataRendered","autoGroupColumnIds","autoSizeColumns","onColumnPivotChanged","onColumnResized","gridWrapperClassName","AgGridReact","pivotMode","groupDisplayType","groupDefaultExpanded","suppressAggFuncInHeader","removePivotHeaderRowWhenSingleValueColumn","groupIncludeFooter","groupIncludeTotalFooter","pivotRowTotals","pivotColumnGroupTotals","animateRows","suppressContextMenu","suppressMovableColumns","headerHeight","rowHeight","parseSelectedQueries","widgetJson","isArray","SelectedQueries","ViewsChart","ViewsWidgetObjectTableName","entries","WidgetJson","handleClick","uniqueCode","selection","ViewsNavigation","QueryUniqueCode","row","UniqueCode","DisplayLabel","CustomChart","project","useAgGridPivot","buildToolTip","seriesMeasure","groupbyId","secGroupbyId","customToolTip","getTooltiplabel","getMeasureType","getTooltipValue","getPieDonutToolTipPercentage","RenderStackedChartTotalsAndPercentages","getGroupValuePercentage","getSumOfGroupValues","seriesMeasures","IsStacked","Sum","percentageValueInLocalFormat","getPercentageGroupValueAsNumber","getSumOfGroupValuesAsNumber","Values","v","GroupByIdSec","getSumOfValuesAsNumber","getDonutPiePercentageGroupValueAsNumber","Name","formula","months","quarters","getCategoriesBasedDataSource","chartInfo","seriesMeasuresIsEmpty","handelNullLabels","setSafeYAxisMaxValue","chart","categories","buildCategories","dataset","buildDataSet","getStackedDataSource","buildStackedCategories","buildStackedDataSet","getSimpleDataSource","buildDataSource","isColumnOrBarChart","maxMeasureValue","getMaxMeasureValue","safeYAxisMaxValue","ceil","yAxisMaxValue","stackedTotalsByGroupId","valueItem","toNumericValue","currentTotal","set","maxStackedTotal","maxValue","series","tooltext","dataSet","datas","seriesname","anchorBgColor","anchorBorderColor","anchorBorderThickness","anchorHoverColor","parentyaxis","PlotasLineChart","PlotonSecondAxis","renderAs","uniqueGroups","x","LabelSec","group","seriesName","buildStackedGroupData","emptylabels","filledLabels","sortDataSet","s1","s2","aa","bb","secGroup","getUniqueGroupOrderdList","category","defautFontSize","defautFont","defautColor","BuildFusionChartObject","SecondaryGroupById","getBarObject","getStackedBarObject","getLineObject","getClusteredLineObject","getPieObject","getDonutObject","getColumnObject","getClusteredColumnObject","getWidgetRanges","gaugeRanges","GaugeRanges","minValue","getGaugeObject","fusionObject","getDefaultChartobject","getDefaultChartInfo","manageResize","valueBelowPivot","showValue","ShowValue","valueFontSize","ValueFontSize","valueFontColor","ValueFontColor","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","valuePosition","ValuePosition","isValuePositionInside","placeValuesInside","minPlotHeightForValue","isPieOrDonutChart","minAngleForValue","formatNumber","thousandSeparator","numberSuffix","MeasureUnit1","MeasureUnit2","sNumberSuffix","isDecimalPlacesEnabled","forceDecimals","decimals","isWidgetUsedAbbreviation","formatNumberScale","palettecolors","enableSlicing","enableRotation","toolTipBgColor","showToolTipShadow","plotHoverEffect","scrollHeight","scrollWidth","plotColorinTooltip","showLabels","LabelsPosition","setOnChartLegend","setChartInLegend","LegendPosition","legendScrollBgColor","legendIconScale","scrollShowButtons","legendCaptionAlignment","alignLegendWithCanvas","pieRadius","showSecondaryLimits","showDivLineSecondaryValue","pYAxisNameBorderPadding","sYAxisNameBorderPadding","pYAxisName","sYAxisname","textLength","getTitle","maxLenght","textLenght","neededSpaces","space","repeat","FusionChartHelper","getPieRadius","getLegendWidth","legendWidth","trimChartLabels","chartWidth","chartHeight","handleLegendWidth","handlePieRadius","chartMinumunHeight","startPercantage","stepHeight","step","floor","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","offsetHeight","isTargetWidget","updatedAxiosController","isTargetUsed","SeriesMeasures","showTargetUsageTooltipMessageError","isDummyChange","errorMsg","dataplotClick","eventObj","dataObj","groupbyid","measurefieldid","measurecode","groupbyidsec","useResizeObserver","onResize","resizeTo","renderComplete","handlePieDonutChartTooltip","chartDataSource","handleOtherChartsTooltip","loaded","sender","onRender","setFusionKey","getChartData","chartRef","chartContainer","getObjectReference","svgContainer","textElements","lastTextElement","cursor","transition","fill","textDecoration","WidgetCard","fusionChartRef","showHeaderErrorMessages","setShowHeaderErrorMessages","headerErrorMessages","setHeaderErrorMessages","showCopiedNotification","setShowCopiedNotification","copyPopupRef","copiedNotificationTimer","editWidget","editBtnClicked","duplicateWidget","duplicateBtnClicked","copyBtnClicked","copyWidgetToClipboard","copyToClipboardBtnClicked","onEditWidget","getCSSPropertyValue","widgetData","propUnit","propDefaultVal","GetChartComponent","showErrorMsg","GaugeChart","msg","isTableWidget","isPivotWidget","isTableOrPivotWidget","getwidgetTitlesContainer","drilldownToTableData","isThereTitle","Title","isThereSubtitle","Subtitle","tableHintMessage","isTitleAligmentRight","visibility","TitleAlignment","justifyContent","flexDirection","Popup","trigger","position","arrowStyle","offsetY","on","EditWidgetIcon","CopyWidgetIcon","closeOnDocumentClick","closeOnEscape","arrow","close","DeleteWidgetIcon","deleteBtnClicked","TargetWarningIcon","deepClone","obj","ResponsiveReactGridLayout","WidthProvider","Responsive","DashboardDesigner","array12","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","copyWidget","onCopyWidget","onCopyWidgetToClipboard","y","newPlaceholderRows","Event","layoutGridProps","compactType","draggableCancel","isDraggable","isResizable","onWidthChange","cols","md","sm","xs","xxs","useCSSTransforms","Dashboard","UseAgGridPivot","agGridLicenseKey","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/PivotAgGridSupport.ts","../src/features/Dashboard/ChartsComponents/CustomCharts/PivotGrid.tsx","../src/features/Dashboard/ChartsComponents/CustomCharts/AgPivotGrid.tsx","../src/features/Dashboard/ChartsComponents/CustomCharts/ViewsChart.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 public static UseAgGridPivot: boolean = false;\r\n public static AgGridLicenseKey: string | null | undefined;\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 let requestHeaders = { 'Content-Type': 'application/json', 'Token': token };\r\n if (this.isDashboardClickHouseActive()) {\r\n requestHeaders['Dashboard-Clickhouse'] = \"True\";\r\n }\r\n\t\tvar apiURL = `${this._apiUrl}${api}`;\r\n return axios.post<T>(apiURL,date, { headers: requestHeaders, signal: requestSignal});\r\n }\r\n\r\n getTokenFromStorage(){\r\n return Session.Token || '';\r\n }\r\n\r\n isDashboardClickHouseActive(){\r\n return (window as any)?.IsDashboardClickHouseActive === true;\r\n }\r\n\r\n private ConcatFiltersToURL(filters: ApiQueryFilters, urlparameters: string)\r\n {\r\n var mykeys = Object.keys(filters);\r\n var addtionalFiltersValues: string | null = null;\r\n\r\n for (var i in mykeys) {\r\n var propName = mykeys[i];\r\n var propValue = filters[propName];\r\n var ignoreFilter = ((propName.indexOf(\"Operator\") > 0 && propValue == \"Equals\") || propName == \"AdditionalFilters\");\r\n\r\n if (urlparameters != \"?\") {\r\n urlparameters = urlparameters.concat('&');\r\n }\r\n\r\n if (!ignoreFilter) {\r\n propValue = propValue ? encodeURIComponent(propValue) : '';\r\n urlparameters = urlparameters.concat(propName.concat('=').concat(propValue));\r\n }\r\n\r\n if (propName == \"AdditionalFilters\" && propValue.length > 0) {\r\n addtionalFiltersValues = JSON.stringify(propValue);\r\n }\r\n }\r\n\r\n if (addtionalFiltersValues) {\r\n urlparameters = urlparameters.concat(\"&AdditionalFilters=\").concat(addtionalFiltersValues);\r\n }\r\n return urlparameters;\r\n }\r\n}","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 getDateRangesByPeriod = (_operator: string, _interval: string, _range: string, _format: string = \"YYYYMMDD000000\") => {\r\n if (!_operator || !_interval || !_range) return null;\r\n\r\n let result: any = {\r\n date1: null,\r\n date2: null\r\n }\r\n\r\n if (_operator.toLowerCase() == 'current') {\r\n switch (_range) {\r\n case \"Day\":\r\n result.date1 = getTodayDates()[0];\r\n result.date2 = getTodayDates()[1];\r\n break;\r\n case \"Week\":\r\n result.date1 = getCurrentWeekDates()[0];\r\n result.date2 = getCurrentWeekDates()[1];\r\n break;\r\n case \"Month\":\r\n result.date1 = getCurrentMonthDates()[0];\r\n result.date2 = getCurrentMonthDates()[1];\r\n break;\r\n case \"Current_Month_To_Date\":\r\n case \"Month To Date\":\r\n result.date1 = getCurrentMonthToDateDates()[0];\r\n result.date2 = getCurrentMonthToDateDates()[1];\r\n break;\r\n case \"Quarter\":\r\n result.date1 = getCurrentQuarterDates()[0];\r\n result.date2 = getCurrentQuarterDates()[1];\r\n break;\r\n case \"Current_Quarter_To_Date\":\r\n case \"Quarter To Date\":\r\n result.date1 = getCurrentQuarterToDateDates()[0];\r\n result.date2 = getCurrentQuarterToDateDates()[1];\r\n break;\r\n case \"Year\":\r\n result.date1 = getCurrentYearDates()[0];\r\n result.date2 = getCurrentYearDates()[1];\r\n break;\r\n case \"Current_Year_To_Date\":\r\n case \"Year To Date\":\r\n result.date1 = getCurrentYearToDateDates()[0];\r\n result.date2 = getCurrentYearToDateDates()[1];\r\n break;\r\n default:\r\n break;\r\n }\r\n } else {\r\n let dateGroupCodes: any = {\r\n 'Day': 'days',\r\n 'Week': 'weeks',\r\n 'Month': 'months',\r\n 'Quarter': 'quarters',\r\n 'Year': 'years',\r\n 'Year To Date': 'years',\r\n 'Quarter To Date': 'quarters',\r\n 'Month To Date': 'months',\r\n }\r\n let customDateGroupCodes = ['Year To Date', 'Quarter To Date', 'Month To Date']\r\n\r\n if (_operator.toLowerCase() == 'next') {\r\n result.date1 = moment().startOf(dateGroupCodes[_range]).add(1, dateGroupCodes[_range]).format(_format);\r\n result.date2 = moment().startOf(dateGroupCodes[_range]).add(Number(_interval), dateGroupCodes[_range]).endOf(dateGroupCodes[_range]).format(_format);\r\n } else if (_operator.toLowerCase() == 'previous' && !customDateGroupCodes.includes(_range)) {\r\n result.date1 = moment().subtract(Number(_interval), dateGroupCodes[_range]).startOf(dateGroupCodes[_range]).format(_format);\r\n result.date2 = moment().subtract(1, dateGroupCodes[_range]).endOf(dateGroupCodes[_range]).format(_format);\r\n } else if (_operator.toLowerCase() == 'previous' && customDateGroupCodes.includes(_range)) {\r\n result.date1 = moment().subtract(Number(_interval), dateGroupCodes[_range]).startOf(dateGroupCodes[_range]).format(_format);\r\n result.date2 = moment().format(_format);\r\n }\r\n }\r\n\r\n return result;\r\n}\r\n\r\nconst getDateRangesByCode = (\r\n code: string | null,\r\n _fromDate: string | null,\r\n _toDate: string | null,\r\n _operator: string | null = null,\r\n _interval: string | null = null,\r\n _range: string | null = null\r\n) => {\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 case \"Previous_Next\":\r\n let previousNextDates = getDateRangesByPeriod(\r\n _operator || \"\",\r\n _interval || \"\",\r\n _range || \"\"\r\n );\r\n result.fromDate = previousNextDates && previousNextDates.date1 ? previousNextDates.date1 : null;\r\n result.toDate = previousNextDates && previousNextDates.date2 ? previousNextDates.date2 : null;\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\nimport { ReactWidgetPM } from \"../types/widget\";\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, widget : ReactWidgetPM): number | null | undefined => {\r\n\r\n if(value == null || value == undefined || isNaN(value)) return value;\r\n \r\n return truncateDecimals(value,widget.DecimalPlaces || 0);\r\n}\r\n\r\nconst getNumberInSystemLocalFormat = (value: number | null | undefined, decimalDigitsCount: number = -1 , minimumFractionDigits: number = 0, isValueTruncated : boolean = true , applyAbbreviation : boolean = false): 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 let abbreviationSymbol : string | null = null;\r\n\r\n if(applyAbbreviation){\r\n\r\n if(Math.abs(value) >= 1000 && Math.abs(value) < 1000_000){\r\n\r\n value = value / 1000;\r\n abbreviationSymbol = \"K\";\r\n\r\n }else if(Math.abs(value) >= 1000_000){\r\n\r\n value = value / 1000_000;\r\n abbreviationSymbol = \"M\";\r\n }\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 (applyAbbreviation && abbreviationSymbol) ? `${_formattedValue}${abbreviationSymbol}` : _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 private RequestName: string | null | undefined = null;\r\n\r\n constructor(widget: ReactWidgetPM, isPreviewMode: boolean | null | undefined, requestName: string | null | undefined) {\r\n if (!isPreviewMode) {\r\n this.StartTime = new Date().getTime();\r\n this.Widget = widget;\r\n this.RequestName = requestName;\r\n }\r\n }\r\n\r\n log(loadDataResponse: AxiosResponse<any, any>) {\r\n if (this.canCreateLog(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 IsClickHouse: this.isClickHouse(loadDataResponse),\r\n RequestName: this.RequestName,\r\n WidgetType: this.Widget!.TypeCode,\r\n IsDrillDown: false\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 canCreateLog(loadDataResponse: AxiosResponse<any, any>) {\r\n return this.StartTime !== null && this.StartTime !== undefined &&\r\n this.Widget !== null && this.Widget !== undefined &&\r\n this.Widget.Id !== null && this.Widget.Id !== undefined && this.Widget.Id !== \"\" &&\r\n this.Widget.DashboardId !== null && this.Widget.DashboardId !== undefined && this.Widget.DashboardId !== \"\" &&\r\n this.Widget.Tenant !== null && this.Widget.Tenant !== undefined &&\r\n loadDataResponse !== null && loadDataResponse !== undefined;\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 private isClickHouse(loadDataResponse: AxiosResponse<any, any>) {\r\n let clickHouseHeaderKey = \"click-house\";\r\n let clickHouseHeader = loadDataResponse && loadDataResponse.headers && loadDataResponse.headers[clickHouseHeaderKey] ?\r\n loadDataResponse.headers[clickHouseHeaderKey] : null;\r\n return clickHouseHeader === \"true\";\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\tDateRangeOperator?: 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 comparePeriodOperator = kpiSettings.ComparePeriodDateFilter.DateRangeOperator\r\n || kpiSettings.ComparePeriodDateFilter.Operator;\r\n let comparePeriodInterval = kpiSettings.ComparePeriodDateFilter.DatePickerTextFieldValue != null\r\n ? String(kpiSettings.ComparePeriodDateFilter.DatePickerTextFieldValue)\r\n : null;\r\n let ComparePeriodDateFilterDates = kpiSettings.ComparisonPeriodType == 'Manually' ? \r\n getDateRangesByCode(\r\n kpiSettings.ComparePeriodDateFilter.DateTimeValueCode,\r\n kpiSettings.ComparePeriodDateFilter.FieldValue,\r\n kpiSettings.ComparePeriodDateFilter.FieldValue2,\r\n comparePeriodOperator,\r\n comparePeriodInterval,\r\n kpiSettings.ComparePeriodDateFilter.DateGroupCode\r\n ) \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 if (kpiSettings.ComparisonPeriodType == 'Manually'\r\n && kpiSettings.ComparePeriodDateFilter.DateTimeValueCode == 'Previous_Next') {\r\n kpiSettings.ComparePeriodDateFilter.Operator = 'Between';\r\n }\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, \"PostGetKpiData\");\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 { 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 MeasureUnit: string | null;\r\n DateTimeDisplayMode: string | 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<any>(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\r\n\r\n let columns : any = tableColumns.filter(f => f.Id == c.Id);\r\n\r\n if(columns && columns.length == 1){\r\n\r\n _updatedTableColumns.push(columns[0])\r\n\r\n }else if(columns && columns.length > 1){\r\n\r\n let isCalculatedColumn = c.ColumnVariableType === \"CalculatedColumn\";\r\n let dataTypeCode = c.ColumnVariableDataType;\r\n let dateDisplayMode = c.DateTimeDisplayMode || \"Date\";\r\n\r\n\r\n let column = columns.find(f => f.IsCalculatedColumn === isCalculatedColumn && f.DataTypeCode === dataTypeCode && f.DateTimeDisplayMode === dateDisplayMode);\r\n\r\n if(column){\r\n\r\n _updatedTableColumns.push(column)\r\n }\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, \"PostGetTableData\");\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\r\n // Strip time from a Date (normalize to midnight)\r\n function stripTime(date: Date | null): Date | null {\r\n if (!date) return null;\r\n return new Date(date.getFullYear(), date.getMonth(), date.getDate());\r\n }\r\n \r\n // Parse ISO-like local date string (e.g., \"2024-05-01T00:00:00\")\r\n function parseLocalDate(dateStr: string): Date | null {\r\n\r\n try{\r\n\r\n if (!dateStr) return null;\r\n const [year, month, day] = dateStr.split('T')[0].split('-').map(Number);\r\n return new Date(year, month - 1, day); // Local time\r\n\r\n }catch(error){\r\n\r\n return null;\r\n\r\n } \r\n }\r\n \r\n // Parse custom \"YYYYMMDD\" format\r\n function parseCustomDateLocalDate(dateStr: string): Date | null {\r\n try{\r\n\r\n if (!dateStr || dateStr.length < 8) return null;\r\n const year = Number(dateStr.substring(0, 4));\r\n const month = Number(dateStr.substring(4, 6));\r\n const day = Number(dateStr.substring(6, 8));\r\n return new Date(year, month - 1, day); // Local time\r\n\r\n }catch(error){\r\n\r\n return null;\r\n\r\n } \r\n }\r\n \r\n function isDateValidRule(rule: any, value: string): boolean | null {\r\n const operator = rule?.RuleOperator?.Code;\r\n if (!operator) return null;\r\n \r\n const ruleValue1 = stripTime(parseCustomDateLocalDate(rule.RuleValue1));\r\n const ruleValue2 = stripTime(parseCustomDateLocalDate(rule.RuleValue2));\r\n const actualValue = stripTime(parseLocalDate(value));\r\n \r\n switch (operator) {\r\n case \"Equal\":\r\n case \"Between\":\r\n return (\r\n !isValueEmpty(ruleValue1) &&\r\n !isValueEmpty(ruleValue2) &&\r\n !isValueEmpty(actualValue) &&\r\n ruleValue1! <= actualValue! &&\r\n actualValue! <= ruleValue2!\r\n );\r\n case \"NotEqual\":\r\n case \"NotBetween\":\r\n return (\r\n !isValueEmpty(ruleValue1) &&\r\n !isValueEmpty(ruleValue2) &&\r\n !isValueEmpty(actualValue) &&\r\n (ruleValue1! > actualValue! || actualValue! > ruleValue2!)\r\n );\r\n case \"GreaterThan\":\r\n return (\r\n !isValueEmpty(ruleValue2) &&\r\n !isValueEmpty(actualValue) &&\r\n actualValue! > ruleValue2!\r\n );\r\n case \"GreaterThanOrEqual\":\r\n return (\r\n !isValueEmpty(ruleValue2) &&\r\n !isValueEmpty(actualValue) &&\r\n actualValue! >= ruleValue2!\r\n );\r\n case \"LessThan\":\r\n return (\r\n !isValueEmpty(ruleValue2) &&\r\n !isValueEmpty(actualValue) &&\r\n actualValue! < ruleValue2!\r\n );\r\n case \"LessThanOrEqual\":\r\n return (\r\n !isValueEmpty(ruleValue2) &&\r\n !isValueEmpty(actualValue) &&\r\n actualValue! <= ruleValue2!\r\n );\r\n case \"IsEmpty\":\r\n return isValueEmpty(actualValue);\r\n case \"IsNotEmpty\":\r\n return !isValueEmpty(actualValue);\r\n default:\r\n return null;\r\n }\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 || columnData.FieldDataType != column?.DataTypeCode) {\r\n return defaultValue ? getTableFormattingPropertyValue(defaultValue) : undefined; \r\n };\r\n\r\n let firstValidRule = null;\r\n\r\n\r\n if(FieldDataType.isDateOrDateTimeType(column?.DataTypeCode)){\r\n\r\n firstValidRule = columnData.FieldRules.find((rule: any) => isDateValidRule(rule, cellValue));\r\n\r\n }else{\r\n\r\n firstValidRule = columnData.FieldRules.find((rule: any) => IsValidRule(rule, cellValue));\r\n }\r\n\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 isRowTenantMatched = (rowData: any | null = null) => {\r\n if (!rowData) return true;\r\n\r\n return Number(rowData.Tenant) === Number(Session.Tenant);\r\n }\r\n\r\n const isClickableCell = (fieldCode: string | null , rowData : any | null = null) => {\r\n if (!isRowTenantMatched(rowData)) {\r\n return false;\r\n }\r\n\r\n return ((fieldCode == \"ShipmentNumber\" && objectTableName == \"Shipment\") ||\r\n IsShipmentMasterFieldClickable(fieldCode,rowData) ||\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 == \"Subject\" && objectTableName == \"Activity\") ||\r\n (fieldCode == \"TicketNumber\" && objectTableName == \"Ticket\")||\r\n (fieldCode == \"ReleaseNumber\" && objectTableName == \"WarehouseRelease\") ||\r\n (fieldCode == \"EntryNumber\" && objectTableName == \"WarehouseEntry\"))\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 let decimalPlaces = widget?.DecimalPlaces || 0;\r\n let isAbbreviationApplied = widget?.UseNumberAbbreviation || false;\r\n\r\n if(FieldDataType.isPercentage(column.DataTypeCode)) {\r\n return !isNullOrUndefined(columnValue) ? getNumberInSystemLocalFormat(Number(columnValue), decimalPlaces,decimalPlaces,true,isAbbreviationApplied) + \"%\" : 0 + '%';\r\n }\r\n\r\n if(FieldDataType.isInteger(column.DataTypeCode)) {\r\n return !isNullOrUndefined(columnValue) ? getNumberInSystemLocalFormat(Number(columnValue), decimalPlaces, decimalPlaces,false,isAbbreviationApplied) : \"\";\r\n }\r\n\r\n\r\n if(FieldDataType.isNumericType(column.DataTypeCode)) {\r\n return !isNullOrUndefined(columnValue) ? getNumberInSystemLocalFormat(Number(columnValue), decimalPlaces,decimalPlaces,true,isAbbreviationApplied) : \"\";\r\n }\r\n\r\n \r\n return 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 dateTimeDisplayMode : string | null = column.DateTimeDisplayMode;\r\n\r\n let fontColor : string = getTableFormattingPropertyValue(\"TableCellFontColor\");\r\n let fontSizeWithoutUnit = getTableFormattingPropertyValue(\"TableCellFontSize\");\r\n let fontSizeWitUnit = getTableFormattingPropertyValue(\"TableCellFontSize\",\"px\");\r\n\r\n return (\r\n <div\r\n title={\r\n dateTimeDisplayMode === 'DateTime'\r\n ? getDateTimeValue(data[column.FieldCode!])\r\n : getDateTimeValue(data[column.FieldCode!], 'Date')\r\n }\r\n className=\"date-time-value-container\"\r\n style={{ color: fontColor }}\r\n >\r\n <span\r\n className=\"table-cell-datetime\"\r\n style={{\r\n fontSize: fontSizeWitUnit,\r\n display: 'inline-block',\r\n backgroundColor: getCellPropertyByRule(\r\n column,\r\n data[column.FieldCode!],\r\n 'RuleBackgroundColor'\r\n ),\r\n }}\r\n >\r\n {getDateTimeValue(data[column.FieldCode!], 'Date')}\r\n {dateTimeDisplayMode === 'DateTime' && (\r\n ' ' + getDateTimeValue(data[column.FieldCode!], 'Time')\r\n )}\r\n </span>\r\n </div>\r\n );\r\n \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\r\n let _widget : any = props.customChartProps.widget;\r\n let showMeasureUnit = _widget.ShowMeasureUnit || false;\r\n\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 dl-table-chart-header-container\">\r\n <span style={{\r\n color: getTableFormattingPropertyValue(\"TableHeaderFontColor\"),\r\n fontSize: getTableFormattingPropertyValue(\"TableHeaderFontSize\", \"px\")}} \r\n className=\"p-column-title\">\r\n {(column.MeasureUnit && showMeasureUnit) ? `${column.DisplayName} (${column.MeasureUnit})` : 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 dl-table-chart-header-container\">\r\n <span style={{\r\n color: getTableFormattingPropertyValue(\"TableHeaderFontColor\"),\r\n fontSize: getTableFormattingPropertyValue(\"TableHeaderFontSize\", \"px\")}} \r\n className=\"p-column-title\">\r\n {(column.MeasureUnit && showMeasureUnit) ? `${column.DisplayName} (${column.MeasureUnit})` : 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 moment from 'moment';\r\nimport { FieldDataType } from '../../../../Constant/FieldDataType';\r\nimport { ConvertStringToPascalCaseHelper, getNumberInSystemLocalFormat, isNullOrUndefinedOrEmpty, isValueInteger } from '../../../../Utils/General';\r\n\r\nexport type PivotApiField = {\r\n FieldId: string;\r\n FieldCode?: string;\r\n PivotCode: string;\r\n PivotName: string;\r\n DisplayName: string;\r\n DataTypeCode?: string;\r\n DateCode: string | null;\r\n FieldType: string | null;\r\n};\r\n\r\nexport type PivotApiMeasure = {\r\n PivotMeasureCode: string;\r\n MeasureCode: string;\r\n MeasureFieldId?: string;\r\n MeasureFieldDataType?: string | null;\r\n DisplayName: string;\r\n FieldType?: string;\r\n};\r\n\r\nexport const PIVOT_DATE_DATA_CELL_CLASS = 'dl-pivot-date-data-cell';\r\n\r\nexport const getPivotDataCellClassNames = (measure: PivotApiMeasure): string => {\r\n if (isPivotDateMinMaxMeasure(measure)) {\r\n return `dl-ag-pivot-data-cell ${PIVOT_DATE_DATA_CELL_CLASS}`;\r\n }\r\n return 'dl-ag-pivot-data-cell';\r\n};\r\n\r\nexport const isPivotDateMinMaxMeasure = (measure: PivotApiMeasure): boolean => {\r\n if (!measure) return false;\r\n if (measure.MeasureCode !== 'Min' && measure.MeasureCode !== 'Max') return false;\r\n return FieldDataType.isDateOrDateTimeType(measure.MeasureFieldDataType);\r\n};\r\n\r\nconst toValidDate = (value: any): Date | null => {\r\n if (isPivotMeasureValueEmpty(value)) return null;\r\n const date = moment(value);\r\n if (!date || !date.isValid()) return null;\r\n return date.toDate();\r\n};\r\n\r\nexport const formatPivotDateMeasureValue = (value: any): string => {\r\n if (isPivotMeasureValueEmpty(value)) return '';\r\n const date = moment(value);\r\n if (!date || !date.isValid()) return '';\r\n return date.format('DD.MM.YYYY');\r\n};\r\n\r\nexport const isRowPivotField = (field: PivotApiField): boolean => {\r\n return !!(field.PivotCode && field.PivotCode.indexOf('Row') !== -1);\r\n};\r\n\r\nexport const truncateToTwoDecimals = (value: any): number => {\r\n const numericValue = isNullOrUndefinedOrEmpty(value) ? 0 : Number(value);\r\n const safeValue = isNaN(numericValue) ? 0 : numericValue;\r\n const decimalParts = safeValue.toString().split('.');\r\n const firstPart = decimalParts[0] ? decimalParts[0] : '0';\r\n const secondPart = decimalParts[1] ? decimalParts[1].toString().substr(0, 2) : '0';\r\n return Number(firstPart + '.' + secondPart);\r\n};\r\n\r\nexport const isPivotMeasureValueEmpty = (value: any): boolean => {\r\n return value === null || value === undefined || value === '';\r\n};\r\n\r\nexport const logitudeSumAgg = (params: { values: any[] }): number | null => {\r\n const values = params && params.values ? params.values : [];\r\n if (values.length === 0) return null;\r\n\r\n let total = 0;\r\n let hasValue = false;\r\n for (let i = 0; i < values.length; i++) {\r\n if (isPivotMeasureValueEmpty(values[i])) continue;\r\n hasValue = true;\r\n total += truncateToTwoDecimals(values[i]);\r\n }\r\n return hasValue ? total : null;\r\n};\r\n\r\nconst isAgGridDateMeasureTotalAggregation = (params: { values: any[] }): boolean => {\r\n const aggParams: any = params;\r\n const rowNode = aggParams.rowNode;\r\n if (rowNode && rowNode.footer) {\r\n return true;\r\n }\r\n if (rowNode && rowNode.group && rowNode.leafGroup === false) {\r\n return true;\r\n }\r\n const colDef = aggParams.colDef || (aggParams.column && aggParams.column.getColDef && aggParams.column.getColDef());\r\n if (!colDef) {\r\n return false;\r\n }\r\n if (colDef.pivotTotalColumnIds !== undefined && colDef.pivotTotalColumnIds !== null) {\r\n return true;\r\n }\r\n const colId = colDef.colId || (aggParams.column && aggParams.column.getColId && aggParams.column.getColId());\r\n return !!(colId && String(colId).indexOf('PivotRowTotal_') === 0);\r\n};\r\n\r\nexport const isDevExtremePivotDataCellTotalOrGrandTotal = (\r\n cell: any,\r\n hasRowFields: boolean,\r\n hasColumnFields: boolean\r\n): boolean => {\r\n if (!cell) {\r\n return false;\r\n }\r\n\r\n if (hasRowFields && (cell.rowType === 'T' || cell.rowType === 'GT')) {\r\n return true;\r\n }\r\n\r\n if (hasColumnFields && (cell.columnType === 'T' || cell.columnType === 'GT')) {\r\n return true;\r\n }\r\n\r\n return false;\r\n};\r\n\r\nexport const isDevExtremeSummaryCellTotalOrGrandTotal = (\r\n cell: any,\r\n hasRowFields: boolean,\r\n hasColumnFields: boolean\r\n): boolean => {\r\n if (!cell) {\r\n return false;\r\n }\r\n const rowPath = cell._rowPath;\r\n const columnPath = cell._columnPath;\r\n const rowType = rowPath && rowPath[0] ? rowPath[0].type : null;\r\n const columnType = columnPath && columnPath[0] ? columnPath[0].type : null;\r\n\r\n if (hasRowFields && (rowType === 'T' || rowType === 'GT')) {\r\n return true;\r\n }\r\n\r\n if (hasColumnFields && (columnType === 'T' || columnType === 'GT')) {\r\n return true;\r\n }\r\n\r\n return false;\r\n};\r\n\r\nexport const isAgGridPivotDateMeasureTotalDisplayCell = (params: any): boolean => {\r\n const node = params && params.node;\r\n const colDef = params && params.colDef;\r\n\r\n if (node && node.footer) {\r\n return true;\r\n }\r\n\r\n if (node && node.group && node.leafGroup === false) {\r\n return true;\r\n }\r\n\r\n if (!colDef) {\r\n return false;\r\n }\r\n\r\n if (colDef.pivotTotalColumnIds !== undefined && colDef.pivotTotalColumnIds !== null) {\r\n return true;\r\n }\r\n\r\n return isPivotRowGrandTotalColumnDef(colDef);\r\n};\r\n\r\nexport const logitudeMinAgg = (params: { values: any[] }): any => {\r\n if (isAgGridDateMeasureTotalAggregation(params)) {\r\n return null;\r\n }\r\n const values = params && params.values ? params.values : [];\r\n let minDate: Date | null = null;\r\n let minValue: any = null;\r\n\r\n for (let i = 0; i < values.length; i++) {\r\n const currentDate = toValidDate(values[i]);\r\n if (!currentDate) continue;\r\n if (!minDate || currentDate.getTime() < minDate.getTime()) {\r\n minDate = currentDate;\r\n minValue = values[i];\r\n }\r\n }\r\n\r\n return minValue;\r\n};\r\n\r\nexport const logitudeMaxAgg = (params: { values: any[] }): any => {\r\n if (isAgGridDateMeasureTotalAggregation(params)) {\r\n return null;\r\n }\r\n const values = params && params.values ? params.values : [];\r\n let maxDate: Date | null = null;\r\n let maxValue: any = null;\r\n\r\n for (let i = 0; i < values.length; i++) {\r\n const currentDate = toValidDate(values[i]);\r\n if (!currentDate) continue;\r\n if (!maxDate || currentDate.getTime() > maxDate.getTime()) {\r\n maxDate = currentDate;\r\n maxValue = values[i];\r\n }\r\n }\r\n\r\n return maxValue;\r\n};\r\n\r\nexport const formatPivotMeasureValue = (value: any, measure: PivotApiMeasure): string => {\r\n if (isPivotMeasureValueEmpty(value)) return '';\r\n\r\n if (isPivotDateMinMaxMeasure(measure)) {\r\n return formatPivotDateMeasureValue(value);\r\n }\r\n\r\n const isInteger = isValueInteger(measure.MeasureCode, measure.MeasureFieldDataType);\r\n const minimumFraction = isInteger ? 0 : 2;\r\n return getNumberInSystemLocalFormat(value, 2, minimumFraction);\r\n};\r\n\r\nexport const getPivotGroupFooterLabel = (\r\n node: any,\r\n fieldCode: string | null | undefined,\r\n rawValue: any,\r\n lookupDisplayName: (fieldCode: string, rawValue: any) => string\r\n): string => {\r\n if (!node || !node.footer) return '';\r\n\r\n if (node.level === -1) {\r\n return 'Grand Total';\r\n }\r\n\r\n if (!fieldCode) return '';\r\n\r\n const displayName = lookupDisplayName(fieldCode, rawValue);\r\n return displayName ? `${displayName} Total` : '';\r\n};\r\n\r\nexport const compareDimensionValues = (aValue: any, bValue: any, dateCode: string | null, aText?: any, bText?: any): number => {\r\n if (dateCode === 'Month') {\r\n const aNumber = aValue == null ? -1 : Number(aValue);\r\n const bNumber = bValue == null ? -1 : Number(bValue);\r\n if (aNumber < bNumber) return -1;\r\n if (aNumber > bNumber) return 1;\r\n return 0;\r\n }\r\n\r\n if (dateCode != null) {\r\n const aCompare = aValue == null ? '' : aValue;\r\n const bCompare = bValue == null ? '' : bValue;\r\n if (aCompare < bCompare) return -1;\r\n if (aCompare > bCompare) return 1;\r\n return 0;\r\n }\r\n\r\n const aDisplay = aText == null || aText === '' ? (aValue == null ? '' : aValue) : aText;\r\n const bDisplay = bText == null || bText === '' ? (bValue == null ? '' : bValue) : bText;\r\n if (aDisplay < bDisplay) return -1;\r\n if (aDisplay > bDisplay) return 1;\r\n return 0;\r\n};\r\n\r\nexport const getPivotDisplayName = (pivotData: any[], fieldName: string, dataField: string, dataFieldValue: any): string => {\r\n if (!pivotData || pivotData.length === 0) return '';\r\n const data = pivotData.find(el => el[dataField] == dataFieldValue);\r\n return data ? ConvertStringToPascalCaseHelper(data[fieldName]) : '';\r\n};\r\n\r\nexport const isPivotRowGrandTotalColumnDef = (colDef: any): boolean => {\r\n if (!colDef || !colDef.colId) {\r\n return false;\r\n }\r\n return String(colDef.colId).indexOf('PivotRowTotal_') === 0;\r\n};\r\n\r\nexport const isPivotRowGrandTotalGroupDef = (colGroupDef: any): boolean => {\r\n if (!colGroupDef) {\r\n return false;\r\n }\r\n\r\n const groupId = colGroupDef.groupId || colGroupDef.colId || '';\r\n if (String(groupId).indexOf('PivotRowTotal') >= 0) {\r\n return true;\r\n }\r\n\r\n const children = colGroupDef.children;\r\n if (!children || children.length === 0) {\r\n return false;\r\n }\r\n\r\n return children.every((child: any) => {\r\n if (child && child.children) {\r\n return isPivotRowGrandTotalGroupDef(child);\r\n }\r\n return isPivotRowGrandTotalColumnDef(child);\r\n });\r\n};\r\n\r\nexport const resolvePivotGroupHeaderName = (\r\n colGroupDef: any,\r\n columnFields: PivotApiField[],\r\n lookupDisplayName: (field: PivotApiField, rawValue: any) => string\r\n): string | null => {\r\n if (isPivotRowGrandTotalGroupDef(colGroupDef)) {\r\n return 'Grand Total';\r\n }\r\n\r\n const pivotKeys: string[] = colGroupDef && colGroupDef.pivotKeys ? colGroupDef.pivotKeys : [];\r\n if (pivotKeys.length === 0) {\r\n return null;\r\n }\r\n\r\n const field = columnFields[pivotKeys.length - 1];\r\n if (!field) {\r\n return null;\r\n }\r\n\r\n return lookupDisplayName(field, pivotKeys[pivotKeys.length - 1]);\r\n};\r\n\r\nexport const getPivotValueColumnId = (pivotValueColumn: any): string | null => {\r\n if (!pivotValueColumn) {\r\n return null;\r\n }\r\n\r\n if (typeof pivotValueColumn.getId === 'function') {\r\n return pivotValueColumn.getId();\r\n }\r\n\r\n if (typeof pivotValueColumn.getColId === 'function') {\r\n return pivotValueColumn.getColId();\r\n }\r\n\r\n if (pivotValueColumn.colId) {\r\n return String(pivotValueColumn.colId);\r\n }\r\n\r\n if (pivotValueColumn.field) {\r\n return String(pivotValueColumn.field);\r\n }\r\n\r\n return null;\r\n};\r\n\r\nexport const resolveMeasureFromPivotValueColumn = (\r\n colDef: any,\r\n measures: PivotApiMeasure[]\r\n): PivotApiMeasure | undefined => {\r\n if (!colDef || measures.length === 0) {\r\n return undefined;\r\n }\r\n\r\n if (measures.length === 1) {\r\n return measures[0];\r\n }\r\n\r\n const valueColumnId = getPivotValueColumnId(colDef.pivotValueColumn);\r\n if (valueColumnId) {\r\n const measureByValueColumn = measures.find(measure => measure.PivotMeasureCode === valueColumnId);\r\n if (measureByValueColumn) {\r\n return measureByValueColumn;\r\n }\r\n }\r\n\r\n const colId = colDef.colId ? String(colDef.colId) : '';\r\n if (colId) {\r\n const sortedMeasures = [...measures].sort(\r\n (left, right) => right.PivotMeasureCode.length - left.PivotMeasureCode.length\r\n );\r\n for (let index = 0; index < sortedMeasures.length; index++) {\r\n const measureCode = sortedMeasures[index].PivotMeasureCode;\r\n if (colId.endsWith('_' + measureCode)) {\r\n return sortedMeasures[index];\r\n }\r\n }\r\n }\r\n\r\n return undefined;\r\n};\r\n\r\nexport const resolvePivotLeafHeaderName = (\r\n colDef: any,\r\n columnFields: PivotApiField[],\r\n lookupDisplayName: (field: PivotApiField, rawValue: any) => string,\r\n measureCount: number,\r\n measures: PivotApiMeasure[]\r\n): string | null => {\r\n if (isPivotRowGrandTotalColumnDef(colDef)) {\r\n return null;\r\n }\r\n\r\n if (measureCount > 1 && colDef.pivotValueColumn) {\r\n return null;\r\n }\r\n\r\n const pivotKeys: string[] = colDef && colDef.pivotKeys ? colDef.pivotKeys : [];\r\n if (pivotKeys.length === 0) {\r\n return null;\r\n }\r\n\r\n const field = columnFields[pivotKeys.length - 1];\r\n if (!field) {\r\n return null;\r\n }\r\n\r\n return lookupDisplayName(field, pivotKeys[pivotKeys.length - 1]);\r\n};\r\n\r\nexport const resolveMeasureForSecondaryColDef = (\r\n colDef: any,\r\n measures: PivotApiMeasure[]\r\n): PivotApiMeasure | undefined => {\r\n return resolveMeasureFromPivotValueColumn(colDef, measures);\r\n};\r\n\r\nconst getColumnGroupAtHeaderLevel = (column: any, targetLevel: number): any | null => {\r\n if (!column || typeof column.getParent !== 'function') {\r\n return null;\r\n }\r\n\r\n let groupPointer = column.getParent();\r\n while (groupPointer) {\r\n const providedColumnGroup = typeof groupPointer.getProvidedColumnGroup === 'function'\r\n ? groupPointer.getProvidedColumnGroup()\r\n : null;\r\n if (!providedColumnGroup) {\r\n groupPointer = typeof groupPointer.getParent === 'function' ? groupPointer.getParent() : null;\r\n continue;\r\n }\r\n\r\n const originalGroupLevel = typeof providedColumnGroup.getLevel === 'function'\r\n ? providedColumnGroup.getLevel()\r\n : 0;\r\n const groupPointerLevel = typeof groupPointer.getPaddingLevel === 'function'\r\n ? groupPointer.getPaddingLevel()\r\n : 0;\r\n\r\n if (originalGroupLevel + groupPointerLevel <= targetLevel) {\r\n return groupPointer;\r\n }\r\n\r\n groupPointer = typeof groupPointer.getParent === 'function' ? groupPointer.getParent() : null;\r\n }\r\n\r\n return null;\r\n};\r\n\r\nconst escapeColumnIdSelector = (columnId: string): string => {\r\n if (typeof CSS !== 'undefined' && typeof CSS.escape === 'function') {\r\n return CSS.escape(columnId);\r\n }\r\n\r\n return columnId.replace(/\\\\/g, '\\\\\\\\').replace(/\"/g, '\\\\\"');\r\n};\r\n\r\nconst findHeaderGroupCellByColumnGroup = (\r\n headerContainer: HTMLElement,\r\n groupRows: HTMLElement[],\r\n targetGroupLevel: number,\r\n columnGroup: any\r\n): HTMLElement | null => {\r\n if (!columnGroup || typeof columnGroup.getUniqueId !== 'function') {\r\n return null;\r\n }\r\n\r\n const groupId = columnGroup.getUniqueId();\r\n const groupRowIndex = Math.min(Math.max(targetGroupLevel, 0), groupRows.length - 1);\r\n const targetGroupRow = groupRows[groupRowIndex];\r\n if (!targetGroupRow) {\r\n return null;\r\n }\r\n\r\n return targetGroupRow.querySelector(`[col-id=\"${escapeColumnIdSelector(groupId)}\"]`) as HTMLElement | null;\r\n};\r\n\r\nexport const applyPivotRowGrandTotalGroupHeaderLabel = (\r\n gridRootElement: HTMLElement | null,\r\n columnApi: any,\r\n measureCount: number,\r\n columnPivotFieldCount: number\r\n): void => {\r\n if (!gridRootElement || !columnApi || measureCount <= 1) {\r\n return;\r\n }\r\n\r\n clearPivotRowGrandTotalGroupHeaderMarkup(gridRootElement);\r\n\r\n const displayedColumns = typeof columnApi.getAllDisplayedColumns === 'function'\r\n ? columnApi.getAllDisplayedColumns()\r\n : [];\r\n const rowGrandTotalColumns = displayedColumns.filter((column: any) =>\r\n String(column.getColId()).indexOf('PivotRowTotal_') === 0\r\n );\r\n if (rowGrandTotalColumns.length <= 1) {\r\n return;\r\n }\r\n\r\n const centerHeaderContainer = gridRootElement.querySelector('.ag-header-viewport .ag-header-container') as HTMLElement | null;\r\n if (!centerHeaderContainer) {\r\n return;\r\n }\r\n\r\n const groupRows = Array.from(\r\n centerHeaderContainer.querySelectorAll('.ag-header-row-column-group')\r\n ) as HTMLElement[];\r\n if (groupRows.length === 0) {\r\n return;\r\n }\r\n\r\n const targetGroupLevel = columnPivotFieldCount > 0 ? columnPivotFieldCount - 1 : 0;\r\n const rowGrandTotalGroupCells = findRowGrandTotalGroupHeaderCells(\r\n centerHeaderContainer,\r\n groupRows,\r\n targetGroupLevel,\r\n rowGrandTotalColumns\r\n );\r\n if (rowGrandTotalGroupCells.length === 0) {\r\n return;\r\n }\r\n\r\n applyGrandTotalLabelToGroupHeaderCells(rowGrandTotalGroupCells);\r\n};\r\n\r\nconst clearPivotRowGrandTotalGroupHeaderMarkup = (gridRootElement: HTMLElement): void => {\r\n gridRootElement.querySelectorAll('.dl-pivot-row-grand-total-group-header, .dl-pivot-row-grand-total-group-header-sibling')\r\n .forEach(element => {\r\n element.classList.remove('dl-pivot-row-grand-total-group-header', 'dl-pivot-row-grand-total-group-header-sibling');\r\n });\r\n\r\n gridRootElement.querySelectorAll('.dl-pivot-row-grand-total-group-header-label')\r\n .forEach(label => {\r\n label.classList.remove('dl-pivot-row-grand-total-group-header-label');\r\n const labelElement = label as HTMLElement;\r\n labelElement.textContent = '';\r\n labelElement.style.width = '';\r\n labelElement.style.display = '';\r\n labelElement.style.textAlign = '';\r\n });\r\n};\r\n\r\nconst findRowGrandTotalGroupHeaderCells = (\r\n centerHeaderContainer: HTMLElement,\r\n groupRows: HTMLElement[],\r\n targetGroupLevel: number,\r\n rowGrandTotalColumns: any[]\r\n): HTMLElement[] => {\r\n const cellsByColumnGroup: HTMLElement[] = [];\r\n\r\n rowGrandTotalColumns.forEach((column: any) => {\r\n const columnGroup = getColumnGroupAtHeaderLevel(column, targetGroupLevel);\r\n const matchingCell = findHeaderGroupCellByColumnGroup(\r\n centerHeaderContainer,\r\n groupRows,\r\n targetGroupLevel,\r\n columnGroup\r\n );\r\n if (matchingCell) {\r\n cellsByColumnGroup.push(matchingCell);\r\n }\r\n });\r\n\r\n if (cellsByColumnGroup.length === rowGrandTotalColumns.length) {\r\n return cellsByColumnGroup;\r\n }\r\n\r\n const groupRowIndex = Math.min(Math.max(targetGroupLevel, 0), groupRows.length - 1);\r\n const targetGroupRow = groupRows[groupRowIndex];\r\n if (!targetGroupRow) {\r\n return cellsByColumnGroup;\r\n }\r\n\r\n const paddingCells = Array.from(\r\n targetGroupRow.querySelectorAll('.ag-header-group-cell-no-group')\r\n ) as HTMLElement[];\r\n const trailingPaddingCells = paddingCells.slice(-rowGrandTotalColumns.length);\r\n if (trailingPaddingCells.length === rowGrandTotalColumns.length) {\r\n return trailingPaddingCells;\r\n }\r\n\r\n return cellsByColumnGroup;\r\n};\r\n\r\nconst applyGrandTotalLabelToGroupHeaderCells = (rowGrandTotalGroupCells: HTMLElement[]): void => {\r\n const firstCell = rowGrandTotalGroupCells[0];\r\n const firstLabel = firstCell.querySelector('.ag-header-group-text, .ag-header-cell-text') as HTMLElement | null;\r\n if (!firstLabel) {\r\n return;\r\n }\r\n\r\n const combinedWidth = rowGrandTotalGroupCells.reduce((totalWidth, cell) => totalWidth + cell.offsetWidth, 0);\r\n firstLabel.textContent = 'Grand Total';\r\n firstLabel.style.width = `${combinedWidth}px`;\r\n firstLabel.style.display = 'inline-block';\r\n firstLabel.style.textAlign = 'center';\r\n firstLabel.classList.add('dl-pivot-row-grand-total-group-header-label');\r\n firstCell.classList.add('dl-pivot-row-grand-total-group-header');\r\n\r\n for (let index = 1; index < rowGrandTotalGroupCells.length; index++) {\r\n rowGrandTotalGroupCells[index].classList.add('dl-pivot-row-grand-total-group-header-sibling');\r\n const siblingLabel = rowGrandTotalGroupCells[index].querySelector('.ag-header-group-text, .ag-header-cell-text') as HTMLElement | null;\r\n if (siblingLabel) {\r\n siblingLabel.textContent = '';\r\n }\r\n }\r\n};\r\n\r\nexport const applyPivotRowGrandTotalHeader = (\r\n colDef: any,\r\n measureCount: number,\r\n measures: PivotApiMeasure[]\r\n): void => {\r\n if (!isPivotRowGrandTotalColumnDef(colDef)) {\r\n return;\r\n }\r\n\r\n if (measureCount <= 1) {\r\n colDef.headerName = 'Grand Total';\r\n return;\r\n }\r\n\r\n const measure = resolveMeasureFromPivotValueColumn(colDef, measures);\r\n if (measure) {\r\n colDef.headerName = getMeasureCaption(measure);\r\n }\r\n delete colDef.headerValueGetter;\r\n};\r\n\r\nexport const collectPivotRowPath = (startNode: any): { field: string, key: any }[] => {\r\n const path: { field: string, key: any }[] = [];\r\n if (!startNode) {\r\n return path;\r\n }\r\n\r\n if (startNode.footer) {\r\n if (startNode.level === -1) {\r\n return path;\r\n }\r\n\r\n if (startNode.field != null && startNode.key !== undefined) {\r\n path.unshift({ field: startNode.field, key: startNode.key });\r\n }\r\n }\r\n\r\n let node = startNode.parent;\r\n while (node && node.level >= 0) {\r\n if (!node.footer && node.field != null && node.key !== undefined) {\r\n path.unshift({ field: node.field, key: node.key });\r\n }\r\n node = node.parent;\r\n }\r\n\r\n return path;\r\n};\r\n\r\nexport const buildPivotDrillDownPivotFields = (\r\n colDef: any,\r\n startNode: any,\r\n apiFields: PivotApiField[]\r\n): any[] => {\r\n const columnFields = apiFields.filter(field => !isRowPivotField(field));\r\n const rowFields = apiFields.filter(isRowPivotField);\r\n const pivotFields: any[] = [];\r\n\r\n const columnKeys: string[] = colDef && colDef.pivotKeys ? colDef.pivotKeys : [];\r\n columnKeys.forEach((key, index) => {\r\n if (key === undefined) {\r\n return;\r\n }\r\n const field = columnFields[index];\r\n if (!field) {\r\n return;\r\n }\r\n pivotFields.push({\r\n FieldId: field.FieldId,\r\n FieldType: field.FieldType ? field.FieldType : 'Field',\r\n FieldValue: key,\r\n DateCode: field.DateCode\r\n });\r\n });\r\n\r\n collectPivotRowPath(startNode).forEach((pathItem) => {\r\n const field = rowFields.find(f => f.PivotCode === pathItem.field) || apiFields.find(f => f.PivotCode === pathItem.field);\r\n if (!field) {\r\n return;\r\n }\r\n pivotFields.push({\r\n FieldId: field.FieldId,\r\n FieldType: field.FieldType ? field.FieldType : 'Field',\r\n FieldValue: pathItem.key,\r\n DateCode: field.DateCode\r\n });\r\n });\r\n\r\n return pivotFields;\r\n};\r\n\r\nexport const getMeasureCaption = (measure: PivotApiMeasure): string => {\r\n const displayName = typeof measure.DisplayName == 'string' ? measure.DisplayName : '';\r\n if (measure.MeasureCode == 'Sum') {\r\n return ConvertStringToPascalCaseHelper(displayName.replace('Sum of ', ''));\r\n }\r\n return ConvertStringToPascalCaseHelper(displayName);\r\n};\r\n\r\nexport const parseJsonArray = (json: string | null | undefined): any[] => {\r\n if (isNullOrUndefinedOrEmpty(json)) return [];\r\n try {\r\n const parsed = JSON.parse(json as string);\r\n return parsed || [];\r\n } catch (error) {\r\n return [];\r\n }\r\n};\r\n\r\nexport const parsePivotTotalsSettings = (json: string | null | undefined): any => {\r\n if (isNullOrUndefinedOrEmpty(json)) return {};\r\n try {\r\n return JSON.parse(json as string) || {};\r\n } catch (error) {\r\n return {};\r\n }\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 moment from 'moment';\r\nimport { FieldDataType } from '../../../../Constant/FieldDataType';\r\nimport { ConvertStringToPascalCaseHelper, getNumberInSystemLocalFormat, isNullOrUndefinedOrEmpty, isValueInteger } from '../../../../Utils/General';\r\nimport { formatPivotDateMeasureValue, isDevExtremePivotDataCellTotalOrGrandTotal, isDevExtremeSummaryCellTotalOrGrandTotal, PIVOT_DATE_DATA_CELL_CLASS } from './PivotAgGridSupport';\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 const dateMeasureDataFieldsRef = useRef<Set<string>>(new Set());\r\n const pivotHasRowFieldsRef = useRef<boolean>(false);\r\n const pivotHasColumnFieldsRef = useRef<boolean>(false);\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, \"PostGetPivotData\");\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 onCellPrepared = useCallback((e: any) => {\r\n if (e.area !== 'data') {\r\n return;\r\n }\r\n\r\n const dataFields = e.component.getDataSource().getAreaFields('data');\r\n const dataField = dataFields && dataFields[e.cell.dataIndex];\r\n if (!dataField || !dateMeasureDataFieldsRef.current.has(dataField.dataField)) {\r\n return;\r\n }\r\n\r\n e.cellElement.classList.add(PIVOT_DATE_DATA_CELL_CLASS);\r\n\r\n if (isDevExtremePivotDataCellTotalOrGrandTotal(\r\n e.cell,\r\n pivotHasRowFieldsRef.current,\r\n pivotHasColumnFieldsRef.current\r\n )) {\r\n e.cell.text = '';\r\n const contentSpan = e.cellElement ? e.cellElement.querySelector('span') : null;\r\n if (contentSpan) {\r\n contentSpan.textContent = '';\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 const hasRowFields = tabledata.current.PivoFields.some((field) => field.PivotCode && field.PivotCode.includes('Row'));\r\n const hasColumnFields = tabledata.current.PivoFields.some((field) => field.PivotCode && !field.PivotCode.includes('Row'));\r\n pivotHasRowFieldsRef.current = hasRowFields;\r\n pivotHasColumnFieldsRef.current = hasColumnFields;\r\n\r\n dateMeasureDataFieldsRef.current = new Set(\r\n tabledata.current.PivotMeasures\r\n .filter((measure) => (measure.MeasureCode === 'Min' || measure.MeasureCode === 'Max')\r\n && FieldDataType.isDateOrDateTimeType(measure.MeasureFieldDataType))\r\n .map((measure) => measure.PivotMeasureCode)\r\n );\r\n\r\n let pivotDataCellsFields = tabledata.current.PivotMeasures.map(measure => {\r\n const isDateMinMaxMeasure = (measure.MeasureCode === 'Min' || measure.MeasureCode === 'Max')\r\n && FieldDataType.isDateOrDateTimeType(measure.MeasureFieldDataType);\r\n\r\n return {\r\n dataField: measure.PivotMeasureCode,\r\n area: 'data',\r\n dataType: isDateMinMaxMeasure ? 'string' : '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 == 'start') {\r\n options.totalValue = null;\r\n return;\r\n }\r\n\r\n if (options.summaryProcess != 'calculate') {\r\n return;\r\n }\r\n\r\n if (isDateMinMaxMeasure) {\r\n if (isNullOrUndefinedOrEmpty(options.value)) {\r\n return;\r\n }\r\n\r\n const currentDate = moment(options.value);\r\n if (!currentDate || !currentDate.isValid()) {\r\n return;\r\n }\r\n\r\n if (isNullOrUndefinedOrEmpty(options.totalValue)) {\r\n options.totalValue = options.value;\r\n return;\r\n }\r\n\r\n const totalDate = moment(options.totalValue);\r\n if (!totalDate || !totalDate.isValid()) {\r\n options.totalValue = options.value;\r\n return;\r\n }\r\n\r\n if (measure.MeasureCode === 'Max') {\r\n if (currentDate.isAfter(totalDate)) {\r\n options.totalValue = options.value;\r\n }\r\n } else if (currentDate.isBefore(totalDate)) {\r\n options.totalValue = options.value;\r\n }\r\n\r\n return;\r\n }\r\n\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 ...(isDateMinMaxMeasure ? {\r\n calculateSummaryValue: (cell) => {\r\n if (isDevExtremeSummaryCellTotalOrGrandTotal(cell, hasRowFields, hasColumnFields)) {\r\n return null;\r\n }\r\n return cell.value();\r\n },\r\n customizeText: (cellInfo) => formatPivotDateMeasureValue(cellInfo.value),\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\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 canShowRowsGrandTotal = () : boolean | undefined => {\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 onCellPrepared={onCellPrepared}\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, { forwardRef, useCallback, useEffect, useMemo, useRef, useState } from 'react';\r\nimport { AgGridReact } from 'ag-grid-react';\r\nimport { LicenseManager } from 'ag-grid-enterprise';\r\nimport 'ag-grid-enterprise';\r\nimport 'ag-grid-community/dist/styles/ag-grid.css';\r\nimport 'ag-grid-community/dist/styles/ag-theme-balham.css';\r\nimport { ColDef, ColGroupDef, GridApi, GridReadyEvent, CellClickedEvent, FirstDataRenderedEvent } from 'ag-grid-community';\r\nimport { ProgressSpinner } from 'primereact/progressspinner';\r\nimport { DashboardAnalyticsService } from '../../../../services/DashboardAnalyticsService';\r\nimport { CustomChartProps } from './CustomChart';\r\nimport { Session } from '../../../../services/session';\r\nimport { isNullOrUndefinedOrEmpty } from '../../../../Utils/General';\r\nimport { ReactWidgetPM } from '../../../../types/widget';\r\nimport { WidgetLoadLogger } from '../../../../Utils/WidgetLoadLogger';\r\nimport {\r\n PivotApiField,\r\n PivotApiMeasure,\r\n compareDimensionValues,\r\n formatPivotMeasureValue,\r\n getMeasureCaption,\r\n getPivotDataCellClassNames,\r\n getPivotDisplayName,\r\n getPivotGroupFooterLabel,\r\n isPivotMeasureValueEmpty,\r\n isAgGridPivotDateMeasureTotalDisplayCell,\r\n isPivotDateMinMaxMeasure,\r\n isRowPivotField,\r\n logitudeSumAgg,\r\n logitudeMinAgg,\r\n logitudeMaxAgg,\r\n parseJsonArray,\r\n parsePivotTotalsSettings,\r\n resolveMeasureForSecondaryColDef,\r\n resolvePivotGroupHeaderName,\r\n resolvePivotLeafHeaderName,\r\n applyPivotRowGrandTotalHeader,\r\n applyPivotRowGrandTotalGroupHeaderLabel,\r\n buildPivotDrillDownPivotFields\r\n} from './PivotAgGridSupport';\r\n\r\ntype PivotChartProps = {\r\n customChartProps: CustomChartProps;\r\n};\r\n\r\nconst ROW_GROUP_COLUMN_MIN_WIDTH = 100;\r\n\r\nconst applyAgGridLicense = () => {\r\n if (!Session.AgGridLicenseKey) return;\r\n LicenseManager.setLicenseKey(Session.AgGridLicenseKey);\r\n};\r\n\r\nconst AgPivotGrid = forwardRef((props: PivotChartProps, _comRef) => {\r\n const [widget, setWidget] = useState<ReactWidgetPM>();\r\n const [isLoading, setIsLoading] = useState<boolean>(true);\r\n const [rowData, setRowData] = useState<any[]>([]);\r\n const [columnDefs, setColumnDefs] = useState<ColDef[]>([]);\r\n const [measureCount, setMeasureCount] = useState<number>(0);\r\n\r\n const widgetRefData = useRef<ReactWidgetPM | null>(null);\r\n const tabledata = useRef<any>();\r\n const gridApiRef = useRef<GridApi | null>(null);\r\n const columnApiRef = useRef<any>(null);\r\n const gridContainerRef = useRef<HTMLDivElement | null>(null);\r\n const pivotFieldsRef = useRef<PivotApiField[]>([]);\r\n const pivotMeasuresRef = useRef<PivotApiMeasure[]>([]);\r\n\r\n useEffect(() => {\r\n applyAgGridLicense();\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) return;\r\n\r\n if (gridContainerRef.current && gridContainerRef.current.classList) {\r\n gridContainerRef.current.classList.add('force-overflow-hidden');\r\n }\r\n setTimeout(() => {\r\n handleResize();\r\n if (gridContainerRef.current && gridContainerRef.current.classList) {\r\n gridContainerRef.current.classList.remove('force-overflow-hidden');\r\n }\r\n }, 5);\r\n }, [props.customChartProps.isInEditMode]);\r\n\r\n const handleResize = () => {\r\n if (gridApiRef.current && gridApiRef.current.resetRowHeights) {\r\n gridApiRef.current.resetRowHeights();\r\n }\r\n };\r\n\r\n const getPivotTableData = (widgetPm: any) => {\r\n if (Session.Tenant == 0) {\r\n tabledata.current = [];\r\n setRowData([]);\r\n setIsLoading(false);\r\n return;\r\n }\r\n\r\n const dashboardAnalyticsService = new DashboardAnalyticsService();\r\n const widgetLoadLogger = new WidgetLoadLogger(props.customChartProps.widget as any, props.customChartProps.isPreviewModeActive, 'PostGetPivotData');\r\n dashboardAnalyticsService.getPivotData(widgetPm)\r\n .then((res) => {\r\n tabledata.current = res.data;\r\n buildGridFromPivotResponse();\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 setRowData([]);\r\n setIsLoading(false);\r\n });\r\n };\r\n\r\n const lookupDisplayName = (field: PivotApiField, rawValue: any): string => {\r\n const pivotData = tabledata.current && tabledata.current.PivotData ? tabledata.current.PivotData : [];\r\n return getPivotDisplayName(pivotData, field.PivotName, field.PivotCode, rawValue);\r\n };\r\n\r\n const lookupDisplayNameByFieldCode = (fieldCode: string, rawValue: any): string => {\r\n const field = pivotFieldsRef.current.find(f => f.PivotCode === fieldCode);\r\n if (!field) return rawValue == null ? '' : String(rawValue);\r\n return lookupDisplayName(field, rawValue);\r\n };\r\n\r\n const applyPivotDataCellFormatting = (colDef: ColDef, measure?: PivotApiMeasure | null) => {\r\n colDef.sortable = false;\r\n colDef.filter = false;\r\n colDef.cellClass = measure ? getPivotDataCellClassNames(measure) : 'dl-ag-pivot-data-cell';\r\n if (!measure || !isPivotDateMinMaxMeasure(measure)) {\r\n colDef.type = 'numericColumn';\r\n }\r\n };\r\n\r\n const buildGridFromPivotResponse = () => {\r\n if (!tabledata.current || !tabledata.current.PivoFields || !tabledata.current.PivotMeasures) {\r\n setRowData([]);\r\n return;\r\n }\r\n\r\n const apiFields: PivotApiField[] = tabledata.current.PivoFields;\r\n const apiMeasures: PivotApiMeasure[] = tabledata.current.PivotMeasures;\r\n pivotFieldsRef.current = apiFields;\r\n pivotMeasuresRef.current = apiMeasures;\r\n setMeasureCount(apiMeasures.length);\r\n\r\n const rowFields = apiFields.filter(isRowPivotField);\r\n const columnFields = apiFields.filter(field => !isRowPivotField(field));\r\n const defs: ColDef[] = [];\r\n\r\n rowFields.forEach((field, index) => {\r\n defs.push(createRowGroupColDef(field, index));\r\n });\r\n columnFields.forEach((field, index) => {\r\n defs.push(createPivotColDef(field, index));\r\n });\r\n apiMeasures.forEach((measure) => {\r\n defs.push(createMeasureColDef(measure));\r\n });\r\n\r\n setColumnDefs(defs);\r\n setRowData(tabledata.current.PivotData || []);\r\n };\r\n\r\n const createRowGroupColDef = (field: PivotApiField, index: number): ColDef => {\r\n return {\r\n field: field.PivotCode,\r\n headerName: field.DisplayName,\r\n rowGroup: true,\r\n rowGroupIndex: index,\r\n enableRowGroup: true,\r\n hide: true,\r\n width: ROW_GROUP_COLUMN_MIN_WIDTH,\r\n wrapText: true,\r\n autoHeight: true,\r\n sortable: false,\r\n filter: false,\r\n comparator: (a, b) => compareDimensionValues(a, b, field.DateCode, lookupDisplayName(field, a), lookupDisplayName(field, b)),\r\n valueFormatter: (params) => lookupDisplayName(field, params.value)\r\n };\r\n };\r\n\r\n const createPivotColDef = (field: PivotApiField, index: number): ColDef => {\r\n return {\r\n field: field.PivotCode,\r\n headerName: field.DisplayName,\r\n pivot: true,\r\n pivotIndex: index,\r\n enablePivot: true,\r\n hide: true,\r\n sortable: false,\r\n filter: false,\r\n pivotComparator: (a, b) => compareDimensionValues(\r\n a,\r\n b,\r\n field.DateCode,\r\n lookupDisplayName(field, a),\r\n lookupDisplayName(field, b)\r\n )\r\n };\r\n };\r\n\r\n const getMeasureAggFunc = (measure: PivotApiMeasure): string => {\r\n if (!isPivotDateMinMaxMeasure(measure)) return 'logitudeSum';\r\n return measure.MeasureCode === 'Max' ? 'logitudeMax' : 'logitudeMin';\r\n };\r\n\r\n const createMeasureColDef = (measure: PivotApiMeasure): ColDef => {\r\n const colDef: ColDef = {\r\n field: measure.PivotMeasureCode,\r\n headerName: getMeasureCaption(measure),\r\n aggFunc: getMeasureAggFunc(measure),\r\n enableValue: true,\r\n wrapText: true,\r\n autoHeight: true,\r\n sortable: false,\r\n filter: false,\r\n cellClass: getPivotDataCellClassNames(measure),\r\n valueFormatter: (params) => {\r\n if (isPivotDateMinMaxMeasure(measure) && isAgGridPivotDateMeasureTotalDisplayCell(params)) {\r\n return '';\r\n }\r\n return formatPivotMeasureValue(params.value, measure);\r\n }\r\n };\r\n\r\n if (!isPivotDateMinMaxMeasure(measure)) {\r\n colDef.type = 'numericColumn';\r\n }\r\n\r\n return colDef;\r\n };\r\n\r\n const isRowsNotEmptyAndColumnsEmpty = () => {\r\n const pivotRows = parseJsonArray(widget?.PivotRows);\r\n const pivotColumns = parseJsonArray(widget?.PivotColumns);\r\n return pivotRows.length > 0 && pivotColumns.length === 0;\r\n };\r\n\r\n const canShowRowsGrandTotal = (): boolean => {\r\n const settings = parsePivotTotalsSettings(widget?.PivotTotalsSettings);\r\n return !isNullOrUndefinedOrEmpty(settings.ShowRowsGrandTotal) ? !!settings.ShowRowsGrandTotal : false;\r\n };\r\n\r\n const canShowColumnsGrandTotal = (): boolean => {\r\n if (isRowsNotEmptyAndColumnsEmpty()) return true;\r\n const settings = parsePivotTotalsSettings(widget?.PivotTotalsSettings);\r\n return !isNullOrUndefinedOrEmpty(settings.ShowColumnsGrandTotal) ? !!settings.ShowColumnsGrandTotal : false;\r\n };\r\n\r\n const canShowRowsTotal = (): boolean => {\r\n const settings = parsePivotTotalsSettings(widget?.PivotTotalsSettings);\r\n return !isNullOrUndefinedOrEmpty(settings.ShowRowsTotal) ? !!settings.ShowRowsTotal : false;\r\n };\r\n\r\n const canShowColumnsTotal = (): boolean => {\r\n const settings = parsePivotTotalsSettings(widget?.PivotTotalsSettings);\r\n return !isNullOrUndefinedOrEmpty(settings.ShowColumnsTotal) ? !!settings.ShowColumnsTotal : false;\r\n };\r\n\r\n const isSingleMeasurePivot = measureCount <= 1;\r\n\r\n const processSecondaryColGroupDef = useCallback((colGroupDef: ColGroupDef) => {\r\n const columnFields = pivotFieldsRef.current.filter(field => !isRowPivotField(field));\r\n const headerName = resolvePivotGroupHeaderName(colGroupDef, columnFields, lookupDisplayName);\r\n if (headerName) {\r\n colGroupDef.headerName = headerName;\r\n }\r\n }, []);\r\n\r\n const processSecondaryColDef = useCallback((colDef: ColDef) => {\r\n const columnFields = pivotFieldsRef.current.filter(field => !isRowPivotField(field));\r\n const colDefAny: any = colDef;\r\n\r\n if (colDefAny.colId && String(colDefAny.colId).indexOf('PivotRowTotal_') === 0) {\r\n applyPivotRowGrandTotalHeader(\r\n colDefAny,\r\n pivotMeasuresRef.current.length,\r\n pivotMeasuresRef.current\r\n );\r\n } else {\r\n const headerName = resolvePivotLeafHeaderName(\r\n colDefAny,\r\n columnFields,\r\n lookupDisplayName,\r\n pivotMeasuresRef.current.length,\r\n pivotMeasuresRef.current\r\n );\r\n if (headerName) {\r\n colDef.headerName = headerName;\r\n }\r\n }\r\n\r\n const measure = resolveMeasureForSecondaryColDef(colDef, pivotMeasuresRef.current);\r\n applyPivotDataCellFormatting(colDef, measure);\r\n colDef.valueFormatter = (params) => {\r\n const resolvedMeasure = measure || resolveMeasureForSecondaryColDef(params.colDef, pivotMeasuresRef.current);\r\n if (!resolvedMeasure) return '';\r\n if (isPivotDateMinMaxMeasure(resolvedMeasure) && isAgGridPivotDateMeasureTotalDisplayCell(params)) {\r\n return '';\r\n }\r\n return formatPivotMeasureValue(params.value, resolvedMeasure);\r\n };\r\n }, []);\r\n\r\n const onCellClicked = useCallback((event: CellClickedEvent) => {\r\n const colDef: any = event.colDef;\r\n if (!colDef || !colDef.pivotValueColumn) return;\r\n if (isPivotMeasureValueEmpty(event.value)) return;\r\n\r\n const pivotFields = buildPivotDrillDownPivotFields(colDef, event.node, pivotFieldsRef.current);\r\n\r\n props.customChartProps.onSelectDataPoint({\r\n MeasureFieldId: '',\r\n MeasureFieldType: '',\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 const defaultColDef = useMemo<ColDef>(() => ({\r\n sortable: false,\r\n filter: false,\r\n resizable: false,\r\n suppressMenu: true,\r\n wrapText: true,\r\n autoHeight: true\r\n }), []);\r\n\r\n const autoGroupColumnDef = useMemo<ColDef>(() => ({\r\n minWidth: ROW_GROUP_COLUMN_MIN_WIDTH,\r\n width: ROW_GROUP_COLUMN_MIN_WIDTH,\r\n sortable: false,\r\n filter: false,\r\n wrapText: true,\r\n autoHeight: true,\r\n cellClass: 'dl-ag-pivot-row-label-cell',\r\n headerValueGetter: (params) => {\r\n const colDef: any = params.colDef;\r\n const showRowGroup = colDef && colDef.showRowGroup;\r\n if (!showRowGroup) return '';\r\n const field = pivotFieldsRef.current.find(f => f.PivotCode === showRowGroup);\r\n return field ? field.DisplayName : '';\r\n },\r\n valueFormatter: (params) => {\r\n const colDef: any = params.colDef;\r\n const showRowGroup = colDef && colDef.showRowGroup;\r\n const field = pivotFieldsRef.current.find(f => f.PivotCode === showRowGroup);\r\n if (!field) return params.value == null ? '' : String(params.value);\r\n return lookupDisplayName(field, params.value);\r\n },\r\n cellRendererParams: {\r\n suppressCount: true,\r\n footerValueGetter: (params: any) => {\r\n const fieldCode = params.node && params.node.field\r\n ? params.node.field\r\n : (params.colDef && params.colDef.showRowGroup ? params.colDef.showRowGroup : null);\r\n return getPivotGroupFooterLabel(\r\n params.node,\r\n fieldCode,\r\n params.value,\r\n lookupDisplayNameByFieldCode\r\n );\r\n }\r\n }\r\n }), []);\r\n\r\n const aggFuncs = useMemo(() => ({\r\n logitudeSum: logitudeSumAgg,\r\n logitudeMin: logitudeMinAgg,\r\n logitudeMax: logitudeMaxAgg\r\n }), []);\r\n\r\n const scheduleRowGrandTotalHeaderLabel = useCallback(() => {\r\n const columnPivotFieldCount = pivotFieldsRef.current.filter(field => !isRowPivotField(field)).length;\r\n const applyLabel = () => {\r\n applyPivotRowGrandTotalGroupHeaderLabel(\r\n gridContainerRef.current,\r\n columnApiRef.current,\r\n measureCount,\r\n columnPivotFieldCount\r\n );\r\n };\r\n\r\n window.requestAnimationFrame(() => {\r\n window.requestAnimationFrame(() => {\r\n applyLabel();\r\n window.setTimeout(applyLabel, 150);\r\n });\r\n });\r\n }, [measureCount]);\r\n\r\n const onGridReady = (event: GridReadyEvent) => {\r\n gridApiRef.current = event.api;\r\n columnApiRef.current = event.columnApi;\r\n };\r\n\r\n const onFirstDataRendered = (event: FirstDataRenderedEvent) => {\r\n columnApiRef.current = event.columnApi;\r\n const columnApi: any = event.columnApi;\r\n if (!columnApi || !columnApi.getAllDisplayedColumns) return;\r\n\r\n const autoGroupColumnIds = columnApi.getAllDisplayedColumns()\r\n .map((col: any) => col.getColId())\r\n .filter((colId: string) => colId.indexOf('ag-Grid-AutoColumn') === 0);\r\n\r\n if (autoGroupColumnIds.length > 0 && columnApi.autoSizeColumns) {\r\n columnApi.autoSizeColumns(autoGroupColumnIds, false);\r\n }\r\n\r\n scheduleRowGrandTotalHeaderLabel();\r\n };\r\n\r\n const onColumnPivotChanged = () => {\r\n scheduleRowGrandTotalHeaderLabel();\r\n };\r\n\r\n const onColumnResized = () => {\r\n scheduleRowGrandTotalHeaderLabel();\r\n };\r\n\r\n const gridWrapperClassName = 'ag-theme-balham pivot-grid-element dl-ag-pivot-grid';\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 <div ref={gridContainerRef} className={gridWrapperClassName}>\r\n <AgGridReact\r\n rowData={rowData}\r\n columnDefs={columnDefs}\r\n defaultColDef={defaultColDef}\r\n autoGroupColumnDef={autoGroupColumnDef}\r\n aggFuncs={aggFuncs}\r\n pivotMode={true}\r\n groupDisplayType=\"multipleColumns\"\r\n groupDefaultExpanded={-1}\r\n suppressAggFuncInHeader={true}\r\n removePivotHeaderRowWhenSingleValueColumn={isSingleMeasurePivot}\r\n groupIncludeFooter={canShowRowsTotal()}\r\n groupIncludeTotalFooter={canShowRowsGrandTotal()}\r\n pivotRowTotals={canShowColumnsGrandTotal() ? 'after' : undefined}\r\n pivotColumnGroupTotals={canShowColumnsTotal() ? 'after' : undefined}\r\n processSecondaryColGroupDef={processSecondaryColGroupDef}\r\n processSecondaryColDef={processSecondaryColDef}\r\n onCellClicked={onCellClicked}\r\n onGridReady={onGridReady}\r\n onFirstDataRendered={onFirstDataRendered}\r\n onColumnPivotChanged={onColumnPivotChanged}\r\n onColumnResized={onColumnResized}\r\n animateRows={false}\r\n suppressContextMenu={true}\r\n suppressMovableColumns={true}\r\n headerHeight={36}\r\n rowHeight={36}\r\n />\r\n </div>\r\n }\r\n </React.Fragment>\r\n );\r\n});\r\n\r\nexport default AgPivotGrid;\r\n","import React, { useMemo } from \"react\";\r\nimport { CustomChartProps } from \"./CustomChart\";\r\nimport { DataPointSelection } from \"../../../../types/SeriesMeasure\";\r\n\r\ndeclare var window: any;\r\n\r\ntype SelectedQueryItem = {\r\n UniqueCode: string;\r\n DisplayLabel: string;\r\n GroupKey?: string;\r\n};\r\n\r\nconst parseSelectedQueries = (widgetJson: string | null | undefined): SelectedQueryItem[] => {\r\n if (!widgetJson) {\r\n return [];\r\n }\r\n try {\r\n const parsed = JSON.parse(widgetJson);\r\n if (parsed && Array.isArray(parsed.SelectedQueries)) {\r\n return parsed.SelectedQueries;\r\n }\r\n } catch {\r\n //\r\n }\r\n return [];\r\n};\r\n\r\nconst ViewsChart = (props: { customChartProps: CustomChartProps }) => {\r\n const widget = props.customChartProps.widget;\r\n const objectTableName = (widget as any)?.ViewsWidgetObjectTableName as string | undefined;\r\n\r\n const entries = useMemo(() => parseSelectedQueries((widget as any)?.WidgetJson), [widget]);\r\n\r\n const handleClick = (uniqueCode: string) => {\r\n if (!objectTableName || !uniqueCode) {\r\n return;\r\n }\r\n const selection: DataPointSelection = {\r\n Widget: widget,\r\n ViewsNavigation: {\r\n ObjectTableName: objectTableName,\r\n QueryUniqueCode: uniqueCode,\r\n },\r\n };\r\n props.customChartProps.onSelectDataPoint(selection);\r\n };\r\n\r\n if (!entries.length) {\r\n return (\r\n <div className=\"dl-views-widget-empty\">\r\n <span className=\"dl-views-widget-empty-text\">No views configured</span>\r\n </div>\r\n );\r\n }\r\n\r\n return (\r\n <div className=\"dl-views-widget-list\">\r\n {entries.map((row) => (\r\n <div key={row.UniqueCode} className=\"dl-views-widget-row\">\r\n <button\r\n type=\"button\"\r\n className=\"dl-views-widget-link\"\r\n onClick={() => handleClick(row.UniqueCode)}\r\n >\r\n {row.DisplayLabel || row.UniqueCode}\r\n </button>\r\n </div>\r\n ))}\r\n </div>\r\n );\r\n};\r\n\r\nexport default ViewsChart;\r\n","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\nimport AgPivotGrid from \"./AgPivotGrid\";\r\nimport ViewsChart from \"./ViewsChart\";\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 useAgGridPivot?: 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 props.useAgGridPivot\r\n ? <AgPivotGrid customChartProps={props} />\r\n : <PivotTable customChartProps={props} />;\r\n case \"views\": return <ViewsChart 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' : ''} ${props.widget && props.widget?.TypeCode == 'views' ? 'dl-views-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,widget) + `</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,widget) + `</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,widget) + `</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, widget: ReactWidgetPM) {\r\n\r\n if(!seriesMeasures){\r\n return;\r\n }\r\n\r\n let percentageValueInLocalFormat = getPercentageGroupValueAsNumber(seriesMeasures,groupbyId,secGroupbyId,widget);\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, widget: ReactWidgetPM) {\r\n \r\n if(!seriesMeasure){\r\n return \"\";\r\n }\r\n\r\n let decimalPlaces = widget?.DecimalPlaces || 0;\r\n\r\n let total = getSumOfGroupValuesAsNumber(seriesMeasure,groupbyId);\r\n\r\n return `<span style=\"margin-right:6px;\">Total:</span>${getNumberInSystemLocalFormat(total,decimalPlaces,decimalPlaces,true)}`;\r\n}\r\n\r\nfunction getPercentageGroupValueAsNumber(seriesMeasure: SeriesMeasure, groupbyId: string | null, secGroupbyId: string | null, widget: ReactWidgetPM) {\r\n \r\n if(!seriesMeasure){\r\n return;\r\n }\r\n\r\n let decimalPlaces = widget?.DecimalPlaces || 0;\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),decimalPlaces,decimalPlaces,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,widget);\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, widget: ReactWidgetPM) {\r\n \r\n if(!seriesMeasure){\r\n return;\r\n }\r\n let decimalPlaces = widget?.DecimalPlaces || 0;\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),decimalPlaces,decimalPlaces,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, widget: ReactWidgetPM): string | number {\r\n\r\n if(isNullOrUndefined(value)){\r\n return '$dataValue';\r\n }\r\n\r\n let decimalPlaces = widget?.DecimalPlaces || 0;\r\n\r\n if(FieldDataType.isPercentage(seriesMeasure?.MeasureFieldDataType)){\r\n\r\n return getNumberInSystemLocalFormat(value,decimalPlaces,decimalPlaces,true) + \"%\";\r\n\r\n }\r\n\r\n return getNumberInSystemLocalFormat(value,decimalPlaces,decimalPlaces,true);\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 setSafeYAxisMaxValue(chartInfo, seriesMeasures, widget);\r\n\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 setSafeYAxisMaxValue(chartInfo, seriesMeasures, widget);\r\n\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 setSafeYAxisMaxValue(chartInfo: ChartInfo, seriesMeasures: SeriesMeasure[], widget: ReactWidgetPM): void {\r\n if (!isColumnOrBarChart(widget)) return;\r\n\r\n const maxMeasureValue = getMaxMeasureValue(seriesMeasures, widget);\r\n if (maxMeasureValue === null) return;\r\n\r\n // Keep a 20% headroom so outside value labels do not overlap the top canvas edge.\r\n const safeYAxisMaxValue = Math.max(1, Math.ceil(maxMeasureValue * 1.2));\r\n chartInfo.yAxisMaxValue = safeYAxisMaxValue.toString();\r\n}\r\n\r\nfunction getMaxMeasureValue(seriesMeasures: SeriesMeasure[], widget: ReactWidgetPM): number | null {\r\n if (!seriesMeasures || seriesMeasures.length === 0) return null;\r\n\r\n if (widget?.IsStacked) {\r\n const stackedTotalsByGroupId = new Map<any, number>();\r\n\r\n seriesMeasures.forEach((seriesMeasure) => {\r\n seriesMeasure?.Values?.forEach((valueItem) => {\r\n const numericValue = toNumericValue(valueItem?.Value);\r\n if (numericValue === null) return;\r\n\r\n const groupId = valueItem?.GroupById;\r\n const currentTotal = stackedTotalsByGroupId.get(groupId) || 0;\r\n stackedTotalsByGroupId.set(groupId, currentTotal + numericValue);\r\n });\r\n });\r\n\r\n let maxStackedTotal: number | null = null;\r\n stackedTotalsByGroupId.forEach((total) => {\r\n if (maxStackedTotal === null || total > maxStackedTotal) {\r\n maxStackedTotal = total;\r\n }\r\n });\r\n\r\n return maxStackedTotal;\r\n }\r\n\r\n let maxValue: number | null = null;\r\n\r\n seriesMeasures.forEach((seriesMeasure) => {\r\n seriesMeasure?.Values?.forEach((valueItem) => {\r\n const numericValue = toNumericValue(valueItem?.Value);\r\n if (numericValue === null) return;\r\n\r\n if (maxValue === null || numericValue > maxValue) {\r\n maxValue = numericValue;\r\n }\r\n });\r\n });\r\n\r\n return maxValue;\r\n}\r\n\r\nfunction toNumericValue(value: any): number | null {\r\n if (value === null || value === undefined || value === \"\") return null;\r\n\r\n const numericValue = typeof value === \"number\" ? value : Number(value);\r\n if (!Number.isFinite(numericValue)) return null;\r\n\r\n return numericValue;\r\n}\r\n\r\nfunction isColumnOrBarChart(widget: ReactWidgetPM): boolean {\r\n return widget?.TypeCode === \"column\" || widget?.TypeCode === \"bar\";\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,widget),\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,widget),\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,widget),\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, value, 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, isPreviewModeActive?: boolean) => {\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 = widget.ShowValue ? \"1\" : '0';\r\n chartInfo.valueFontSize = widget.ShowValue ? widget.ValueFontSize : null;\r\n chartInfo.valueFontColor = widget.ShowValue ? widget.ValueFontColor : null;\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,widget),\r\n \"tooltext\": !isPreviewModeActive ? \"Click for more details\" : null\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\r\n let chart = {} as ChartInfo;\r\n \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 chart.pYAxisNameFont = defautFont;\r\n chart.pYAxisNameFontSize = defautFontSize;\r\n chart.pYAxisNameFontColor = defautColor;\r\n chart.xAxisNameFont = defautFont;\r\n chart.xAxisNameFontSize = defautFontSize;\r\n chart.xAxisNameFontColor = defautColor;\r\n chart.yAxisNameFont = defautFont;\r\n chart.yAxisNameFontSize = defautFontSize;\r\n chart.yAxisNameFontColor = defautColor;\r\n chart.drawCrossLine = \"0\";\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(isColumnOrBarChart(widget)) {\r\n chart.canvasTopPadding = \"40\";\r\n }\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 = \"15\"\r\n }\r\n\r\n if(isValuePositionInside && isPieOrDonutChart(widget)) {\r\n chart.minAngleForValue = \"27\"\r\n }\r\n\r\n chart.formatNumber = \"1\";\r\n\r\n let _numberSeparatorSettings = getGlobalNumberFormatting();\r\n chart.thousandSeparator = _numberSeparatorSettings.thousandsSeparator;\r\n chart.decimalSeparator = _numberSeparatorSettings.decimalSeparator;\r\n\r\n chart.numberSuffix = isFirstMeasureTypePercentage(widget) ? \"%\" : null;\r\n\r\n if(widget.ShowMeasureUnit && widget.MeasureUnit1){\r\n\r\n chart.numberSuffix = (chart.numberSuffix) ? ` ${widget.MeasureUnit1} ${chart.numberSuffix}` : ` ${widget.MeasureUnit1}`;\r\n }\r\n\r\n if(widget.ShowMeasureUnit && widget.MeasureUnit2){\r\n\r\n chart.sNumberSuffix = ` ${widget.MeasureUnit2}`; // Suffix for the secondary Y-axis\r\n }\r\n\r\n if(isDecimalPlacesEnabled(widget)){\r\n\r\n if(widget.DecimalPlaces && widget.DecimalPlaces > 0){\r\n\r\n chart.forceDecimals = \"1\";\r\n chart.decimals = `${widget.DecimalPlaces}`;\r\n\r\n }else{\r\n\r\n chart.forceDecimals = \"0\";\r\n chart.decimals = \"0\";\r\n }\r\n }\r\n\r\n\r\n if(isWidgetUsedAbbreviation(widget)){\r\n\r\n chart.formatNumberScale= \"1\";\r\n\r\n }else{\r\n chart.formatNumberScale= \"0\";\r\n }\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 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\r\n if(chartInfo.sNumberSuffix){\r\n\r\n if(isSecondMeasureTypePercentage(widget)){\r\n\r\n chartInfo.sNumberSuffix = `${chartInfo.sNumberSuffix} % `;\r\n\r\n }\r\n \r\n }else{\r\n\r\n chartInfo.sNumberSuffix = isSecondMeasureTypePercentage(widget) ? \"%\" : null;\r\n\r\n }\r\n\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\nfunction isDecimalPlacesEnabled(widget: ReactWidgetPM): boolean | null {\r\n \r\n if(widget.TypeCode == \"pivot\"){\r\n return false;\r\n }\r\n\r\n return true;\r\n}\r\n\r\n\r\nfunction isWidgetUsedAbbreviation(widget: ReactWidgetPM) {\r\n \r\n if(!widget || widget.TypeCode == 'kpi' || widget.TypeCode == 'pivot'){\r\n return false;\r\n }\r\n\r\n if(widget.UseNumberAbbreviation){\r\n\r\n return true;\r\n }\r\n\r\n return false;\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 yAxisMaxValue: 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 valueFontSize: string | null;\r\n valueFontColor: string | null;\r\n autoScale: string | null;\r\n formatNumber: string | null;\r\n forceDecimals: string | null;\r\n decimals: string | null; \r\n\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, \"PostGetTargetDataAnalytic\");\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, \"PostGetDataAnalytic\");\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\n\r\n\r\n return (\r\n <div className={'db-fc-parent-container'} ref={fusionRef}>\r\n <div className={'db-fc-container' + (dataLoaded && error ? \" db-fc-container-error\" : \"\")} key={fusionKey} ref={ref} id={chartContainerId}>\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 {dataLoaded && !error &&\r\n <ReactFC\r\n {...args}\r\n fcEvent-dataplotClick={dataplotClick}\r\n fcEvent-loaded={loaded}\r\n onRender={renderComplete}\r\n />\r\n }\r\n {dataLoaded && 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 </div>\r\n }\r\n </div>\r\n </div>\r\n )\r\n\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, \"PostGetGaugeData\");\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!, props.isPreviewModeActive)\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 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 renderComplete = (eventObj) => {\r\n // Access the chart's container\r\n const chartRef = eventObj.sender;\r\n const chartContainer = FusionCharts.getObjectReference(chartRef.id);\r\n if (!chartContainer) {\r\n console.error('Chart container is undefined');\r\n return;\r\n }\r\n const svgContainer = chartContainer.querySelector('svg');\r\n if (!svgContainer) {\r\n console.error('SVG Container is undefined');\r\n return;\r\n }\r\n\r\n const textElements = svgContainer.querySelectorAll('text');\r\n if (textElements.length > 0) {\r\n\r\n const lastTextElement = textElements[textElements.length - 1];\r\n\r\n if (!props.isPreviewModeActive) {\r\n\r\n lastTextElement.style.cursor = 'pointer';\r\n lastTextElement.style.transition = 'fill 0.2s, text-decoration 0.2s';\r\n\r\n lastTextElement.addEventListener('mouseenter', function () {\r\n lastTextElement.style.fill = '#007bff';\r\n lastTextElement.style.textDecoration = 'underline';\r\n });\r\n\r\n lastTextElement.addEventListener('mouseleave', function () {\r\n lastTextElement.style.fill = '';\r\n lastTextElement.style.textDecoration = 'none';\r\n });\r\n }\r\n\r\n lastTextElement.addEventListener('click', function () {\r\n\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.onSelectDataPoint({\r\n MeasureFieldId: measureFieldId,\r\n Widget: widget.current,\r\n MeasureCode: currentWidgetMeasure!.MeasureCode,\r\n Formula: currentWidgetMeasure!.Formula,\r\n });\r\n });\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-guage'} key={fusionKey} id={chartContainerId}>\r\n <ReactFC\r\n {...args}\r\n fcEvent-dataplotClick={dataplotClick}\r\n fcEvent-renderComplete={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, 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 { PopupActions } from 'reactjs-popup/dist/types';\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 duplicateBtnClicked?(id: any): any;\r\n copyToClipboardBtnClicked?(key: any, widget: ReactWidgetPM): 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 useAgGridPivot?: 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 const [showCopiedNotification, setShowCopiedNotification] = useState(false);\r\n const copyPopupRef = useRef<PopupActions>(null);\r\n const copiedNotificationTimer = useRef<any>(null);\r\n\r\n\r\n const editWidget = () => {\r\n props.editBtnClicked(widget.current)\r\n };\r\n\r\n const duplicateWidget = () => {\r\n if(props && props.duplicateBtnClicked){\r\n props.duplicateBtnClicked(widget.current?.key)\r\n } else if(props && props.copyBtnClicked){\r\n props.copyBtnClicked(widget.current?.key)\r\n }\r\n };\r\n\r\n const copyWidgetToClipboard = () => {\r\n if(props && props.copyToClipboardBtnClicked && widget.current){\r\n props.copyToClipboardBtnClicked(widget.current?.key, widget.current);\r\n setShowCopiedNotification(true);\r\n if (copiedNotificationTimer.current) clearTimeout(copiedNotificationTimer.current);\r\n copiedNotificationTimer.current = setTimeout(() => {\r\n setShowCopiedNotification(false);\r\n }, 700);\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 return () => {\r\n if (copiedNotificationTimer.current) clearTimeout(copiedNotificationTimer.current);\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} useAgGridPivot={props.useAgGridPivot} 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\" || widget.current?.TypeCode == \"views\") return <CustomChart isInEditMode={props.isInEditMode} isPreviewModeActive={props.isPreviewModeActive} useAgGridPivot={props.useAgGridPivot} 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: '#19395C'}}\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 <div> <EditWidgetIcon className=\"widget-card-edit-icon\" onClick={() => editWidget()} /> </div>\r\n <Popup\r\n ref={copyPopupRef}\r\n className=\"widget-copy-dropdown-container\"\r\n trigger={\r\n <div>\r\n <CopyWidgetIcon className=\"widget-card-copy-icon\" />\r\n </div>\r\n }\r\n position={['bottom left', 'bottom center']}\r\n closeOnDocumentClick\r\n closeOnEscape\r\n arrow={false}\r\n offsetY={2}\r\n >\r\n <div className=\"widget-copy-dropdown-menu\">\r\n <div className=\"widget-copy-dropdown-item\" onClick={() => { copyPopupRef.current?.close(); duplicateWidget(); }}>Duplicate</div>\r\n <div className=\"widget-copy-dropdown-item\" onClick={() => { copyPopupRef.current?.close(); copyWidgetToClipboard(); }}>Copy</div>\r\n </div>\r\n </Popup>\r\n <div> <DeleteWidgetIcon onClick={() => props.deleteBtnClicked(props.widget?.key)} /> </div>\r\n </div>\r\n }\r\n\r\n {showCopiedNotification &&\r\n <div className=\"widget-copied-notification\">\r\n <span className=\"widget-copied-notification-check\">✓</span>\r\n <span className=\"widget-copied-notification-title\">{widget.current?.Title}</span>\r\n <span className=\"widget-copied-notification-text\">widget copied</span>\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: '#19395C'}}\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 onCopyWidgetToClipboard?:(key: string, widget: ReactWidgetPM) => void,\r\n dataBinding: DashboardDataBinding,\r\n onSelectDataPoint: (dataPointSelection: DataPointSelection) => void,\r\n useAgGridPivot?: boolean;\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 function copyWidgetToClipboard(key: string, widget: ReactWidgetPM) {\r\n if(props && props.onCopyWidgetToClipboard){\r\n props.onCopyWidgetToClipboard(key, widget);\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 useAgGridPivot={props.useAgGridPivot}\r\n duplicateBtnClicked={copyWidget}\r\n copyToClipboardBtnClicked={copyWidgetToClipboard}\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 onCopyWidgetToClipboard?:(key: string, widget: ReactWidgetPM) => void,\r\n openDeleteWidgetConfirmWindow: (deleteProps: DeleteWidgetProps) => void,\r\n onSelectDataPoint: (dataPointSelection: DataPointSelection) => void;\r\n useAgGridPivot?: boolean;\r\n agGridLicenseKey?: string;\r\n};\r\nconst Dashboard = (props: DashboardProps) => {\r\n Session.UseAgGridPivot = !!props.useAgGridPivot;\r\n Session.AgGridLicenseKey = props.agGridLicenseKey;\r\n\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 Session.UseAgGridPivot = !!props.useAgGridPivot;\r\n Session.AgGridLicenseKey = props.agGridLicenseKey;\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 Session.UseAgGridPivot = !!props.useAgGridPivot;\r\n Session.AgGridLicenseKey = props.agGridLicenseKey;\r\n }, [props.useAgGridPivot, props.agGridLicenseKey])\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 copyWidgetToClipboard = (key: string, widget: ReactWidgetPM) => {\r\n if(props && props.onCopyWidgetToClipboard){\r\n props.onCopyWidgetToClipboard(key, widget);\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 useAgGridPivot={props.useAgGridPivot}\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 useAgGridPivot={props.useAgGridPivot}\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 onCopyWidgetToClipboard={copyWidgetToClipboard}\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","requestHeaders","isDashboardClickHouseActive","signal","Token","window","IsDashboardClickHouseActive","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","getDateRangesByPeriod","_operator","_interval","_range","date1","date2","toLowerCase","dateGroupCodes","customDateGroupCodes","Number","getDateRangesByCode","code","_fromDate","_toDate","previousNextDates","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","isNaN","truncateDecimals","DecimalPlaces","getNumberInSystemLocalFormat","decimalDigitsCount","minimumFractionDigits","isValueTruncated","applyAbbreviation","decimalParts","toString","maxFractionDigits","_numberSeparatorSettings","abbreviationSymbol","Math","abs","_val","toLocaleString","maximumFractionDigits","_formattedValue","replaceAll","numberOfDecimalParts","isFinite","numStr","toLocaleLowerCase","integerPart","decimalPart","truncated","slice","resultStr","parseFloat","ConvertStringToPascalCaseHelper","stringValue","splittedWords","filter","f","map","t","toUpperCase","join","WidgetLoadLogService","create","widgetLoadLog","WidgetLoadLogger","isPreviewMode","requestName","StartTime","getTime","Widget","RequestName","log","loadDataResponse","canCreateLog","totalExecutionTime","widgetLoadLogService","Tenant","WidgetId","Id","DashboardId","LoadTime","getLoadTime","TotalExecutionTime","IsClickHouse","isClickHouse","WidgetType","TypeCode","IsDrillDown","then","_response","_error","loadTimeHeaderKey","loadTimeHeader","isNumber","clickHouseHeaderKey","clickHouseHeader","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","comparePeriodOperator","ComparePeriodDateFilter","DateRangeOperator","Operator","comparePeriodInterval","DatePickerTextFieldValue","String","ComparePeriodDateFilterDates","ComparisonPeriodType","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","columns","isCalculatedColumn","ColumnVariableType","dataTypeCode","ColumnVariableDataType","dateDisplayMode","DateTimeDisplayMode","column","find","IsCalculatedColumn","DataTypeCode","EntityId","res","ObjectTableName","PageIndex","PageSize","fillTableData","getBooleanStringValue","_value","charAt","getDateTimeValue","datePart","tableRecords","Fields","setDefaultSortOptions","Result","item","_tableRow","field","FieldCode","valueType","tableCols","_widget","_sortFieldCode","getSortFieldCodeBySortFieldId","DefaultSortBy","_sortDirection","DefaultSortDirection","sortFieldId","col","getSortFieldIdBySortFieldCode","sortFieldCode","sortTableData","sortedField","canSort","_sortOrder","ScreenSortBy","ScreenSortDirection","ScreenSortByType","isInEditMode","getTableFormattingData","TableFormatSettings","getTableFormattingPropertyValue","tableFormattingData","getTableConditionalRulesData","TableConditionalRules","isValueEmpty","IsValidRule","rule","operator","RuleOperator","Code","ruleValue1","RuleValue1","ruleValue2","RuleValue2","stripTime","getFullYear","getMonth","getDate","parseLocalDate","dateStr","year","month","day","parseCustomDateLocalDate","isDateValidRule","actualValue","getCellPropertyByRule","cellValue","defaultValue","columnType","columnData","el","FieldId","FieldType","FieldRules","firstValidRule","getCellFloatAlignment","isRowTenantMatched","rowData","isClickableCell","fieldCode","IsShipmentMasterFieldClickable","isMasterNumberClickable","tableCellClicked","TableRowEntityId","RowData","getCellValue","columnValue","decimalPlaces","isAbbreviationApplied","UseNumberAbbreviation","cellTemplateBody","dateTimeDisplayMode","fontColor","fontSizeWithoutUnit","fontSizeWitUnit","display","backgroundColor","headerTemplate","showMeasureUnit","MeasureUnit","DisplayName","DataTable","loading","resizableColumns","columnResizeMode","responsiveLayout","index","Column","header","body","PIVOT_DATE_DATA_CELL_CLASS","getPivotDataCellClassNames","measure","isPivotDateMinMaxMeasure","toValidDate","isPivotMeasureValueEmpty","formatPivotDateMeasureValue","isRowPivotField","PivotCode","truncateToTwoDecimals","numericValue","safeValue","firstPart","secondPart","substr","logitudeSumAgg","params","values","total","hasValue","isAgGridDateMeasureTotalAggregation","aggParams","rowNode","footer","group","leafGroup","colDef","getColDef","pivotTotalColumnIds","colId","getColId","isDevExtremePivotDataCellTotalOrGrandTotal","cell","hasRowFields","hasColumnFields","rowType","isDevExtremeSummaryCellTotalOrGrandTotal","rowPath","_rowPath","columnPath","_columnPath","type","isAgGridPivotDateMeasureTotalDisplayCell","node","isPivotRowGrandTotalColumnDef","logitudeMinAgg","minDate","minValue","currentDate","logitudeMaxAgg","maxDate","maxValue","formatPivotMeasureValue","minimumFraction","getPivotGroupFooterLabel","rawValue","lookupDisplayName","level","displayName","compareDimensionValues","aValue","bValue","dateCode","aText","bText","aNumber","bNumber","aCompare","bCompare","aDisplay","bDisplay","getPivotDisplayName","pivotData","fieldName","dataField","dataFieldValue","isPivotRowGrandTotalGroupDef","colGroupDef","groupId","children","every","child","resolvePivotGroupHeaderName","columnFields","pivotKeys","getPivotValueColumnId","pivotValueColumn","getId","resolveMeasureFromPivotValueColumn","measures","valueColumnId","measureByValueColumn","PivotMeasureCode","sortedMeasures","sort","left","right","endsWith","resolvePivotLeafHeaderName","measureCount","resolveMeasureForSecondaryColDef","getColumnGroupAtHeaderLevel","targetLevel","getParent","groupPointer","providedColumnGroup","getProvidedColumnGroup","originalGroupLevel","getLevel","groupPointerLevel","getPaddingLevel","escapeColumnIdSelector","columnId","CSS","escape","findHeaderGroupCellByColumnGroup","headerContainer","groupRows","targetGroupLevel","columnGroup","getUniqueId","groupRowIndex","min","max","targetGroupRow","querySelector","applyPivotRowGrandTotalGroupHeaderLabel","gridRootElement","columnApi","columnPivotFieldCount","clearPivotRowGrandTotalGroupHeaderMarkup","displayedColumns","getAllDisplayedColumns","rowGrandTotalColumns","centerHeaderContainer","Array","querySelectorAll","rowGrandTotalGroupCells","findRowGrandTotalGroupHeaderCells","applyGrandTotalLabelToGroupHeaderCells","element","classList","remove","labelElement","textContent","textAlign","cellsByColumnGroup","matchingCell","paddingCells","trailingPaddingCells","firstCell","firstLabel","combinedWidth","reduce","totalWidth","offsetWidth","siblingLabel","applyPivotRowGrandTotalHeader","headerName","getMeasureCaption","headerValueGetter","collectPivotRowPath","startNode","path","unshift","parent","buildPivotDrillDownPivotFields","apiFields","rowFields","pivotFields","columnKeys","DateCode","pathItem","parseJsonArray","json","parsed","parsePivotTotalsSettings","PivotTable","forwardRef","comRef","tabledata","pivotGridRef","dateMeasureDataFieldsRef","Set","pivotHasRowFieldsRef","pivotHasColumnFieldsRef","PivotGridDataSource","store","fields","dataSource","setDataSource","getPivotTableData","document","addEventListener","handleResize","removeEventListener","instance","setTimeout","repaint","setPivotDataSourceFields","err","customizeCells","useCallback","e","cellElement","padding","borderRadius","onCellClick","area","fieldValue","fieldData","r","PivotFields","onCellPrepared","dataFields","component","getDataSource","getAreaFields","dataIndex","has","text","contentSpan","getColumnNameByColumnId","datafieldValue","PivotData","SortRowAndColumnHeaders","a","b","PivoFields","PivotMeasures","pivotRowsAndColumnsFields","caption","name","PivotName","allowSorting","allowFiltering","sortingMethod","expanded","wordWrapEnabled","customizeText","cellInfo","some","pivotDataCellsFields","isDateMinMaxMeasure","dataType","summaryType","calculateCustomSummary","options","summaryProcess","totalValue","totalDate","isAfter","isBefore","_finalVal","calculateSummaryValue","AllfieldsData","canShowRowsGrandTotal","pivotTotalsSettings","PivotTotalsSettings","ShowRowsGrandTotal","isRowsNotEmptyAndColumnsEmpty","pivotRows","PivotRows","pivotColumns","PivotColumns","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","ROW_GROUP_COLUMN_MIN_WIDTH","applyAgGridLicense","AgGridLicenseKey","LicenseManager","setLicenseKey","AgPivotGrid","_comRef","setRowData","columnDefs","setColumnDefs","setMeasureCount","gridApiRef","columnApiRef","gridContainerRef","pivotFieldsRef","pivotMeasuresRef","resetRowHeights","widgetPm","buildGridFromPivotResponse","lookupDisplayNameByFieldCode","applyPivotDataCellFormatting","sortable","cellClass","apiMeasures","defs","createRowGroupColDef","createPivotColDef","createMeasureColDef","rowGroup","rowGroupIndex","enableRowGroup","hide","wrapText","autoHeight","comparator","valueFormatter","pivot","pivotIndex","enablePivot","pivotComparator","getMeasureAggFunc","aggFunc","enableValue","settings","isSingleMeasurePivot","processSecondaryColGroupDef","processSecondaryColDef","colDefAny","resolvedMeasure","onCellClicked","event","MeasureFieldType","defaultColDef","useMemo","resizable","suppressMenu","autoGroupColumnDef","minWidth","showRowGroup","cellRendererParams","suppressCount","footerValueGetter","aggFuncs","logitudeSum","logitudeMin","logitudeMax","scheduleRowGrandTotalHeaderLabel","applyLabel","requestAnimationFrame","onGridReady","onFirstDataRendered","autoGroupColumnIds","autoSizeColumns","onColumnPivotChanged","onColumnResized","gridWrapperClassName","AgGridReact","pivotMode","groupDisplayType","groupDefaultExpanded","suppressAggFuncInHeader","removePivotHeaderRowWhenSingleValueColumn","groupIncludeFooter","groupIncludeTotalFooter","pivotRowTotals","pivotColumnGroupTotals","animateRows","suppressContextMenu","suppressMovableColumns","headerHeight","rowHeight","parseSelectedQueries","widgetJson","isArray","SelectedQueries","ViewsChart","ViewsWidgetObjectTableName","entries","WidgetJson","handleClick","uniqueCode","selection","ViewsNavigation","QueryUniqueCode","row","UniqueCode","DisplayLabel","CustomChart","project","useAgGridPivot","buildToolTip","seriesMeasure","groupbyId","secGroupbyId","customToolTip","getTooltiplabel","getMeasureType","getTooltipValue","getPieDonutToolTipPercentage","RenderStackedChartTotalsAndPercentages","getGroupValuePercentage","getSumOfGroupValues","seriesMeasures","IsStacked","Sum","percentageValueInLocalFormat","getPercentageGroupValueAsNumber","getSumOfGroupValuesAsNumber","Values","v","GroupByIdSec","getSumOfValuesAsNumber","getDonutPiePercentageGroupValueAsNumber","Name","formula","months","quarters","getCategoriesBasedDataSource","chartInfo","seriesMeasuresIsEmpty","handelNullLabels","setSafeYAxisMaxValue","chart","categories","buildCategories","dataset","buildDataSet","getStackedDataSource","buildStackedCategories","buildStackedDataSet","getSimpleDataSource","buildDataSource","isColumnOrBarChart","maxMeasureValue","getMaxMeasureValue","safeYAxisMaxValue","ceil","yAxisMaxValue","stackedTotalsByGroupId","valueItem","toNumericValue","currentTotal","set","maxStackedTotal","series","tooltext","dataSet","datas","seriesname","anchorBgColor","anchorBorderColor","anchorBorderThickness","anchorHoverColor","parentyaxis","PlotasLineChart","PlotonSecondAxis","renderAs","uniqueGroups","x","LabelSec","seriesName","buildStackedGroupData","emptylabels","filledLabels","sortDataSet","s1","s2","aa","bb","secGroup","getUniqueGroupOrderdList","category","defautFontSize","defautFont","defautColor","BuildFusionChartObject","SecondaryGroupById","getBarObject","getStackedBarObject","getLineObject","getClusteredLineObject","getPieObject","getDonutObject","getColumnObject","getClusteredColumnObject","getWidgetRanges","gaugeRanges","GaugeRanges","getGaugeObject","fusionObject","getDefaultChartobject","getDefaultChartInfo","manageResize","valueBelowPivot","showValue","ShowValue","valueFontSize","ValueFontSize","valueFontColor","ValueFontColor","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","valuePosition","ValuePosition","isValuePositionInside","placeValuesInside","minPlotHeightForValue","isPieOrDonutChart","minAngleForValue","formatNumber","thousandSeparator","numberSuffix","MeasureUnit1","MeasureUnit2","sNumberSuffix","isDecimalPlacesEnabled","forceDecimals","decimals","isWidgetUsedAbbreviation","formatNumberScale","palettecolors","enableSlicing","enableRotation","toolTipBgColor","showToolTipShadow","plotHoverEffect","scrollHeight","scrollWidth","plotColorinTooltip","showLabels","LabelsPosition","setOnChartLegend","setChartInLegend","LegendPosition","legendScrollBgColor","legendIconScale","scrollShowButtons","legendCaptionAlignment","alignLegendWithCanvas","pieRadius","showSecondaryLimits","showDivLineSecondaryValue","pYAxisNameBorderPadding","sYAxisNameBorderPadding","pYAxisName","sYAxisname","textLength","getTitle","maxLenght","textLenght","neededSpaces","space","repeat","FusionChartHelper","getPieRadius","getLegendWidth","legendWidth","trimChartLabels","chartWidth","chartHeight","handleLegendWidth","handlePieRadius","chartMinumunHeight","startPercantage","stepHeight","step","floor","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","offsetHeight","isTargetWidget","updatedAxiosController","isTargetUsed","SeriesMeasures","showTargetUsageTooltipMessageError","isDummyChange","errorMsg","dataplotClick","eventObj","dataObj","groupbyid","measurefieldid","measurecode","groupbyidsec","useResizeObserver","onResize","resizeTo","renderComplete","handlePieDonutChartTooltip","chartDataSource","handleOtherChartsTooltip","loaded","sender","onRender","setFusionKey","getChartData","chartRef","chartContainer","getObjectReference","svgContainer","textElements","lastTextElement","cursor","transition","fill","textDecoration","WidgetCard","fusionChartRef","showHeaderErrorMessages","setShowHeaderErrorMessages","headerErrorMessages","setHeaderErrorMessages","showCopiedNotification","setShowCopiedNotification","copyPopupRef","copiedNotificationTimer","editWidget","editBtnClicked","duplicateWidget","duplicateBtnClicked","copyBtnClicked","copyWidgetToClipboard","copyToClipboardBtnClicked","onEditWidget","getCSSPropertyValue","widgetData","propUnit","propDefaultVal","GetChartComponent","showErrorMsg","GaugeChart","msg","isTableWidget","isPivotWidget","isTableOrPivotWidget","getwidgetTitlesContainer","drilldownToTableData","isThereTitle","Title","isThereSubtitle","Subtitle","tableHintMessage","isTitleAligmentRight","visibility","TitleAlignment","justifyContent","flexDirection","Popup","trigger","position","arrowStyle","offsetY","on","EditWidgetIcon","CopyWidgetIcon","closeOnDocumentClick","closeOnEscape","arrow","close","DeleteWidgetIcon","deleteBtnClicked","TargetWarningIcon","deepClone","obj","ResponsiveReactGridLayout","WidthProvider","Responsive","DashboardDesigner","array12","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","copyWidget","onCopyWidget","onCopyWidgetToClipboard","y","newPlaceholderRows","Event","layoutGridProps","compactType","draggableCancel","isDraggable","isResizable","onWidthChange","cols","md","sm","xs","xxs","useCSSTransforms","Dashboard","UseAgGridPivot","agGridLicenseKey","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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"}
|