Skip to content

Commit 20cdbe0

Browse files
authored
Merge pull request #114 from Frisle/master
ADD: new method DeleteWidget, new endpoint, dataSource check
2 parents 694b312 + 73ccdfc commit 20cdbe0

3 files changed

Lines changed: 83 additions & 16 deletions

File tree

MDX2JSON/Dashboard.cls

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -106,7 +106,7 @@ ClassMethod GetCubeMeasuresDataType(Widget, Number, CubeName, Output DataType As
106106
set st = $$$OK
107107
set dataSource = $piece(Widget.dataSource, ".", *) // get dataSource type
108108

109-
if (dataSource '= "kpi"){
109+
if ((dataSource '= "kpi") && (dataSource '= "")){
110110
if ($FIND(Widget.controls.GetAt(Number).targetProperty, "[") && $FIND(Widget.controls.GetAt(Number).targetProperty, ".")){
111111
set tMeasure = $TRANSLATE(Widget.controls.GetAt(Number).targetProperty, "[]", "")
112112

MDX2JSON/REST.cls

Lines changed: 9 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -63,6 +63,7 @@ XData UrlMap
6363

6464
<!-- Send dashboard JSON -->
6565
<Route Url="/saveWidget" Method="POST" Call="saveWidget"/>
66+
<Route Url="/deleteWidget" Method="POST" Call="deleteWidget"/>
6667

6768
<!-- Get info about system format and locale-->
6869
<Route Url="/Format" Method="GET" Call="GetFormat"/>
@@ -136,6 +137,14 @@ ClassMethod Test() As %Status
136137
return $$$OK
137138
}
138139

140+
ClassMethod deleteWidget() As %Status
141+
{
142+
set name = $$$R("key")
143+
set dashboardData = $$$R("Dashboard")
144+
145+
return ##class(MDX2JSON.Utils).DeleteWidget(name,dashboardData)
146+
}
147+
139148
ClassMethod saveWidget() As %Status
140149
{
141150
set key = $$$R("key")

MDX2JSON/Utils.cls

Lines changed: 73 additions & 15 deletions
Original file line numberDiff line numberDiff line change
@@ -538,7 +538,9 @@ ClassMethod CreateAddonClass(Class As %Dictionary.CacheClassname) As %Status
538538
quit classObj.%Save()
539539
}
540540

541-
/// Add new widgets and edit existing ones.
541+
/// Add new widgets and edit existing ones directly from DeepSeeWeb
542+
/// it takes widget name(key) as unique identifier as string, dashboard name as string
543+
/// and object with parameters as zen.proxyObject
542544
ClassMethod AddWidget(sWidget As %String, sDashboard As %String, key As %String) As %Status
543545
{
544546
set st = $$$OK
@@ -569,7 +571,7 @@ ClassMethod AddWidget(sWidget As %String, sDashboard As %String, key As %String)
569571
}
570572

571573
set tWidgets = ##class(%DeepSee.Dashboard.Widget).%New()
572-
do ..UpdateWidget(tWidgets, sWidget)
574+
set st = ..UpdateWidget(tWidgets, sWidget)
573575

574576
$$$Insert(tDash.widgets, tWidgets)
575577
do tDash.%Save()
@@ -593,21 +595,86 @@ ClassMethod AddWidget(sWidget As %String, sDashboard As %String, key As %String)
593595
}
594596
}
595597
if (changed '= "") {
596-
do ..UpdateWidget(changed, sWidget)
598+
set st = ..UpdateWidget(changed, sWidget)
597599
do tDash.%Save()
598600
}
599601
}
600602

601603
return st
602604
}
603605

606+
/// This method remove widget from dashboard directly from DeepSeeWeb
607+
/// it takes widget name as unique identifier and dashboard name
608+
ClassMethod DeleteWidget(wName As %String, sDashboard As %String) As %Status
609+
{
610+
set st = $$$OK
611+
612+
set dExist=##class(%DeepSee.Dashboard.Utils).%DashboardExists(sDashboard)
613+
614+
// Check if dashboard exists
615+
If (dExist '= 1)
616+
{
617+
Quit $$$ERROR($$$GeneralError,"Dashboard " _ sDashboard _ " does not exists")
618+
}
619+
Set tDash=##class(%DeepSee.Dashboard.Utils).%OpenDashboard(sDashboard, .st)
620+
621+
// Check if widget with name is exists
622+
set isExists = 0
623+
for i=1:1:tDash.widgets.Count()
624+
{
625+
if (tDash.widgets.GetAt(i).name = wName)
626+
{
627+
set isExists = 1
628+
}
629+
}
630+
631+
if (isExists = 1)
632+
{
633+
for i=1:1:tDash.widgets.Count()
634+
{
635+
if (tDash.widgets.GetAt(i).name = wName)
636+
{
637+
do tDash.widgets.RemoveAt(i)
638+
do tDash.%Save()
639+
}
640+
}
641+
}else
642+
{
643+
quit $$$ERROR($$$GeneralError,"Widget " _ wName _ " is not exists")
644+
645+
}
646+
647+
return st
648+
}
649+
650+
604651
/// the collection of necessary parameters for building widget
605-
ClassMethod UpdateWidget(widgetToUpdate As %DeepSee.Dashboard.Widget, data As %ZEN.proxyObject)
652+
ClassMethod UpdateWidget(widgetToUpdate As %DeepSee.Dashboard.Widget, data As %ZEN.proxyObject) As %Status
606653
{
654+
set st = $$$OK
655+
607656
set widgetToUpdate.name = data.name
608657
set widgetToUpdate.title = data.title
609-
set widgetToUpdate.dataSource = data.dataSource
658+
if (data.dataSource = "")
659+
{
660+
quit $$$ERROR($$$GeneralError,"Parameter DataSource is not set")
661+
}else
662+
{
663+
set widgetToUpdate.dataSource = data.dataSource
664+
}
665+
610666
set widgetToUpdate.dataLink = data.dataLink
667+
668+
if (data.type = "pivot")
669+
{
670+
set widgetToUpdate.type = "pivot"
671+
set widgetToUpdate.subtype = "pivot"
672+
}
673+
elseif (data.type '= "pivot")
674+
{
675+
set widgetToUpdate.type = "pivot"
676+
set widgetToUpdate.subtype = data.type
677+
}
611678

612679
if (data.displayInfo '= "") {
613680
set widgetToUpdate.top = data.displayInfo.top
@@ -620,16 +687,7 @@ ClassMethod UpdateWidget(widgetToUpdate As %DeepSee.Dashboard.Widget, data As %Z
620687
set widgetToUpdate.rowSpanL = data.displayInfo.rowHeight
621688
}
622689

623-
if (data.type = "pivot")
624-
{
625-
set widgetToUpdate.type = "pivot"
626-
set widgetToUpdate.subtype = "pivot"
627-
}
628-
elseif (data.type '= "pivot")
629-
{
630-
set widgetToUpdate.type = "pivot"
631-
set widgetToUpdate.subtype = data.type
632-
}
690+
return st
633691
}
634692

635693
}

0 commit comments

Comments
 (0)