OREDITOR3 ; SLC/AGP - Dynamic Editor Plugin code ;Apr 03, 2025@07:20:01
;;3.0;ORDER ENTRY/RESULTS REPORTING;**508**;Dec 17, 1997;Build 39
;
;
Q
;
EDITOR(INPUTS) ;
I INPUTS("callFrom")="editorSave" Q $$SAVE(.INPUTS)
I INPUTS("callFrom")="editorBuilder" Q $$BLD(.INPUTS)
Q "0^Call from entry point not found."
;
BLD(INPUTS) ;
N CNT,CACHESUB,DSCHEMA,DFN,HARRAY,IDX,IEN,ITEM,NAME,ONEOF,PIDX,SCHEMA,SUB,TSCHEMA,UISCHEMA,USER
D PASSINVALUES^OREDITOR1(.INPUTS,.DSCHEMA,.DFN,.PIDX,.SCHEMA,.SUB,.UISCHEMA,.USER,.CACHESUB)
;set One Of Selection data by field
S NAME="",CNT=0 F S NAME=$O(^ORI(101.73,"TYPENAME","P",NAME)) Q:NAME="" D
.S IEN=+$O(^ORI(101.73,"TYPENAME","P",NAME,"")) Q:IEN=0
.S CNT=CNT+1,ONEOF("editorType",CNT,"const")=IEN,ONEOF("editorType",CNT,"title")=NAME
D GETPLUGINS^ORDD71(.ONEOF,"plugin")
D GETLONGLIST^ORDD71(.ONEOF,"longList")
D GETSCHEMAS^ORDD71(.ONEOF,"schema","JSON FORM SCHEMA")
D GETSCHEMAS^ORDD71(.ONEOF,"uiSchema","JSON FORM UI SCHEMA")
; build editor objects
S NAME="",CNT=0 F S NAME=$O(^ORE(101.74,"B",NAME)) Q:NAME="" D
.S IDX=0 F S IDX=$O(^ORE(101.74,"B",NAME,IDX)) Q:IDX'>0 D
..K ITEM D GETITEM(.ITEM,IDX,.HARRAY)
..M TSCHEMA("editors",$I(CNT))=ITEM
;merge values into final array
M SCHEMA("properties","editors","items","properties","plugin","oneOf")=ONEOF("plugin")
M SCHEMA("properties","editors","items","properties","delphi","properties","layout","items","properties","editorType","oneOf")=ONEOF("editorType")
M SCHEMA("properties","editors","items","properties","delphi","properties","layout","items","properties","listControl","properties","longList","oneOf")=ONEOF("longList")
M SCHEMA("properties","editors","items","properties","html","properties","schema","oneOf")=ONEOF("schema")
M SCHEMA("properties","editors","items","properties","html","properties","uiSchema","oneOf")=ONEOF("uiSchema")
D SETHASHTOTAL^OREDITOR1(.DSCHEMA,.HARRAY,.TSCHEMA)
M DSCHEMA=TSCHEMA
D SETFINALTMP^OREDITOR1(SUB,.SCHEMA,.UISCHEMA,.DSCHEMA)
Q 1
;
DELETE(IARRAY) ;
N DA,DIK,Y
S DIK="^ORE(101.74,"
S DA=0 F S DA=$O(^ORE(101.74,DA)) Q:DA'>0 D
.I '$D(IARRAY(DA_",")) D ^DIK
Q
;
DIFFCONTROL(OBJ,FDA,HARRAY,IARRAY,IDX) ;
N DA,IENS
S DA(1)=IDX,DA=OBJ("id"),IENS=$$IENS^DILF(.DA),IARRAY(IENS)=""
I HARRAY(IENS)=$$GENAREF^XLFSHAN(160,"OBJ",1) Q
D FDACONTROL(.OBJ,.FDA,IENS)
Q
;
DIFFEDITOR(OBJ,FDA,HARRAY,IARRAY,TMPSUB) ;
N DA,IENS,TOBJ
S DA=OBJ("id"),IENS=$$IENS^DILF(.DA),IARRAY(IENS)=""
M TOBJ=OBJ K TOBJ("delphi","layout")
I HARRAY(IENS)=$$GENAREF^XLFSHAN(160,"TOBJ",1) Q
D FDAEDITOR(.OBJ,.FDA,IENS,.TMPSUB)
Q
;
FDAEDITOR(OBJ,FDA,IENS,TMPSUB) ;
N TEXT,TMP,TSUB
S FDA(101.74,IENS,.01)=OBJ("name"),FDA(101.74,IENS,1)=OBJ("displayName")
I $G(OBJ("inactive"))'="" S FDA(101.74,IENS,2)=$S(OBJ("inactive")="true":1,1:0)
I $G(OBJ("refreshPanels"))'="" S FDA(101.74,IENS,43)=$S(OBJ("refreshPanels")="true":1,1:0)
I $G(OBJ("description"))'="" D
.K TEXT,TMP M TMP=OBJ("description") D PARSETEXT^OREDITOR1(.TEXT,TMP) S TSUB="OREDITOR1 DESCRIPTION "_IENS
.M ^TMP(TSUB,$J)=TEXT S TMPSUB(TSUB)=""
.S FDA(101.74,IENS,20)=$NA(^TMP(TSUB,$J))
I +$G(OBJ("plugin"))>0 S FDA(101.74,IENS,40)=OBJ("plugin")
I +$G(OBJ("document"))>0 S FDA(101.74,IENS,42)=OBJ("document")
I $G(OBJ("siteSetNote"))'="" S FDA(101.74,IENS,43)=$S(OBJ("siteSetNote")="true":1,1:0)
;
I OBJ("recordType")="H" D
.;I +$G(OBJ("html","schema"))=0 S RESULT=-1_U_OBJ("schema")_" schema entry missing." Q
.;I +$G(OBJ("html","uiSchema"))=0 S RESULT=-1_U_OBJ("uiSchema")_" schema entry missing." Q
.S FDA(101.74,IENS,50)=OBJ("html","schema"),FDA(101.74,IENS,51)=OBJ("html","uiSchema")
;
I OBJ("recordType")="D" D
.;I +$G(OBJ("delphi","numCol"))=0 S RESULT=-1_U_OBJ("name")_" number of columns not defined" Q
.;I +$G(OBJ("delphi","numRow"))=0 S RESULT=-1_U_OBJ("name")_" number of rows not defined" Q
.S FDA(101.74,IENS,3)=OBJ("delphi","numCol"),FDA(101.74,IENS,4)=OBJ("delphi","numRow")
.I $G(OBJ("delphi","hideButton"))'="" S FDA(101.74,IENS,5)=$S(OBJ("delphi","hideButton")="true":1,1:0)
.I $G(OBJ("delphi","cancelText"))'="" S FDA(101.74,IENS,7)=OBJ("delphi","cancelText")
.I $G(OBJ("delphi","cancelText"))'="" S FDA(101.74,IENS,7)=OBJ("delphi","saveText")
Q
;
FDACONTROL(OBJ,FDA,IENS) ;
S FDA(101.743,IENS,.01)=OBJ("name"),FDA(101.743,IENS,1)=OBJ("editorType")
S FDA(101.743,IENS,11)=OBJ("column"),FDA(101.743,IENS,13)=OBJ("columnSpan")
S FDA(101.743,IENS,12)=OBJ("row"),FDA(101.743,IENS,14)=OBJ("rowSpan")
I $G(OBJ("label"))'="" S FDA(101.743,IENS,10)=OBJ("label")
I $G(OBJ("disabled"))'="" S FDA(101.743,IENS,2)=OBJ("disabled")
I $G(OBJ("required"))'="" S FDA(101.743,IENS,15)=OBJ("required")
I $G(OBJ("setDefaultValue"))'="" S FDA(101.743,IENS,16)=OBJ("setDefaultValue")
I $G(OBJ("listControl","setDefaultValue"))'="" S FDA(101.743,IENS,30)=OBJ("listControl","setDefaultValue")
I $G(OBJ("listControl","possibleValues"))'="" S FDA(101.743,IENS,31)=OBJ("listControl","possibleValues")
I +$G(OBJ("listControl","longList"))>0 S FDA(101.743,IENS,32)=OBJ("listControl","longList")
I $G(OBJ("listControl","longListParameter"))'="" S FDA(101.743,IENS,33)=OBJ("listControl","longListParameter")
Q
;
GETITEM(ITEM,IDX,HARRAY) ;
N DITEM,ISCOMBO,NODE,TIDX,TIENS,X0
S ITEM("id")=IDX
S X0=$G(^ORE(101.74,IDX,0))
S ITEM("name")=$P(X0,U),ITEM("displayName")=$P(X0,U,2)
S ITEM("inactive")=$S($P(X0,U,3)=1:"true",1:"false"),ITEM("refreshPanels")=$S($P(X0,U,9)=1:"true",1:"false")
S NODE=$G(^ORE(101.74,IDX,40))
S ITEM("siteSetNote")=$S($P(NODE,U,4)>0:"true",1:"false") S:+$P(NODE,U)>0 ITEM("plugin")=$P(NODE,U) S:+$P(NODE,U,3)>0 ITEM("document")=$P(NODE,U,3)
;description
S NODE="",TIDX=0 F S TIDX=$O(^ORE(101.74,IDX,20,TIDX)) Q:TIDX'>0 D
.S NODE=NODE_$G(^ORE(101.74,IDX,20,TIDX,0))_$C(13)_$C(10)
I NODE'="" S ITEM("description")=NODE
;HTML dialog
S NODE=$G(^ORE(101.74,IDX,50))
I +$P(NODE,U)>0,+$P(NODE,U,2)>0 D Q
.S ITEM("recordType")="H",ITEM("html","schema")=$P(NODE,U),ITEM("html","uiSchema")=$P(NODE,U,2)
.D SETHASH^OREDITOR1(.HARRAY,IDX_",",.ITEM)
;delphi dialog
S ITEM("recordType")="D"
S:$P(X0,U,4)>0 ITEM("delphi","numCol")=$P(X0,U,4) S:$P(X0,U,5)>0 ITEM("delphi","numRow")=$P(X0,U,5)
S ITEM("delphi","hideButton")=$S($P(X0,U,6)=1:"true",1:"false")
S:$P(X0,U,7)>0 ITEM("delphi","saveText")=$P(X0,U,7) S:$P(X0,U,8)>0 ITEM("delphi","cancelText")=$P(X0,U,8)
D SETHASH^OREDITOR1(.HARRAY,IDX_",",.ITEM)
;
S TIDX=0 F S TIDX=$O(^ORE(101.74,IDX,30,TIDX)) Q:TIDX'>0 D
.S NODE=$G(^ORE(101.74,IDX,30,TIDX,0)),ISCOMBO=0
.S DITEM("id")=TIDX
.I $P(NODE,U)'="" S DITEM("name")=$P(NODE,U)
.I $P(NODE,U,2)'="" S DITEM("editorType")=$P(NODE,U,2) S ISCOMBO=$$ISLISTCOMP^ORDD71($P(NODE,U,2))
.S DITEM("disabled")=$S($P(NODE,U,3)'="":$P(NODE,U,3),1:"false")
.S NODE=$G(^ORE(101.74,IDX,30,TIDX,10))
.I $P(NODE,U)'="" S DITEM("label")=$P(NODE,U)
.I $P(NODE,U,2)>0 S DITEM("column")=$P(NODE,U,2)
.I $P(NODE,U,3)>0 S DITEM("row")=$P(NODE,U,3)
.I $P(NODE,U,4)>0 S DITEM("columnSpan")=$P(NODE,U,4)
.I $P(NODE,U,5)>0 S DITEM("rowSpan")=$P(NODE,U,5)
.S DITEM("required")=$S($P(NODE,U,6)'="":$P(NODE,U,6),1:"false")
.S DITEM("setDefaultValue")=$S($P(NODE,U,7)'="":$P(NODE,U,7),1:"false")
.I 'ISCOMBO D SETHASH^OREDITOR1(.HARRAY,TIDX_","_IDX_",",.DITEM) M ITEM("delphi","layout",TIDX)=DITEM Q
.S NODE=$G(^ORE(101.74,IDX,30,TIDX,30))
.S DITEM("listControl","needSort")=$S($P(NODE,U)'="":$P(NODE,U),1:"false")
.S DITEM("listControl","possibleValues")=$S($P(NODE,U,2)'="":$P(NODE,U,2),1:"false")
.I $P(NODE,U,3)>0 S DITEM("listControl","longList")=$P(NODE,U,3)
.S NODE=$G(^ORE(101.74,IDX,30,TIDX,40))
.I $P(NODE,U)'="" S DITEM("listControl","longListParameter")=$P(NODE,U)
.D SETHASH^OREDITOR1(.HARRAY,TIDX_","_IDX_",",.DITEM)
.M ITEM("delphi","layout",TIDX)=DITEM
Q
;
SAVE(INPUTS) ;
N DATA,ERROR,FDA,HARRAY,IARRAY,IDX,LIDX,LOBJ,OBJ,RESULT,SHARRAY,TMPSUB
M DATA=INPUTS("data")
M HARRAY=DATA("hashValues") K DATA("hashValues")
I HARRAY("totalHash")=$$GENAREF^XLFSHAN(512,"DATA",1) Q 1
D SETHASHARRAY^OREDITOR1(.HARRAY,.SHARRAY)
S RESULT=1
S IDX=0
F S IDX=$O(DATA("editors",IDX)) Q:IDX'>0 D
.K OBJ M OBJ=DATA("editors",IDX)
.I $G(OBJ("name"))="" S RESULT=-1_U_"Name not found" Q
.I $G(OBJ("displayName"))="" S RESULT=-1_U_"Display Name not found" Q
.I +$G(OBJ("id"))>0 D DIFFEDITOR(.OBJ,.FDA,.SHARRAY,.IARRAY,.TMPSUB)
.I +$G(OBJ("id"))=0 D SETNEWEDITOR(.OBJ,.FDA,.IARRAY,.TMPSUB)
.I '$D(OBJ("delphi","layout")) Q
.S LIDX=0 F S LIDX=$O(OBJ("delphi","layout",LIDX)) Q:LIDX'>0 D
..K LOBJ M LOBJ=OBJ("delphi","layout",LIDX)
..I +$G(LOBJ("id"))<1 D SETNEWCONTROL(.LOBJ,.FDA,.IARRAY,OBJ("id")) Q
..D DIFFCONTROL(.LOBJ,.FDA,.SHARRAY,.IARRAY,OBJ("id"))
I $D(FDA) D FILE^DIE("","FDA","ERROR")
I $D(ERROR) S RESULT=-1_U_"Error saving editor record "_OBJ("name")
D DELETE(.IARRAY)
Q RESULT
;
SETNEWCONTROL(OBJ,FDA,IARRAY,IDX) ;
N DA,DIC,IENS,ORIMGR,X,Y
S DA(1)=IDX
S DIC(0)="F"
S X=$G(OBJ("name"))
S ORIMGR=1
S DIC="^ORE(101.74,"_DA(1)_",30,"
D FILE^DICN
I +Y=0 Q
S OBJ("id")=+Y
S DA(1)=IDX,DA=OBJ("id"),IENS=$$IENS^DILF(.DA)
D FDACONTROL(.OBJ,.FDA,IENS)
S IARRAY(IENS)=""
Q
;
SETNEWEDITOR(OBJ,FDA,IARRAY,TMPSUB) ;
N DA,DIC,IENS,ORIMGR,Y,X
S X=$O(OBJ("name"))
S DIC(0)="F"
S ORIMGR=1
S DIC="^ORE(101.74,"
D FILE^DICN
I +Y=0 Q
S OBJ("id")=+Y,DA=OBJ("id"),IENS=$$IENS^DILF(.DA)
D FDAEDITOR(.OBJ,.FDA,IENS,.TMPSUB)
S IARRAY(IENS)=""
Q
;
--- Routine Detail --- with STRUCTURED ROUTINE LISTING ---[H[J[2J[HOREDITOR3 9548 printed May 25, 2026@12:34:28 Page 2
OREDITOR3 ; SLC/AGP - Dynamic Editor Plugin code ;Apr 03, 2025@07:20:01
+1 ;;3.0;ORDER ENTRY/RESULTS REPORTING;**508**;Dec 17, 1997;Build 39
+2 ;
+3 ;
+4 QUIT
+5 ;
EDITOR(INPUTS) ;
+1 IF INPUTS("callFrom")="editorSave"
QUIT $$SAVE(.INPUTS)
+2 IF INPUTS("callFrom")="editorBuilder"
QUIT $$BLD(.INPUTS)
+3 QUIT "0^Call from entry point not found."
+4 ;
BLD(INPUTS) ;
+1 NEW CNT,CACHESUB,DSCHEMA,DFN,HARRAY,IDX,IEN,ITEM,NAME,ONEOF,PIDX,SCHEMA,SUB,TSCHEMA,UISCHEMA,USER
+2 DO PASSINVALUES^OREDITOR1(.INPUTS,.DSCHEMA,.DFN,.PIDX,.SCHEMA,.SUB,.UISCHEMA,.USER,.CACHESUB)
+3 ;set One Of Selection data by field
+4 SET NAME=""
SET CNT=0
FOR
SET NAME=$ORDER(^ORI(101.73,"TYPENAME","P",NAME))
if NAME=""
QUIT
Begin DoDot:1
+5 SET IEN=+$ORDER(^ORI(101.73,"TYPENAME","P",NAME,""))
if IEN=0
QUIT
+6 SET CNT=CNT+1
SET ONEOF("editorType",CNT,"const")=IEN
SET ONEOF("editorType",CNT,"title")=NAME
End DoDot:1
+7 DO GETPLUGINS^ORDD71(.ONEOF,"plugin")
+8 DO GETLONGLIST^ORDD71(.ONEOF,"longList")
+9 DO GETSCHEMAS^ORDD71(.ONEOF,"schema","JSON FORM SCHEMA")
+10 DO GETSCHEMAS^ORDD71(.ONEOF,"uiSchema","JSON FORM UI SCHEMA")
+11 ; build editor objects
+12 SET NAME=""
SET CNT=0
FOR
SET NAME=$ORDER(^ORE(101.74,"B",NAME))
if NAME=""
QUIT
Begin DoDot:1
+13 SET IDX=0
FOR
SET IDX=$ORDER(^ORE(101.74,"B",NAME,IDX))
if IDX'>0
QUIT
Begin DoDot:2
+14 KILL ITEM
DO GETITEM(.ITEM,IDX,.HARRAY)
+15
*** ERROR ***
MERGE TSCHEMA("editors",$I(CNT))=ITEM
End DoDot:2
End DoDot:1
+16 ;merge values into final array
+17 MERGE SCHEMA("properties","editors","items","properties","plugin","oneOf")=ONEOF("plugin")
+18 MERGE SCHEMA("properties","editors","items","properties","delphi","properties","layout","items","properties","editorType","oneOf")=ONEOF("editorType")
+19 MERGE SCHEMA("properties","editors","items","properties","delphi","properties","layout","items","properties","listControl","properties","longList","oneOf")=ONEOF("longList")
+20 MERGE SCHEMA("properties","editors","items","properties","html","properties","schema","oneOf")=ONEOF("schema")
+21 MERGE SCHEMA("properties","editors","items","properties","html","properties","uiSchema","oneOf")=ONEOF("uiSchema")
+22 DO SETHASHTOTAL^OREDITOR1(.DSCHEMA,.HARRAY,.TSCHEMA)
+23 MERGE DSCHEMA=TSCHEMA
+24 DO SETFINALTMP^OREDITOR1(SUB,.SCHEMA,.UISCHEMA,.DSCHEMA)
+25 QUIT 1
+26 ;
DELETE(IARRAY) ;
+1 NEW DA,DIK,Y
+2 SET DIK="^ORE(101.74,"
+3 SET DA=0
FOR
SET DA=$ORDER(^ORE(101.74,DA))
if DA'>0
QUIT
Begin DoDot:1
+4 IF '$DATA(IARRAY(DA_","))
DO ^DIK
End DoDot:1
+5 QUIT
+6 ;
DIFFCONTROL(OBJ,FDA,HARRAY,IARRAY,IDX) ;
+1 NEW DA,IENS
+2 SET DA(1)=IDX
SET DA=OBJ("id")
SET IENS=$$IENS^DILF(.DA)
SET IARRAY(IENS)=""
+3 IF HARRAY(IENS)=$$GENAREF^XLFSHAN(160,"OBJ",1)
QUIT
+4 DO FDACONTROL(.OBJ,.FDA,IENS)
+5 QUIT
+6 ;
DIFFEDITOR(OBJ,FDA,HARRAY,IARRAY,TMPSUB) ;
+1 NEW DA,IENS,TOBJ
+2 SET DA=OBJ("id")
SET IENS=$$IENS^DILF(.DA)
SET IARRAY(IENS)=""
+3 MERGE TOBJ=OBJ
KILL TOBJ("delphi","layout")
+4 IF HARRAY(IENS)=$$GENAREF^XLFSHAN(160,"TOBJ",1)
QUIT
+5 DO FDAEDITOR(.OBJ,.FDA,IENS,.TMPSUB)
+6 QUIT
+7 ;
FDAEDITOR(OBJ,FDA,IENS,TMPSUB) ;
+1 NEW TEXT,TMP,TSUB
+2 SET FDA(101.74,IENS,.01)=OBJ("name")
SET FDA(101.74,IENS,1)=OBJ("displayName")
+3 IF $GET(OBJ("inactive"))'=""
SET FDA(101.74,IENS,2)=$SELECT(OBJ("inactive")="true":1,1:0)
+4 IF $GET(OBJ("refreshPanels"))'=""
SET FDA(101.74,IENS,43)=$SELECT(OBJ("refreshPanels")="true":1,1:0)
+5 IF $GET(OBJ("description"))'=""
Begin DoDot:1
+6 KILL TEXT,TMP
MERGE TMP=OBJ("description")
DO PARSETEXT^OREDITOR1(.TEXT,TMP)
SET TSUB="OREDITOR1 DESCRIPTION "_IENS
+7 MERGE ^TMP(TSUB,$JOB)=TEXT
SET TMPSUB(TSUB)=""
+8 SET FDA(101.74,IENS,20)=$NAME(^TMP(TSUB,$JOB))
End DoDot:1
+9 IF +$GET(OBJ("plugin"))>0
SET FDA(101.74,IENS,40)=OBJ("plugin")
+10 IF +$GET(OBJ("document"))>0
SET FDA(101.74,IENS,42)=OBJ("document")
+11 IF $GET(OBJ("siteSetNote"))'=""
SET FDA(101.74,IENS,43)=$SELECT(OBJ("siteSetNote")="true":1,1:0)
+12 ;
+13 IF OBJ("recordType")="H"
Begin DoDot:1
+14 ;I +$G(OBJ("html","schema"))=0 S RESULT=-1_U_OBJ("schema")_" schema entry missing." Q
+15 ;I +$G(OBJ("html","uiSchema"))=0 S RESULT=-1_U_OBJ("uiSchema")_" schema entry missing." Q
+16 SET FDA(101.74,IENS,50)=OBJ("html","schema")
SET FDA(101.74,IENS,51)=OBJ("html","uiSchema")
End DoDot:1
+17 ;
+18 IF OBJ("recordType")="D"
Begin DoDot:1
+19 ;I +$G(OBJ("delphi","numCol"))=0 S RESULT=-1_U_OBJ("name")_" number of columns not defined" Q
+20 ;I +$G(OBJ("delphi","numRow"))=0 S RESULT=-1_U_OBJ("name")_" number of rows not defined" Q
+21 SET FDA(101.74,IENS,3)=OBJ("delphi","numCol")
SET FDA(101.74,IENS,4)=OBJ("delphi","numRow")
+22 IF $GET(OBJ("delphi","hideButton"))'=""
SET FDA(101.74,IENS,5)=$SELECT(OBJ("delphi","hideButton")="true":1,1:0)
+23 IF $GET(OBJ("delphi","cancelText"))'=""
SET FDA(101.74,IENS,7)=OBJ("delphi","cancelText")
+24 IF $GET(OBJ("delphi","cancelText"))'=""
SET FDA(101.74,IENS,7)=OBJ("delphi","saveText")
End DoDot:1
+25 QUIT
+26 ;
FDACONTROL(OBJ,FDA,IENS) ;
+1 SET FDA(101.743,IENS,.01)=OBJ("name")
SET FDA(101.743,IENS,1)=OBJ("editorType")
+2 SET FDA(101.743,IENS,11)=OBJ("column")
SET FDA(101.743,IENS,13)=OBJ("columnSpan")
+3 SET FDA(101.743,IENS,12)=OBJ("row")
SET FDA(101.743,IENS,14)=OBJ("rowSpan")
+4 IF $GET(OBJ("label"))'=""
SET FDA(101.743,IENS,10)=OBJ("label")
+5 IF $GET(OBJ("disabled"))'=""
SET FDA(101.743,IENS,2)=OBJ("disabled")
+6 IF $GET(OBJ("required"))'=""
SET FDA(101.743,IENS,15)=OBJ("required")
+7 IF $GET(OBJ("setDefaultValue"))'=""
SET FDA(101.743,IENS,16)=OBJ("setDefaultValue")
+8 IF $GET(OBJ("listControl","setDefaultValue"))'=""
SET FDA(101.743,IENS,30)=OBJ("listControl","setDefaultValue")
+9 IF $GET(OBJ("listControl","possibleValues"))'=""
SET FDA(101.743,IENS,31)=OBJ("listControl","possibleValues")
+10 IF +$GET(OBJ("listControl","longList"))>0
SET FDA(101.743,IENS,32)=OBJ("listControl","longList")
+11 IF $GET(OBJ("listControl","longListParameter"))'=""
SET FDA(101.743,IENS,33)=OBJ("listControl","longListParameter")
+12 QUIT
+13 ;
GETITEM(ITEM,IDX,HARRAY) ;
+1 NEW DITEM,ISCOMBO,NODE,TIDX,TIENS,X0
+2 SET ITEM("id")=IDX
+3 SET X0=$GET(^ORE(101.74,IDX,0))
+4 SET ITEM("name")=$PIECE(X0,U)
SET ITEM("displayName")=$PIECE(X0,U,2)
+5 SET ITEM("inactive")=$SELECT($PIECE(X0,U,3)=1:"true",1:"false")
SET ITEM("refreshPanels")=$SELECT($PIECE(X0,U,9)=1:"true",1:"false")
+6 SET NODE=$GET(^ORE(101.74,IDX,40))
+7 SET ITEM("siteSetNote")=$SELECT($PIECE(NODE,U,4)>0:"true",1:"false")
if +$PIECE(NODE,U)>0
SET ITEM("plugin")=$PIECE(NODE,U)
if +$PIECE(NODE,U,3)>0
SET ITEM("document")=$PIECE(NODE,U,3)
+8 ;description
+9 SET NODE=""
SET TIDX=0
FOR
SET TIDX=$ORDER(^ORE(101.74,IDX,20,TIDX))
if TIDX'>0
QUIT
Begin DoDot:1
+10 SET NODE=NODE_$GET(^ORE(101.74,IDX,20,TIDX,0))_$CHAR(13)_$CHAR(10)
End DoDot:1
+11 IF NODE'=""
SET ITEM("description")=NODE
+12 ;HTML dialog
+13 SET NODE=$GET(^ORE(101.74,IDX,50))
+14 IF +$PIECE(NODE,U)>0
IF +$PIECE(NODE,U,2)>0
Begin DoDot:1
+15 SET ITEM("recordType")="H"
SET ITEM("html","schema")=$PIECE(NODE,U)
SET ITEM("html","uiSchema")=$PIECE(NODE,U,2)
+16 DO SETHASH^OREDITOR1(.HARRAY,IDX_",",.ITEM)
End DoDot:1
QUIT
+17 ;delphi dialog
+18 SET ITEM("recordType")="D"
+19 if $PIECE(X0,U,4)>0
SET ITEM("delphi","numCol")=$PIECE(X0,U,4)
if $PIECE(X0,U,5)>0
SET ITEM("delphi","numRow")=$PIECE(X0,U,5)
+20 SET ITEM("delphi","hideButton")=$SELECT($PIECE(X0,U,6)=1:"true",1:"false")
+21 if $PIECE(X0,U,7)>0
SET ITEM("delphi","saveText")=$PIECE(X0,U,7)
if $PIECE(X0,U,8)>0
SET ITEM("delphi","cancelText")=$PIECE(X0,U,8)
+22 DO SETHASH^OREDITOR1(.HARRAY,IDX_",",.ITEM)
+23 ;
+24 SET TIDX=0
FOR
SET TIDX=$ORDER(^ORE(101.74,IDX,30,TIDX))
if TIDX'>0
QUIT
Begin DoDot:1
+25 SET NODE=$GET(^ORE(101.74,IDX,30,TIDX,0))
SET ISCOMBO=0
+26 SET DITEM("id")=TIDX
+27 IF $PIECE(NODE,U)'=""
SET DITEM("name")=$PIECE(NODE,U)
+28 IF $PIECE(NODE,U,2)'=""
SET DITEM("editorType")=$PIECE(NODE,U,2)
SET ISCOMBO=$$ISLISTCOMP^ORDD71($PIECE(NODE,U,2))
+29 SET DITEM("disabled")=$SELECT($PIECE(NODE,U,3)'="":$PIECE(NODE,U,3),1:"false")
+30 SET NODE=$GET(^ORE(101.74,IDX,30,TIDX,10))
+31 IF $PIECE(NODE,U)'=""
SET DITEM("label")=$PIECE(NODE,U)
+32 IF $PIECE(NODE,U,2)>0
SET DITEM("column")=$PIECE(NODE,U,2)
+33 IF $PIECE(NODE,U,3)>0
SET DITEM("row")=$PIECE(NODE,U,3)
+34 IF $PIECE(NODE,U,4)>0
SET DITEM("columnSpan")=$PIECE(NODE,U,4)
+35 IF $PIECE(NODE,U,5)>0
SET DITEM("rowSpan")=$PIECE(NODE,U,5)
+36 SET DITEM("required")=$SELECT($PIECE(NODE,U,6)'="":$PIECE(NODE,U,6),1:"false")
+37 SET DITEM("setDefaultValue")=$SELECT($PIECE(NODE,U,7)'="":$PIECE(NODE,U,7),1:"false")
+38 IF 'ISCOMBO
DO SETHASH^OREDITOR1(.HARRAY,TIDX_","_IDX_",",.DITEM)
MERGE ITEM("delphi","layout",TIDX)=DITEM
QUIT
+39 SET NODE=$GET(^ORE(101.74,IDX,30,TIDX,30))
+40 SET DITEM("listControl","needSort")=$SELECT($PIECE(NODE,U)'="":$PIECE(NODE,U),1:"false")
+41 SET DITEM("listControl","possibleValues")=$SELECT($PIECE(NODE,U,2)'="":$PIECE(NODE,U,2),1:"false")
+42 IF $PIECE(NODE,U,3)>0
SET DITEM("listControl","longList")=$PIECE(NODE,U,3)
+43 SET NODE=$GET(^ORE(101.74,IDX,30,TIDX,40))
+44 IF $PIECE(NODE,U)'=""
SET DITEM("listControl","longListParameter")=$PIECE(NODE,U)
+45 DO SETHASH^OREDITOR1(.HARRAY,TIDX_","_IDX_",",.DITEM)
+46 MERGE ITEM("delphi","layout",TIDX)=DITEM
End DoDot:1
+47 QUIT
+48 ;
SAVE(INPUTS) ;
+1 NEW DATA,ERROR,FDA,HARRAY,IARRAY,IDX,LIDX,LOBJ,OBJ,RESULT,SHARRAY,TMPSUB
+2 MERGE DATA=INPUTS("data")
+3 MERGE HARRAY=DATA("hashValues")
KILL DATA("hashValues")
+4 IF HARRAY("totalHash")=$$GENAREF^XLFSHAN(512,"DATA",1)
QUIT 1
+5 DO SETHASHARRAY^OREDITOR1(.HARRAY,.SHARRAY)
+6 SET RESULT=1
+7 SET IDX=0
+8 FOR
SET IDX=$ORDER(DATA("editors",IDX))
if IDX'>0
QUIT
Begin DoDot:1
+9 KILL OBJ
MERGE OBJ=DATA("editors",IDX)
+10 IF $GET(OBJ("name"))=""
SET RESULT=-1_U_"Name not found"
QUIT
+11 IF $GET(OBJ("displayName"))=""
SET RESULT=-1_U_"Display Name not found"
QUIT
+12 IF +$GET(OBJ("id"))>0
DO DIFFEDITOR(.OBJ,.FDA,.SHARRAY,.IARRAY,.TMPSUB)
+13 IF +$GET(OBJ("id"))=0
DO SETNEWEDITOR(.OBJ,.FDA,.IARRAY,.TMPSUB)
+14 IF '$DATA(OBJ("delphi","layout"))
QUIT
+15 SET LIDX=0
FOR
SET LIDX=$ORDER(OBJ("delphi","layout",LIDX))
if LIDX'>0
QUIT
Begin DoDot:2
+16 KILL LOBJ
MERGE LOBJ=OBJ("delphi","layout",LIDX)
+17 IF +$GET(LOBJ("id"))<1
DO SETNEWCONTROL(.LOBJ,.FDA,.IARRAY,OBJ("id"))
QUIT
+18 DO DIFFCONTROL(.LOBJ,.FDA,.SHARRAY,.IARRAY,OBJ("id"))
End DoDot:2
End DoDot:1
+19 IF $DATA(FDA)
DO FILE^DIE("","FDA","ERROR")
+20 IF $DATA(ERROR)
SET RESULT=-1_U_"Error saving editor record "_OBJ("name")
+21 DO DELETE(.IARRAY)
+22 QUIT RESULT
+23 ;
SETNEWCONTROL(OBJ,FDA,IARRAY,IDX) ;
+1 NEW DA,DIC,IENS,ORIMGR,X,Y
+2 SET DA(1)=IDX
+3 SET DIC(0)="F"
+4 SET X=$GET(OBJ("name"))
+5 SET ORIMGR=1
+6 SET DIC="^ORE(101.74,"_DA(1)_",30,"
+7 DO FILE^DICN
+8 IF +Y=0
QUIT
+9 SET OBJ("id")=+Y
+10 SET DA(1)=IDX
SET DA=OBJ("id")
SET IENS=$$IENS^DILF(.DA)
+11 DO FDACONTROL(.OBJ,.FDA,IENS)
+12 SET IARRAY(IENS)=""
+13 QUIT
+14 ;
SETNEWEDITOR(OBJ,FDA,IARRAY,TMPSUB) ;
+1 NEW DA,DIC,IENS,ORIMGR,Y,X
+2 SET X=$ORDER(OBJ("name"))
+3 SET DIC(0)="F"
+4 SET ORIMGR=1
+5 SET DIC="^ORE(101.74,"
+6 DO FILE^DICN
+7 IF +Y=0
QUIT
+8 SET OBJ("id")=+Y
SET DA=OBJ("id")
SET IENS=$$IENS^DILF(.DA)
+9 DO FDAEDITOR(.OBJ,.FDA,IENS,.TMPSUB)
+10 SET IARRAY(IENS)=""
+11 QUIT
+12 ;