diff --git a/MAC/Navigator2/panels/Hardware/Station.pnl b/MAC/Navigator2/panels/Hardware/Station.pnl index 49a7c2b367c80824fb74ad4894f88d255517c080..86c6e900ed20d236efe341bba584ab5ccf14d049 100644 --- a/MAC/Navigator2/panels/Hardware/Station.pnl +++ b/MAC/Navigator2/panels/Hardware/Station.pnl @@ -237,7 +237,7 @@ void redraw(string mode) { expandFactorY=expandFactorX; } - LOG_DEBUG(\"Final expandfactors: \" + expandFactorX+\" \"+ expandFactorY); + LOG_DEBUG(\"Station.pnl:redraw|Final expandfactors: \" + expandFactorX+\" \"+ expandFactorY); // set the hardware selectable items // For this panel the Cabinet and the Antenna's in a choosen layout should be selectable diff --git a/MAC/Navigator2/panels/Processes/MainCU_Processes.pnl b/MAC/Navigator2/panels/Processes/MainCU_Processes.pnl index 9c2da31136bed9f47810cb885de809dd328e727d..381ac6d686e045011b7d852c94a91e92bf5bc074 100644 --- a/MAC/Navigator2/panels/Processes/MainCU_Processes.pnl +++ b/MAC/Navigator2/panels/Processes/MainCU_Processes.pnl @@ -40,6 +40,7 @@ void TriggerCallback(string dp1, bool aTrig) { dynAppend(processMatch,dynPatternMatch(\"KVLogger\",strHighlight)); dynAppend(processMatch,dynPatternMatch(\"LogProcessor\",strHighlight)); dynAppend(processMatch,dynPatternMatch(\"ServiceBroker\",strHighlight)); + dynAppend(processMatch,dynPatternMatch(\"SASGateway\",strHighlight)); dynAppend(processMatch,dynPatternMatch(\"MACScheduler\",strHighlight)); dynAppend(processMatch,dynPatternMatch(\"SoftwareMonitor\",strHighlight)); dynAppend(processMatch,dynPatternMatch(\"ObsCtrl\",strHighlight)); @@ -416,11 +417,11 @@ LANG:1 6 logMsg 0 1 207 21 "" 3 0 -1 208 21 "" 2 +1 208 21 "0" 1 0 -1 209 21 "" 6 +1 209 21 "" 2 0 -1 210 21 "0" 1 +1 210 21 "" 6 0 0 LAYER, 1 diff --git a/MAC/Navigator2/panels/Processes/Station_Processes.pnl b/MAC/Navigator2/panels/Processes/Station_Processes.pnl index d79eb74371215eda42faff77d8ebdde16116ee42..4c69551ffd5cd6632d17c60a833679464cc1fff0 100644 --- a/MAC/Navigator2/panels/Processes/Station_Processes.pnl +++ b/MAC/Navigator2/panels/Processes/Station_Processes.pnl @@ -53,6 +53,7 @@ void TriggerCallback(string dp1, bool aTrig) { dynAppend(processMatch,dynPatternMatch(\"BeamCtrl\",strHighlight)); dynAppend(processMatch,dynPatternMatch(\"CalCtrl\",strHighlight)); dynAppend(processMatch,dynPatternMatch(\"TBBCtrl\",strHighlight)); + dynAppend(processMatch,dynPatternMatch(\"MACInfoServer\",strHighlight)); LOG_DEBUG(\"Station_Processes.pnl:Trigger Callback|from strHighlight ObsMatch found: \"+obsMatch); @@ -400,55 +401,55 @@ LANG:1 6 logMsg 0 1 208 32 "" 6 0 -1 214 34 "" 4 +1 209 34 "" 4 0 -1 215 34 "" 3 +1 210 34 "" 3 0 -1 216 34 "" 2 +1 211 34 "0" 1 0 -1 217 34 "" 6 +1 212 34 "" 2 0 -1 218 34 "0" 1 +1 213 34 "" 6 0 -1 219 35 "" 4 +1 214 35 "" 4 0 -1 220 35 "" 3 +1 215 35 "" 3 0 -1 221 35 "" 2 +1 216 35 "0" 1 0 -1 222 35 "" 6 +1 217 35 "" 2 0 -1 223 35 "0" 1 +1 218 35 "" 6 0 -1 224 36 "" 4 +1 219 36 "" 4 0 -1 225 36 "" 3 +1 220 36 "" 3 0 -1 226 36 "" 2 +1 221 36 "0" 1 0 -1 227 36 "" 6 +1 222 36 "" 2 0 -1 228 36 "0" 1 +1 223 36 "" 6 0 -1 229 37 "" 4 +1 224 37 "" 4 0 -1 230 37 "" 3 +1 225 37 "" 3 0 -1 231 37 "" 2 +1 226 37 "0" 1 0 -1 232 37 "" 6 +1 227 37 "" 2 0 -1 233 37 "0" 1 +1 228 37 "" 6 0 -1 234 38 "" 4 +1 229 38 "" 4 0 -1 235 38 "" 3 +1 230 38 "" 3 0 -1 236 38 "" 2 +1 231 38 "0" 1 0 -1 237 38 "" 6 +1 232 38 "" 2 0 -1 238 38 "0" 1 +1 233 38 "" 6 0 0 LAYER, 1 diff --git a/MAC/Navigator2/panels/Test/Event_Viewer.pnl b/MAC/Navigator2/panels/Test/Event_Viewer.pnl index e592e66e22ae830c0d5abd067306dc13c1131445..de5f54a046f667933f9bbde153a722a322bac418 100644 --- a/MAC/Navigator2/panels/Test/Event_Viewer.pnl +++ b/MAC/Navigator2/panels/Test/Event_Viewer.pnl @@ -76,7 +76,7 @@ LANG:1 0 13 320 "PUSH_BUTTON10" "" -1 950 301 E E E 1 E 1 E N "_ButtonText" E N "_Button" E E +1 950 511 E E E 1 E 1 E N "_ButtonText" E N "_Button" E E E E 155 0 0 0 0 0 E E E @@ -88,7 +88,7 @@ LANG:1 0 1 LANG:1 96 -*-Arial Black-*-r-normal-*-11-*-100-100-*-*-iso8859-1|-11,0,0,0,505,0,0,0,0,0,0,0,0,Arial Black 0 "" - 948 299 1098 326 + 948 509 1098 536 T 1 @@ -650,7 +650,7 @@ LANG:1 18 Active Datapoint: 13 178 "PUSH_BUTTON1" "" -1 950 98 E E E 1 E 1 E N "_ButtonText" E N "_Button" E E +1 950 308 E E E 1 E 1 E N "_ButtonText" E N "_Button" E E E E 127 0 0 0 0 0 E E E @@ -662,7 +662,7 @@ LANG:1 0 1 LANG:1 96 -*-Arial Black-*-r-normal-*-11-*-100-100-*-*-iso8859-1|-11,0,0,0,505,0,0,0,0,0,0,0,0,Arial Black 0 "" - 948 96 1098 123 + 948 306 1098 333 T 1 @@ -675,7 +675,7 @@ LANG:1 19 show g_observations 13 179 "PUSH_BUTTON2" "" -1 17 447 E E E 1 E 1 E N "_ButtonText" E N "_Button" E E +1 17 657 E E E 1 E 1 E N "_ButtonText" E N "_Button" E E E E 129 0 0 0 0 0 E E E @@ -687,7 +687,7 @@ LANG:1 0 1 LANG:1 96 -*-Arial Black-*-r-normal-*-11-*-100-100-*-*-iso8859-1|-11,0,0,0,505,0,0,0,0,0,0,0,0,Arial Black 0 "" - 948 125 1098 152 + 948 335 1098 362 T 1 @@ -700,7 +700,7 @@ LANG:1 17 show strHighlight 13 180 "PUSH_BUTTON3" "" -1 950 156 E E E 1 E 1 E N "_ButtonText" E N "_Button" E E +1 950 366 E E E 1 E 1 E N "_ButtonText" E N "_Button" E E E E 131 0 0 0 0 0 E E E @@ -712,7 +712,7 @@ LANG:1 0 1 LANG:1 96 -*-Arial Black-*-r-normal-*-11-*-100-100-*-*-iso8859-1|-11,0,0,0,505,0,0,0,0,0,0,0,0,Arial Black 0 "" - 948 154 1098 181 + 948 364 1098 391 T 1 @@ -812,7 +812,7 @@ LANG:1 96 -*-Arial Black-*-r-normal-*-11-*-100-100-*-*-iso8859-1|-11,0,0,0,505,0 13 227 "PUSH_BUTTON5" "" -1 950 70 E E E 1 E 1 E N "_ButtonText" E N "_Button" E E +1 950 280 E E E 1 E 1 E N "_ButtonText" E N "_Button" E E E E 140 0 0 0 0 0 E E E @@ -824,7 +824,7 @@ LANG:1 0 1 LANG:1 101 -*-MS Shell Dlg-bold-r-normal-*-11-*-100-100-*-*-iso8859-1|-11,0,0,0,758,0,0,0,0,0,0,0,0,MS Shell Dlg 0 "" - 948 68 1098 94 + 948 278 1098 304 T 1 @@ -896,7 +896,7 @@ E sel = LOGLEVEL_FATAL; } - LOG_TRACE(\"navigator_viewSelection.pnl:Changed| changing loglevel to :\"+selected); + LOG_TRACE(\"Event_Viewer.pnl:Changed| changing loglevel to :\"+selected); setLoglevel(sel); }" 0 @@ -940,7 +940,7 @@ E E 1 3 1 2 1 E 940 10 940 740 13 316 "PUSH_BUTTON6" "" -1 950 185 E E E 1 E 1 E N "_ButtonText" E N "_Button" E E +1 950 395 E E E 1 E 1 E N "_ButtonText" E N "_Button" E E E E 147 0 0 0 0 0 E E E @@ -952,7 +952,7 @@ LANG:1 0 1 LANG:1 96 -*-Arial Black-*-r-normal-*-11-*-100-100-*-*-iso8859-1|-11,0,0,0,505,0,0,0,0,0,0,0,0,Arial Black 0 "" - 948 183 1098 210 + 948 393 1098 420 T 1 @@ -969,7 +969,7 @@ LANG:1 19 show g_stationList 13 317 "PUSH_BUTTON7" "" -1 950 214 E E E 1 E 1 E N "_ButtonText" E N "_Button" E E +1 950 424 E E E 1 E 1 E N "_ButtonText" E N "_Button" E E E E 149 0 0 0 0 0 E E E @@ -981,7 +981,7 @@ LANG:1 0 1 LANG:1 96 -*-Arial Black-*-r-normal-*-11-*-100-100-*-*-iso8859-1|-11,0,0,0,505,0,0,0,0,0,0,0,0,Arial Black 0 "" - 948 212 1098 239 + 948 422 1098 449 T 1 @@ -998,7 +998,7 @@ LANG:1 19 show g_cabinetList 13 318 "PUSH_BUTTON8" "" -1 950 243 E E E 1 E 1 E N "_ButtonText" E N "_Button" E E +1 950 453 E E E 1 E 1 E N "_ButtonText" E N "_Button" E E E E 151 0 0 0 0 0 E E E @@ -1010,7 +1010,7 @@ LANG:1 0 1 LANG:1 96 -*-Arial Black-*-r-normal-*-11-*-100-100-*-*-iso8859-1|-11,0,0,0,505,0,0,0,0,0,0,0,0,Arial Black 0 "" - 948 241 1098 268 + 948 451 1098 478 T 1 @@ -1027,7 +1027,7 @@ LANG:1 19 show g_subrackList 13 319 "PUSH_BUTTON9" "" -1 950 272 E E E 1 E 1 E N "_ButtonText" E N "_Button" E E +1 950 482 E E E 1 E 1 E N "_ButtonText" E N "_Button" E E E E 153 0 0 0 0 0 E E E @@ -1039,7 +1039,7 @@ LANG:1 0 1 LANG:1 96 -*-Arial Black-*-r-normal-*-11-*-100-100-*-*-iso8859-1|-11,0,0,0,505,0,0,0,0,0,0,0,0,Arial Black 0 "" - 948 270 1098 297 + 948 480 1098 507 T 1 @@ -1056,7 +1056,7 @@ LANG:1 15 show g_RSPList 13 321 "PUSH_BUTTON11" "" -1 950 330 E E E 1 E 1 E N "_ButtonText" E N "_Button" E E +1 950 540 E E E 1 E 1 E N "_ButtonText" E N "_Button" E E E E 157 0 0 0 0 0 E E E @@ -1068,7 +1068,7 @@ LANG:1 0 1 LANG:1 96 -*-Arial Black-*-r-normal-*-11-*-100-100-*-*-iso8859-1|-11,0,0,0,505,0,0,0,0,0,0,0,0,Arial Black 0 "" - 948 328 1098 355 + 948 538 1098 565 T 1 @@ -1085,7 +1085,7 @@ LANG:1 15 show g_RCUList 13 364 "PUSH_BUTTON12" "" -1 950 360 E E E 1 E 1 E N "_ButtonText" E N "_Button" E E +1 950 570 E E E 1 E 1 E N "_ButtonText" E N "_Button" E E E E 159 0 0 0 0 0 E E E @@ -1097,7 +1097,7 @@ LANG:1 0 1 LANG:1 96 -*-Arial Black-*-r-normal-*-11-*-100-100-*-*-iso8859-1|-11,0,0,0,505,0,0,0,0,0,0,0,0,Arial Black 0 "" - 948 358 1112 385 + 948 568 1112 595 T 1 @@ -1111,6 +1111,68 @@ LANG:1 24 show g_observationsList } }" 0 E E E +13 407 +"PUSH_BUTTON13" +"" +1 953 50 E E E 1 E 1 E N "_ButtonText" E N "_Button" E E + E E +160 0 0 0 0 0 +E E E +0 +1 +LANG:1 0 + +0 +1 +LANG:1 98 -*-MS Shell Dlg-*-r-normal-*-*-80-100-100-*-*-iso8859-1|-11,0,0,0,505,0,0,0,0,0,0,0,0,MS Shell Dlg +0 "" + 951 48 1055 72 + +T +1 +LANG:1 18 Clear searchArrays +"main() +{ + // reset scopes and searchStrings: + if (dpExists(DPNAME_LOGLEVEL+\".logScope\") && dpExists(DPNAME_LOGLEVEL+\".logScope\")) { + dpSet(DPNAME_LOGLEVEL+\".logScope\",makeDynString(\"\"), + DPNAME_LOGLEVEL+\".searchString\",makeDynString(\"\")); + } +}" 0 + E E E +13 408 +"PUSH_BUTTON14" +"" +1 953 72 E E E 1 E 1 E N "_ButtonText" E N "_Button" E E + E E +162 0 0 0 0 0 +E E E +0 +1 +LANG:1 0 + +0 +1 +LANG:1 98 -*-MS Shell Dlg-*-r-normal-*-*-80-100-100-*-*-iso8859-1|-11,0,0,0,505,0,0,0,0,0,0,0,0,MS Shell Dlg +0 "" + 951 70 1055 94 + +T +1 +LANG:1 17 Show searchArrays +"main() +{ + dyn_string anArray; + if (dpExists(DPNAME_LOGLEVEL+\".logScope\")) { + dpGet(DPNAME_LOGLEVEL+\".logScope\",anArray); + showDynArray(anArray,\"logScope\"); + } + if (dpExists(DPNAME_LOGLEVEL+\".searchString\")) { + dpGet(DPNAME_LOGLEVEL+\".searchString\",anArray); + showDynArray(anArray,\"searchString\"); + } +}" 0 + E E E 0 LAYER, 1 1 diff --git a/MAC/Navigator2/panels/Test/test.pnl b/MAC/Navigator2/panels/Test/test.pnl index 7e097104c32c3a49dbf783618741bb2b5cb6a4ed..78ef4eca0ed1f11de9590abf700abf377b0a4b6c 100644 --- a/MAC/Navigator2/panels/Test/test.pnl +++ b/MAC/Navigator2/panels/Test/test.pnl @@ -2,23 +2,7 @@ V 10 1 LANG:1 0 PANEL,-1 -1 500 396 N "_3DFace" 0 -"main() -{ - if (dpConnect(\"out\",true,\"MCU001:LOFAR_PermSW\")< 0) { - DebugN(\"Error connecting: \"+getLastError()); - } else { - DebugN(\"Connected\"); - } -} - -void out(string dp1,int i1, - string dp2, int i2, - string dp3, string s1) { - DebugN(dp1+\" : \"+ i1); - DebugN(dp2+\" : \"+ i2); - DebugN(dp3+\" : \"+ s1); -}" 0 - E E E E 1 -1 -1 0 50 30 +E E E E E 1 -1 -1 0 50 30 ""0 1 E E 2 "CBRef" "1" @@ -28,6 +12,18 @@ DISPLAY_LAYER, 1 0 1 0 1 0 1 0 1 0 1 0 1 0 1 0 LAYER, 0 1 LANG:1 0 +1 1 6 "" 0 +0 +1 2 6 "3" 0 +0 +1 3 6 "" 5 +0 +1 4 7 "" 0 +0 +1 5 7 "3" 0 +0 +1 6 7 "" 5 +0 0 LAYER, 1 1 @@ -57,4 +53,12 @@ LAYER, 7 1 LANG:1 0 0 +3 6 "PANEL_REF7" +"Test\\test2.pnl" 20 20 T 6 U +1 +"$panel""t1" +3 7 "PANEL_REF8" +"Test\\test2.pnl" 20 180 T 7 U +1 +"$panel""t2" 0 \ No newline at end of file diff --git a/MAC/Navigator2/panels/navigator.pnl b/MAC/Navigator2/panels/navigator.pnl index 9f9a72dae2ea8def1d7bedb21cffe627129e6b79..ac552030bc47fe5ffe639ba03d548e6ed1cbfbbd 100644 --- a/MAC/Navigator2/panels/navigator.pnl +++ b/MAC/Navigator2/panels/navigator.pnl @@ -9,9 +9,7 @@ PANEL,-1 -1 1232 873 N "_3DFace" 1 // initialize Navigator (instance) navigator_handleEventInitialize(); - // Do a dpQueryConnectSingle() so that we get a permanent list of claims - // we can use this to translate a claimed name into a real datapoint name - claimManager_queryConnectClaims(); + // Wait till initialising process ended while (g_initializing) { @@ -153,15 +151,15 @@ DISPLAY_LAYER, 1 0 1 0 1 0 1 0 1 0 1 0 1 0 1 0 LAYER, 0 1 LANG:1 6 Layer1 -1 13 5 "" 0 +1 9 5 "" 0 0 -1 15 9 "" 2 +1 11 9 "" 2 0 -1 16 9 "" 3 +1 12 9 "" 3 0 -1 17 9 "" 0 +1 13 9 "" 0 0 -1 18 9 "" 1 +1 14 9 "" 1 0 1 1 3 "" 6 0 @@ -169,27 +167,19 @@ LANG:1 6 Layer1 0 1 3 3 "" 5 0 -1 4 3 "" 8 -0 -1 5 3 "" 9 -0 -1 6 3 "" 10 -0 -1 7 4 "" 6 -0 -1 8 4 "" 7 +1 4 3 "" 11 0 -1 9 4 "" 5 +1 5 4 "" 6 0 -1 10 4 "" 8 +1 6 4 "" 7 0 -1 11 4 "" 9 +1 7 4 "" 5 0 -1 12 4 "" 10 +1 8 4 "" 11 0 -1 14 6 "" 2 +1 10 6 "" 2 0 -1 19 12 "" 0 +1 15 12 "" 0 1 "selectionChanged" 1 1 "main() { string aS; @@ -203,27 +193,27 @@ LANG:1 6 Layer1 }" 0 0 -1 20 12 "" 5 +1 16 12 "" 5 0 -1 21 12 "" 7 +1 17 12 "" 7 0 -1 22 12 "" 9 +1 18 12 "" 9 0 -1 23 12 "" 11 +1 19 12 "" 11 0 -1 24 12 "" 12 +1 20 12 "" 13 0 -1 25 13 "" 0 +1 21 13 "" 0 0 -1 26 13 "" 1 +1 22 13 "" 1 0 -1 27 13 "" 8 +1 23 13 "" 8 0 -1 28 13 "" 9 +1 24 13 "" 9 0 -1 29 13 "" 10 +1 25 13 "" 10 0 -1 30 13 "" 11 +1 26 13 "" 11 0 0 LAYER, 1 diff --git a/MAC/Navigator2/panels/objects/Processes/ObsSW_Main.pnl b/MAC/Navigator2/panels/objects/Processes/ObsSW_Main.pnl index 5da302415ffd4f654326c943fe0e96adc8087877..afce6be71c9194c9736ebf19271a4aae97d9e0be 100644 --- a/MAC/Navigator2/panels/objects/Processes/ObsSW_Main.pnl +++ b/MAC/Navigator2/panels/objects/Processes/ObsSW_Main.pnl @@ -1,7 +1,7 @@ V 10 1 LANG:1 0 -PANEL,-1 -1 995 412 N "_3DFace" 0 +PANEL,-1 -1 994 412 N "_3DFace" 0 "main() { mainDBName.text(MainDBName); @@ -45,9 +45,13 @@ void dblClick(string originator) { if (dpExists(newDP) ) { baseDP=newDP; if (originator == \"stationTree\") { - LOG_DEBUG(\"ObsSW_Main.pnl:DoubleClick|Setting currentDatapoint from : \"+g_currentDatapoint+\" to \"+baseDP); - g_currentDatapoint=baseDP; - navPanel_setEvent(\"ObsSW_Main|\"+stationTree.getText(stationTree.selectedItem(),0),\"ChangePanel\"); + if (dpExists(baseDP) ) { + LOG_DEBUG(\"ObsSW_Main.pnl:DoubleClick|Setting currentDatapoint from : \"+g_currentDatapoint+\" to \"+baseDP); + g_currentDatapoint=baseDP; + navPanel_setEvent(\"ObsSW_Main|\"+stationTree.getText(stationTree.selectedItem(),0),\"ChangePanel\"); + } else { + LOG_ERROR(\"ObsSW_Main.pnl:DoubleClick|Setting to new station failed: \"+ baseDP+ \" doesn't exist.\"); + } } else if (originator == \"activeObs\") { // LOG_DEBUG(\"ObsSW_Main.pnl.pnl:DoubleClick|Setting currentDatapoint from : \"+g_currentDatapoint+\" to \"+baseDP); // g_currentDatapoint=baseDP; @@ -101,7 +105,7 @@ LANG:1 5 ObsSW 29 4 "stationTree" "" -1 1182 -108.812949640288 E E E 1 E 1 E N "_WindowText" E N "_Window" E E +1 1182 -113.812949640288 E E E 1 E 1 E N "_WindowText" E N "_Window" E E E E 7 0 0 0 0 0 E E E @@ -118,7 +122,7 @@ LANG:1 19 Active Observations "backgroundOrigin" "enum 0" "selectionMode" "enum 0" "frameShadow" "enum 48" - 822 25 992 347 + 822 20 992 347 10 TreeWidget 7 0 "expanded" "(string id)" @@ -145,7 +149,7 @@ LANG:1 19 Active Observations 29 5 "activeObs" "" -1 361 -117.748624629708 E E E 1 E 1 E N "_WindowText" E N "_Window" E E +1 361 -121.6107356006344 E E E 1 E 1 E N "_WindowText" E N "_Window" E E E E 9 0 0 0 0 0 E E E @@ -154,7 +158,7 @@ E E E LANG:1 19 Active Observations 0 - 0 20 170 342 + 0 20 170 347 10 TreeWidget 7 0 "expanded" "(string id)" @@ -175,51 +179,8 @@ LANG:1 19 Active Observations { activeObs.addColumn(\"Active Observations\"); activeObs.setColumnWidth(0,201); - if (!dpExists(MainDBName+\"LOFAR_PermSW_MACScheduler.activeObservations\")) { - setValue(\"activeObs\",\"backCol\",\"_dpdoesnotexist\"); - } else { - dpConnect(\"activeObsCallback\",true,\"LOFAR_PermSW_MACScheduler.activeObservations\"); - } } - -activeObsCallback(string dp1, dyn_string activeObservations) { - - // empty the table - activeObs.clear(); - - - // if the active observations list changes the list here should be changed also. - // iterate over the found entries and fill the table - // if no previous Observation selected, set selection to the first on the list, also - // set it here when previous selection disappeared from the list. - // otherwise nothing will be changed in the selection - - string newSelection=\"\"; - string oldSelection=activeObs.selectedItem(); - for (int i=1; i<= dynlen(activeObservations);i++) { - string realName=claimManager_nameToRealName(\"LOFAR_ObsSW_\"+activeObservations[i]); - activeObs.appendItem(\"\",realName,activeObservations[i]); - activeObs.ensureItemVisible(realName); - activeObs.setIcon(realName,0,\"16_empty.gif\"); - if (i==1) { - newSelection=realName; - } - } - - if ((oldSelection == newSelection) || - (oldSelection != \"\" && activeObs.itemExists(oldSelection))) { - activeObs.setSelectedItem(oldSelection,true); - // nothing further needed - return; - } else { - activeObs.setSelectedItem(newSelection,true); - } - // something has changed, so update Main Controllers - MainCU_Processes_UpdateMainControllers(); - MainCU_Processes_UpdateStationTree(); - -} " 0 2 46 "PRIMITIVE_TEXT4" @@ -395,6 +356,26 @@ LANG:1 0 1 "dashclr"N "_Transparent" E E 0 2 1 2 1 E 290 193 810 193 +2 113 +"observationName" +"" +1 670 20 E E E 1 E 1 E N "Blue" E N "_Transparent" E E + E E +38 0 0 0 0 0 +E E E +0 +1 +LANG:1 0 + +1 +"dashclr"N "_Transparent" +E E 0 1 1 2 1 E U 1 E 670 20 736 34 +0 2 2 "0s" 0 0 0 192 0 0 670 20 1 +1 +LANG:1 101 -*-MS Shell Dlg-bold-r-normal-*-11-*-100-100-*-*-iso8859-1|-11,0,0,0,758,0,0,0,0,0,0,0,0,MS Shell Dlg +0 "" +1 +LANG:1 11 observation 0 LAYER, 1 1 @@ -425,32 +406,32 @@ LAYER, 7 LANG:1 0 0 3 14 "PANEL_REF15" -"objects/Processes\\interactive_controller_small.pnl" 180 40 T 26 1 0 1 -7 -5 +"objects\\Processes\\interactive_controller_small.pnl" 180 40 T 26 1 0 1 -7 -5 2 "$databaselevel""main" "$name""ObsCtrl" 3 15 "PANEL_REF16" -"objects/Processes\\interactive_controller_small.pnl" 170 90 T 27 1 0 1 3 -5 +"objects\\Processes\\interactive_controller_small.pnl" 170 90 T 27 1 0 1 3 -5 2 "$databaselevel""main" "$name""OnlineCtrl_Correlator" 3 16 "PANEL_REF17" -"objects/Processes\\interactive_controller_small.pnl" 180 140 T 28 1 0 1 -7 -5 +"objects\\Processes\\interactive_controller_small.pnl" 180 140 T 28 1 0 1 -7 -5 2 "$databaselevel""main" "$name""OnlineCtrl_StorageAppl" 3 17 "PANEL_REF18" -"objects/Processes\\interactive_controller_small.pnl" 180 200 T 29 1 0 1 -7 0 +"objects\\Processes\\interactive_controller_small.pnl" 180 200 T 29 1 0 1 -7 0 2 "$databaselevel""station" "$name""BeamCtrl" 3 18 "PANEL_REF19" -"objects/Processes\\interactive_controller_small.pnl" 170 240 T 30 1 0 1 3 10 +"objects\\Processes\\interactive_controller_small.pnl" 170 240 T 30 1 0 1 3 10 2 "$databaselevel""station" "$name""CalCtrl" 3 19 "PANEL_REF20" -"objects/Processes\\interactive_controller_small.pnl" 180 290 T 31 1 0 1 -7 10 +"objects\\Processes\\interactive_controller_small.pnl" 180 290 T 31 1 0 1 -7 10 2 "$databaselevel""station" "$name""TBBCtrl" diff --git a/MAC/Navigator2/panels/objects/Processes/ObsSW_Station.pnl b/MAC/Navigator2/panels/objects/Processes/ObsSW_Station.pnl index 61128a62939625b488b99a76c0f7f629d1112b25..2cf180b7b5a8157aa33f6facbd9fc51d48ddc7b8 100644 --- a/MAC/Navigator2/panels/objects/Processes/ObsSW_Station.pnl +++ b/MAC/Navigator2/panels/objects/Processes/ObsSW_Station.pnl @@ -6,7 +6,9 @@ PANEL,-1 -1 995 220 N "_3DFace" 0 { baseDP=g_currentDatapoint; station_selectedStation = dpSubStr(baseDP,DPSUB_SYS); - stationDBName.text(station_selectedStation); + station_selectedObservation=selectedObservation; + stationDBName.text(station_selectedStation); + stationObservationName.text(station_selectedObservation); }" 0 E E E E 1 -1 -1 0 0 0 ""0 1 @@ -28,6 +30,8 @@ void click(string originator) { } else if (originator == \"activeObs\") { station_obsBaseDP=activeStationObs.selectedItem(); station_selectedObservation=activeStationObs.getText(activeStationObs.selectedItem(),0); + stationObservationName.text(station_selectedObservation); + setValue(\"stationObservationName\",\"text\",station_selectedObservation); Station_Processes_UpdateStationTree(); } } @@ -45,15 +49,17 @@ void dblClick(string originator) { newDP=stationTree.selectedItem(); } - if (dpExists(baseDP) ) { - if (originator == \"stationTree\") { + if (dpExists(newDP) ) { + baseDP=newDP; + LOG_TRACE(\"ObsSW_Station.pnl:DoubleClick||selectedStation: \"+station_selectedStation); + if (originator == \"stationTree\" && stationTree.selectedItem()+\":\" != station_selectedStation) { LOG_DEBUG(\"ObsSW_Station.pnl:DoubleClick|Setting currentDatapoint from : \"+g_currentDatapoint+\" to \"+baseDP); g_currentDatapoint=baseDP; navPanel_setEvent(\"ObsSW_Station|\"+stationTree.getText(stationTree.selectedItem(),0),\"ChangePanel\"); } else if (originator == \"activeObs\") { -// LOG_DEBUG(\"ObsSW_Station.pnl.pnl:DoubleClick|Setting currentDatapoint from : \"+g_currentDatapoint+\" to \"+baseDP); -// g_currentDatapoint=baseDP; -// navPanel_setEvent(\"ObsSW_Station|\"+activeStationObs.getText(activeStationObs.selectedItem(),0),\"ChangePanel\"); +// LOG_DEBUG(\"ObsSW_Station.pnl.pnl:DoubleClick|Setting currentDatapoint from : \"+g_currentDatapoint+\" to \"+baseDP); +// g_currentDatapoint=baseDP; +// navPanel_setEvent(\"ObsSW_Station|\"+activeStationObs.getText(activeStationObs.selectedItem(),0),\"ChangePanel\"); } } @@ -112,14 +118,14 @@ E E E LANG:1 19 Active Observations 8 -"frameShadow" "enum 48" -"selectionMode" "enum 0" -"backgroundOrigin" "enum 0" -"defaultRenameAction" "enum 0" -"frameShape" "enum 6" -"vScrollBarMode" "enum 0" -"hScrollBarMode" "enum 0" "resizeMode" "enum 0" +"hScrollBarMode" "enum 0" +"vScrollBarMode" "enum 0" +"frameShape" "enum 6" +"defaultRenameAction" "enum 0" +"backgroundOrigin" "enum 0" +"selectionMode" "enum 0" +"frameShadow" "enum 48" 822 20 992 188 10 TreeWidget 7 @@ -141,6 +147,10 @@ LANG:1 19 Active Observations { stationTree.addColumn(\"Involved Stations\"); stationTree.setColumnWidth(0,201); + + //take over the old selection from main (if any) + station_selectedStation=selectedStation; + } " 0 @@ -177,65 +187,9 @@ LANG:1 19 Active Observations { activeStationObs.addColumn(\"Active Observations\"); activeStationObs.setColumnWidth(0,201); - if (!dpExists(MainDBName+\"LOFAR_PermSW_MACScheduler.activeObservations\")) { - setValue(\"activeStationObs\",\"backCol\",\"_dpdoesnotexist\"); - } else { - dpConnect(\"activeStationObsCallback\",true,\"LOFAR_PermSW_MACScheduler.activeObservations\"); - } -} - - -activeStationObsCallback(string dp1, dyn_string activeObservations) { - - // empty the table - activeStationObs.clear(); - station_obsBaseDP=\"\"; - - // if the active observations list changes the list here should be changed also. - // iterate over the found entries and fill the table - // if no previous Observation selected, set selection to the first on the list, also - // set it here when previous selection disappeared from the list. - // otherwise nothing will be changed in the selection - // check if this station is involved in an active observation, if so it will be added to the list - - string newSelection=\"\"; - string oldSelection=activeStationObs.selectedItem(); - for (int i=1; i<= dynlen(activeObservations);i++) { - string realName=claimManager_nameToRealName(\"LOFAR_ObsSW_\"+activeObservations[i]); - int j = dynContains(g_observations[\"NAME\"],\"LOFAR_ObsSW_\"+activeObservations[i]); - if ( j > 0) { - // get the Stationlist from that observation - string sts=g_observations[\"STATIONLIST\"][j]; - dyn_string stations = strsplit(sts,\",\"); - for (int k=1; k<= dynlen(stations);k++) { - if (stations[k]+\":\" == station_selectedStation) { - if (station_obsBaseDP == \"\") { - station_obsBaseDP=realName; - station_selectedObservation=activeObservations[i]; - } - activeStationObs.appendItem(\"\",realName,activeObservations[i]); - activeStationObs.ensureItemVisible(realName); - activeStationObs.setIcon(realName,0,\"16_empty.gif\"); - } - } - } - if (station_obsBaseDP != \"\") { - newSelection=station_obsBaseDP; - } - } - - if ((oldSelection == newSelection) || - (oldSelection != \"\" && activeStationObs.itemExists(oldSelection))) { - activeStationObs.setSelectedItem(oldSelection,true); - // nothing further needed - return; - } else { - activeStationObs.setSelectedItem(newSelection,true); - } - // something has changed, so update Station Tree - Station_Processes_UpdateStationTree(); - + //take over the old selection from main (if any) + station_selectedObservation=selectedObservation; } " 0 2 46 @@ -348,6 +302,26 @@ LANG:1 7 station 0 1 95 22 "" 6 0 +2 97 +"stationObservationName" +"" +1 668 20 E E E 1 E 1 E N "Blue" E N "_Transparent" E E + E E +40 0 0 0 0 0 +E E E +0 +1 +LANG:1 0 + +1 +"dashclr"N "_Transparent" +E E 0 1 1 2 1 E U 1 E 668 20 734 34 +0 2 2 "0s" 0 0 0 192 0 0 668 20 1 +1 +LANG:1 101 -*-MS Shell Dlg-bold-r-normal-*-11-*-100-100-*-*-iso8859-1|-11,0,0,0,758,0,0,0,0,0,0,0,0,MS Shell Dlg +0 "" +1 +LANG:1 11 observation 0 LAYER, 1 1 @@ -378,17 +352,17 @@ LAYER, 7 LANG:1 0 0 3 20 "PANEL_REF21" -"objects/Processes\\station_interactive_controller_small.pnl" 170 40 T 35 1 0 1 0 -4 +"objects\\Processes\\station_interactive_controller_small.pnl" 170 40 T 35 1 0 1 0 -4 2 "$databaselevel""station" "$name""BeamCtrl" 3 21 "PANEL_REF22" -"objects/Processes\\station_interactive_controller_small.pnl" 170 90 T 36 1 0 1 0 -4 +"objects\\Processes\\station_interactive_controller_small.pnl" 170 90 T 36 1 0 1 0 -4 2 "$databaselevel""station" "$name""CalCtrl" 3 22 "PANEL_REF23" -"objects/Processes\\station_interactive_controller_small.pnl" 170 140 T 37 1 0 1 0 -4 +"objects\\Processes\\station_interactive_controller_small.pnl" 170 140 T 37 1 0 1 0 -4 2 "$databaselevel""station" "$name""TBBCtrl" diff --git a/MAC/Navigator2/panels/objects/Processes/controller_small.pnl b/MAC/Navigator2/panels/objects/Processes/controller_small.pnl index 6ce95ceca058ab410c9aa731479758fdb3939cb7..d73f22cc13bba3e3843e1883a3adeb5fa2920f6a 100644 --- a/MAC/Navigator2/panels/objects/Processes/controller_small.pnl +++ b/MAC/Navigator2/panels/objects/Processes/controller_small.pnl @@ -191,7 +191,7 @@ E 1 LANG:1 0 -125 "logMsg" 67 1 0 "s" 1 +125 "logMsg" 63 1 0 "s" 1 LANG:1 6 logMsg E 1 @@ -210,7 +210,15 @@ LANG:1 98 -*-MS Shell Dlg-*-r-normal-*-11-*-100-100-*-*-iso8859-1|-11,0,0,0,505, "name" "" 1 31 10 E E E 1 E 1 E N "_WindowText" E N "_Transparent" E E - E E + "main() +{ + rClick(); +}" 0 + "main() +{ + dblClick(); +}" 0 + 5 0 0 0 0 0 E E E 0 @@ -219,7 +227,11 @@ LANG:1 0 1 "dashclr"N "_Transparent" -E E 0 1 1 2 1 E U 1 E 31 10 61 24 +E "main() +{ + click(); +}" 0 + 0 1 1 2 1 E U 1 E 31 10 61 24 0 2 2 "0s" 0 0 0 192 0 0 31 10 1 1 LANG:1 101 -*-MS Shell Dlg-bold-r-normal-*-11-*-100-100-*-*-iso8859-1|-11,0,0,0,758,0,0,0,0,0,0,0,0,MS Shell Dlg @@ -256,7 +268,7 @@ LAYER, 7 LANG:1 0 0 3 0 "selfState" -"objects\\lofar_self_state.pnl" 9.500000000000011 9.5 T 1 1 0 0.882352941176471 -0.499999999999993 0.6176470588235254 +"objects\\lofar_self_state.pnl" 9.500000000000011 9.5 T 1 1 0 0.882352941176471 -0.499999999999993 -1.382352941176475 1 "$object""MACScheduler" 0 \ No newline at end of file diff --git a/MAC/Navigator2/panels/objects/Processes/daemon_small.pnl b/MAC/Navigator2/panels/objects/Processes/daemon_small.pnl index 686dd88fb77967aaa02811941cacc55bb1475989..04385a9869ae21e79437df68d26dc60b21b2c205 100644 --- a/MAC/Navigator2/panels/objects/Processes/daemon_small.pnl +++ b/MAC/Navigator2/panels/objects/Processes/daemon_small.pnl @@ -200,7 +200,7 @@ E 1 LANG:1 0 -20 "logMsg" 55 1 0 "s" 1 +20 "logMsg" 85 1 0 "s" 1 LANG:1 6 logMsg E 1 @@ -277,7 +277,7 @@ LAYER, 7 LANG:1 0 0 3 0 "selfState" -"objects\\lofar_self_state.pnl" 9.500000000000011 9.5 T 1 1 0 1 0.499999999999989 -1.5 +"objects\\lofar_self_state.pnl" 9.500000000000011 9.5 T 1 1 0 1 0.499999999999989 -4.5 1 "$object""CTStartDaemon" 0 \ No newline at end of file diff --git a/MAC/Navigator2/panels/objects/Processes/interactive_controller_small.pnl b/MAC/Navigator2/panels/objects/Processes/interactive_controller_small.pnl index 1e9ea5eaf6d341cfd47806e2949581f64425b8ec..60fd282e598f544653a908d5dacdbd341e111438 100644 --- a/MAC/Navigator2/panels/objects/Processes/interactive_controller_small.pnl +++ b/MAC/Navigator2/panels/objects/Processes/interactive_controller_small.pnl @@ -361,7 +361,7 @@ LAYER, 7 LANG:1 0 0 3 0 "selfState" -"objects/lofar_self_state.pnl" 9.50000000000001 9.5 T 1 1 0 1 -0.499999999999992 17.5 +"objects\\lofar_self_state.pnl" 9.500000000000011 9.5 T 1 1 0 1 -0.499999999999992 10.5 1 "$object""ObsCtrl" 0 \ No newline at end of file diff --git a/MAC/Navigator2/panels/objects/Processes/station_interactive_controller_small.pnl b/MAC/Navigator2/panels/objects/Processes/station_interactive_controller_small.pnl index c66a9df224376ab3eb0a747188ccdbcccd4fe777..17e5b058b62f65f0e1877c2f751dc6788d437930 100644 --- a/MAC/Navigator2/panels/objects/Processes/station_interactive_controller_small.pnl +++ b/MAC/Navigator2/panels/objects/Processes/station_interactive_controller_small.pnl @@ -362,7 +362,7 @@ LAYER, 7 LANG:1 0 0 3 0 "selfState" -"objects/lofar_self_state.pnl" 9.50000000000001 9.5 T 1 1 0 1 -0.499999999999992 17.5 +"objects\\lofar_self_state.pnl" 9.500000000000011 9.5 T 1 1 0 1 -0.499999999999992 12.5 1 "$object""ObsCtrl" 0 \ No newline at end of file diff --git a/MAC/Navigator2/panels/objects/lofar_self_state.pnl b/MAC/Navigator2/panels/objects/lofar_self_state.pnl index 70e4b8a1e93cc6bb66c906e8a34ac2a7f48766ea..fbf85e165c51ad0fc35b78a0468a85cd813d84ab 100644 --- a/MAC/Navigator2/panels/objects/lofar_self_state.pnl +++ b/MAC/Navigator2/panels/objects/lofar_self_state.pnl @@ -1,62 +1,153 @@ -V 10 -1 -LANG:1 16 Lofar Self State -PANEL,422 141 95 86 N "_3DFace" 1 -"$object" -"main() -{ - setValue(\"light\",\"toolTipText\",$object+\" state\"); -}" 0 -EE E E 1 0 0 0 10 10 -"" 0 1 -EE 2 -"CBRef""1" -"EClose"E -"" -DISPLAY_LAYER, 1 0 1 0 1 0 1 0 1 0 1 0 1 0 1 0 -LAYER, 0 -1 -LANG:1 6 Layer1 -7 1 -"light" -"" -1 17.0333 17.0333 E E E 1 E 1 E N "_3DText" E N "_3DFace" E E - E E -2 0 0 0 0 0 -EE E -0 -1 -LANG:1 10 self state -1 -"dashclr"N "_Transparent" -E E 0 1 1 0 1 E 1.071428571428571 0 1.071428571428571 -1.25 -1.25 1 E 17.5 17.5 7 7 -0 -LAYER, 1 -1 -LANG:1 6 Layer2 -0 -LAYER, 2 -1 -LANG:1 6 Layer3 -0 -LAYER, 3 -1 -LANG:1 6 Layer4 -0 -LAYER, 4 -1 -LANG:1 6 Layer5 -0 -LAYER, 5 -1 -LANG:1 6 Layer6 -0 -LAYER, 6 -1 -LANG:1 6 Layer7 -0 -LAYER, 7 -1 -LANG:1 6 Layer8 -0 +V 10 +1 +LANG:1 16 Lofar Self State +PANEL,-1 -1 170 141 N "_3DFace" 1 +"$object" +"main() +{ + setValue(\"light\",\"toolTipText\",$object+\" state\"); + baseDP=g_currentDatapoint; + + + +}" 0 + E E "main() +{ + rClick(); +}" 0 + E 1 0 0 0 10 10 +""0 1 +E "#uses \"navPanel.ctl\" + + +dyn_string popup; +string baseDP=\"\"; + + +// NCFObjectState vars +string DPName=\"\"; +int state; +string message=\"Operator Overrule\"; +bool force=true; + + +void rClick() { + // define the popupMenu + + int idx=1; + dynInsertAt(popup,\"CASCADE_BUTTON,Set State, 1\",idx++); + dynInsertAt(popup,\"CASCADE_BUTTON,Set Recursive State, 1\",idx++); + dynInsertAt(popup,\"Set State\",idx++); + for (int i = 1; i <= mappinglen(stateName); i++) { + string aS=\"PUSH_BUTTON,\"+mappingGetValue(stateName,i)+\",1\"+mappingGetKey(stateName,i)+\",1\"; + dynInsertAt(popup,aS,idx++); + } + dynInsertAt(popup,\"Set Recursive State\",idx++); + for (int i = 1; i <= mappinglen(stateName); i++) { + string aS=\"PUSH_BUTTON,\"+mappingGetValue(stateName,i)+\",2\"+mappingGetKey(stateName,i)+\",1\"; + dynInsertAt(popup,aS,idx++); + } + + popupMenu(popup,state); + + bool recursive = false; + if (state == 10 ) { + state = 0; + } else if (state == 20) { + state = 0; + recursive = true; + } else if (state < 200) { + state -= 100; + } else { + state -= 200; + recursive = true; + } + + bool ack=navFunct_acknowledgePanel(\"This will (re)set the state of \"+baseDP+\" to \"+getStateName(state)+\". Are you sure?\"); + if (!ack) { + LOG_DEBUG(\"lofar_self_state.pnl:rClick|State change by operator cancelled\"); + } + string database = dpSubStr(baseDP,DPSUB_SYS); + string bareDP = dpSubStr(baseDP,DPSUB_DP); + if (state) { + if (!recursive) { + LOG_DEBUG(\"lofar_self_state.pnl:rClick|Operator sets \"+baseDP+\".status.state to \"+getStateName(state)); + DPName=baseDP+\".status.state\"; + dpSet(database+\"__navObjectState.DPName\",DPName, + database+\"__navObjectState.stateNr\",state, + database+\"__navObjectState.message\",message, + database+\"__navObjectState.force\",force); + } else { + // If baseDP is on a station, only that station is needed in the query. + // if it is on the Main DB, all stations need to be examined. + string query=\"\"; + if (database == MainDBName) { + query= \"SELECT '_original.._value' FROM '\"+bareDP+\"*.status.state' REMOTE 'ALL' WHERE '_original.._value' != \"+state; + } else { + query= \"SELECT '_original.._value' FROM '\"+bareDP+\"*.status.state' REMOTE '\"+database+\"'WHERE '_original.._value' != \"+state; + } + dyn_dyn_anytype tab; + + dpQuery(query,tab); + + DebugN(\"lofar_self_state.pnl:rClick|Found: \"+tab+\" will all be set\"); + } + } +}" 0 + 2 +"CBRef" "1" +"EClose" E +"" +DISPLAY_LAYER, 1 0 1 0 1 0 1 0 1 0 1 0 1 0 1 0 +LAYER, 0 +1 +LANG:1 6 Layer1 +7 1 +"light" +"" +1 17.0333 17.0333 E E E 1 E 1 E N "_3DText" E N "_3DFace" E E + "main() +{ +// rClick(); + DebugN(\"objectbaseDP:\"+itsObject); +}" 0 + E +2 0 0 0 0 0 +E E E +0 +1 +LANG:1 10 self state + +1 +"dashclr"N "_Transparent" +E E 0 1 1 0 1 E 1.071428571428571 0 1.071428571428571 1.250000000000007 1.250000000000007 1 E 17.5 17.5 7 7 +0 +LAYER, 1 +1 +LANG:1 6 Layer2 +0 +LAYER, 2 +1 +LANG:1 6 Layer3 +0 +LAYER, 3 +1 +LANG:1 6 Layer4 +0 +LAYER, 4 +1 +LANG:1 6 Layer5 +0 +LAYER, 5 +1 +LANG:1 6 Layer6 +0 +LAYER, 6 +1 +LANG:1 6 Layer7 +0 +LAYER, 7 +1 +LANG:1 6 Layer8 +0 0 \ No newline at end of file diff --git a/MAC/Navigator2/panels/objects/navigator_alerts.pnl b/MAC/Navigator2/panels/objects/navigator_alerts.pnl index 97980281588e5734d29005c6d3b083e8075c2b66..4db564a3de6389701b1e2e9e8815a81a3f0def18 100644 --- a/MAC/Navigator2/panels/objects/navigator_alerts.pnl +++ b/MAC/Navigator2/panels/objects/navigator_alerts.pnl @@ -152,36 +152,59 @@ void rClick(int row) { LOG_DEBUG(\"navigator_alerts.pnl:RightMouseClick|sTime: \"+sTime); LOG_DEBUG(\"navigator_alerts.pnl:RightMouseClick|Looking for dp: \"+dp+\" status: \"+status); + int iPos=-1; //to narrow actions determine if the state is 'acknowledgable' - if (status == ACK) return; + if (status != ACK) { - // ok rest should be possible to acknowledge - // find the entry in the table - int iPos=-1; - for (int i=1; i <=dynlen(g_alarms[ \"TIME\" ]);i++) { - LOG_DEBUG( \"navigator_alerts.pnl:RightMouseClick|Time in table: \"); - LOG_DEBUG(\"navigator_alerts.pnl:RightMouseClick|g_alarms: \"+g_alarms[ \"TIME\" ][i]); - LOG_DEBUG( \"navigator_alerts.pnl:RightMouseClick|dpname in table: \"+g_alarms[ \"DPNAME\" ][i]); - LOG_DEBUG( \"navigator_alerts.pnl:RightMouseClick|status in table: \"+g_alarms[ \"STATUS\" ][i]); - if ( g_alarms[ \"TIME\" ][i] == sTime && - g_alarms[ \"DPNAME\" ][i] == dp && - g_alarms[ \"STATUS\" ][i] == status) { - iPos = i; - break; + // ok rest should be possible to acknowledge + // find the entry in the table + for (int i=1; i <=dynlen(g_alarms[ \"TIME\" ]);i++) { + LOG_DEBUG( \"navigator_alerts.pnl:RightMouseClick|Time in table: \"); + LOG_DEBUG(\"navigator_alerts.pnl:RightMouseClick|g_alarms: \"+g_alarms[ \"TIME\" ][i]); + LOG_DEBUG( \"navigator_alerts.pnl:RightMouseClick|dpname in table: \"+g_alarms[ \"DPNAME\" ][i]); + LOG_DEBUG( \"navigator_alerts.pnl:RightMouseClick|status in table: \"+g_alarms[ \"STATUS\" ][i]); + if ( g_alarms[ \"TIME\" ][i] == sTime && + g_alarms[ \"DPNAME\" ][i] == dp && + g_alarms[ \"STATUS\" ][i] == status) { + iPos = i; + break; + } + } + + if (iPos == -1) { + LOG_ERROR(\"navigator_alerts.pnl:RightMouseClick|Strange, couldn't find chosen entry in alarm global list.\"); } } - if (iPos == -1) { - LOG_ERROR(\"navigator_alerts.pnl:RightMouseClick|Strange, couldn't find chosen entry in alarm global list.\"); - return; + // determine also if there is a http msg in the MESSAGE part if so we also need an open webpage on the rclikc menu + int start = strpos(message,\"http://\"); + string httpStr=\"\"; + if (start > -1) { + string startStr=substr(message,start); + int end=strpos(startStr,\" \"); + httpStr=startStr; + if (end > -1){ + httpStr=substr(startStr,0,end); + } } + + // define the popupMenu dyn_string txt; int answer; - txt=makeDynString(\"PUSH_BUTTON, Acknowledge, 1, 1\"); - popupMenu(txt,answer); + int idx=1; + if (iPos > -1) { + dynInsertAt(txt,\"PUSH_BUTTON, Acknowledge, 1, 1\",idx++); + } + if (httpStr != \"\") { + dynInsertAt(txt,\"PUSH_BUTTON, Show Webpage, 2, 1\",idx++); + } + + if (dynlen(txt) > 0) { + popupMenu(txt,answer); + } // acknowledge pushed, get the dp, and state and determine if if (answer == 1) { @@ -229,6 +252,8 @@ void rClick(int row) { sys+\"__navObjectState.message\",message); } } + } else if (answer == 2) { + std_help(httpStr,false); } } diff --git a/MAC/Navigator2/panels/objects/navigator_headlines.pnl b/MAC/Navigator2/panels/objects/navigator_headlines.pnl index 2ce17b49a1f72737bddfa556bfd3573a12310100..e8989e343c6670e87aeab4b01f47cbd0103bdd90 100644 --- a/MAC/Navigator2/panels/objects/navigator_headlines.pnl +++ b/MAC/Navigator2/panels/objects/navigator_headlines.pnl @@ -39,7 +39,7 @@ void initialize() { // If there is an action required this point will tell so // void doAction(string aDP, string anAction) { - LOG_DEBUG(\"Navigator_headLines.pnl:doAction: required for \" + $name + \". Action found: \" + anAction); + LOG_DEBUG(\"Navigator_headLines.pnl:doAction| required for \" + $name + \". Action found: \" + anAction); // split action into essentials dyn_string actionString; if (!navFunct_splitAction(anAction,actionString)) { diff --git a/MAC/Navigator2/panels/objects/navigator_typeSelector.pnl b/MAC/Navigator2/panels/objects/navigator_typeSelector.pnl index 2d9394b87203cb3c57aa79a508e0dfbbce9d0f65..52cd5e8f3c5b4d61e6847ced241af1418b05c746 100644 --- a/MAC/Navigator2/panels/objects/navigator_typeSelector.pnl +++ b/MAC/Navigator2/panels/objects/navigator_typeSelector.pnl @@ -102,6 +102,20 @@ void doHighlight(dyn_string actionString) { // Highlight contains the names of the items in the treelist that should be highlighted. // make a list of them for parsing + // check if tabname is in selection list (will be if triggered by detailselector) if so remove first + int i=dynContains(actionString,\"Hardware\"); + if (i > 0) { + dynRemove(actionString,i); + } + int i=dynContains(actionString,\"Processes\"); + if (i > 0) { + dynRemove(actionString,i); + } + int i=dynContains(actionString,\"Observations\"); + if (i > 0) { + dynRemove(actionString,i); + } + if (dynlen(actionString) < 1) { return; } @@ -334,8 +348,8 @@ E E E LANG:1 8 hardware 2 -"allColumnsShowFocus" "bool TRUE" "selectionMode" "enum 0" +"allColumnsShowFocus" "bool TRUE" 10 30 212 378 10 TreeWidget 7 diff --git a/MAC/Navigator2/scripts/claim.ctl b/MAC/Navigator2/scripts/claim.ctl index dd5a471e7f0512d226cb7231adae86d86772d12b..d76eb79e41762d8dcbb23ae57cf1b261610c02eb 100644 --- a/MAC/Navigator2/scripts/claim.ctl +++ b/MAC/Navigator2/scripts/claim.ctl @@ -9,21 +9,21 @@ // A claim must be made via: // // dpSet( -// "claimManager.request.typeName", "Observation", -// "claimManager.request.newObjectName", "MYOBSERVATION" ); +// "ClaimManager.request.typeName", "Observation", +// "ClaimManager.request.newObjectName", "MYOBSERVATION" ); // // // The Claim Manager has a global array of claimed datapoints // for better performance. If the claimmanager runs on the mainserver // the manager has write rights and is responsible to fill the cache values -// dpSet("claimManager.cache.typeNames",*add the new typename to the dyn_string*, -// "claimManager.cache.newObjectNames",*add the new ObjectName to the dyn_string*, -// "claimManager.cache.DPNames",*add the new DPName to the dyn_string*, -// "claimManager.cache.claimDates",*add the new ClaimDate to the dyn_string*) +// dpSet("ClaimManager.cache.typeNames",*add the new typename to the dyn_string*, +// "ClaimManager.cache.newObjectNames",*add the new ObjectName to the dyn_string*, +// "ClaimManager.cache.DPNames",*add the new DPName to the dyn_string*, +// "ClaimManager.cache.claimDates",*add the new ClaimDate to the dyn_string*) // // When a client connects to the maindatabase he will fill his internal cache map (gClaimdTypes) // from the ClaimManager.Cache arrays. This will also be done after a disconnect/reconnect -// The client will take a dpConnect on the claimManager.response fields and will update his +// The client will take a dpConnect on the ClaimManager.response fields and will update his // internal cache map via the callback from this also (if the point doesn't exist yet) // // To check distributed connections a dpconnect on the distmanager is needed for the clients @@ -133,20 +133,20 @@ void distSystemTriggered(string dp1, dyn_int systemList) { if (isConnected) { dpDisconnect("clientAddClaimCallback", - MainDBName+"claimManager.response.typeName", - MainDBName+"claimManager.response.newObjectName", - MainDBName+"claimManager.response.DPName", - MainDBName+"claimManager.response.claimDate"); + MainDBName+"ClaimManager.response.typeName", + MainDBName+"ClaimManager.response.newObjectName", + MainDBName+"ClaimManager.response.DPName", + MainDBName+"ClaimManager.response.claimDate"); } // Connect to the dp elements that we use to receive // a new claim in the MainDB dpConnect( "clientAddClaimCallback", true, - MainDBName+"claimManager.response.typeName", - MainDBName+"claimManager.response.newObjectName", - MainDBName+"claimManager.response.DPName", - MainDBName+"claimManager.response.claimDate"); + MainDBName+"ClaimManager.response.typeName", + MainDBName+"ClaimManager.response.newObjectName", + MainDBName+"ClaimManager.response.DPName", + MainDBName+"ClaimManager.response.claimDate"); isConnected = true; // start the local Claim mechanism @@ -158,7 +158,7 @@ void distSystemTriggered(string dp1, dyn_int systemList) { // ******************************************* // Description: // This will (re)load the internal mapping from the -// claimManager.cache strings +// ClaimManager.cache strings // // Returns: // None @@ -179,20 +179,20 @@ void syncClient() { // because it always takes some time for the databases to be ready while the are connecting we will have to wait here till the MainDB // is fully reachable int retry=0; - while (!dpExists(MainDBName+"claimManager.cache.typeNames") & retry < 120) { + while (!dpExists(MainDBName+"ClaimManager.cache.typeNames") & retry < 120) { delay(2); retry++; if (retry >= 120) { - LOG_FATAL("claim.ctl:syncClient| connecting to mainDB retry longer then 2 minutes, mainDB still not ready?"); + if (bDebug) DebugN("claim.ctl:syncClient| connecting to mainDB retry longer then 2 minutes, mainDB still not ready?"); break; } } // get all lists of claimed datapoints - dpGet(MainDBName+"claimManager.cache.typeNames",typeNames, - MainDBName+"claimManager.cache.newObjectNames",newObjectNames, - MainDBName+"claimManager.cache.DPNames",DPNames, - MainDBName+"claimManager.cache.claimDates",claimDates); + dpGet(MainDBName+"ClaimManager.cache.typeNames",typeNames, + MainDBName+"ClaimManager.cache.newObjectNames",newObjectNames, + MainDBName+"ClaimManager.cache.DPNames",DPNames, + MainDBName+"ClaimManager.cache.claimDates",claimDates); for (int t = 1 ; t <= dynlen(typeNames); t++) { @@ -347,8 +347,8 @@ void startLocalClaim() { // a new claim dpConnect( "claimCallback", false, - "claimManager.request.typeName", - "claimManager.request.newObjectName" ); + "ClaimManager.request.typeName", + "ClaimManager.request.newObjectName" ); } @@ -362,8 +362,8 @@ void startLocalClaim() { // A claim must be made via: // // dpSet( -// "claimManager.request.typeName", "ObsCtrl", -// "claimManager.request.newObjectName", "MYOBSERVATION" ); +// "ClaimManager.request.typeName", "ObsCtrl", +// "ClaimManager.request.newObjectName", "MYOBSERVATION" ); // // Returns: // None @@ -409,10 +409,10 @@ void claimCallback( dyn_time claimDates; // get all lists of claimed datapoints - dpGet("claimManager.cache.typeNames",typeNames, - "claimManager.cache.newObjectNames",newObjectNames, - "claimManager.cache.DPNames",DPNames, - "claimManager.cache.claimDates",claimDates); + dpGet("ClaimManager.cache.typeNames",typeNames, + "ClaimManager.cache.newObjectNames",newObjectNames, + "ClaimManager.cache.DPNames",DPNames, + "ClaimManager.cache.claimDates",claimDates); // we need to check if the data is allready in the cacheArrays, to avoid duplication. // same type and same name and same dpname only the claimdate might need to be changed. @@ -459,19 +459,19 @@ void claimCallback( } // write back - dpSet("claimManager.cache.typeNames",typeNames, - "claimManager.cache.newObjectNames",newObjectNames, - "claimManager.cache.DPNames",DPNames, - "claimManager.cache.claimDates",claimDates); + dpSet("ClaimManager.cache.typeNames",typeNames, + "ClaimManager.cache.newObjectNames",newObjectNames, + "ClaimManager.cache.DPNames",DPNames, + "ClaimManager.cache.claimDates",claimDates); } if (bDebug) DebugN("claim.ctl:claimCallback|Set ClaimManagers Response point"); // for master and client, if not strDP == empty dpSet( - "claimManager.response.DPName" , dpSubStr(strDP,DPSUB_DP), - "claimManager.response.typeName" , strTypeName, - "claimManager.response.newObjectName", strNewObjectName, - "claimManager.response.claimDate" , claimDate ); + "ClaimManager.response.DPName" , dpSubStr(strDP,DPSUB_DP), + "ClaimManager.response.typeName" , strTypeName, + "ClaimManager.response.newObjectName", strNewObjectName, + "ClaimManager.response.claimDate" , claimDate ); } } diff --git a/MAC/Navigator2/scripts/libs/GCFAlarm.ctl b/MAC/Navigator2/scripts/libs/GCFAlarm.ctl index a6caf47d4e8280db007d8231aa1e51072f648ca6..d5069af7b8034c904359b210d969d589fcb5a97f 100644 --- a/MAC/Navigator2/scripts/libs/GCFAlarm.ctl +++ b/MAC/Navigator2/scripts/libs/GCFAlarm.ctl @@ -155,7 +155,7 @@ void setAlarms(string dp,dyn_time times,dyn_string names, dyn_string messages, d // ******************************************* void distSystemTriggered(string dp1, dyn_int systemList) { - string query = "SELECT '_original.._value' FROM '{__navObjectState.DPName,__navObjectState.stateNr,__navObjectState.message}' REMOTE ALL WHERE _DPT = \"NCFObjectState\" SORT BY 0"; + string query = "SELECT '_original.._value' FROM '{__navObjectState.DPName,__navObjectState.stateNr,__navObjectState.message,__navObjectState.force}' REMOTE ALL WHERE _DPT = \"NCFObjectState\" SORT BY 0"; if (isConnected) { @@ -187,11 +187,12 @@ void objectStateCallback(string ident, dyn_dyn_anytype aResult) { if (dynlen(aResult) <= 0) { return; } - //get the stateNr and DP that go with this message This will need to be done in one call later though!! + //get the stateNr and DP that go with this message time aTime = getCurrentTime(); string aDP = aResult[2][2]; int state = (int)aResult[3][2]; string message = aResult[4][2]; + bool force = aResult[5][2]; int aStatus = CAME; // Is this an existing Timestamp DP state combo or a new one @@ -311,6 +312,7 @@ void objectStateCallback(string ident, dyn_dyn_anytype aResult) { LOG_DEBUG("GCFAlarm.ctl:objectStateCallback|Found: State - "+state); LOG_DEBUG("GCFAlarm.ctl:objectStateCallback|Found: Message - "+message); LOG_DEBUG("GCFAlarm.ctl:objectStateCallback|Found: Status - "+aStatus); + LOG_DEBUG("GCFAlarm.ctl:objectStateCallback|Found: Force - "+force); // Now store the values g_alarms[ "TIME" ][iPos] = aTime; g_alarms[ "STATE" ][iPos] = state; @@ -320,7 +322,7 @@ void objectStateCallback(string ident, dyn_dyn_anytype aResult) { // fill initial alarms from database. if (dpExists(DPNAME_NAVIGATOR + g_navigatorID + ".alarms")) { - LOG_DEBUG("GCFAlarm.ctl:objectStateCallback|Storing the alarsm in db"); + LOG_DEBUG("GCFAlarm.ctl:objectStateCallback|Storing the alarms in db"); setAlarms(DPNAME_NAVIGATOR + g_navigatorID + ".alarms", g_alarms[ "TIME"],g_alarms[ "DPNAME" ],g_alarms[ "MESSAGE" ],g_alarms[ "STATE" ],g_alarms[ "STATUS" ]); } else { diff --git a/MAC/Navigator2/scripts/libs/GCFLogging.ctl b/MAC/Navigator2/scripts/libs/GCFLogging.ctl index 06af58b67e6a00576e583218f80c69ead67194b7..cfa8fe5831324cc6ea96d387e53ceba9c098f76f 100644 --- a/MAC/Navigator2/scripts/libs/GCFLogging.ctl +++ b/MAC/Navigator2/scripts/libs/GCFLogging.ctl @@ -40,7 +40,6 @@ // -const string DPNAME_LOGLEVEL = "__loglevel"; const int LOGLEVEL_FATAL = 50000; const int LOGLEVEL_ERROR = 40000; @@ -57,7 +56,11 @@ const string LOGMESSAGE_DEBUG = "DEBUG"; const string LOGMESSAGE_TRACE = "TRACE"; // set the loglevel throughout the navigator -global int g_loglevel = 0; +global int g_logLevel = 0; +global dyn_string g_logScope = ""; +global dyn_string g_searchString=""; + +global string DPNAME_LOGLEVEL = ""; global bool g_logInitialized = false; //////////////////////////////////////////////////////////////////////////////// // @@ -68,11 +71,19 @@ global bool g_logInitialized = false; //////////////////////////////////////////////////////////////////////////////// void setLoglevel(int newLevel) { - DebugTN("setting loglevel to:", newLevel); - g_loglevel = newLevel; + DebugTN("setting loglevel to:", newLevel); + if(dpExists(DPNAME_LOGLEVEL)) { + dyn_errClass err; + dpSet(DPNAME_LOGLEVEL+".logLevel",newLevel); + err = getLastError(); + if (dynlen(err) > 0) { + errorDialog(err); + } + } else { + g_logLevel=newLevel; + } } - //////////////////////////////////////////////////////////////////////////////// // // Function LOG_DYN(dyn array) : string @@ -259,17 +270,33 @@ void LOG_TRACE(string prefix, ...) // the prefix is necessary, otherwise PVSS wo //////////////////////////////////////////////////////////////////////////////// void LOG_MESSAGE(int level, string logmessage, dyn_anytype message) { - if(!g_logInitialized) { - initLog(); - } - - if (level >= g_loglevel) { - string msg = logmessage; - for (int i = 1; i <= dynlen(message); i++) { - msg += ", " + message[i]; - } - DebugTN (msg); - } + // check if level is wanted + if (level >= g_logLevel) { + + // split the original string and check against scopes and searchstrings wanted + string originator=""; + string function=""; + string ms = ""; + splitLogString(message,originator,function,ms); + bool logflag=false; + if (dynlen(g_logScope) < 1 && dynlen(g_searchString) < 1) { // If No search criteria, just print + logflag = true; + } else if (originator == "" && function == "" ) { // If empty split, just print + logflag = true; + } else if (matchLogScope(originator,function)) { // if logscope contains originator or function + logflag = true; + } else if (matchSearchString(ms)) { // if searchstring found in ms + logflag = true; + } + + if (logflag) { + string msg = logmessage; + for (int i = 1; i <= dynlen(message); i++) { + msg += ", " + message[i]; + } + DebugTN (msg); + } + } } //////////////////////////////////////////////////////////////////////////////// @@ -279,18 +306,21 @@ void LOG_MESSAGE(int level, string logmessage, dyn_anytype message) // Connects the loglevelUpdated function to the loglevel DP to capture changes. // //////////////////////////////////////////////////////////////////////////////// -void initLog() +void initLog(string logDP) { + DPNAME_LOGLEVEL=logDP; if(!g_logInitialized) { if(dpExists(DPNAME_LOGLEVEL)) { dyn_errClass err; - dpGet(DPNAME_LOGLEVEL+".",g_loglevel); + dpGet(DPNAME_LOGLEVEL+".logLevel",g_logLevel); err = getLastError(); if (dynlen(err) > 0) { errorDialog(err); } // monitor future updates: - dpConnect("loglevelUpdated",DPNAME_LOGLEVEL+"."); + dpConnect("loglevelUpdated",DPNAME_LOGLEVEL+".logLevel", + DPNAME_LOGLEVEL+".logScope", + DPNAME_LOGLEVEL+".searchString"); err = getLastError(); if (dynlen(err) > 0) { errorDialog(err); @@ -309,10 +339,89 @@ void initLog() // Copies value to own admin and logs the change. // //////////////////////////////////////////////////////////////////////////////// -void loglevelUpdated(string dp,int newLevel) +void loglevelUpdated(string dp1, int newLevel, + string dp2, dyn_string scope, + string dp3, dyn_string search) { - DebugTN("new loglevel:", newLevel); - g_loglevel = newLevel; + DebugTN("new loglevel : ", newLevel); + DebugTN("new scopes : ", scope); + DebugTN("new searchStrings: ", search); + g_logLevel = newLevel; + g_logScope = scope; + g_searchString = search; } + +//////////////////////////////////////////////////////////////////////////////// +// +// splitLogString +// +// LogMsg's should look like: +// +// LOG_TRACE("navigator.pnl:fw_viewBoxEvent| trigger: " + someinfo); +// +// This routine will split the 3 main streams from a log msg into seperate vars. +// +//////////////////////////////////////////////////////////////////////////////// + +void splitLogString(string aString, string& originator, string& function, string& msg) { + dyn_string aS1= strsplit(aString,"|"); + if (dynlen(aS1) > 1) { + msg=aS1[2]; + for (int i=3;i<=dynlen(aS1);i++) { + msg= msg+"|"+aS1[i]; + } + dyn_string aS2=strsplit(aS1[1],":"); + if (dynlen(aS2) > 1) { + function = aS2[2]; + originator = aS2[1]; + } else if (dynlen(aS2) == 1) { + originator = aS2[1]; + function = ""; + } + } else if (dynlen(aS1) == 1) { + msg=aS1[1]; + } +} + +//////////////////////////////////////////////////////////////////////////////// +// +// Function matchLogScope +// +// Checks if entries in the g_logScope array match with the originator or function +// +//////////////////////////////////////////////////////////////////////////////// +bool matchLogScope(string originator,string function) +{ + int i; + for (i=1; i<= dynlen(g_logScope); i++) { + if (strpos(originator,g_logScope[i]) > -1) { + return true; + } + } + for (i=1; i<= dynlen(g_logScope); i++) { + if (strpos(function,g_logScope[i]) > -1) { + return true; + } + } + return false; +} + +//////////////////////////////////////////////////////////////////////////////// +// +// Function matchSearchString +// +// Checks if entries in the g_searchString array match with the remaining msg +// +//////////////////////////////////////////////////////////////////////////////// +bool matchSearchString(string msg) +{ + int i; + for (i=1; i<= dynlen(g_searchString); i++) { + if (strpos(msg,g_searchString[i]) > -1 && g_searchString[i] != "") { + return true; + } + } + return false; +} diff --git a/MAC/Navigator2/scripts/libs/MainCU_Processes.ctl b/MAC/Navigator2/scripts/libs/MainCU_Processes.ctl index c1b091065d2fff05403768d10bbdac6f78c521f4..d6a94066b9c709fedbebc1fc6fd827e63c0eca12 100644 --- a/MAC/Navigator2/scripts/libs/MainCU_Processes.ctl +++ b/MAC/Navigator2/scripts/libs/MainCU_Processes.ctl @@ -56,7 +56,7 @@ void MainCU_Processes_initList() { dyn_dyn_anytype tab; //PermSW + PermSW_Daemons dpQuery("SELECT '_original.._value' FROM 'LOFAR_PermSW_*.status.state' ", tab); - LOG_TRACE("MainCU_Processes.pnl:main|Found: "+ tab); + LOG_TRACE("MainCU_Processes.ctl:initList|Found: "+ tab); dyn_string aDS=navFunct_getDynString(tab, 2,1); dynSortAsc(aDS); @@ -82,6 +82,12 @@ void MainCU_Processes_initList() { result[z]=","+spl[1]+","+path; } } + + if (!dpExists(MainDBName+"LOFAR_PermSW_MACScheduler.activeObservations")) { + setValue("activeObs","backCol","_dpdoesnotexist"); + } else { + dpConnect("MainCU_Processes_ActiveObsCallback",true,"LOFAR_PermSW_MACScheduler.activeObservations"); + } dpSet(DPNAME_NAVIGATOR + g_navigatorID + ".processesList",result); @@ -100,22 +106,22 @@ void MainCU_Processes_initList() { // *************************************** void MainCU_Processes_UpdateMainControllers() { string newSelectedObservation=activeObs.getText(activeObs.selectedItem(),0); + LOG_TRACE("MainCU_Processes.ctl:updateMainControllers|selected observation: "+ selectedObservation +" New: "+ newSelectedObservation); // check if selection is made, and the selection is indeed a new one - if (newSelectedObservation != selectedObservation && newSelectedObservation != "") { - selectedObservation = newSelectedObservation; + if (newSelectedObservation != 0) { selectedStation=""; + selectedObservation = newSelectedObservation; + observationName.text(selectedObservation); // get the real name from the selected Observation obsBaseDP=claimManager_nameToRealName("LOFAR_ObsSW_"+selectedObservation); - + LOG_TRACE("MainCU_Processes.ctl:updateMainControllers|connecting to Main Observation Ctrls"); dpSet(DPNAME_NAVIGATOR + g_navigatorID + ".updateTrigger.objectName","ObsCtrlPanel", DPNAME_NAVIGATOR + g_navigatorID + ".updateTrigger.paramList",makeDynString(obsBaseDP)); dpSet(DPNAME_NAVIGATOR + g_navigatorID + ".updateTrigger.objectName","OnlineCtrl_StorageApplPanel", DPNAME_NAVIGATOR + g_navigatorID + ".updateTrigger.paramList",makeDynString(obsBaseDP)); dpSet(DPNAME_NAVIGATOR + g_navigatorID + ".updateTrigger.objectName","OnlineCtrl_CorrelatorPanel", DPNAME_NAVIGATOR + g_navigatorID + ".updateTrigger.paramList",makeDynString(obsBaseDP)); - } - } // **************************************** @@ -128,8 +134,10 @@ void MainCU_Processes_UpdateMainControllers() { // *************************************** void MainCU_Processes_UpdateStationControllers() { string newSelectedStation=stationTree.getText(stationTree.selectedItem(),0); + + LOG_TRACE("MainCU_Processes.ctl:updateStationControllers|selected station: "+ selectedStation +" New: "+ newSelectedStation); // check if selection is made, and the selection is indeed a new one - if (newSelectedStation != selectedStation && newSelectedStation != "") { + if (newSelectedStation != 0) { selectedStation = newSelectedStation; stationDBName.text(selectedStation); MainCU_Processes_UpdateProcessesList(); @@ -153,6 +161,7 @@ void MainCU_Processes_UpdateStationControllers() { // // *************************************** void MainCU_Processes_UpdateProcessesList() { + LOG_TRACE("MainCU_Processes.ctl:updateProcessesList|entered"); dyn_string list; // copy old results from rest of the panel to the new list @@ -208,7 +217,7 @@ void MainCU_Processes_UpdateProcessesList() { //select all Ctrl under Station:LOFAR_PermSW_'selectedObservation' dpQuery("SELECT '_original.._value' FROM '"+stationObsDP+"_*.status.state' REMOTE '"+selectedStation+":'", tab); - LOG_TRACE("MainCU_Processes.pnl:updateProcessesList|Station Controllers Found: "+ tab); + LOG_TRACE("MainCU_Processes.ctl:updateProcessesList|Station Controllers Found: "+ tab); aDS=navFunct_getDynString(tab, 2,1); dynSortAsc(aDS); @@ -239,26 +248,27 @@ void MainCU_Processes_UpdateProcessesList() { // trigger that the panel values are calculated and ready navPanel_setEvent("MainCU_Processes.ctl:updateProcessesList","Update"); } -// navPanel_setEvent("ObsSW_Main|"+selectedStation+"|"+selectedObservation,"EventClick"); } MainCU_Processes_UpdateStationTree() { - // empty the table + LOG_TRACE("MainCU_Processes.ctl:updateStationTree|entered. Selected Observation: "+selectedObservation); + // empty the table stationTree.clear(); if (selectedObservation == "") { return; } - - if (obsBaseDP != "") { + + LOG_DEBUG("MainCU_Processes.ctl:updateStationTree|obsBaseDP: "+obsBaseDP); + if (dpExists(obsBaseDP)) { // look if that name is available in the Observation List int j = dynContains(g_observations["DP"],obsBaseDP); if ( j > 0) { // get the Stationlist from that observation string sts=g_observations["STATIONLIST"][j]; - LOG_DEBUG("MainCU_Processes.ctl:MainCU_Processes_UpdateStationTree|Found Stationlist for this Observation: "+ sts); + LOG_DEBUG("MainCU_Processes.ctl:UpdateStationTree|Found Stationlist for this Observation: "+ sts); // add stations if not allready there dyn_string stations = strsplit(sts,","); for (int k=1; k<= dynlen(stations);k++) { @@ -268,13 +278,66 @@ MainCU_Processes_UpdateStationTree() { stationTree.setIcon(stations[k],0,"16_empty.gif"); if (k==1) { stationTree.setSelectedItem(stations[k],true); + selectedStation=stations[k]; } } } + LOG_TRACE("MainCU_Processes.ctl:updateStationTree|calling UpdateStationControllers. selected ststion: "+selectedStation); MainCU_Processes_UpdateStationControllers(); } } } +MainCU_Processes_ActiveObsCallback(string dp1, dyn_string activeObservations) { + LOG_TRACE("MainCU_Processes.ctl:activeObsCallback|Found: "+ activeObservations); + + // empty the table + activeObs.clear(); + + // if the active observations list changes the list here should be changed also. + // iterate over the found entries and fill the table + // if no previous Observation selected, set selection to the first on the list, also + // set it here when previous selection disappeared from the list. + // otherwise nothing will be changed in the selection + + int idx=-1; + string newSelection=""; + string oldSelection=activeObs.selectedItem(); + selectedObservation=oldSelection; + LOG_DEBUG("MainCU_Processes.ctl:activeObsCallback|oldSelection: "+oldSelection); + for (int i=1; i<= dynlen(activeObservations);i++) { + string realName=claimManager_nameToRealName("LOFAR_ObsSW_"+activeObservations[i]); + activeObs.appendItem("",realName,activeObservations[i]); + activeObs.ensureItemVisible(realName); + activeObs.setIcon(realName,0,"16_empty.gif"); + if (i==1) { + newSelection=realName; + } + } + + if ((oldSelection == newSelection) || + (oldSelection != "" && activeObs.itemExists(oldSelection))) { + activeObs.setSelectedItem(oldSelection,true); + selectedObservation=activeObs.getText(activeObs.selectedItem(),0); + observationName.text(selectedObservation); + LOG_DEBUG("MainCU_Processes.ctl:activeObsCallback|Selection: "+selectedObservation); + // nothing further needed + return; + } else { + activeObs.setSelectedItem(newSelection,true); + selectedObservation=activeObs.getText(activeObs.selectedItem(),0); + } + + observationName.text(selectedObservation); + LOG_DEBUG("MainCU_Processes.ctl:activeObsCallback|Selection: "+selectedObservation); + + // something has changed, so update Main Controllers + LOG_DEBUG("MainCU_Processes.ctl:activeObsCallback|Starting updateMainControllers"); + MainCU_Processes_UpdateMainControllers(); + LOG_DEBUG("MainCU_Processes.ctl:activeObsCallback|Starting updateStationTree"); + MainCU_Processes_UpdateStationTree(); + +} + diff --git a/MAC/Navigator2/scripts/libs/Station_Processes.ctl b/MAC/Navigator2/scripts/libs/Station_Processes.ctl index 54888f0feeb01d7f0f00cc021994d63ff4c3c1f4..7eb3d5a7b8a26b63e93ad23f67471f5e24c1a2c6 100644 --- a/MAC/Navigator2/scripts/libs/Station_Processes.ctl +++ b/MAC/Navigator2/scripts/libs/Station_Processes.ctl @@ -32,6 +32,7 @@ #uses "GCFLogging.ctl" #uses "GCFCommon.ctl" +#uses "MainCU_Processes.ctl" global dyn_string station_result; global string station_selectedObservation = ""; @@ -47,8 +48,9 @@ global string station_obsBaseDP = ""; // // *************************************** bool Station_Processes_initList() { - station_selectedObservation=""; + station_selectedObservation=selectedObservation; station_selectedStation=dpSubStr(g_currentDatapoint,DPSUB_SYS); + station_selectedStation=selectedStation; station_obsBaseDP=""; dynClear(station_result); @@ -56,7 +58,10 @@ bool Station_Processes_initList() { int z; dyn_dyn_anytype tab; //PermSW + PermSW_Daemons - dpQuery("SELECT '_original.._value' FROM 'LOFAR_PermSW_*.status.state' REMOTE '" +station_selectedStation + "'", tab); + string query="SELECT '_original.._value' FROM 'LOFAR_PermSW_*.status.state' REMOTE '" +station_selectedStation + "'"; + LOG_TRACE("Station_Processes.ctl:initList|Query: "+ query); + + dpQuery(query, tab); LOG_TRACE("Station_Processes.ctl:initList|Found: "+ tab); @@ -84,6 +89,13 @@ bool Station_Processes_initList() { station_result[z]=","+spl[1]+","+path; } } + + if (!dpExists(MainDBName+"LOFAR_PermSW_MACScheduler.activeObservations")) { + setValue("activeStationObs","backCol","_dpdoesnotexist"); + } else { + dpConnect("Station_Processes_ActiveStationObsCallback",true,"LOFAR_PermSW_MACScheduler.activeObservations"); + } + dpSet(DPNAME_NAVIGATOR + g_navigatorID + ".processesList",station_result); @@ -101,18 +113,23 @@ bool Station_Processes_initList() { // // *************************************** bool Station_Processes_UpdateStationControllers() { - string newSelectedObservation=activeStationObs.getText(activeStationObs.selectedItem(),0); string newSelectedStation=stationTree.getText(stationTree.selectedItem(),0); + LOG_TRACE("Station_Processes.ctl:updateStationControllers|selected station: "+ station_selectedStation +" New: "+ newSelectedStation); - stationDBName.text(station_selectedStation); - - dpSet(DPNAME_NAVIGATOR + g_navigatorID + ".updateTrigger.objectName","BeamCtrlPanel", - DPNAME_NAVIGATOR + g_navigatorID + ".updateTrigger.paramList",makeDynString(station_obsBaseDP,station_selectedStation)); - dpSet(DPNAME_NAVIGATOR + g_navigatorID + ".updateTrigger.objectName","CalCtrlPanel", - DPNAME_NAVIGATOR + g_navigatorID + ".updateTrigger.paramList",makeDynString(station_obsBaseDP,station_selectedStation)); - dpSet(DPNAME_NAVIGATOR + g_navigatorID + ".updateTrigger.objectName","TBBCtrlPanel", - DPNAME_NAVIGATOR + g_navigatorID + ".updateTrigger.paramList",makeDynString(station_obsBaseDP,station_selectedStation)); + // check if selection is made, and the selection is indeed a new one + if (newSelectedStation != 0) { + station_selectedStation = newSelectedStation; + stationDBName.text(station_selectedStation); + + dpSet(DPNAME_NAVIGATOR + g_navigatorID + ".updateTrigger.objectName","BeamCtrlPanel", + DPNAME_NAVIGATOR + g_navigatorID + ".updateTrigger.paramList",makeDynString(station_obsBaseDP,station_selectedStation)); + dpSet(DPNAME_NAVIGATOR + g_navigatorID + ".updateTrigger.objectName","CalCtrlPanel", + DPNAME_NAVIGATOR + g_navigatorID + ".updateTrigger.paramList",makeDynString(station_obsBaseDP,station_selectedStation)); + dpSet(DPNAME_NAVIGATOR + g_navigatorID + ".updateTrigger.objectName","TBBCtrlPanel", + DPNAME_NAVIGATOR + g_navigatorID + ".updateTrigger.paramList",makeDynString(station_obsBaseDP,station_selectedStation)); + } + LOG_TRACE("Station_Processes.ctl:UpdateStationControllers|call UpdateProcessesList"); if (!Station_Processes_UpdateProcessesList()) { LOG_ERROR("Station_Processes.ctl:UpdateStationControllers|UpdateProcessesList returned false"); return false; @@ -129,6 +146,7 @@ bool Station_Processes_UpdateStationControllers() { // // *************************************** bool Station_Processes_UpdateProcessesList() { + LOG_TRACE("Station_Processes.ctl:updateProcessesList|entered selected observation: "+ station_selectedObservation); dyn_string list; // copy old station_results from rest of the panel to the new list @@ -142,13 +160,18 @@ bool Station_Processes_UpdateProcessesList() { if(station_selectedObservation != "") { // get the real name from the selected Observation string obsDP=claimManager_nameToRealName("LOFAR_ObsSW_"+station_selectedObservation); - obsDP=station_selectedStation+dpSubStr(obsDP,DPSUB_DP); + if (strtok(station_selectedStation,":") < 0) { + obsDP=station_selectedStation+":"+dpSubStr(obsDP,DPSUB_DP); + } else { + obsDP=station_selectedStation+dpSubStr(obsDP,DPSUB_DP); + } // add Observation list[idx++]=","+station_selectedObservation+","+obsDP; //select all Ctrl under Station:LOFAR_PermSW_'station_selectedObservation' string query="SELECT '_original.._value' FROM '"+obsDP+"_*.status.state' REMOTE '"+station_selectedStation+"'"; + LOG_DEBUG("Station_Processes.ctl:updateProcessesList|Query: "+ query); dpQuery(query, tab); LOG_TRACE("Station_Processes.ctl:updateProcessesList|Station Controllers Found: "+ tab); @@ -195,7 +218,7 @@ Station_Processes_UpdateStationTree() { } LOG_DEBUG("Station_Processes.ctl:Station_Processes_UpdateStationTree|Found station_obsBaseDP: "+station_obsBaseDP); - if (station_obsBaseDP != "") { + if (dpExists(station_obsBaseDP)) { // look if that name is available in the Observation List int j = dynContains(g_observations["DP"],station_obsBaseDP); if ( j > 0) { @@ -211,9 +234,11 @@ Station_Processes_UpdateStationTree() { stationTree.setIcon(stations[k],0,"16_empty.gif"); if (k==1) { stationTree.setSelectedItem(stations[k],true); + station_selectedStation=stations[k]; } } } + LOG_TRACE("Station_Processes.ctl:updateStationTree|calling UpdateStationControllers. selected ststion: "+station_selectedStation); if (!Station_Processes_UpdateStationControllers()) { LOG_ERROR("Station_Processes.ctl:UpdateStationTree|UpdateStationControllers returned false"); return false; @@ -223,4 +248,82 @@ Station_Processes_UpdateStationTree() { } + +Station_Processes_ActiveStationObsCallback(string dp1, dyn_string activeObservations) { + LOG_TRACE("Station_Processes.ctl:activeObsCallback|Found: "+ activeObservations); + + // empty the table + activeStationObs.clear(); + station_obsBaseDP=""; + + // if the active observations list changes the list here should be changed also. + // iterate over the found entries and fill the table + // if no previous Observation selected, set selection to the first on the list, also + // set it here when previous selection disappeared from the list. + // otherwise nothing will be changed in the selection + + // check if this station is involved in an active observation, if so it will be added to the list + + string newSelection=""; + string oldSelection =activeStationObs.selectedItem(); + if (oldSelection != "") { + station_selectedObservation=activeStationObs.getText(activeStationObs.selectedItem(),0); + } + LOG_DEBUG("Station_Processes.ctl:activeObsCallback|oldSelection: "+oldSelection+ " station_selectedObservation: "+station_selectedObservation); + + bool first=true; + for (int i=1; i<= dynlen(activeObservations);i++) { + LOG_DEBUG("Station_Processes.ctl:activeObsCallback|checking g_observations for: "+"LOFAR_ObsSW_"+activeObservations[i]); + string realName=claimManager_nameToRealName("LOFAR_ObsSW_"+activeObservations[i]); + int j = dynContains(g_observations["NAME"],"LOFAR_ObsSW_"+activeObservations[i]); + if ( j > 0) { + LOG_DEBUG("Station_Processes.ctl:activeObsCallback|checking stationList for: "+station_selectedStation); + // get the Stationlist from that observation + string sts=g_observations["STATIONLIST"][j]; + LOG_DEBUG("Station_Processes.ctl:activeObsCallback|Stations found: "+sts); + dyn_string stations = strsplit(sts,","); + for (int k=1; k<= dynlen(stations);k++) { + if (stations[k] == station_selectedStation) { + if (station_obsBaseDP == "") { + station_obsBaseDP=realName; + } + activeStationObs.appendItem("",realName,activeObservations[i]); + activeStationObs.ensureItemVisible(realName); + activeStationObs.setIcon(realName,0,"16_empty.gif"); + if (station_selectedObservation == activeObservations[i]) { + newSelection=realName; + station_obsBaseDP=realName; + first=false; + } + if (first) { + newSelection=realName; + station_obsBaseDP=realName; + first=false; + } + } + } + } + } + + LOG_DEBUG("Station_Processes.ctl:activeObsCallback|oldSelection: "+oldSelection+" newSelection: "+newSelection); + + if ((oldSelection == newSelection) || + (oldSelection != "" && activeStationObs.itemExists(oldSelection))) { + activeStationObs.setSelectedItem(oldSelection,true); + station_selectedObservation=activeStationObs.getText(activeStationObs.selectedItem(),0); + LOG_DEBUG("Station_Processes.ctl:activeObsCallback|Selection: "+station_selectedObservation); + } else { + activeStationObs.setSelectedItem(newSelection,true); + station_selectedObservation=activeStationObs.getText(activeStationObs.selectedItem(),0); + } + + LOG_DEBUG("Station_Processes.ctl:activeObsCallback|Selection: "+station_selectedObservation); + + // something has changed, so update Main Controllers + LOG_DEBUG("Station_Processes.ctl:activeObsCallback|Starting updateStationTree"); + // something has changed, so update Station Tree + Station_Processes_UpdateStationTree(); + +} + diff --git a/MAC/Navigator2/scripts/libs/navCtrl.ctl b/MAC/Navigator2/scripts/libs/navCtrl.ctl index f33146d92efb3f6eff72c9a9bcd77c551c005926..c1a697c9f3e87c3f14b69865c4541a3e14140a8a 100644 --- a/MAC/Navigator2/scripts/libs/navCtrl.ctl +++ b/MAC/Navigator2/scripts/libs/navCtrl.ctl @@ -100,8 +100,8 @@ void navCtrl_handleViewBoxEvent(string dp,string value){ dpSet(HEADLINESACTIONDP,"ChangeInfo|"+g_currentDatapoint); // update selectors - dpSet(TOPDETAILSELECTIONACTIONDP,"Update"); - dpSet(BOTTOMDETAILSELECTIONACTIONDP,"Update"); +// dpSet(TOPDETAILSELECTIONACTIONDP,"Update"); +// dpSet(BOTTOMDETAILSELECTIONACTIONDP,"Update"); } return; } @@ -120,6 +120,20 @@ void navCtrl_handleViewBoxEvent(string dp,string value){ // Empty highlight string dynClear(strHighlight); + dynClear(highlight); + + for (int i=1;i<= dynlen(aSelection);i++){ + dyn_string sel = strsplit(aSelection[i],"|"); + LOG_DEBUG("navCtrl.ctl:navCtrl_handleViewBoxEvent|sel: "+sel); + if (dynlen(sel) > 0) { + dynAppend(strHighlight,sel[1]); + } + } + LOG_TRACE("navCtrl.ctl:navCtrl_handleViewBoxEvent| strHighlight contains now: "+strHighlight); + if (dynlen(strHighlight) > 0) { + LOG_TRACE("navCtrl.ctl:navCtrl_handleDetailSelectionEvent| Kick trigger"); + dpSet(DPNAME_NAVIGATOR + g_navigatorID+".trigger",true); + } // inform headLines Object dpSet(HEADLINESACTIONDP,"ChangeInfo|"+aSelection); @@ -285,12 +299,13 @@ void navCtrl_handleDetailSelectionEvent(string dp,string value,string target){ } } - // Empty highlight string - dynClear(strHighlight); // Fill highlight string string action = "Highlight"; if (anEvent == "EventClick") { + // Empty highlight string + dynClear(highlight); + dynClear(strHighlight); for (int i=1;i<= dynlen(aSelection);i++){ dyn_string sel = strsplit(aSelection[i],"|"); LOG_DEBUG("navCtrl.ctl:navCtrl_handleDetailSelectionEvent|sel: "+sel); @@ -299,23 +314,13 @@ void navCtrl_handleDetailSelectionEvent(string dp,string value,string target){ typeSelector=sel[1]; observationType=sel[2]; selection=sel[3]; - int nr = dynContains(strHighlight,sel[3]); - if (nr > 0) { - dynRemove(strHighlight,nr); - } else { - dynAppend(strHighlight,sel[3]); - } + dynAppend(strHighlight,sel[3]); action+="|"+sel[1]+"|"+sel[2]+"|"+sel[3]; } else { // Hardware or processes typeSelector=sel[1]; observationType=""; selection=sel[2]; - int nr = dynContains(strHighlight,sel[2]); - if (nr >0) { - dynRemove(strHighlight,nr); - } else { - dynAppend(strHighlight,sel[2]); - } + dynAppend(strHighlight,sel[2]); action+="|"+sel[1]+"|"+sel[2]; } } @@ -328,11 +333,9 @@ void navCtrl_handleDetailSelectionEvent(string dp,string value,string target){ // Also prepare actions for the different objects that can do something // with this highlight. // the Detail selection events need to highlight the choices involved also - if (target=="bottom") { - dpSet(TOPDETAILSELECTIONACTIONDP,action); - } else { - dpSet(BOTTOMDETAILSELECTIONACTIONDP,action); - } + dpSet(TOPDETAILSELECTIONACTIONDP,action); + dpSet(BOTTOMDETAILSELECTIONACTIONDP,action); + } } diff --git a/MAC/Navigator2/scripts/libs/navFunct.ctl b/MAC/Navigator2/scripts/libs/navFunct.ctl index 21bbac765ce395f6f1240c0c9fc1be3ee775552b..5550ccff68de0ff00ce96cf7da30f3a8f6af7bea 100644 --- a/MAC/Navigator2/scripts/libs/navFunct.ctl +++ b/MAC/Navigator2/scripts/libs/navFunct.ctl @@ -42,7 +42,7 @@ // navFunct_getDynString : Returns a dynString from a dyn_dyn[index] // navFunct_bareDBName : Returns a DatabaseName without the : (if any) // navFunct_findFirstOne : Returns the number of a given array that is true for a certain range - +// navFunct_acknowledgePanel : Returns acknowledge on a given action #uses "GCFLogging.ctl" #uses "GCFCommon.ctl" @@ -114,7 +114,7 @@ void navFunct_queryConnectObservations() { - string strQuery = "SELECT '.name:_original.._value, .status.state:_original.._value, .status.childState:_original.._value' FROM '*' WHERE _DPT = \"Observation\""; + string strQuery = "SELECT '.claim.name:_original.._value, .status.state:_original.._value, .status.childState:_original.._value' FROM '*' WHERE _DPT = \"Observation\""; g_observations[ "DP" ] = makeDynString(); g_observations[ "NAME" ] = makeDynString(); @@ -168,12 +168,17 @@ void navFunct_queryConnectObservations_Callback( if (aResult[t][2] != "") { string dpName = claimManager_nameToRealName(aResult[t][2]); //get stationList for this Observation from its ObsCtrl DP - LOG_TRACE("navFunct.ctl:navFunct_queryConnectObservations_Callback|Getting stationList for: "+dpName + ".stationList"); - dpGet(dpName + ".stationList",strStationList); - g_observations[ "STATIONLIST" ][iPos] = strStationList; + LOG_TRACE("navFunct.ctl:navFunct_queryConnectObservations_Callback|Getting stationList for: "+aResult[t][2]+" ==> "+dpName + ".stationList"); + if (dpExists(dpName + ".stationList")) { + dpGet(dpName + ".stationList",strStationList); + g_observations[ "STATIONLIST" ][iPos] = strStationList; + LOG_DEBUG("navFunct.ctl:navFunct_queryConnectObservations_Callback|StationList: "+g_observations["STATIONLIST"][iPos]); + } else { + g_observations[ "STATIONLIST" ][iPos] = makeDynString(); + } } else { g_observations[ "STATIONLIST" ][iPos] = makeDynString(); - } + } } } @@ -212,10 +217,26 @@ string navFunct_getArmFromStation(string stationName) { // None // ******************************************* void showMapping(mapping aM,string name) { - LOG_DEBUG( "navFunct.ctl:showMapping|Local mapping "+name +" contains now: " ); + DebugN( "navFunct.ctl:showMapping|Local mapping "+name +" contains now: " ); for (int i = 1; i <= mappinglen(aM); i++) { - LOG_DEBUG("navFunct.ctl:showMapping|mappingGetKey", i, " = "+mappingGetKey(aM, i)); - LOG_DEBUG(" mappingGetValue", i, " = "+mappingGetValue(aM, i)); + DebugN("navFunct.ctl:showMapping|mappingGetKey", i, " = "+mappingGetKey(aM, i)); + DebugN(" mappingGetValue", i, " = "+mappingGetValue(aM, i)); + } +} + +// ******************************************* +// Name : showDynArray +// ******************************************* +// Description: +// Prints all values in a dyn_anytype +// +// Returns: +// None +// ******************************************* +void showDynArray(dyn_anytype anArray,string name) { + DebugN( "navFunct.ctl:showDynArray|array "+name +" contains now: " ); + for (int i = 1; i <= dynlen(anArray); i++) { + DebugN("navFunct.ctl:showDynArray|", i, " = "+anArray[i]); } } @@ -513,3 +534,27 @@ string navFunct_bareDBName(string aDBName) { // **************************************** dyn_string navFunct_findFirstOne(dyn_anytype tab, int start,int end) { } + +// **************************************** +// Name : navFunct_acknowledgePanel +// **************************************** +// Description: +// Acknowledge an action +// +// +// Returns: +// Returns a bool +// **************************************** +bool navFunct_acknowledgePanel(string text) { + dyn_float dreturnf; // Variables for the return values + + dyn_string dreturns; + bool retVal=false; + + + ChildPanelOnReturn("vision/MessageInfo","Confirm",makeDynString("$1:"+text,"$2:Yes","$3:No"),10,10,dreturnf, dreturns); + + // The code below is executed first when the child panel is closed + if (dreturns == "true") retVal=true; + return retVal; +} diff --git a/MAC/Navigator2/scripts/libs/navTabCtrl.ctl b/MAC/Navigator2/scripts/libs/navTabCtrl.ctl index bb7299d280ae7e6aae4537d4e4f14f08a5ce6b6f..6e5e9d776e896019458176b4e3474d547e5baf5e 100644 --- a/MAC/Navigator2/scripts/libs/navTabCtrl.ctl +++ b/MAC/Navigator2/scripts/libs/navTabCtrl.ctl @@ -219,8 +219,15 @@ bool navTabCtrl_showView() dyn_string viewPanels = navTabCtrl_getViewPanels(); + // empty all highlights + dynClear(highlight); + dynClear(strHighlight); + // load the view if (dynlen(viewPanels) > 0) { + // remove old view + navTabCtrl_removeView(); + LOG_DEBUG("navTabCtrl.ctl:navTabCtrl_showView|Trying to load panel: "+viewPanels[1]); setValue(tabCtrl,"namedRegisterPanel", ACTIVE_TAB, viewPanels[1], makeDynString("")); return true; diff --git a/MAC/Navigator2/scripts/libs/navigator.ctl b/MAC/Navigator2/scripts/libs/navigator.ctl index c4f0b909d3b2ad0022da59626567162d81d618d4..701f4cac5a2d1f716a5565c3ef6531afb633eafc 100644 --- a/MAC/Navigator2/scripts/libs/navigator.ctl +++ b/MAC/Navigator2/scripts/libs/navigator.ctl @@ -80,6 +80,17 @@ void navigator_handleEventInitialize() // make sure there is a __navigator<id> datapoint of the type GCFNavigatorInstance. navConfig_setNavigatorID(navID); + // Do a dpQueryConnectSingle() so that we get a permanent list of claims + // we can use this to translate a claimed name into a real datapoint name + claimManager_queryConnectClaims(); + + // initialize the logSystem + if (dpExists(DPNAME_NAVIGATOR + g_navigatorID + ".logger")) { + initLog(DPNAME_NAVIGATOR + g_navigatorID + ".logger"); + } else { + DebugN("ERROR: Logsystem hasn't been found."); + } + // set user to root for now, has to be taken from PVSS login later if (dpExists(DPNAME_NAVIGATOR + g_navigatorID + ".user")) { dpSet(DPNAME_NAVIGATOR + g_navigatorID + ".user",getUserName()); diff --git a/MAC/Navigator2/scripts/monitorStateChanges.ctl b/MAC/Navigator2/scripts/monitorStateChanges.ctl index 0d67a60a95f3bc00c6327f8708aabffe256be5d6..51c3841eee473b0284c85e0dce8d12a08ed3a8a9 100644 --- a/MAC/Navigator2/scripts/monitorStateChanges.ctl +++ b/MAC/Navigator2/scripts/monitorStateChanges.ctl @@ -28,7 +28,7 @@ // global bool isConnected=false; -global bool bDebug = true; +global bool bDebug = false; main () { @@ -188,9 +188,9 @@ void stationStateTriggered(string ident, dyn_dyn_anytype tab) { // if all needed values are available we can start doing the major update. if (state >-1 && datapoint != "" && station != "" && armName != "" && element != ""){ if (ident == "PIC") { - setStates(datapoint + "_"+ armName + "_" + station,element,state,"",true); + setStates(datapoint + "_"+ armName + "_" + station,element,state,"",true,true); } else { - setStates(datapoint,element,state,"",true); + setStates(datapoint,element,state,"",true,true); } } }