From 4174f0b680599afb8a3625e5d395bae48b16070a Mon Sep 17 00:00:00 2001 From: Dmitrij Vladimirov <47441164+Frisle@users.noreply.github.com> Date: Tue, 23 May 2023 13:12:19 +0600 Subject: [PATCH] FIX: not documented issue. Crash when accessed to specific global Add try except block to prevent dashboad to crash when globals are missing or wrong --- MDX2JSON/Dashboard.cls | 42 ++++++++++++++++++++++-------------------- 1 file changed, 22 insertions(+), 20 deletions(-) diff --git a/MDX2JSON/Dashboard.cls b/MDX2JSON/Dashboard.cls index 1739529..a7dcd58 100644 --- a/MDX2JSON/Dashboard.cls +++ b/MDX2JSON/Dashboard.cls @@ -105,28 +105,30 @@ ClassMethod GetCubeMeasuresDataType(Widget, Number, CubeName, Output DataType As set st = $$$OK set dataSource = $piece(Widget.dataSource, ".", *) // get dataSource type + try{ + if ((dataSource '= "kpi") && (dataSource '= "")){ + if ($FIND(Widget.controls.GetAt(Number).targetProperty, "[") && $FIND(Widget.controls.GetAt(Number).targetProperty, ".")){ + set tMeasure = $TRANSLATE(Widget.controls.GetAt(Number).targetProperty, "[]", "") + + set st = ##class(%DeepSee.Utils).%GetDimensionInfo(CubeName,tMeasure,.pDimNo,.pHierNo,.pLevelNo) // get positional info about dimension + + Set tMbrInfo = $G($$$DeepSeeMetaGLVN("cubes",$$$UPPER(CubeName),"mbr#",pDimNo,pHierNo,pLevelNo)) + set DataType = $LG(tMbrInfo,6) // get data type + if '($FIND(DataType, "%")){ // if DataType return cube fact search for dataType in "star" + Set tMbrInfo = $G($$$DeepSeeMetaGLVN("cubes", $$$UPPER(CubeName), "star", DataType, "prop", $LG(tMbrInfo,7), "type")) + set DataType = tMbrInfo + } + }else{ + + set DataType = "" + } + }else{ - if ((dataSource '= "kpi") && (dataSource '= "")){ - if ($FIND(Widget.controls.GetAt(Number).targetProperty, "[") && $FIND(Widget.controls.GetAt(Number).targetProperty, ".")){ - set tMeasure = $TRANSLATE(Widget.controls.GetAt(Number).targetProperty, "[]", "") - - set st = ##class(%DeepSee.Utils).%GetDimensionInfo(CubeName,tMeasure,.pDimNo,.pHierNo,.pLevelNo) // get positional info about dimension - - Set tMbrInfo = $G($$$DeepSeeMetaGLVN("cubes",$$$UPPER(CubeName),"mbr#",pDimNo,pHierNo,pLevelNo)) - set DataType = $LG(tMbrInfo,6) // get data type - if '($FIND(DataType, "%")){ // if DataType return cube fact search for dataType in "star" - Set tMbrInfo = $G($$$DeepSeeMetaGLVN("cubes", $$$UPPER(CubeName), "star", DataType, "prop", $LG(tMbrInfo,7), "type")) - set DataType = tMbrInfo - } - }else{ - - set DataType = "" - } - }else{ - - set DataType = "" + set DataType = "" + } + }catch ex { + set st = ex.AsStatus() } - return st }