@@ -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
542544ClassMethod 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