Compile function NDW_5S_EVENTS(CtrlEntId, Event, @PARAMS) #pragma precomp SRP_PreCompiler #window NDW_5S $Insert APP_INSERTS $Insert PM_SPEC_EQUATES $Insert PM_EQUATES $Insert MSG_EQUATES Declare function Get_Property, Pm_Services, obj_PM_Spec, Database_Services, SRP_Array, SRP_Datetime, Msg, Datetime Declare function Memberof Declare subroutine Set_Property, Pm_Services, Start_Window, Obj_Appwindow, PlaceDialog // Columns in OLE Edit Table EQU COL$PM_ID TO 1 EQU COL$DESC TO 2 EQU COL$LAST_PM TO 3 EQU COL$EARLY_START TO 4 EQU COL$SCHED_START TO 5 EQU COL$LATE_START TO 6 EQU COL$ACTION TO 7 // Form colors EQU RED$FIVES TO '5924072' EQU GREEN$FIVES TO '7596927' EQU YELLOW$FIVES TO '9109501' EQU ORANGE$FIVES TO '4168946' // 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) SelectedArea = '' Begin Case Case CreateParam EQ 'CLEANROOM' SelectedArea = 'CLEANROOM' Case CreateParam EQ 'MAINTENANCE' SelectedArea = 'MAINTENANCE' Case CreateParam EQ 'SHIPPING/RECEIVING' SelectedArea = 'SHIPPING/RECEIVING' Case Otherwise$ SelectedArea = 'CLEANROOM' End Case Set_Property(@Window : '.CMB_AREA', 'TEXT', SelectedArea) GoSub Setup_OLE_Controls GoSub SetupForm GoSub GetKeys stat = Set_Property(@WINDOW,'TIMER',10000:@FM:0) PlaceDialog(-2, -2) End Event Event CHK_ARCHIVED.CLICK() GoSub GetKeys end event Event CMB_AREA.CHANGED(NewData) GoSub GetKeys end event Event EDT_5S_TABLE.OnClick(Cell, Point, Button, Shift, Ctrl) EdtTableCtrl = @Window : '.EDT_5S_TABLE' RowClicked = Field(Cell, ';' , 2) SelArray = 1 : @FM : RowClicked Set_Property(@Window: '.EDT_SEL_ROW', "TEXT", RowClicked) Set_Property(@Window : '.PUB_VIEW_SELECTED', 'ENABLED', 1) end event Event EDT_5S_TABLE.OnButtonClick(Cell, Point, Button, Shift, Ctrl) EdtTableCtrl = @Window : '.EDT_5S_TABLE' TableData = Get_Property(EdtTableCtrl, "OLE.ARRAY") TableData = SRP_Array("Rotate", TableData) ColClicked = Field(Cell, ';' , 1) Begin Case Case ColClicked EQ COL$ACTION //Clicked Complete Button RowNoClicked = Field(Cell, ';' , 2) RowData = TableData MsgInfo = '' MsgInfo = -2 MsgInfo = 'BNYC' MsgInfo = -2 MsgInfo = 'Are you sure you wish to mark this 5S task as complete?' Verify = Msg(@Window, MsgInfo) If Verify EQ True$ then PMSID = RowData<1,COL$PM_ID> PMSRec = Database_Services('ReadDataRow', 'PM_SPEC', PMSID) CurrPMId = PMSRec Pm_Services('CompleteNonToolPM', CurrPMId , @User4, Datetime()) If Error_Services('NoError') then MsgInfo = '' MsgInfo = -2 MsgInfo = 'BO' MsgInfo = -2 MsgInfo = 'Task marked as complete!' Msg(@Window, MsgInfo) GoSub GetKeys end else MsgInfo = '' MsgInfo = -2 MsgInfo = 'BO' MsgInfo = -2 MsgInfo = Error_Services('GetMessage') Msg(@Window, MsgInfo) GoSub GetKeys end end else MsgInfo = '' MsgInfo = -2 MsgInfo = 'BO' MsgInfo = -2 MsgInfo = 'Task NOT marked as complete!' Msg(@Window, MsgInfo) GoSub GetKeys end Case ColClicked EQ COL$PM_ID Case Otherwise$ End Case end event Event EDT_5S_TABLE.OnDblClick(Cell, Point, Button, Shift, Ctrl) EdtTableCtrl = @Window : '.EDT_5S_TABLE' TableData = Get_Property(EdtTableCtrl, "OLE.ARRAY") TableData = SRP_Array("Rotate", TableData) ColClicked = Field(Cell, ';' , 1) Begin Case Case ColClicked EQ COL$PM_ID //Clicked PM ID column, bring up PM history for this PM ID RowNoClicked = Field(Cell, ';' , 2) RowData = TableData PMSID = RowData<1,COL$PM_ID> PMSRec = Database_Services('ReadDataRow', 'PM_SPEC', PMSID) CurrPMId = PMSRec Start_Window('NDW_PM_HISTORY', @Window, PMSID) Case Otherwise$ End Case end event Event EDT_5S_TABLE.OnLostFocus() //Set_Property(@Window : '.EDT_SEL_ROW', 'TEXT', ''); *Clear out selected row. //Set_Property(@Window : '.PUB_VIEW_SELECTED', 'ENABLED', 0) end event Event PUB_ADD_NEW_PM_SPEC.CLICK() Start_Window('PM_SPEC', @Window, '') end event Event PUB_VIEW_SELECTED.CLICK() EdtTableCtrl = @Window : '.EDT_5S_TABLE' RowSelected = Get_Property(@Window : '.EDT_SEL_ROW', 'TEXT') TableData = Get_Property(EdtTableCtrl, "OLE.ARRAY") TableData = SRP_Array("Rotate", TableData) SelectedPmsKey = TableData Set_Property(@Window : '.EDT_SEL_ROW', 'TEXT', ''); *Clear out selected row. Set_Property(@Window : '.PUB_VIEW_SELECTED', 'ENABLED', 0) if SelectedPmsKey NE '' then obj_AppWindow('ViewRelated','PM_SPEC':@RM:SelectedPmsKey) end end event Event WINDOW.TIMER() GoSub GetKeys end event //----------------------------------------------------------------------------- // INTERNAL GOSUBS //----------------------------------------------------------------------------- GetKeys: ShowArchived = Get_Property(@Window : '.CHK_ARCHIVED', 'CHECK') SelectedArea = Get_Property(@Window : '.CMB_AREA', 'TEXT') FiveSPMKeys = Pm_Services('Get5SPMs', ShowArchived, SelectedArea) FormatData: TableData = '' For each PMKey in FiveSPMKeys using @VM setting tPos //Record for the PM Specification PMSpecRecord = Database_Services('ReadDataRow', 'PM_SPEC', PMKey) //Record for the currently scheduled PM for the specificed PM Spec. CurrPMKey = PMSpecRecord CurrPMRecord = Database_Services('ReadDataRow', 'PM', CurrPMKey) CurrPMDesc = PMSpecRecord CurrPMLastPM = OConv(PMSpecRecord, 'DT') //Sched Calculation CurrPMSchedDT = CurrPMRecord CurrPMSchedTM = CurrPMRecord SchedStarts = obj_PM_Spec('SchedStart',PMKey:@RM:PMSpecRecord) EarlyStarts = obj_PM_Spec('EarlyStart',PMKey:@RM:PMSpecRecord) LateStarts = obj_PM_Spec('LateStart',PMKey:@RM:PMSpecRecord) TableData = PMKey TableData = CurrPMDesc TableData = CurrPMLastPM TableData = EarlyStarts TableData = SchedStarts TableData = LateStarts Next PMKey PopulateTable: EdtTableCtrl = @Window : '.EDT_5S_TABLE' TableData = SRP_Array("Rotate", TableData) Set_Property(EdtTableCtrl, "OLE.ARRAY", TableData) //Set last column in row to a PUB Set_Property(EdtTableCtrl, "OLE.CellType[7; ALL]", "Push Button") Set_Property(EdtTableCtrl, "OLE.CellText[7; ALL]", "Click To Complete") Set_Property(EdtTableCtrl, "OLE.CellImage[7; ALL]", 1) //Get All Cell Settings ColumnSettings = Get_Property(EdtTableCtrl, "OLE.CellType[3; ALL]") ColumnSettings<2,3> = 0; *Turns off data from cell 7 of each row. Set_Property(EdtTableCtrl, "OLE.CellType[7; ALL]", ColumnSettings) ColorCodeRows: //Here we color code all the rows based on whether they're not due, due, or overdue. TableData = Get_Property(EdtTableCtrl, "OLE.ARRAY") TableData = SRP_Array('Rotate', TableData) CurrDTM = SRP_Datetime('Now') for each DataRow in TableData using @FM setting dPos EarlyStart = '' SchedStart = '' LateStart = '' PMSpecID = DataRow<1,COL$PM_ID> Units = XLATE('PM_SPEC', PMSpecID, PM_SPEC_UNITS$, 'X') Begin Case Case Units EQ 'D' EarlyStart = ICONV(DataRow<1, COL$EARLY_START>, 'D') SchedStart = ICONV(DataRow<1, COL$SCHED_START>, 'D') LateStart = ICONV(DataRow<1, COL$LATE_START>, 'D') Case Units EQ 'T' EarlyStart = ICONV(DataRow<1, COL$EARLY_START>, 'DT') SchedStart = ICONV(DataRow<1, COL$SCHED_START>, 'DT') LateStart = ICONV(DataRow<1, COL$LATE_START>, 'DT') End Case Begin Case Case CurrDTM LT EarlyStart //Not Due Yet LineColor = GREEN$FIVES Case CurrDTM GT EarlyStart AND CurrDTM LT SchedStart //Within the early start window LineColor = YELLOW$FIVES Case CurrDTM GT SchedStart AND CurrDTM LT LateStart //Due LineColor = ORANGE$FIVES Case CurrDTM GT LateStart //Past Due LineColor = RED$FIVES Case 1 LineColor = WHITE$ End Case RowSettings = Get_Property(EdtTableCtrl, "OLE.CellColors[1; ":dPos:"]") RowSettings<2> = LineColor Set_Property(EdtTableCtrl, "OLE.CellColors[ALL; ":dPos:"]", RowSettings) Next DataRow return SetupForm: If NOT(Memberof(@User4, 'SUPERVISOR')) then Set_Property(@Window : '.PUB_ADD_NEW_PM_SPEC', 'VISIBLE', 0) Set_Property(@Window : '.PUB_VIEW_SELECTED', 'VISIBLE', 0) end Set_Property(@Window : '.PUB_VIEW_SELECTED', 'ENABLED', 0) return Setup_OLE_Controls: EdtTableCtrl = @Window : '.EDT_5S_TABLE' //Row Selection Settings RowSelArray = Get_Property(EdtTableCtrl, "OLE.SelectionStyle") RowSelArray<7> = 'Header' RowSelArray<8> = True$;*Always show row selection Set_Property(EdtTableCtrl, "OLE.SelectionStyle", RowSelArray) Set_Property(EdtTableCtrl, 'OLE.Redraw', False$) //Set up columns Set_Property(EdtTableCtrl, "OLE.Dimension", 7);*Define number of columns HeaderTitles = 'PM ID':@VM:'Desc':@VM:'Last PM':@VM:'Early Start':@VM:'Sched Start':@VM:'Late Start':@VM:'Action'; *Define the column header titles Set_Property(EdtTableCtrl, "OLE.TitleList", HeaderTitles); *Set the column titles //Set the column Sizes ColSize = Get_Property(EdtTableCtrl, "OLE.DataColumn[1]") //Column 1 ColSize<1> = 45 Set_Property(EdtTableCtrl, "OLE.DataColumn[":COL$PM_ID:"]", ColSize) //Column 2 ColSize<1> = 160 //ColSize<4> = True$ Set_Property(EdtTableCtrl, "OLE.DataColumn[":COL$DESC:"]", ColSize) //Set_Property(Ctrl, "OLE.DataColumn[":COL$ELAP_HRS:"]", ColSize) //Column 3 ColSize<1> = 110 Set_Property(EdtTableCtrl, "OLE.DataColumn[":COL$LAST_PM:"]", ColSize) //Column 4 ColSize<1> = 110 Set_Property(EdtTableCtrl, "OLE.DataColumn[":COL$EARLY_START:"]", ColSize) //Column 5 ColSize<1> = 110 Set_Property(EdtTableCtrl, "OLE.DataColumn[":COL$SCHED_START:"]", ColSize) //Column 6 ColSize<1> = 110 Set_Property(EdtTableCtrl, "OLE.DataColumn[":COL$LATE_START:"]", ColSize) //Column 7 ColSize<1> = 110 Set_Property(EdtTableCtrl, "OLE.DataColumn[":COL$ACTION:"]", ColSize) Set_Property(EdtTableCtrl, 'OLE.Border', 'XP Flat') Set_Property(EdtTableCtrl, 'OLE.Font', 'Segoe UI' : @SVM : '15') Set_Property(EdtTableCtrl, "OLE.CellProtection[All; All]", 'RO') Set_Property(EdtTableCtrl, 'OLE.Redraw', True$) // Qualify OLE events that we want to intercept Qualifier = '' Qualifier<1> = 1 Qualifier<4> = 0 ; * process synchronously (i.e. immediately) Send_Message(EdtTableCtrl, 'QUALIFY_EVENT', 'OLE.OnClick', Qualifier) Send_Message(EdtTableCtrl, 'QUALIFY_EVENT', 'OLE.OnButtonClick', Qualifier) Send_Message(EdtTableCtrl, 'QUALIFY_EVENT', 'OLE.OnDblClick', Qualifier) Send_Message(EdtTableCtrl, 'QUALIFY_EVENT', 'OLE.OnLostFocus', Qualifier) return