added LSL2 stored procedures
This commit is contained in:
393
LSL2/STPROC/NDW_EDIT_MODE_CHANGE_HIST_EVENTS.txt
Normal file
393
LSL2/STPROC/NDW_EDIT_MODE_CHANGE_HIST_EVENTS.txt
Normal file
@ -0,0 +1,393 @@
|
||||
Compile function NDW_EDIT_MODE_CHANGE_HIST_EVENTS(CtrlEntId, Event, @PARAMS)
|
||||
/***********************************************************************************************************************
|
||||
|
||||
Name : NDW_EDIT_MODE_CHANGE_HIST_EVENTS
|
||||
|
||||
Description : Commuter module for the NDW_EDIT_MODE_CHANGE_HIST form.
|
||||
|
||||
Notes : Application errors should be logged using the Error Services module. There are a few methodological
|
||||
assumptions built into way errors are managed which are important to understand in order to properly
|
||||
work with Error Services:
|
||||
|
||||
- The term 'top' refers to the originating procedure of a call stack and the term 'bottom' refers to
|
||||
the last routine (or the current routine) within a call stack. Within the OpenInsight Debugger
|
||||
this will appear backwards since the originating procedure always appears at the bottom of the
|
||||
list and the current routine appears at the top of the list. We are using this orientation because
|
||||
it is common to refer to the process of calling other procedures as 'drilling down'.
|
||||
|
||||
- The reason for defining the orientation of the call stack is because Error_Services allows for
|
||||
multiple error conditions to be appended to an original error. In most cases this will happen when
|
||||
a procedure at the bottom of the stack generates an error condition and then returns to its
|
||||
calling procedure. This higher level procedure can optionally add more information relevant to
|
||||
itself. This continues as the call stack 'bubbles' its way back to the top to where the
|
||||
originating procedure is waiting.
|
||||
|
||||
- Native OpenInsight commands that handle errors (e.g., Set_Status, Set_FSError, Set_EventStatus)
|
||||
preserve their error state until explicitly cleared. This can hinder the normal execution of code
|
||||
since subsequent procedures (usually SSPs) will fail if a pre-existing error condition exists.
|
||||
Our philosophy is that error conditions should automatically be cleared before a new procedure
|
||||
is executed to avoid this problem. However, the nature of Basic+ does not make this easy to
|
||||
automate for any given stored procedure. Therefore, if a stored procedure wants to conform to our
|
||||
philosophy then it should include a call into the 'Clear' service request at the top of the
|
||||
program. Alternatively this can be done through a common insert (see SERVICE_SETUP for example.)
|
||||
|
||||
- Service modules will use the SERVICE_SETUP insert and therefore automatically clear out any
|
||||
error conditions that were set before.
|
||||
|
||||
Parameters :
|
||||
Service [in] -- Name of the service being requested
|
||||
Param1-10 [in/out] -- Additional request parameter holders
|
||||
Response [out] -- Response to be sent back to the Controller (MCP) or requesting procedure
|
||||
|
||||
Metadata :
|
||||
|
||||
History : (Date, Initials, Notes)
|
||||
12/07/20 djs Original programmer.
|
||||
|
||||
***********************************************************************************************************************/
|
||||
#pragma precomp SRP_PreCompiler
|
||||
#window NDW_EDIT_MODE_CHANGE_HIST
|
||||
|
||||
$Insert EVENT_SETUP
|
||||
$Insert APP_INSERTS
|
||||
$Insert POPUP_EQUATES
|
||||
$Insert MSG_EQUATES
|
||||
$Insert REACT_MODE_EQUATES
|
||||
|
||||
Common /NDW_EDIT_MODE_CHANGE_HIST/ OrigHistoryList@, ReactorModeCodes@, ReactorModeDescs@, OrigFormHeight@
|
||||
|
||||
Equ COL$START_DTM to 1
|
||||
Equ COL$ELAP_HRS to 2
|
||||
Equ COL$MODE to 3
|
||||
Equ COL$NOTES to 4
|
||||
Equ COL$RL_ID to 5
|
||||
Equ COL$PROBLEM_CATEGORY to 6
|
||||
Equ COL$SERVICE_DESCRIPTION to 7
|
||||
Equ COL$START_USER to 8
|
||||
|
||||
Declare subroutine End_Window, Set_Property, Database_Services
|
||||
Declare function Reactor_Services, SRP_Array, Database_Services
|
||||
|
||||
// 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 = CreateParam
|
||||
Set_Property(@Window:'.EDL_REACTOR', 'TEXT', ReactNo)
|
||||
TypeOver = ''
|
||||
TypeOver<MCAPTION$> = 'Admin Reactor Mode History'
|
||||
DaysToReport = Msg(@Window, TypeOver, 'REPORT_DAYS')
|
||||
If ( (DaysToReport NE '') and Num(DaysToReport) ) then
|
||||
Set_Property(@Window:'.EDL_DAYS_TO_REPORT', 'TEXT', DaysToReport)
|
||||
FormSize = Get_Property(@Window, 'SIZE')
|
||||
OrigFormHeight@ = FormSize<4>
|
||||
GoSub Setup_OLE_Controls
|
||||
GoSub EnableGetHistoryButton
|
||||
GoSub FillModeChgEDT
|
||||
GoSub EnableSaveButton
|
||||
SRP_Show_Window(@Window, '', 'C', 'C', 1, '', False$, False$, '', 1)
|
||||
end else
|
||||
End_Window(@Window)
|
||||
end
|
||||
|
||||
End Event
|
||||
|
||||
|
||||
Event PUB_CANCEL.CLICK()
|
||||
|
||||
End_Window(@Window)
|
||||
|
||||
end event
|
||||
|
||||
|
||||
Event PUB_SAVE.CLICK()
|
||||
|
||||
GoSub SaveData
|
||||
|
||||
end event
|
||||
|
||||
|
||||
Event OLE_EDT_MODE_CHG.OnComboClicked(Cell, SelPos, Value)
|
||||
|
||||
CurrHistoryList = Get_Property(@Window:'.OLE_EDT_MODE_CHG', "OLE.LIST")
|
||||
Col = Field(Cell, ';', 1)
|
||||
Row = Field(Cell, ';', 2)
|
||||
CurrHistoryList<Row, Col> = Value
|
||||
Set_Property(@Window:'.OLE_EDT_MODE_CHG', "OLE.LIST", CurrHistoryList)
|
||||
GoSub EnableSaveButton
|
||||
GoSub ColorRows
|
||||
|
||||
end event
|
||||
|
||||
|
||||
Event PUB_GET_HISTORY.CLICK()
|
||||
|
||||
GoSub FillModeChgEDT
|
||||
GoSub EnableSaveButton
|
||||
|
||||
end event
|
||||
|
||||
|
||||
Event EDL_REACTOR.LOSTFOCUS(Flag, FocusID)
|
||||
|
||||
GoSub EnableGetHistoryButton
|
||||
|
||||
end event
|
||||
|
||||
|
||||
Event EDL_DAYS_TO_REPORT.LOSTFOCUS(Flag, FocusID)
|
||||
|
||||
GoSub EnableGetHistoryButton
|
||||
|
||||
end event
|
||||
|
||||
|
||||
Event EDL_REACTOR.CHAR(VirtCode, ScanCode, CtrlKey, ShiftKey, AltKey)
|
||||
|
||||
GoSub EnableGetHistoryButton
|
||||
|
||||
end event
|
||||
|
||||
|
||||
Event EDL_DAYS_TO_REPORT.CHAR(VirtCode, ScanCode, CtrlKey, ShiftKey, AltKey)
|
||||
|
||||
GoSub EnableGetHistoryButton
|
||||
|
||||
end event
|
||||
|
||||
|
||||
////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////
|
||||
// Internal GoSubs
|
||||
////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////
|
||||
|
||||
Setup_OLE_Controls:
|
||||
|
||||
ModeChgCtrl = @Window:'.OLE_EDT_MODE_CHG'
|
||||
|
||||
HeaderTitles = 'Start DTM':@VM:'Elap Hrs':@VM:'Mode':@VM:'Notes':@VM:'RL ID':@VM:'Problem Category':@VM
|
||||
HeaderTitles := 'Service Description':@VM:'Start User'
|
||||
|
||||
NumCols = DCount(HeaderTitles, @VM)
|
||||
NumRows = 50
|
||||
DimArray = NumCols:@FM:NumRows
|
||||
HeaderFontArray = 'Segoe UI':@SVM:8:@SVM:700
|
||||
|
||||
HeaderColArray = Get_Property(ModeChgCtrl, "OLE.HeaderColumn[1]")
|
||||
HeaderColArray<2> = False$
|
||||
Set_Property(ModeChgCtrl, "OLE.HeaderColumn[1]", HeaderColArray)
|
||||
Set_Property(ModeChgCtrl, "OLE.CellFont[All; All]", 'Segoe UI':@SVM:8)
|
||||
Set_Property(ModeChgCtrl, "OLE.Dimension", DimArray)
|
||||
Set_Property(ModeChgCtrl, "OLE.HeaderFont[All; 1]", HeaderFontArray)
|
||||
Set_Property(ModeChgCtrl, "OLE.HeaderFont[1; All]", HeaderFontArray)
|
||||
|
||||
Set_Property(ModeChgCtrl, "OLE.TitleList", HeaderTitles)
|
||||
Set_Property(ModeChgCtrl, "OLE.HeaderAlignment[All; 1]", 'C':@FM:'C':@FM:'L')
|
||||
Set_Property(ModeChgCtrl, "OLE.CellAlignment[":COL$START_DTM:"; All]", 'C':@FM:'L':@FM:'L')
|
||||
Set_Property(ModeChgCtrl, "OLE.CellAlignment[":COL$ELAP_HRS:"; All]", 'C':@FM:'R':@FM:'L')
|
||||
Set_Property(ModeChgCtrl, "OLE.CellAlignment[":COL$MODE:"-":COL$NOTES:"; All]", 'C':@FM:'L':@FM:'L')
|
||||
Set_Property(ModeChgCtrl, "OLE.CellAlignment[":COL$RL_ID:"; All]", 'C':@FM:'C':@FM:'L')
|
||||
Set_Property(ModeChgCtrl, "OLE.CellAlignment[":COL$PROBLEM_CATEGORY:"-":COL$START_USER:"; All]", 'C':@FM:'L':@FM:'L')
|
||||
Set_Property(ModeChgCtrl, "OLE.CellProtection[All; All]", 'SEL')
|
||||
Set_Property(ModeChgCtrl, "OLE.CellProtection[":COL$MODE:"; All]", 'None')
|
||||
Set_Property(ModeChgCtrl, "OLE.AllowDeletions", False$)
|
||||
Set_Property(ModeChgCtrl, "OLE.AllowInserts", False$)
|
||||
|
||||
// Qualify OLE events that we want to intercept
|
||||
Qualifier = ''
|
||||
Qualifier<1> = 1
|
||||
Qualifier<4> = 0 ; * process synchronously (i.e. immediately)
|
||||
Send_Message(ModeChgCtrl, 'QUALIFY_EVENT', 'OLE.OnComboClicked', Qualifier)
|
||||
|
||||
ReactorModeList = Xlate('SYSREPOSPOPUPS', @APPID<1>:'**':'REACTOR_MODE', PDISPLAY$, 'X')
|
||||
Convert @VM to @FM in ReactorModeList
|
||||
Convert @SVM to @VM in ReactorModeList
|
||||
ReactorModeList = SRP_Array('Rotate', ReactorModeList, @FM, @VM)
|
||||
ReactorModeCodes@ = ReactorModeList<1>
|
||||
ReactorModeDescs@ = ReactorModeList<2>
|
||||
ComboBoxList = ReactorModeDescs@
|
||||
Convert @VM to @STM in ComboBoxList
|
||||
|
||||
// Setup Tool ID and Wafer status/action combo boxes
|
||||
CellTypeArray = ""
|
||||
CellTypeArray<1> = "Combo"
|
||||
CellTypeArray<2, 1> = ''
|
||||
CellTypeArray<2, 2> = "L"
|
||||
CellTypeArray<2, 3> = ComboBoxList
|
||||
CellTypeArray<2, 4> = 1 ;// Column 1 contains the values we care about
|
||||
CellTypeArray<2, 5> = 1 ;// Auto fill on
|
||||
CellTypeArray<2, 6> = 0 ;// Case sensitive on
|
||||
CellTypeArray<2, 7> = 10 ;// 10 visible rows max
|
||||
CellTypeArray<2, 8> = 0 ;// Don't fire the OnOptionClick
|
||||
CellTypeArray<2, 9> = 1 ;// Reduce the list to partial matches
|
||||
CellTypeArray<2, 10> = 0 ;// Only show the drop down when the user types
|
||||
CellTypeArray<2, 11> = 0 ;// Do not use LIST Format
|
||||
CellTypeArray<2, 12> = 1 ;// Autofill on Tool ID name
|
||||
CellTypeArray<2, 13> = 1 ;// Hide dropdown when user clears cell
|
||||
CellTypeArray<2, 14> = 0 ;// Let navigation keys show the drop down
|
||||
CellTypeArray<2, 15> = 0 ;// Show the drop down regardless of the cell's contents
|
||||
CellTypeArray<2, 16> = 0 ;// Show the drop down during autofill
|
||||
CellTypeArray<2, 17> = 1 ;// Remove selection when user backspaces/deletes
|
||||
CellTypeArray<2, 18> = 0 ;// Show Popup while in read only mode
|
||||
CellTypeArray<2, 19> = 1 ;// Show Popup When Navigating
|
||||
CellTypeArray<2, 20> = 1 ;// Always Tab Out on Enter
|
||||
CellTypeArray<2, 21> = -1 ;// Always show the dropdown above when close to the screen bottom
|
||||
CellTypeArray<2, 23> = 1 ;// Limit possible values to those in dropdown
|
||||
|
||||
Set_Property(ModeChgCtrl, "OLE.CellType[":COL$MODE:"; All]", CellTypeArray)
|
||||
|
||||
ColSize = Get_Property(ModeChgCtrl, "OLE.DataColumn[1]")
|
||||
ColSize<1> = 120
|
||||
ColSize<3> = True$
|
||||
ColSize<4> = False$
|
||||
Set_Property(ModeChgCtrl, "OLE.DataColumn[":COL$START_DTM:"]", ColSize)
|
||||
ColSize<1> = 50
|
||||
Set_Property(ModeChgCtrl, "OLE.DataColumn[":COL$ELAP_HRS:"]", ColSize)
|
||||
ColSize<1> = 100
|
||||
ColSize<4> = True$
|
||||
Set_Property(ModeChgCtrl, "OLE.DataColumn[":COL$MODE:"]", ColSize)
|
||||
ColSize<1> = 150
|
||||
Set_Property(ModeChgCtrl, "OLE.DataColumn[":COL$NOTES:"]", ColSize)
|
||||
ColSize<1> = 40
|
||||
ColSize<4> = False$
|
||||
Set_Property(ModeChgCtrl, "OLE.DataColumn[":COL$RL_ID:"]", ColSize)
|
||||
ColSize<1> = 200
|
||||
ColSize<4> = True$
|
||||
Set_Property(ModeChgCtrl, "OLE.DataColumn[":COL$PROBLEM_CATEGORY:"]", ColSize)
|
||||
ColSize<1> = 300
|
||||
Set_Property(ModeChgCtrl, "OLE.DataColumn[":COL$SERVICE_DESCRIPTION:"]", ColSize)
|
||||
ColSize<1> = 90
|
||||
ColSize<4> = False$
|
||||
Set_Property(ModeChgCtrl, "OLE.DataColumn[":COL$START_USER:"]", ColSize)
|
||||
|
||||
return
|
||||
|
||||
|
||||
FillModeChgEDT:
|
||||
|
||||
ReactNo = Get_Property(@Window:'.EDL_REACTOR', 'TEXT')
|
||||
DaysToReport = Get_Property(@Window:'.EDL_DAYS_TO_REPORT', 'TEXT')
|
||||
HistoryList = Reactor_Services('GetReactModeHistory', ReactNo, DaysToReport)
|
||||
Set_Property(@Window:'.OLE_EDT_MODE_CHG', "OLE.LIST", '')
|
||||
Set_Property(@Window:'.OLE_EDT_MODE_CHG', "OLE.LIST", HistoryList)
|
||||
OrigHistoryList@ = HistoryList
|
||||
GoSub ResizeForm
|
||||
GoSub ColorRows
|
||||
|
||||
return
|
||||
|
||||
|
||||
EnableGetHistoryButton:
|
||||
|
||||
ReactNo = Get_Property(@Window:'.EDL_REACTOR', 'TEXT')
|
||||
DaysToReport = Get_Property(@Window:'.EDL_DAYS_TO_REPORT', 'TEXT')
|
||||
If ( (ReactNo NE '') and (DaysToReport NE '') ) then
|
||||
Set_Property(@Window:'.PUB_GET_HISTORY', 'ENABLED', True$)
|
||||
end else
|
||||
Set_Property(@Window:'.PUB_GET_HISTORY', 'ENABLED', False$)
|
||||
end
|
||||
|
||||
return
|
||||
|
||||
|
||||
EnableSaveButton:
|
||||
|
||||
CurrHistoryList = Get_Property(@Window:'.OLE_EDT_MODE_CHG', "OLE.LIST")
|
||||
ButtonEnabled = (CurrHistoryList NE OrigHistoryList@)
|
||||
Set_Property(@Window:'.PUB_SAVE', 'ENABLED', ButtonEnabled)
|
||||
|
||||
return
|
||||
|
||||
|
||||
ResizeForm:
|
||||
|
||||
SystemSize = Get_Property('SYSTEM', 'SIZE')
|
||||
MaxClientHeight = SystemSize<4>
|
||||
ModeChgCtrl = @Window:'.OLE_EDT_MODE_CHG'
|
||||
CtrlSize = Get_Property(ModeChgCtrl, 'SIZE')
|
||||
OrigCtrlHeight = CtrlSize<4>
|
||||
DataRowArray = Get_Property(ModeChgCtrl, "OLE.DataRow[1]")
|
||||
RowHeight = DataRowArray<1>
|
||||
DimArray = Get_Property(ModeChgCtrl, "OLE.Dimension")
|
||||
NumRows = DimArray<2>
|
||||
NewCtrlHeight = OrigCtrlHeight + (RowHeight * (NumRows) )
|
||||
SizeDiff = NewCtrlHeight - OrigCtrlHeight
|
||||
NewFormHeight = OrigFormHeight@ + SizeDiff
|
||||
If NewFormHeight GT MaxClientHeight then
|
||||
MaxFormHeight = MaxClientHeight * 0.8
|
||||
NewFormHeight = MaxFormHeight
|
||||
end
|
||||
FormSize = Get_Property(@Window, 'SIZE')
|
||||
FormSize<4> = NewFormHeight
|
||||
FormSize<5> = -1 ; // Keep form invisible until we are ready to show it
|
||||
Set_Property(@Window, 'SIZE', FormSize)
|
||||
Send_Message(ModeChgCtrl, "OLE.Refresh")
|
||||
|
||||
return
|
||||
|
||||
|
||||
ColorRows:
|
||||
|
||||
DefaultColorArray = 'None':@FM:'None':@FM:'None':@FM:'None':@FM:'None'
|
||||
ChangedColorArray = 'None':@FM:'Yellow':@FM:'None':@FM:'Yellow':@FM:'None'
|
||||
CurrHistoryList = Get_Property(@Window:'.OLE_EDT_MODE_CHG', "OLE.LIST")
|
||||
For each Row in CurrHistoryList using @FM setting RowIndex
|
||||
OrigRow = OrigHistoryList@<RowIndex>
|
||||
If Row NE OrigRow then
|
||||
Set_Property(@Window:'.OLE_EDT_MODE_CHG', "OLE.CellColors[All;":RowIndex:"]", ChangedColorArray)
|
||||
end else
|
||||
Set_Property(@Window:'.OLE_EDT_MODE_CHG', "OLE.CellColors[All;":RowIndex:"]", DefaultColorArray)
|
||||
end
|
||||
Next Row
|
||||
|
||||
return
|
||||
|
||||
|
||||
SaveData:
|
||||
|
||||
ReactNo = Get_Property(@Window:'.EDL_REACTOR' , 'TEXT')
|
||||
RowsToSave = ''
|
||||
CurrHistoryList = Get_Property(@Window:'.OLE_EDT_MODE_CHG', "OLE.LIST")
|
||||
For each Row in CurrHistoryList using @FM setting RowIndex
|
||||
OrigRow = OrigHistoryList@<RowIndex>
|
||||
If Row NE OrigRow then RowsToSave<-1> = RowIndex
|
||||
Next Row
|
||||
For each RowIndex in RowsToSave using @FM
|
||||
Row = CurrHistoryList<RowIndex>
|
||||
KeyDTM = Row<0, 1>
|
||||
KeyDTM = IConv(KeyDTM, 'DT')
|
||||
ModeKey = ReactNo:'*':KeyDTM
|
||||
ModeRec = Database_Services('ReadDataRow', 'REACT_MODE', ModeKey)
|
||||
NewModeDesc = Row<0, COL$MODE>
|
||||
Locate NewModeDesc in ReactorModeDescs@ using @VM setting ModePos then
|
||||
NewModeCode = ReactorModeCodes@<0, ModePos>
|
||||
ModeRec<REACT_MODE_MODE$> = NewModeCode
|
||||
end
|
||||
Database_Services('WriteDataRow', 'REACT_MODE', ModeKey, ModeRec, True$, False$, True$)
|
||||
Next RowIndex
|
||||
OrigHistoryList@ = CurrHistoryList
|
||||
GoSub ColorRows
|
||||
GoSub EnableSaveButton
|
||||
|
||||
return
|
||||
|
Reference in New Issue
Block a user