open-insight/LSL2/STPROC/DIALOG_REACT_MODE_HISTORY.txt
Infineon\StieberD 7762b129af pre cutover push
2024-09-04 20:33:41 -07:00

289 lines
8.6 KiB
Plaintext

COMPILE FUNCTION Dialog_React_Mode_History(EntID,Event,Parm1,Parm2,Parm3,Parm4,Parm5)
/*
Commuter module for DIALOG_REACT_MODE_HISTORY window
01/26/2010 - John C. Henry, J.C. Henry & Co., Inc.
*/
DECLARE SUBROUTINE Set_Property, End_Dialog, Send_Event, Set_Status, Center_Window, Post_Event, RList
DECLARE SUBROUTINE ErrMsg, Send_Message, Set_Property, Send_Event, Btree.Extract, obj_AppWindow,SRP_EditTable_Manager
DECLARE SUBROUTINE obj_Notes, Security_Err_Msg, End_Window, Forward_Event, Start_Window, Create_Note,Print_ReactModeLog
DECLARE FUNCTION Get_Property, Get_Status, Dialog_Box, Utility, Popup, Collect.Ixvals
DECLARE FUNCTION Send_Message, Msg, Security_Check, obj_React_Run_CI
$INSERT MSG_EQUATES
$INSERT APPCOLORS
$INSERT LSL_USERS_EQU
$INSERT SECURITY_RIGHTS_EQU
$INSERT REACT_MODE_EQUATES
$INSERT LOGICAL
EQU CRLF$ TO \0D0A\
EQU TAB$ TO \09\
EQU COL$REACT_NO TO 1
EQU COL$MODE TO 2
EQU COL$START_DTM TO 3
EQU COL$START_USER TO 4
EQU COL$START_RL_ID TO 5
EQU COL$START_RU_ID TO 6
EQU COL$STOP_DTM TO 7
EQU COL$STOP_USER TO 8
EQU COL$STOP_RL_ID TO 9
EQU COL$STOP_RU_ID TO 10
ErrTitle = 'Error in Dialog_React_Mode_History'
ErrorMsg = ''
Result = ''
BEGIN CASE
CASE EntID = @WINDOW
BEGIN CASE
CASE Event = 'CREATE' ; GOSUB Create
CASE Event = 'CLOSE' ; GOSUB Close
END CASE
CASE EntID = @WINDOW:'.CLOSE_BUTTON' AND Event = 'CLICK' ; GOSUB Close
CASE EntID = @WINDOW:'.PRINT_BUTTON' AND Event = 'CLICK' ; GOSUB Print
CASE 1
ErrorMsg = 'Unknown Parameters ':EntID:' - ':Event:' passed to commuter'
ErrMsg(ErrorMsg)
END CASE
IF ErrorMsg NE '' THEN
ErrMsg(ErrTitle:@SVM:ErrorMsg)
END
RETURN Result
* * * * * * *
Create:
* * * * * * *
obj_Appwindow('Create',@WINDOW)
ReactNo = Parm1<1>
StopDt = Parm1<2>
ReactNo = 21
IF NUM(StopDt) THEN
StopDt = OCONV(StopDt,'D4')
END
Set_Property(@WINDOW,'@REACT_NO',ReactNo)
GOSUB Setup_OLE_EditTable
IF StopDt NE '' THEN
Title = 'Reactor ':ReactNo:' Mode History Since ':StopDt
SelectSent = 'SELECT REACT_MODE WITH REACT_NO = ':QUOTE(ReactNo):'AND WITH START_DT >= ':QUOTE(StopDt):' BY-DSND START_DTM'
END ELSE
Title = 'Reactor ':ReactNo:' Mode History'
SelectSent = 'SELECT REACT_MODE WITH REACT_NO = ':QUOTE(ReactNo):' BY-DSND START_DTM'
END
Set_Property(@WINDOW,'TEXT',Title)
OPEN 'DICT.REACT_MODE' TO @DICT ELSE
ErrMsg('Unable to open DICT.REACT_MODE for index lookup')
RETURN
END
OPEN 'REACT_MODE' TO FileIn ELSE
ErrMsg('Unable to open REACT_MODE for index lookup')
RETURN
END
RList(SelectSent,5,'','','')
SelCnt = @RECCOUNT
IF Get_Status(errCode) THEN
Errmsg(errCode)
RETURN
END
RMKeys = ''
Done = 0
DispList = ''
RecCnt = 0
Def = ""
Def<MCAPTION$> = "Loading Mode Changes..."
Def<MTYPE$ > = "GC"
Def<MEXTENT$> = SelCnt
Def<MTEXTWIDTH$> = 600
MsgUp = Msg(@WINDOW, Def)
LOOP
READNEXT RMKey ELSE Done = 1
UNTIL Done
RecCnt += 1
READ RMRec FROM FileIn,RMKey THEN
StartDTM = FIELD(RMKey,'*',2)
DispLine = RMKey[1,'*']
DispLine<1,COL$MODE> = OCONV(RMRec<REACT_MODE_MODE$>,'[REACT_MODE_CONV')
DispLine<1,COL$START_DTM> = OCONV(StartDTM,'DT4/^S')
DispLine<1,COL$START_USER> = RMRec<REACT_MODE_START_USER$>
DispLine<1,COL$START_RL_ID> = RMRec<REACT_MODE_START_RL_ID$>
DispLine<1,COL$START_RU_ID> = RMRec<REACT_MODE_START_RU_ID$>
DispLine<1,COL$STOP_DTM> = OCONV(RMRec<REACT_MODE_STOP_DTM$>,'DT4/^S')
DispLine<1,COL$STOP_USER> = RMRec<REACT_MODE_STOP_USER$>
DispLine<1,COL$STOP_RL_ID> = RMRec<REACT_MODE_STOP_RL_ID$>
DispLine<1,COL$STOP_RU_ID> = RMRec<REACT_MODE_STOP_RU_ID$>
DispList<-1> = DispLine
END
WHILE Msg(@WINDOW, MsgUp, RecCnt, MSGINSTUPDATE$)
REPEAT
dummy = Msg(@WINDOW, MsgUp) ;* take down the gauge
*Set_Property(@WINDOW:'.MODE_HIST','LIST',DispList)
Set_Property(@WINDOW:'.OLE_EDT_MODE_HISTORY','LIST',DispList)
ListCnt = COUNT(DispList,@FM) + (DispList NE '')
FOR I = 1 TO ListCnt
IF Mod(I, 2) = 1 THEN
stat = Send_Message(@WINDOW:'.MODE_HIST','COLOR_BY_POS',0,I,RCV_BLUE$)
END ELSE
stat = Send_Message(@WINDOW:'.MODE_HIST','COLOR_BY_POS',0,I,WHITE$)
END
NEXT I
RETURN
* * * * * * *
Close:
* * * * * * *
End_Dialog(@WINDOW)
RETURN
* * * * * * *
Print:
* * * * * * *
ReactNo = Get_Property(@WINDOW,'@REACT_NO')
Print_ReactModeLog(ReactNo)
RETURN
* * * * * * *
Setup_OLE_EditTable:
* * * * * * *
Ctrl = @WINDOW:'.OLE_EDT_MODE_HISTORY'
ArrayDimension = 10
TitleList = "" ; ColWidths = '' ; ColAlignments = '' ; VirtualPos = ''
TitleList<1,1> = 'React No' ; ColWidths<1> = 100 ; ColAlignments<1> = 'C' ; VirtualPos<1> = 1
TitleList<1,2> = 'Mode' ; ColWidths<2> = 150 ; ColAlignments<2> = 'L' ; VirtualPos<2> = 2
TitleList<1,3> = "Start DTM" ; ColWidths<3> = 150 ; ColAlignments<3> = 'C' ; VirtualPos<3> = 3
TitleList<1,4> = "Start User" ; ColWidths<4> = 100 ; ColAlignments<4> = 'L' ; VirtualPos<4> = 4
TitleList<1,5> = 'React Log ID' ; ColWidths<5> = 50 ; ColAlignments<5> = 'C' ; VirtualPos<5> = 5
TitleList<1,6> = 'React Util ID' ; ColWidths<6> = 50 ; ColAlignments<6> = 'C' ; VirtualPos<6> = 6
TitleList<1,7> = "Stop DTM" ; ColWidths<7> = 100 ; ColAlignments<7> = 'C' ; VirtualPos<7> = 7
TitleList<1,8> = "Stop User" ; ColWidths<8> = 100 ; ColAlignments<8> = 'L' ; VirtualPos<8> = 8
TitleList<1,9> = "React Log ID" ; ColWidths<9> = 50 ; ColAlignments<9> = 'C' ; VirtualPos<9> = 9
TitleList<1,10> = "React Util ID" ; ColWidths<10> = 50 ; ColAlignments<10> = 'C' ; VirtualPos<10> = 10
Set_Property(Ctrl,'OLE.BorderType', 'XP Flat')
Set_Property(Ctrl,'OLE.WorkspaceBkColor','Window')
Set_Property(Ctrl,'OLE.Dimension',10:@FM:0) ;* changed
Set_Property(Ctrl,'OLE.RowsToRecords',1) ;* changed
Set_Property(Ctrl,'OLE.QuickTabOut',Yes$)
*Set_Property(Ctrl,'OLE.CellEditMode[All; All]','Edit')
Set_Property(Ctrl,'OLE.AutoColors','Row(Auto; Auto; Auto; 3DFace L=95; 1)') ;* Automatically alternate the color of every other row. This makes different rows easier to identify, especially since we have set 2 RowsToRecord.
Set_Property(Ctrl,'OLE.SelectionStyle',@VM:'S L=80':@FM:@VM:'S L=95') ;* Automatically highlight the current row with one color and highlight the current row with another color.
Set_Property(Ctrl,'OLE.TitleList',TitleList)
*Set_Property(Ctrl,'OLE.HeaderRow[1]', @FM:No$) ;* Hide the header row
Set_Property(Ctrl, "OLE.HeaderRow[All]", "19":@FM:"":@FM:Yes$) ;* Make all column header rows to be 19 pixels tall and unable to be resized.
Set_Property(Ctrl, "OLE.DataRow[All]", "19":@FM:"":@FM:No$) ;* Make all data rows to be 19 pixels tall and unable to be resized.
NumColumns = Count(ColWidths, @FM) + (ColWidths NE "")
CharPos = 1
FOR ColPos = 1 TO NumColumns
ColWidth = ColWidths<ColPos>
Begin Case
Case Num(ColWidth) ; Set_Property(Ctrl, "OLE.DataColumn[":ColPos:"]", ColWidth)
Case ColWidth EQ "A" ; Set_Property(Ctrl, "OLE.DataColumn[":ColPos:"]", @FM:@FM:@FM:Yes$) ;* Set column to autosized
End Case
NEXT ColPos
Set_Property(Ctrl, "OLE.HeaderColumn[1]", "20":@FM:"":@FM:No$) ;* Make the row header column to be 20 pixels wide and unable to be resized.
Set_Property(Ctrl, "OLE.AutoNumbers", "I":@VM:1) ;* Make the row header column auto number with an integer starting with 1.
NumColumns = Count(ColAlignments, @FM) + (ColAlignments NE "")
CharPos = 1
FOR ColPos = 1 TO NumColumns
ColAlignment = ColAlignments<ColPos>
IF Len(ColAlignment) THEN Set_Property(Ctrl, "OLE.CellAlignment[":ColPos:"; All]", @FM:ColAlignment)
NEXT ColPos
Set_Property(Ctrl, "@POS", VirtualPos)
Set_Property(Ctrl, "@CLEARFILL", 1)
CellConvInfo = "MD0":@FM:"MD0,":@FM:"'@DATA' is not a valid integer":@FM:@FM:@FM:Yes$
Set_Property(Ctrl, "OLE.CellConv[COL$REACT_NO; All]", CellConvInfo)
CellConvInfo = "":@FM:"[REACT_MODE_CONV]":@FM:@FM:@FM:@FM:Yes$
Set_Property(Ctrl, "OLE.CellConv[COL$MODE; All]", CellConvInfo)
CellConvInfo = "DT":@FM:"DT4/^S":@FM:"'@DATA' is not a valid Date-Time":@FM:@FM:@FM:Yes$
Set_Property(Ctrl, "OLE.CellConv[COL$START_DTM; All]", CellConvInfo)
CellConvInfo = "DT":@FM:"DT4/^S":@FM:"'@DATA' is not a valid Date-Time":@FM:@FM:@FM:Yes$
Set_Property(Ctrl, "OLE.CellConv[COL$STOP_DTM; All]", CellConvInfo)
/*
Qualify = ""
Qualify<1> = 1 ; // Enable OLE event
Qualify<4> = 2 ; // Synchronous event processing
Send_Message(Ctrl, "QUALIFY_EVENT", "ALL_OLES", Qualify)
*/
Send_Message(Ctrl, "OLE.Clear", 1) ; // Blank out edittable and fill up with empty rows.
RETURN