added LSL2 stored procedures
This commit is contained in:
285
LSL2/STPROC/NDW_TEST_RUN_EVENTS.txt
Normal file
285
LSL2/STPROC/NDW_TEST_RUN_EVENTS.txt
Normal file
@ -0,0 +1,285 @@
|
||||
Compile function NDW_TEST_RUN_EVENTS(CtrlEntId, Event, @PARAMS)
|
||||
#pragma precomp SRP_PreCompiler
|
||||
#window NDW_TEST_RUN
|
||||
|
||||
Declare function Get_Property, Test_Run_Services, Database_Services, Reactor_Services, Tool_Services, Test_Run_Services
|
||||
Declare subroutine Set_Property, Test_Run_Services
|
||||
|
||||
$Insert RDS_EQUATES
|
||||
$Insert TEST_RUN_TYPE_EQUATES
|
||||
$Insert APP_INSERTS
|
||||
$Insert LOGICAL
|
||||
|
||||
TWTableOLECtrl = @Window : '.OLE_TW_USAGE_TABLE'
|
||||
|
||||
// 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)
|
||||
GoSub SetupOLEControls
|
||||
GoSub FillFormMasterData
|
||||
EventFlow = 1
|
||||
//push
|
||||
End Event
|
||||
|
||||
Event EDL_RDS.CHANGED(NewData)
|
||||
RDSNo = NewData
|
||||
If Len(RDSNo) GE 6 then
|
||||
If RowExists('RDS', RDSNo) then
|
||||
RDSRec = Database_Services('ReadDataRow', 'RDS', RDSNo)
|
||||
PSN = RDSRec<RDS_PROD_SPEC_ID$>
|
||||
ReactorNo = RDSRec<RDS_REACTOR$>
|
||||
If PSN NE '' then
|
||||
Set_Property(@Window : '.EDL_PSN', 'TEXT', PSN)
|
||||
Set_Property(@Window : '.EDL_PSN', 'ENABLED', -1)
|
||||
end
|
||||
If ReactorNo NE '' then
|
||||
Set_Property(@Window : '.CMB_EQUIP_TYPE', 'VALUE', 'Reactor')
|
||||
Set_Property(@Window : '.CMB_EQUIP_TYPE', 'ENABLED', -1)
|
||||
Set_Property(@Window : '.CMB_EQUIPMENT_ID', 'TEXT', ReactorNo)
|
||||
Set_Property(@Window : '.CMB_EQUIPMENT_ID', 'ENABLED', -1)
|
||||
end
|
||||
end
|
||||
end else
|
||||
Set_Property(@Window : '.EDL_PSN', 'TEXT', '')
|
||||
Set_Property(@Window : '.EDL_PSN', 'ENABLED', True$)
|
||||
Set_Property(@Window : '.CMB_EQUIPMENT_ID', 'TEXT', '')
|
||||
Set_Property(@Window : '.CMB_EQUIPMENT_ID', 'ENABLED', True$)
|
||||
Set_Property(@Window : '.CMB_EQUIP_TYPE', 'ENABLED', True$)
|
||||
end
|
||||
|
||||
end event
|
||||
|
||||
Event CMB_EQUIP_TYPE.CHANGED(Selection)
|
||||
Begin Case
|
||||
Case Selection EQ 'Reactor'
|
||||
EqpOpts = Get_Property(@Window , '@REACTOR_OPTS', 'TEXT')
|
||||
Case Selection EQ 'Non-Reactor'
|
||||
EqpOpts = Get_Property(@Window , '@NON_REACTOR_OPTS', 'TEXT')
|
||||
Case 0
|
||||
EqpOpts = Get_Property(@Window , '@REACTOR_OPTS', 'TEXT')
|
||||
End Case
|
||||
Set_Property(@Window : '.CMB_EQUIPMENT_ID', 'LIST', EqpOpts)
|
||||
end event
|
||||
|
||||
Event PUB_ADD_ROW.CLICK()
|
||||
Index = Send_Message(TWTableOLECtrl, "OLE.InsertRecords", -1, 1)
|
||||
end event
|
||||
|
||||
Event PUB_DELETE_ROW.CLICK()
|
||||
//Get currently selected Row
|
||||
SelectedCell = Get_Property(TWTableOLECtrl, 'OLE.SelPos')
|
||||
If SelectedCell then
|
||||
SelectedRow = SelectedCell<2>
|
||||
rv = Send_Message(TWTableOLECtrl, "OLE.DeleteRecords", SelectedRow, 1)
|
||||
end
|
||||
end event
|
||||
|
||||
Event PUB_SUBMIT.CLICK()
|
||||
NotReadyReason = ''
|
||||
//Gather all field information
|
||||
ReasonForTest = Get_Property(@Window : '.CMB_TEST_TYPE', 'TEXT')
|
||||
RelatedRDS = Get_Property(@Window : '.EDL_RDS', 'TEXT')
|
||||
RelatedPSN = Get_Property(@Window : '.EDL_PSN', 'TEXT')
|
||||
EquipmentType = Get_Property(@Window : '.CMB_EQUIP_TYPE', 'TEXT')
|
||||
EquipmentID = Get_Property(@Window : '.CMB_EQUIPMENT_ID', 'TEXT')
|
||||
|
||||
//Translate selection to IDs. Get Run Type ID
|
||||
SelRunTypeID = '';*Test Run Obj variable
|
||||
RunTypeOpts = Get_Property(@Window, '@RUN_TYPE_OPTS')
|
||||
Locate ReasonForTest in RunTypeOpts<2> using @VM setting rPos then
|
||||
SelRunTypeID = RunTypeOpts<1, rPos>
|
||||
end else
|
||||
NotReadyReason := 'Must select a valid run type reason.' : CRLF$
|
||||
end
|
||||
|
||||
//Translate Equipment Type. R for Reactor, T for non-reactor
|
||||
SelEquipType = '';*Test Run Obj variable
|
||||
Begin Case
|
||||
Case EquipmentType EQ 'Reactor'
|
||||
SelEquipType = 'R'
|
||||
Case EquipmentType EQ 'Non-Reactor'
|
||||
SelEquipType = 'T'
|
||||
End Case
|
||||
|
||||
//Get Test wafer usage data from table
|
||||
TWProdOpts = Get_Property(@Window, '@TW_PROD_OPTS')
|
||||
TWUsageData = Get_Property(TWTableOLECtrl, 'OLE.RecordData[All]')
|
||||
ProdUsages = ''
|
||||
for each TWRow in TWUsageData using @FM
|
||||
ProdID = ''
|
||||
Quantity = TWRow<1,2>
|
||||
ProdName = TWRow<1,1>
|
||||
Locate ProdName in TWProdOpts<2> setting tPos then
|
||||
ProdID = TWProdOpts<1, tPos>
|
||||
ProdUsages<-1> = ProdID : @VM : Quantity
|
||||
end else
|
||||
NotReadyReason := 'Invalid Product ID ' : ProdName : ' selected.' : CRLF$
|
||||
end
|
||||
Next TWRow
|
||||
|
||||
If NotReadyReason EQ '' then
|
||||
NewTWRunKey = Test_Run_Services('CreateTestRunRecord', SelRunTypeID, SelEquipType, EquipmentID, RelatedPSN, RelatedRDS, @User4)
|
||||
If Error_Services('NoError') AND RowExists('TEST_RUN', NewTWRunKey) then
|
||||
for each Prod in ProdUsages using @FM setting pPos
|
||||
for i = 1 to Prod<1,2>
|
||||
TWPartID = Prod<1,1>
|
||||
TRWaferKey = Test_Run_Services('CreateTestRunWaferRecord', NewTWRunKey, TWPartID)
|
||||
If RowExists('TEST_RUN_WAFER', TRWaferKey) then
|
||||
//Do Nothing for now.
|
||||
end else
|
||||
msg(@Window, 'Error writing Test Run data! Please try again or contact FI for support.')
|
||||
end
|
||||
Next i
|
||||
Next Prod
|
||||
If Error_Services('NoError') then
|
||||
Msg(@Window, 'Test Run Created Successfully!')
|
||||
Post_Event(@Window, 'CLOSE')
|
||||
end
|
||||
end else
|
||||
msg(@Window, 'Error writing Test Run data! Please try again or contact FI for support.')
|
||||
end
|
||||
end else
|
||||
Msg(@Window, NotReadyReason)
|
||||
end
|
||||
end event
|
||||
|
||||
Event PUB_CANCEL.CLICK()
|
||||
Post_Event(@Window, 'CLOSE')
|
||||
end event
|
||||
|
||||
////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////
|
||||
// Internal GoSubs
|
||||
////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////
|
||||
|
||||
ClearFormData:
|
||||
Set_Property(@Window : '.CMB_TEST_TYPE', 'TEXT', '')
|
||||
Set_Property(@Window : '.EDL_RDS', 'TEXT', '')
|
||||
Set_Property(@Window : '.EDL_PSN', 'TEXT', '')
|
||||
Set_Property(@Window : '.CMB_EQUIP_TYPE', 'TEXT', 'Reactor')
|
||||
Set_Property(@Window : '.CMB_EQUIPMENT_ID', 'TEXT', '')
|
||||
Set_Property(TWTableOLECtrl, 'OLE.RecordData[All]', '')
|
||||
return
|
||||
|
||||
FillFormMasterData:
|
||||
//Get Test run type options. Populate to CMB_TEST_TYPE
|
||||
TestRunTypeList = Test_Run_Services('GetAllTestRunTypes')
|
||||
Set_Property(@Window, '@RUN_TYPE_OPTS', TestRunTypeList)
|
||||
TestRunTypeOpts = ''
|
||||
for each TestRunID in TestRunTypeList<1> using @VM setting tPos
|
||||
TestRunName = TestRunTypeList<2, tPos>
|
||||
TestRunTypeOpts<-1> = TestRunName
|
||||
Next TestRunID
|
||||
Set_Property(@Window : '.CMB_TEST_TYPE', 'LIST', TestRunTypeOpts)
|
||||
|
||||
//Get Tool and Reactor Identifiers and buffer them in user defined window properties @REACTOR_OPTS and @NON_REACTOR_OPTS
|
||||
//Reactors
|
||||
ReactorOpts = Reactor_Services('GetReactorNumbers')
|
||||
Set_Property(@Window : '.EDT_REACTORS', 'TEXT', ReactorOpts)
|
||||
Set_Property(@Window, '@REACTOR_OPTS', ReactorOpts)
|
||||
|
||||
//Non Reactors
|
||||
NonReactorOpts = Tool_Services('GetAllTools')
|
||||
swap @VM with @FM in NonReactorOpts
|
||||
Set_Property(@Window : '.EDT_NON_REACTORS', 'TEXT', NonReactorOpts)
|
||||
Set_Property(@Window, '@NON_REACTOR_OPTS', NonReactorOpts)
|
||||
//Then set the inital combo list to be filled with reactors because that is the default.
|
||||
Set_Property(@Window : '.CMB_EQUIPMENT_ID', 'LIST', ReactorOpts)
|
||||
//Get TW Products and store them in user defined window property @TW_PROD_OPTS
|
||||
Prods = Test_Run_Services('GetAllTWProdKeys', 1)
|
||||
Set_Property(@Window, '@TW_PROD_OPTS', Prods)
|
||||
|
||||
//Add Product options to the OLE_TW_USAGE_TABLE
|
||||
ProdOpts = Prods<2>
|
||||
swap @VM with @STM in ProdOpts
|
||||
TWProdOpts<1> = 'COB'
|
||||
Set_Property(TWTableOLECtrl, "OLE.CellType[1; ALL]", ProdOpts)
|
||||
TypeData = ''
|
||||
TypeData<1> = "Combo"
|
||||
TypeData<2, 1> = 'Prod Name'
|
||||
TypeData<2, 2> = "L"
|
||||
TypeData<2, 3> = ProdOpts
|
||||
TypeData<2, 4> = 1 ;// column 2 contains the values we care about
|
||||
TypeData<2, 5> = 1 ;// auto fill on
|
||||
TypeData<2, 6> = 0 ;// case sensitive off
|
||||
TypeData<2, 7> = 10 ;// 10 visible rows max
|
||||
TypeData<2, 8> = 0 ;// Don't fire the OnOptionClick
|
||||
TypeData<2, 9> = 1 ;// Reduce the list to partial matches
|
||||
TypeData<2, 10> = 0 ;// Only show the drop down when the user types
|
||||
TypeData<2, 11> = 0 ;// Do not use LIST Format
|
||||
TypeData<2, 12> = 1 ;// Autofill on first names
|
||||
TypeData<2, 13> = 1 ;// Hide dropdown when user clears cell
|
||||
TypeData<2, 14> = 0 ;// Let navigation keys show the drop down
|
||||
TypeData<2, 15> = 0 ;// Show the drop down regardless of the cell's contents
|
||||
TypeData<2, 16> = 0 ;// Show the drop down during autofill
|
||||
TypeData<2, 17> = 1 ;// Remove selection when user backspaces/deletes
|
||||
TypeData<2, 18> = 0 ;// Show Popup while in read only mode
|
||||
TypeData<2, 19> = 1 ;// Show Popup When Navigating
|
||||
TypeData<2, 20> = 1 ;// Always Tab Out on Enter
|
||||
TypeData<2, 21> = -1 ;// Always show the dropdown above when close to the screen bottom
|
||||
|
||||
Set_Property(TWTableOLECtrl, "OLE.CellType[1; All]", TypeData)
|
||||
|
||||
return
|
||||
|
||||
SetupOLEControls:
|
||||
Set_Property(TWTableOLECtrl, "OLE.AllowInserts", 0)
|
||||
Set_Property(TWTableOLECtrl, "OLE.BlankRowManagement", 1:@FM:0)
|
||||
Set_Property(TWTableOLECtrl, "OLE.Dimension", 2);*Define number of columns
|
||||
//Set Column width of tw prod column
|
||||
ColSizeArray = ''
|
||||
ColSizeArray<1> = 150
|
||||
Set_Property(TWTableOLECtrl, "OLE.DataColumn[All]", ColSizeArray)
|
||||
|
||||
//Set Column Header Titles
|
||||
HeaderTitles = 'Test Wafer Prod':@VM:'Quantity'; *Define the column header titles
|
||||
Set_Property(TWTableOLECtrl, "OLE.TitleList", HeaderTitles); *Set the column titles
|
||||
|
||||
//Sets column header to be invisible
|
||||
Set_Property(TWTableOLECtrl, "OLE.HeaderColumn[1]", '':@FM:False$)
|
||||
//Set first field as a dropdown
|
||||
TWProdOpts = Get_Property(TWTableOLECtrl, "OLE.CellType[1; ALL]")
|
||||
|
||||
//Cell Default coloring
|
||||
CellColors = ""
|
||||
CellColors<4> = 'LightCyan'
|
||||
Set_Property(TWTableOLECtrl, "OLE.CellSelColors[All; All]", CellColors)
|
||||
|
||||
//Selection Properties
|
||||
SelArray = ''
|
||||
SelArray<8> = True$
|
||||
Set_Property(TWTableOLECtrl, "OLE.SelectionStyle", SelArray)
|
||||
//Maintains SelPos on lostfocus
|
||||
Set_Property(TWTableOLECtrl, 'OLE.Redraw', False$)
|
||||
Set_Property(TWTableOLECtrl, "OLE.ResetSelPos", False$)
|
||||
|
||||
//Qualify OLE Events
|
||||
Qualifier = ''
|
||||
Qualifier<1> = 1
|
||||
Qualifier<4> = 0 ; * process synchronously (i.e. immediately)
|
||||
Send_Message(TWTableOLECtrl, 'QUALIFY_EVENT', 'OLE.OnLostFocus', Qualifier)
|
||||
return
|
||||
|
||||
|
||||
|
||||
|
Reference in New Issue
Block a user