Compile function NDW_WAFER_COUNTS_EVENTS(CtrlEntId, Event, @PARAMS)
#pragma precomp SRP_PreCompiler
#window NDW_WAFER_COUNTS
Declare function   Reactor_Services, Database_Services, Get_Property, Error_Services, Environment_Services
Declare function   SRP_Array, Logging_Services
Declare subroutine Set_Property, Logging_Services

$Insert EVENT_SETUP
$Insert APP_INSERTS
$Insert REACTOR_EQUATES

EQU DATA_ASM_REACT_ID$ to 1
EQU DATA_ASM_SUSC_CNT$ to 2
EQU DATA_ASM_SUSC_THK$ to 3
EQU DATA_ASM_TUBE_CNT$ to 4
EQU DATA_ASM_TUBE_THK$ to 5
EQU DATA_ASM_ARM_CNT$  to 6

EQU DATA_HTR_REACT_ID$ to 1
EQU DATA_HTR_SUSC_CNT$ TO 2
EQU DATA_HTR_SUSC_THK$ TO 3
EQU DATA_HTR_TUBE_CNT$ TO 4
EQU DATA_HTR_TUBE_THK$ TO 5
EQU DATA_HTR_ARM_CNT$  TO 6

EQU DATA_EPP_REACT_ID$         to 1
EQU DATA_EPP_SUSC_CNT$         TO 2
EQU DATA_EPP_SUSC_THK$         TO 3
EQU DATA_EPP_BELL_JAR_CNT$     TO 4
EQU DATA_EPP_BELL_JAR_THK$     TO 5
EQU DATA_EPP_LOWER_QUARTZ_CNT$ TO 6
EQU DATA_EPP_LOWER_QUARTZ_THK$ TO 7

ASMDataTable = @Window : '.OLE_DATA_ASM'
HTRDataTable = @Window : '.OLE_DATA_HTR'
EPPDataTable = @Window : '.OLE_DATA_EPP'

LogPath         = Environment_Services('GetApplicationRootPath') : '\LogFiles\Reactor'
LogDate         = Oconv(Date(), 'D4/')
LogTime         = Oconv(Time(), 'MTS')
LogFileName     = LogDate[7, 4] : '-' : LogDate[1, 2] : '-' : LogDate[4, 2] : ' Performance Reports.csv'
Headers         = 'Logging DTM' : @FM : 'Error Message'
ColumnWidths    = 20 : @FM : 15 : @FM : 60 : @FM : 300
objLog          = Logging_Services('NewLog', LogPath, LogFileName, CRLF$, ' ', Headers, ColumnWidths, False$, False$)
LoggingDTM      = LogDate : ' ' : LogTime   ; // Logging DTM

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)
    GoSub SetupOLEControls
    GoSub GetReactorMetrics
End Event

Event TABCONTROL_1.CLICK()
    Page = Get_Property(@Window : '.TABCONTROL_1', 'VALUE')
    Set_Property(@WINDOW,'VPOSITION', Page)
end event

Event PUB_REFRESH_DATA.CLICK()
    GoSub GetReactorMetrics
end event

//-----------------------------------------------------------------------------
// Internal GoSubs
//-----------------------------------------------------------------------------

GetReactorMetrics:
    ReactorRec = ''
    ASMData    = ''
    HTRData    = ''
    EPPData    = ''
    
    //Get ASM Reactors
    ASMList  = Reactor_Services('GetReactorNumbers', 'ASM')
    ASMList := @FM : Reactor_Services('GetReactorNumbers', 'ASM+')
    ASMList  = SRP_Array('SortSimpleList', ASMList, 'AscendingNumbers', @FM)
    
    //Get HTR Reactors
    HTRList = Reactor_Services('GetReactorNumbers', 'HTR')
    
    //Get EPP Reactors
    EPPList = Reactor_Services('GetReactorNumbers', 'EPP')
    
    //Get ASM Data, display to ASM data table
    for each Reactor in ASMList using @FM setting rPos
        MetricData                        = Reactor_Services('GetWaferCntMetricsByReactorID', Reactor)
        if Error_Services('NoError') then
            ASMData<rPos, DATA_ASM_REACT_ID$> = MetricData<1, DATA_ASM_REACT_ID$>
            ASMData<rPos, DATA_ASM_SUSC_CNT$> = MetricData<1, DATA_ASM_SUSC_CNT$>
            ASMData<rPos, DATA_ASM_SUSC_THK$> = MetricData<1, DATA_ASM_SUSC_THK$>
            ASMData<rPos, DATA_ASM_TUBE_CNT$> = MetricData<1, DATA_ASM_TUBE_CNT$>
            ASMData<rPos, DATA_ASM_TUBE_THK$> = MetricData<1, DATA_ASM_TUBE_THK$>
            ASMData<rPos, DATA_ASM_ARM_CNT$>  = MetricData<1, DATA_ASM_ARM_CNT$>
        end else
            ErrorMessage = Error_Services('GetMessage')
            LogData      = LoggingDTM : @FM : ErrorMessage
            Logging_Services('AppendLog', objLog, LogData, @RM, @FM, False$) 
        end
    Next reactor
    Set_Property(ASMDataTable, "OLE.LIST", ASMData)
    
    //Get HTR Data, display to HTR data table
    for each Reactor in HTRList using @FM setting rPos
        MetricData                        = Reactor_Services('GetWaferCntMetricsByReactorID', Reactor)
        if Error_Services('NoError') then
            HTRData<rPos, DATA_HTR_REACT_ID$> = MetricData <1, DATA_HTR_REACT_ID$>
            HTRData<rPos, DATA_HTR_SUSC_CNT$> = MetricData<1, DATA_HTR_SUSC_CNT$>
            HTRData<rPos, DATA_HTR_SUSC_THK$> = MetricData<1, DATA_HTR_SUSC_THK$>
            HTRData<rPos, DATA_HTR_TUBE_CNT$> = MetricData<1, DATA_HTR_TUBE_CNT$>
            HTRData<rPos, DATA_HTR_TUBE_THK$> = MetricData<1, DATA_HTR_TUBE_THK$>
            HTRData<rPos, DATA_HTR_ARM_CNT$>  = MetricData<1, DATA_HTR_ARM_CNT$> 
        end else
            ErrorMessage = Error_Services('GetMessage')
            LogData      = LoggingDTM : @FM : ErrorMessage
            Logging_Services('AppendLog', objLog, LogData, @RM, @FM, False$)
        end

    Next reactor
    Set_Property(HTRDataTable, "OLE.LIST", HTRData)
    
    //Get EPP Data, display to EPP data table
    for each Reactor in EPPList using @FM setting rPos
        MetricData                                = Reactor_Services('GetWaferCntMetricsByReactorID', Reactor)
        if Error_Services('NoError') then
            EPPData<rPos, DATA_EPP_REACT_ID$>         = MetricData<1, DATA_EPP_REACT_ID$>
            EPPData<rPos, DATA_EPP_SUSC_CNT$>         = MetricData<1, DATA_EPP_SUSC_CNT$>
            EPPData<rPos, DATA_EPP_SUSC_THK$>         = MetricData<1, DATA_EPP_SUSC_THK$>
            EPPData<rPos, DATA_EPP_BELL_JAR_CNT$>     = MetricData<1, DATA_EPP_BELL_JAR_CNT$>
            EPPData<rPos, DATA_EPP_BELL_JAR_THK$>     = MetricData<1, DATA_EPP_BELL_JAR_THK$>
            EPPData<rPos, DATA_EPP_LOWER_QUARTZ_CNT$> = MetricData<1, DATA_EPP_LOWER_QUARTZ_CNT$>
            EPPData<rPos, DATA_EPP_LOWER_QUARTZ_THK$> = MetricData<1, DATA_EPP_LOWER_QUARTZ_THK$>
        end else
            ErrorMessage = Error_Services('GetMessage')
            LogData      = LoggingDTM : @FM : ErrorMessage
            Logging_Services('AppendLog', objLog, LogData, @RM, @FM, False$)
        end
    Next reactor
    Set_Property(EPPDataTable, "OLE.LIST", EPPData)
    
return

SetupOLEControls:
    
    //Set Row Headers to invisible
    Set_Property(ASMDataTable, "OLE.HeaderColumn[1]", '':@FM:False$)
    Set_Property(HTRDataTable, "OLE.HeaderColumn[1]", '':@FM:False$)
    Set_Property(EPPDataTable, "OLE.HeaderColumn[1]", '':@FM:False$)
    
    //Set Number of columns for each table
    Set_Property(ASMDataTable, "OLE.Dimension", 6);*6 columns for ASM Data Table
    Set_Property(HTRDataTable, "OLE.Dimension", 6);*6 columns for HTR Data Table
    Set_Property(EPPDataTable, "OLE.Dimension", 7);*7 columns for EPP Data Table
    
    //Set size of columns
    ColSizeArray    = ''
    ColSizeArray<1> = 100
    Set_Property(ASMDataTable, "OLE.DataColumn[All]", ColSizeArray)
    Set_Property(HTRDataTable, "OLE.DataColumn[All]", ColSizeArray)
    Set_Property(EPPDataTable, "OLE.DataColumn[All]", ColSizeArray)
    
    //Set ASM Table Col. Headers
    HeaderTitles = 'Reactor#':@VM:'Susc. Wfr. Cnt.':@VM:'Susc. Thk':@VM:'Tube Wfr. Cnt.':@VM:'Tube Wfr. Thk':@VM:'Arm Wfr. Cnt.'
    Set_Property(ASMDataTable, "OLE.TitleList", HeaderTitles)
    
    //Set HTR Table Col. Headers
    HeaderTitles = 'Reactor#':@VM:'Susc. Run Cnt.':@VM:'Susc. Thk':@VM:'Tube Run Cnt.':@VM:'Tube Thk':@VM:'Arm Wfr. Cnt.'
    Set_Property(HTRDataTable, "OLE.TitleList", HeaderTitles)
    
    //Set EPP Table Col. Headers
    HeaderTitles = 'Reactor#':@VM:'Susc. Run Cnt.':@VM:'Susc. Thk':@VM:'Bell Jar Run Cnt.':@VM:'Bell Jar Thk':@VM:'Lower Quartz Run Cnt.':@VM:'Lower Quartz thk.'
    Set_Property(EPPDataTable, "OLE.TitleList", HeaderTitles)
return


