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

362 lines
12 KiB
Plaintext

Compile function REACTOR_MODE_HISTORY_EVENTS(CtrlEntId, Event, @PARAMS)
#pragma precomp SRP_PreCompiler
#window REACTOR_MODE_HISTORY
Declare function Get_Property, Reactor_Services, Send_Message, Environment_Services, Excel_Services, SRP_Array
Declare function Datetime, OConv
Declare subroutine Set_Property,Send_Message, Excel_Services, SRP_Run_Command
$Insert APP_INSERTS
$Insert EVENT_SETUP
$Insert REACTOR_LOG_EQUATES
$Insert REACTOR_MODES_EQUATES
$Insert REACT_MODE_NG_EQUATES
$Insert REACT_STATUS_EQUATES
// Columns in OLE Edit Table
EQU COL$START_DTM TO 1
EQU COL$ELAP_HRS TO 2
EQU COL$MODE TO 3
EQU COL$NOTES TO 4
EQU COL$CATEGORY_DESCRIPTION TO 5
EQU COL$START_USER TO 6
EQU COL$RL_ID TO 7
EQU COL$SERVICE_DESCRIPTION TO 8
EQU COL$SERVICE_NOTES TO 9
// 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)
ReactNo = field( CreateParam, char(244), 1 )
DaysToReport = field( CreateParam, char(244), 2 )
GoSub Setup_OLE_Controls
ReactNo = field( CreateParam, char(244), 1 )
DaysToReport = field( CreateParam, char(244), 2 )
IF ReactNo NE '' AND DaysToReport NE '' then
Set_Property(@Window : '.EDT_REACT_NO', 'TEXT', ReactNo)
Set_Property(@Window : '.EDT_DAYS_TO_REPORT', 'TEXT', DaysToReport)
GoSub DoRead
end else
end
EventFlow = 1
End Event
Event PUB_RUN.CLICK()
ReactNo = Get_Property(@Window : '.EDT_REACT_NO', 'TEXT')
DaysToReport = Get_Property(@Window : '.EDT_DAYS_TO_REPORT', 'TEXT')
GoSub DoRead
end event
Event CHK_SHOW_COLORS.CLICK()
ReactNo = Get_Property(@Window : '.EDT_REACT_NO', 'TEXT')
DaysToReport = Get_Property(@Window : '.EDT_DAYS_TO_REPORT', 'TEXT')
useColors = Get_Property(@Window: '.CHK_SHOW_COLORS', 'CHECK')
if useColors EQ False$ then
GoSub DeColorizeData
end else
GoSub DoRead
end
//GoSub DoRead
end event
Event PUB_EXPORT_TO_EXCEL.CLICK()
value = "Select a directory" : @fm : "c:\temp"
FilePath = Utility( "CHOOSEDIR", @window, value)
if FilePath NE '' then
GoSub ExportToExcel
end
end event
Event EDT_LOADED_CASS.DBLCLK(CtrlKey, ShiftKey, MouseButton)
RowData = Get_Property(CtrlEntID, 'ROWDATA')
SelRDSNo = RowData<1>
Void = start_window( 'RDS', @window, SelRDSNo:'*CENTER', '', '' )
end event
//-----------------------------------------------------------------------------
// Internal GoSubs
//-----------------------------------------------------------------------------
DoRead:
Ctrl = @Window : '.EDT_HIST'
Set_Property(Ctrl, 'OLE.Redraw', False$)
//tableDimension = Get_Property(Ctrl, "OLE.Dimension")
//numRows = tableDimension<2>
rv = Send_Message(Ctrl, "OLE.Clear", 0)
//rv = Send_Message(Ctrl, "OLE.Clear", 1)
//Set_Property(Ctrl, "OLE.CellColors[3; All]", ColorArray)
ReactorHistory = Reactor_Services('GetReactModeHistory', ReactNo, DaysToReport)
Index = Send_Message(Ctrl, "OLE.INSERT", 1, ReactorHistory)
//Get Curr Mode
CurrModeRec = Reactor_Services('GetReactCurrModeRec', ReactNo)
CurrMode = CurrModeRec<REACT_MODE_NG_MODE$>
CurrModeE10State = Xlate('REACTOR_MODES', CurrMode, REACTOR_MODES_E10_STATE$, 'X')
CurrModeColors = Get_Property(@Window:".OLE_SUBCLASS", "OLE.CustomColors")
modeColor = White$
//Get Loaded Cassettes
ReactStatusRec = XLATE('REACT_STATUS', ReactNo, '', 'X')
LoadedRDS = ''
LoadedRDS<1> = ReactStatusRec<REACT_STATUS_LOAD_RDS$>
LoadedRDS<2> = ReactStatusRec<REACT_STATUS_LOAD_RDS_DTM$>
LoadedDisplay = ''
for each rds in LoadedRDS<1> using @VM setting vPos
LoadedDisplay<-1> = LoadedRDS<1,vPos> : @VM : OCONV(LoadedRDS<2,vPos>, 'DT4/H')
Next rds
Set_Property(@Window : '.EDT_LOADED_CASS', 'LIST', LoadedDisplay)
Begin Case
Case CurrModeE10State EQ 'Scheduled Down'
modeColor = Orange$
Case CurrModeE10State EQ 'Unscheduled Down'
modeColor = Red$
Case CurrModeE10State EQ 'Productive'
modeColor = Green$
Case 1
modeColor = White$
End Case
Set_Property(@Window : '.EDT_CURR_MODE', 'TEXT', CurrMode)
Set_Property(@window : '.EDT_CURR_MODE', "BACKCOLOR", modeColor)
RowSettings = Get_Property(Ctrl, "OLE.DataRow[1]")
RowSettings<1> = 64
//RowSettings<4> = True$
tableDimension = Get_Property(Ctrl, "OLE.Dimension")
numRows = tableDimension<2>
for i = 1 to numRows
Set_Property(Ctrl, "OLE.DataRow[" : i : "]", RowSettings)
Next i
useColors = Get_Property(@Window: '.CHK_SHOW_COLORS', 'CHECK')
if useColors then
GoSub ColorizeData
end
Set_Property(Ctrl, "OLE.CellMultilined[All; All]", True$)
Set_Property(Ctrl, 'OLE.Redraw', True$)
//Set_Property(Ctrl, "OLE.CellMultilined[4; 1]", 1)
return
ColorizeData:
Set_Property(Ctrl, 'OLE.Redraw', False$)
tableDimension = Get_Property(Ctrl, "OLE.Dimension")
numRows = tableDimension<2>
for i = 1 to numRows
row = ReactorHistory<i>
e10State = XLATE('REACTOR_MODES',row<1,COL$MODE>, REACTOR_MODES_E10_STATE$, 'X')
ColorArray = 'None':@FM:'White':@FM:'None':@FM:'None':@FM:'None'
If Get_Property(@Window: '.CHK_SHOW_COLORS', 'CHECK') EQ True$ then
IF e10State EQ 'Scheduled Down' then
ColorFill = "Vertical(Gradient(Orange L=90, Orange L=80, 30%), Gradient(Orange L=75, Orange L=80))"
ColorArray<2> = ColorFill
end
IF e10State EQ 'Unscheduled Down' then
ColorFill = "Vertical(Gradient(Red L=90, Red L=80, 30%), Gradient(Red L=75, Red L=80))"
ColorArray<2> = ColorFill
end
IF e10State EQ 'Productive' then
ColorFill = "Vertical(Gradient(Green L=90, Green L=80, 30%), Gradient(Green L=75, Green L=80))"
ColorArray<2> = ColorFill
end
end
Set_Property(Ctrl, "OLE.CellColors[3; " : i : "]", ColorArray)
Next i
Set_Property(Ctrl, 'OLE.Redraw', True$)
return
DeColorizeData:
Ctrl = @Window : '.EDT_HIST'
Set_Property(Ctrl, 'OLE.Redraw', False$)
* tableDimension = Get_Property(Ctrl, "OLE.Dimension")
* numRows = tableDimension<2>
* for i = 1 to numRows
ColorArray = 'None':@FM:'White':@FM:'None':@FM:'None':@FM:'None'
Set_Property(Ctrl, "OLE.CellColors[3; All]", ColorArray)
* Set_Property(Ctrl, "OLE.CellColors[3; " : i : "]", ColorArray)
* Next i
Set_Property(Ctrl, 'OLE.Redraw', True$)
return
ExportToExcel:
//TODO Replace FilePath
*FilePath = "C:\Users\MESOuellette\Desktop\"
TemplatePath = Environment_Services('GetApplicationRootPath') : '\Reports\ReactMode\Reactor_Mode.xlsx'
objDocument = Excel_Services('OpenDocument',TemplatePath)
If Error_Services('HasError') then
error = Error_Services('GetCode')
return
end
Ctrl = @Window : '.EDT_HIST'
displayData = Get_Property(Ctrl, "OLE.ARRAY")
displayData = SRP_Array("Rotate", displayData)
CellRow = 2
for each row in displayData using @FM
Excel_Services('SetCellValue', objDocument, 'ReactorModes', 'A', CellRow, row<1,COL$START_DTM>)
Excel_Services('SetCellValue', objDocument, 'ReactorModes', 'B', CellRow, row<1,COL$ELAP_HRS>)
Excel_Services('SetCellValue', objDocument, 'ReactorModes', 'C', CellRow, row<1,COL$MODE>)
Excel_Services('SetCellValue', objDocument, 'ReactorModes', 'D', CellRow, row<1,COL$NOTES>)
//Services Required
ServiceCats = row<1,COL$CATEGORY_DESCRIPTION>
for ServiceCat = 1 to DCount(ServiceCats, @SVM)
ServiceCats<1,1,ServiceCat> = ' - ' : ServiceCats<1,1,ServiceCat>
Next ServiceCat
swap @svm with CRLF$ in ServiceCats
Excel_Services('SetCellValue', objDocument, 'ReactorModes', 'E', CellRow, ServiceCats)
Excel_Services('SetCellValue', objDocument, 'ReactorModes', 'F', CellRow, row<1,COL$START_USER>)
Excel_Services('SetCellValue', objDocument, 'ReactorModes', 'G', CellRow, row<1,COL$RL_ID>)
//Services Performed
ServiceDescs = row<1,COL$SERVICE_DESCRIPTION>
for ServiceDesc = 1 to DCount(ServiceDescs, @SVM)
ServiceDescs<1,1,ServiceDesc> = ' - ' : ServiceDescs<1,1,ServiceDesc>
Next ServiceDesc
swap @svm with CRLF$ in ServiceDescs
Excel_Services('SetCellValue', objDocument, 'ReactorModes', 'H', CellRow, ServiceDescs)
Excel_Services('SetCellValue', objDocument, 'ReactorModes', 'I', CellRow, row<1,COL$SERVICE_NOTES >)
CellRow += 1
Next row
FileSaveName = 'REACT_MODE_LOG_': OConv(DateTime(), 'DT2^HS ') : '.xlsx'
//Excel_Services('SaveDocument',objDocument,FilePath : 'REACT_MODE_LOG.xlsx')
Excel_Services('SaveDocument',objDocument,FilePath : '\' : FileSaveName)
If Error_Services('HasError') then
test = Error_Services('GetMessage')
end
Excel_Services('CloseDocument', objDocument)
IF FilePath NE '' then
SRP_Run_Command('start excel "':FilePath : '\' : FileSaveName:'"', 'VAR')
end
return
Setup_OLE_Controls:
Ctrl = @Window : '.EDT_HIST'
Set_Property(Ctrl, 'OLE.Redraw', False$)
//Set up columns
Set_Property(Ctrl, "OLE.Dimension", 9);*Define number of columns
HeaderTitles = 'Start DTM':@VM:'Elap. Hrs.':@VM:'Mode':@VM:'Mode Change Reason':@VM:'Category Description':@VM:'Start User' |
:@VM:'RL ID':@VM:'Service Description':@VM:'Reactor Log Comments'; *Define the column header titles
Set_Property(Ctrl, "OLE.TitleList", HeaderTitles); *Set the column titles
//Set the column Sizes
ColSize = Get_Property(Ctrl, "OLE.DataColumn[1]")
//Column 1
ColSize<1> = 120
Set_Property(Ctrl, "OLE.DataColumn[":COL$START_DTM:"]", ColSize)
//Column 2
ColSize<1> = 60
//ColSize<4> = True$
Set_Property(Ctrl, "OLE.DataColumn[":COL$ELAP_HRS:"]", ColSize)
//Set_Property(Ctrl, "OLE.DataColumn[":COL$ELAP_HRS:"]", ColSize)
//Column 3
ColSize<1> = 250
Set_Property(Ctrl, "OLE.DataColumn[":COL$MODE:"]", ColSize)
//Column 4
ColSize<1> = 200
Set_Property(Ctrl, "OLE.DataColumn[":COL$NOTES:"]", ColSize)
//Column 5
ColSize<1> = 150
Set_Property(Ctrl, "OLE.DataColumn[":COL$CATEGORY_DESCRIPTION:"]", ColSize)
//Column 6
ColSize<1> = 100
Set_Property(Ctrl, "OLE.DataColumn[":COL$START_USER:"]", ColSize)
//Column 7
ColSize<1> = 40
Set_Property(Ctrl, "OLE.DataColumn[":COL$RL_ID:"]", ColSize)
//Column 8
ColSize<1> = 225
Set_Property(Ctrl, "OLE.DataColumn[":COL$SERVICE_DESCRIPTION:"]", ColSize)
//Column 9
ColSize<1> = 200
ColSize<4> = True$
Set_Property(Ctrl, "OLE.DataColumn[":COL$SERVICE_NOTES:"]", ColSize)
Set_Property(Ctrl, 'OLE.Border', 'XP Flat')
Set_Property(Ctrl, 'OLE.Font', 'Segoe UI' : @SVM : '15')
Set_Property(Ctrl, "OLE.CellProtection[All; All]", 'RO')
// Set rows to resizeable and to expand when selected.
DataRow = Get_Property(Ctrl, "OLE.DataRow[1]")
DataRow<3> = True$
DataRow<4> = False$
DataRow<5> = 160
Set_Property(Ctrl, "OLE.DataRow[All]", DataRow)
Set_Property(Ctrl, 'OLE.Redraw', True$)
return