Skip to content

Commit c8282a1

Browse files
authored
ADD: New method to get dimension data type
Method get data type for time measure. If measure is not time kind of measure it shows fact table(?). Method tested on other widgets.
1 parent 352f321 commit c8282a1

1 file changed

Lines changed: 36 additions & 0 deletions

File tree

MDX2JSON/Dashboard.cls

Lines changed: 36 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -96,6 +96,39 @@ 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 obj = $$$NewDynObj
108+
set st = Widget.controls.GetAt(Number).%CopyTo(obj) // copy widget control properties to proxyObj
109+
set dataSource = $piece(Widget.dataSource, ".", *) // get dataSource type
110+
111+
112+
if (dataSource '= "kpi"){
113+
if ($FIND(obj.targetProperty, "[")){
114+
set tMeasure = $TRANSLATE(obj.targetProperty, "[]", "")
115+
116+
set st = ##class(%DeepSee.Utils).%GetDimensionInfo(CubeName,tMeasure,.pDimNo,.pHierNo,.pLevelNo) // get positional info about dimension
117+
118+
Set tMbrInfo = $G($$$DeepSeeMetaGLVN("cubes",$$$UPPER(CubeName),"mbr#",pDimNo,pHierNo,pLevelNo))
119+
set DataType = $LG(tMbrInfo,6) // get data type
120+
}else{
121+
122+
set DataType = ""
123+
}
124+
}else{
125+
126+
set DataType = ""
127+
}
128+
129+
return st
130+
}
131+
99132
/// Converts relevant parts of %DeepSee.Dashboard.Widget object into %ZEN.proxyObject.
100133
ClassMethod WidgetToProxyObject(Widget As %DeepSee.Dashboard.Widget, CubeName As %String) As %ZEN.proxyObject [ Internal ]
101134
{
@@ -253,6 +286,9 @@ ClassMethod WidgetControlToProxyObject(Widget As %DeepSee.Dashboard.Widget, Numb
253286
set obj.label = ##class(%DeepSee.UserPortal.Utils).%ResolveText(obj.label)
254287
set obj.source = Widget.name
255288

289+
set filterDataType = ..GetCubeMeasuresDataType(Widget,Number,CubeName,.fDataType)
290+
set obj.targetPropertyDataType = fDataType
291+
256292
set:(obj.target="") obj.target = Widget.name
257293

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

0 commit comments

Comments
 (0)