249 lines
		
	
	
		
			9.0 KiB
		
	
	
	
		
			Plaintext
		
	
	
	
	
	
			
		
		
	
	
			249 lines
		
	
	
		
			9.0 KiB
		
	
	
	
		
			Plaintext
		
	
	
	
	
	
| Compile function NDW_REACTORS_MODE_CHG_EVENTS(CtrlEntId, Event, @PARAMS)
 | |
| #pragma precomp SRP_PreCompiler
 | |
| #window NDW_REACTORS_MODE_CHG
 | |
| 
 | |
| Declare function Get_Property, Reactor_Services, Database_Services
 | |
| Declare subroutine Set_Property, RList, Msg , Reactor_Services, End_Window, Post_Event
 | |
| 
 | |
| $Insert APP_INSERTS
 | |
| $Insert EVENT_SETUP
 | |
| $Insert REACTOR_EQUATES
 | |
| $insert logical
 | |
| $Insert RLIST_EQUATES
 | |
| $Insert REACTOR_MODES_EQUATES
 | |
| $Insert REACT_MODE_NG_EQUATES
 | |
| $Insert MSG_EQUATES
 | |
| 
 | |
| // Update the arguments so that the OpenInsight OLE event will treate the ActiveX event as a native event handler.
 | |
| If Event EQ 'OLE' then
 | |
|     Transfer Event to OIEvent
 | |
|     Transfer Param1 to Event
 | |
|     Transfer Param2 to Param1
 | |
|     Transfer Param3 to Param2
 | |
|     Transfer Param4 to Param3
 | |
|     Transfer Param5 to Param4
 | |
|     Transfer Param6 to Param5
 | |
|     Transfer Param7 to Param6
 | |
|     Transfer Param8 to Param7
 | |
| end
 | |
| 
 | |
| GoToEvent Event for CtrlEntId else
 | |
|     // Event not implemented
 | |
| end
 | |
| 
 | |
| Return EventFlow or 1
 | |
| 
 | |
| //-----------------------------------------------------------------------------
 | |
| // EVENT HANDLERS
 | |
| //-----------------------------------------------------------------------------
 | |
| 
 | |
| Event WINDOW.CREATE(CreateParam)
 | |
|     EventFlow = 1
 | |
|     GoSub   Setup_OLE_Controls
 | |
|     GoSub   PopulateReactors
 | |
|     GoSub   PopulateModes
 | |
|     GoSub   CheckCanSubmit
 | |
| End Event
 | |
| 
 | |
| Event PUB_SELECT_ALL.CLICK()
 | |
|     ReactorTableCtrlID = @Window : '.OLE_REACTOR_SEL_TABLE'
 | |
|     Send_Message(ReactorTableCtrlID, "OLE.SelectAll")
 | |
|     GoSub UpdateSelectedReactorsText
 | |
|     GoSub CheckCanSubmit
 | |
| end event
 | |
| 
 | |
| Event PUB_RESET_SELECTION.CLICK()
 | |
|     ReactorTableCtrlID = @Window : '.OLE_REACTOR_SEL_TABLE'
 | |
|     Send_Message(ReactorTableCtrlID, "OLE.UnselectAll")
 | |
|     GoSub UpdateSelectedReactorsText
 | |
|     GoSub CheckCanSubmit
 | |
| end event
 | |
| 
 | |
| Event CMB_MODES.CHANGED(NewModeData)()
 | |
|     CatDesc         = Xlate('REACTOR_MODES', NewModeData, REACTOR_MODES_SERVICE_CATEGORIES$, 'X')
 | |
|     Swap @VM with @FM in CatDesc
 | |
|     Set_Property(@Window : '.CMB_REACT_MODE_CAT', 'LIST', CatDesc)
 | |
|     GoSub CheckCanSubmit
 | |
| end event
 | |
| 
 | |
| Event CMB_REACT_MODE_CAT.CHANGED(NewData)()
 | |
|     GoSub CheckCanSubmit
 | |
| end event
 | |
| 
 | |
| Event PUB_SUBMIT.CLICK()
 | |
|     SelectedMode     = Get_Property(@Window : '.CMB_MODES', "TEXT")
 | |
|     SelectedSubCat   = Get_Property(@Window : '.CMB_REACT_MODE_CAT', 'TEXT')
 | |
|     Comment          = Get_Property(@Window : '.TXT_COMMENTS', 'TEXT')
 | |
|     SelectedReactors = Get_Property(@Window : '.OLE_REACTOR_SEL_TABLE', "OLE.SelList")
 | |
|     Response         = Dialog_Box('NDW_VERIFY_USER', @WINDOW, @USER4 : @FM : 'LEAD' : @VM : 'SUPERVISOR' : @VM : 'MAINTENANCE')
 | |
|     if Response AND DCOUNT(SelectedReactors, @FM) GT 1 then
 | |
|         Def              = ""
 | |
|         Def<MCAPTION$>   = "Please wait... Changing Modes..."
 | |
|         Def<MTYPE$ >     = "GC"
 | |
|         Def<MEXTENT$>    = DCOUNT(SelectedReactors, @FM)
 | |
|         Def<MTEXTWIDTH$> = 400
 | |
|         MsgUp = Msg(@WINDOW, Def)
 | |
|         for each Reactor in SelectedReactors using @FM setting iPos
 | |
|             Void = Msg(@WINDOW, MsgUp, iPos, MSGINSTUPDATE$)
 | |
|             Reactor_Services('CreateReactModeChange', @USER4, Reactor<1,1>, SelectedMode, SelectedSubCat, Comment, True$)
 | |
|         Next Reactor
 | |
|         Msg(@WINDOW, MsgUp) 		;* take down the gauge
 | |
|         GoSub ResetForm
 | |
|     end else
 | |
|         
 | |
|     end
 | |
| end event
 | |
| 
 | |
| Event PUB_CANCEL.CLICK()
 | |
|     Post_Event(@Window, 'CLOSE')
 | |
| end event
 | |
| 
 | |
| Event WINDOW.CLOSE(CancelFlag)
 | |
|     End_Window(@Window)
 | |
| end event
 | |
| 
 | |
| Event OLE_REACTOR_SEL_TABLE.OnItemClick(Row, Button, Col, Point)
 | |
|     GoSub UpdateSelectedReactorsText
 | |
|     GoSub CheckCanSubmit
 | |
| end event
 | |
| 
 | |
| * * * * * * * * * * * * * * * * * * *
 | |
| * * * * * * * * GO-SUBS * * * * * * * 
 | |
| * * * * * * * * * * * * * * * * * * *
 | |
| 
 | |
| Setup_OLE_Controls:
 | |
|  
 | |
|     ReactorTableCtrlID = @Window : '.OLE_REACTOR_SEL_TABLE'
 | |
|     Set_Property(ReactorTableCtrlID, "OLE.AlwaysShowSelection", True$)
 | |
|     rv                 = Send_Message(ReactorTableCtrlID, "QUALIFY_EVENT", "OnItemClick", 1)
 | |
|     rv                 = Send_Message(ReactorTableCtrlID, "QUALIFY_EVENT", "OnSelChange", 1)
 | |
| 
 | |
|     ColArray       = ''
 | |
|     //Col 1(Reactor No)
 | |
|     ColArray<1,1>  = 'Reactor';//Col Title - Reqd
 | |
|     ColArray<1,2>  = 'T';//Col Title - required
 | |
|     ColArray<1,3>  = 50;//Col Width - required
 | |
|     ColArray<1,4>  = False$;//Autosize
 | |
|     ColArray<1,7>  = True$;//Sortable
 | |
|     ColArray<1,10> = 'Center';//Alignment
 | |
|     //Col 2(Reactor Type)
 | |
|     ColArray<2,1>  = 'Type';//Col Title - Reqd
 | |
|     ColArray<2,2>  = 'T';//Col Title - required
 | |
|     ColArray<2,3>  = 35;//Col Width - required
 | |
|     ColArray<2,4>  = False$;//Autosize
 | |
|     ColArray<2,7>  = True$;//Sortable
 | |
|     ColArray<2,10> = 'Center';//Alignment
 | |
|     //Col 3(Current Mode)
 | |
|     ColArray<3,1>  = 'Curr Mode';//Col Title - Reqd
 | |
|     ColArray<3,2>  = 'T';//Col Title - required
 | |
|     ColArray<3,3>  = 200;//Col Width - required
 | |
|     ColArray<3,4>  = False$;//Autosize
 | |
|     ColArray<3,7>  = True$;//Sortable
 | |
|     ColArray<3,10> = 'Center';//Alignment
 | |
|     //Col 4(Current Sub Mode)
 | |
|     ColArray<4,1>  = 'Sub Mode';//Col Title - Reqd
 | |
|     ColArray<4,2>  = 'T';//Col Title - required
 | |
|     ColArray<4,3>  = 150;//Col Width - required
 | |
|     ColArray<4,4>  = False$;//Autosize
 | |
|     ColArray<4,7>  = True$;//Sortable
 | |
|     ColArray<4,10> = 'Center';//Alignment
 | |
|     
 | |
|     //Set Table Columns
 | |
|     Set_Property(ReactorTableCtrlID, "OLE.ColumnList", ColArray)
 | |
|     Set_Property(ReactorTableCtrlID, "OLE.MultiSelect", 2)
 | |
| return
 | |
| 
 | |
| PopulateReactors:
 | |
|     AllReactors    = Reactor_Services('GetReactorNumbers')
 | |
|     ActiveReactors = ''
 | |
|     for each reactorNo in AllReactors using @FM setting rPos
 | |
|         arrIndex      = 1
 | |
|         ReactorRec    = Database_Services('ReadDataRow', 'REACTOR', reactorNo)
 | |
|         ReactorStatus = ReactorRec<REACTOR_REACT_ASSIGNMENT$>
 | |
|         IF ReactorStatus NE 'O' then
 | |
|             ReactType          = ReactorRec<REACTOR_REACT_TYPE$>
 | |
|             ReactCurrModeKey   = Xlate('REACTOR_CHILD_KEY_IDS_NG', reactorNo, 1, 'X')<1,1>
 | |
|             ReactCurrModeRec   = Database_Services('ReadDataRow', 'REACT_MODE_NG', ReactCurrModeKey)
 | |
|             ReactCurrMode      = ReactCurrModeRec<REACT_MODE_NG_MODE$>
 | |
|             ReactCurrSubMode   = ReactCurrModeRec<REACT_MODE_NG_SERVICE_DESC$>
 | |
|             ActiveReactors<-1> = reactorNo : @VM : ReactType : @VM : ReactCurrMode : @VM : ReactCurrSubMode
 | |
|         end
 | |
|     Next reactorNo
 | |
|     Set_Property(ReactorTableCtrlID, "OLE.RecordList", ActiveReactors)
 | |
|     Send_Message(@Window:".OLE_REACTOR_SEL_TABLE", "OLE.UnselectAll")
 | |
| return
 | |
| 
 | |
| PopulateModes:
 | |
|     Statement = 'SELECT REACTOR_MODES BY DESCRIPTION'
 | |
|     rlist( Statement, target_activelist$, '', '', '' )
 | |
|     ModeList  = ''
 | |
|     IF @RecCount then
 | |
|         EoF = 0
 | |
|         NumKeys = @RecCount
 | |
|         Cnt = 0
 | |
|         Loop
 | |
|             ReadNext ReactorModeID Else EoF = 1
 | |
|         until EoF
 | |
|         	//Take out RESPONSE TIME modes
 | |
|         	IF NOT(Indexc(ReactorModeID, "RESPONSE", 1)) then
 | |
|         		ModeList<-1> = ReactorModeID
 | |
|         	end
 | |
| 
 | |
|         Repeat
 | |
|     end
 | |
|     Set_Property(@Window : '.CMB_MODES', 'LIST', ModeList)
 | |
| return
 | |
| 
 | |
| UpdateSelectedReactorsText:
 | |
|     ReactorTableCtrlID   = @Window : '.OLE_REACTOR_SEL_TABLE'
 | |
|     SelectedReactorsText = 'Selected Reactors: '
 | |
|     SelectedReactors     = Get_Property(ReactorTableCtrlID, "OLE.SelList")
 | |
|     for each Reactor in SelectedReactors using @Fm setting iPos
 | |
|         SelectedReactorsText := Reactor<1,1> : ', '
 | |
|     Next Reactor
 | |
|     Set_Property(@Window : '.LBL_SELECTED_REACTORS', 'TEXT', SelectedReactorsText)
 | |
| return
 | |
| 
 | |
| CheckCanSubmit:
 | |
|     SelectedReactors = Get_Property(@Window : '.OLE_REACTOR_SEL_TABLE', "OLE.SelList")
 | |
|     NewMode          = Get_Property(@Window : '.CMB_MODES', 'TEXT')
 | |
|     NewSubCat        = Get_Property(@Window : '.CMB_REACT_MODE_CAT', 'TEXT')
 | |
|     //Step1: Check that there are more than one reactors selected
 | |
|     if DCount(SelectedReactors, @FM) > 1 then
 | |
|         //Step2: Check that a mode is selected
 | |
|         if NewMode NE '' then
 | |
|             //Step3: Check that a mode category is selected
 | |
|             if NewSubCat NE '' then
 | |
|                 Set_Property(@Window : '.PUB_SUBMIT', 'ENABLED', 1)
 | |
|             end else
 | |
|                 Set_Property(@Window : '.PUB_SUBMIT', 'ENABLED', 0)
 | |
|             end
 | |
|         end else
 | |
|             Set_Property(@Window : '.PUB_SUBMIT', 'ENABLED', 0)
 | |
|         end
 | |
|     end else
 | |
|         Set_Property(@Window : '.PUB_SUBMIT', 'ENABLED', 0)
 | |
|     end
 | |
| return
 | |
| 
 | |
| ResetForm:
 | |
|     //Unselect all reactors
 | |
|     Send_Message(@Window:".OLE_REACTOR_SEL_TABLE", "OLE.UnselectAll")
 | |
|     //Unselect Mode
 | |
|     Set_Property(@Window : '.CMB_MODES', 'TEXT', '')
 | |
|     //Unselect Sub Category
 | |
|     Set_Property(@Window : '.CMB_REACT_MODE_CAT', 'TEXT', '')
 | |
|     //Clear Comments
 | |
|     Set_Property(@Window : '.TXT_COMMENTS', 'TEXT', '')
 | |
|     //Reset Selected Reactors Text
 | |
|     GoSub UpdateSelectedReactorsText
 | |
|     //Reset Submit Button
 | |
|     Set_Property(@Window : '.PUB_SUBMIT', 'ENABLED', False$)
 | |
|     //Refresh the select box
 | |
|     Set_Property(ReactorTableCtrlID, "OLE.RecordList", '')
 | |
|     GoSub PopulateReactors
 | |
| return
 | |
| 
 | |
| 
 | |
| 
 |