Skip to content

Commit c7370f9

Browse files
authored
Merge pull request #101 from Frisle/patch-1
ADD: New method to get dimension data type
2 parents 352f321 + b2fa8a9 commit c7370f9

1 file changed

Lines changed: 37 additions & 0 deletions

File tree

MDX2JSON/Dashboard.cls

Lines changed: 37 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -96,6 +96,40 @@ ClassMethod WidgetsToProxyObject(Dashboard As %DeepSee.Dashboard.Definition, Out
9696
return st
9797
}
9898

99+
100+
/// A very specific method of displaying the data type for cube measures.
101+
/// Serves for the convenience of front-end development of the filter widget.
102+
/// The return is something like this <b>%DeepSee.Time.DayMonthYear</b>
103+
ClassMethod GetCubeMeasuresDataType(Widget, Number, CubeName, Output DataType As %String) As %Status
104+
{
105+
106+
set st = $$$OK
107+
set dataSource = $piece(Widget.dataSource, ".", *) // get dataSource type
108+
109+
if (dataSource '= "kpi"){
110+
if ($FIND(Widget.controls.GetAt(Number).targetProperty, "[")){
111+
set tMeasure = $TRANSLATE(Widget.controls.GetAt(Number).targetProperty, "[]", "")
112+
113+
set st = ##class(%DeepSee.Utils).%GetDimensionInfo(CubeName,tMeasure,.pDimNo,.pHierNo,.pLevelNo) // get positional info about dimension
114+
115+
Set tMbrInfo = $G($$$DeepSeeMetaGLVN("cubes",$$$UPPER(CubeName),"mbr#",pDimNo,pHierNo,pLevelNo))
116+
set DataType = $LG(tMbrInfo,6) // get data type
117+
if '($FIND(DataType, "%")){ // if DataType return cube fact search for dataType in "star"
118+
Set tMbrInfo = $G($$$DeepSeeMetaGLVN("cubes", $$$UPPER(CubeName), "star", DataType, "prop", $LG(tMbrInfo,7), "type"))
119+
set DataType = tMbrInfo
120+
}
121+
}else{
122+
123+
set DataType = ""
124+
}
125+
}else{
126+
127+
set DataType = ""
128+
}
129+
130+
return st
131+
}
132+
99133
/// Converts relevant parts of %DeepSee.Dashboard.Widget object into %ZEN.proxyObject.
100134
ClassMethod WidgetToProxyObject(Widget As %DeepSee.Dashboard.Widget, CubeName As %String) As %ZEN.proxyObject [ Internal ]
101135
{
@@ -253,6 +287,9 @@ ClassMethod WidgetControlToProxyObject(Widget As %DeepSee.Dashboard.Widget, Numb
253287
set obj.label = ##class(%DeepSee.UserPortal.Utils).%ResolveText(obj.label)
254288
set obj.source = Widget.name
255289

290+
set filterDataType = ..GetCubeMeasuresDataType(Widget,Number,CubeName,.fDataType)
291+
set obj.targetPropertyDataType = fDataType
292+
256293
set:(obj.target="") obj.target = Widget.name
257294

258295
if ($e(obj.value)="@") {

0 commit comments

Comments
 (0)