319 lines
		
	
	
		
			13 KiB
		
	
	
	
		
			Plaintext
		
	
	
	
	
	
			
		
		
	
	
			319 lines
		
	
	
		
			13 KiB
		
	
	
	
		
			Plaintext
		
	
	
	
	
	
| Compile function REACTOR_MODES_EVENTS(CtrlEntId, Event, @PARAMS)
 | |
| /***********************************************************************************************************************
 | |
| 
 | |
|     This program is proprietary and is not to be used by or disclosed to others, nor is it to be copied without written
 | |
|     permission from Infineon.
 | |
| 
 | |
|     Name        :   REACTOR_MODES_EVENTS
 | |
| 
 | |
|     Description :   This function acts as a commuter module for all events related to this window.
 | |
| 
 | |
|     Notes       :   Commuter Modules are automatically called from the Promoted_Events function which is called by the
 | |
|                     application-specific promoted event handler. This makes it possible to add QuickEvents that need to
 | |
|                     execute Basic+ logic without having use the Form Designer to make the association, although this is
 | |
|                     limited to the events which are currently promoted.
 | |
| 
 | |
|                     If the form needs to call the commuter module directly then the QuickEvent parameters should be
 | |
|                     formatted like this:
 | |
| 
 | |
|                         '@SELF','@EVENT',['@PARAM1','@PARAMx']
 | |
| 
 | |
|     Parameters  :
 | |
|         CtrlEntId   [in] -- The fully qualified name of the control calling the promoted event
 | |
|         Event       [in] -- The event being executed. See the Notes section regarding "PRE" events
 | |
|         Param1-15   [in] -- Additional event parameter holders
 | |
|         EventFlow  [out] -- Set to 1 or 0 so the calling event knows whether or not to chain forward. See comments in
 | |
|                             EVENT_SETUP insert
 | |
| 
 | |
|     History     :   (Date, Initials, Notes)
 | |
|         11/13/2024    djs     Added "Add Existing Category" button
 | |
| 
 | |
| ***********************************************************************************************************************/
 | |
| #pragma precomp SRP_PreCompiler
 | |
| #window REACTOR_MODES_EVENTS
 | |
| 
 | |
| $INSERT EVENT_SETUP
 | |
| $INSERT LOGICAL
 | |
| $Insert REACTOR_MODES_EQUATES
 | |
| $Insert MSG_EQUATES
 | |
| $Insert RLIST_EQUATES
 | |
| 
 | |
| Declare function   Get_Property, Database_Services, Dialog_Box, Memberof, Sec_Group_Services, Error_Services
 | |
| Declare function   Popup
 | |
| Declare subroutine Set_Property, rlist, Send_Event, Reactor_Modes_Services, errmsg, Error_Services, msg
 | |
| Declare subroutine Reactor_Mode_Services, Database_Services, PlaceDialog
 | |
| 
 | |
| GoToEvent Event for CtrlEntId else
 | |
|     // Event not implemented
 | |
| end
 | |
| 
 | |
| Return EventFlow or 1
 | |
| 
 | |
| //-----------------------------------------------------------------------------
 | |
| // EVENT HANDLERS
 | |
| //-----------------------------------------------------------------------------
 | |
| 
 | |
| Event WINDOW.CREATE(CreateParam)
 | |
| 	
 | |
|     // Security Check
 | |
|     If MemberOf(@USER4,'ENGINEERING') OR MemberOf(@USER4,'SUPERVISOR') OR MemberOf(@User4, 'OI_ADMIN') then
 | |
|         Set_Property(@WINDOW : '.BTN_NEW_PROB_CAT', 'ENABLED', 1)
 | |
|         Set_Property(@WINDOW : '.BTN_DELETE_CAT', 'ENABLED', 1)
 | |
|     end
 | |
|     
 | |
|     // Get List of Reactor Modes
 | |
|     Statement = 'SELECT REACTOR_MODES BY DESCRIPTION'
 | |
|     rlist(Statement, target_activelist$, '', '', '' )
 | |
|     ModeList = ''
 | |
|     IF @RecCount then
 | |
|         EoF = 0
 | |
|         NumKeys = @RecCount
 | |
|         Cnt = 0
 | |
|         Loop
 | |
|             ReadNext ReactorModeID Else EoF = 1
 | |
|         until EoF
 | |
|             ModeList<-1> = ReactorModeID
 | |
|         Repeat
 | |
|     end
 | |
|     // Populate list of current modes
 | |
|     Set_Property(@Window : '.CMB_REACTOR_MODE', 'LIST', ModeList)
 | |
|     // Populate Security Group options
 | |
|     GroupOptions = SEC_Group_Services('GetAllSecGroups')
 | |
|     Set_Property(@Window : '.CMB_ENTER_OPTIONS', 'LIST', GroupOptions)
 | |
|     Set_Property(@Window : '.CMB_EXIT_OPTIONS', 'LIST', GroupOptions)
 | |
|     // Populate Notifcation Group Options
 | |
|     NotifGrpOpts = Database_Services('ReadDataRow', 'APP_INFO', 'USER_CLASSES')
 | |
|     Set_Property(@Window : '.CMB_NOTIFY_OPTIONS', 'LIST', NotifGrpOpts)
 | |
|     
 | |
|     PlaceDialog(-2, -2)
 | |
|     
 | |
| End Event
 | |
| 
 | |
| 
 | |
| Event CMB_REACTOR_MODE.CHANGED
 | |
| 	
 | |
|     ReactorModeRecKey    = Get_Property(@WINDOW : '.CMB_REACTOR_MODE', 'DEFPROP')
 | |
|     ReactorModeRec       = Database_Services('ReadDataRow', 'REACTOR_MODES', ReactorModeRecKey)
 | |
|     E10State             = ReactorModeRec<REACTOR_MODES_E10_STATE$>
 | |
|     Description          = ReactorModeRec<REACTOR_MODES_DESCRIPTION$>
 | |
|     Security             = ReactorModeRec<REACTOR_MODES_SECURITY_LEVEL$>
 | |
|     ServiceCategoryNames = ReactorModeRec<REACTOR_MODES_SERVICE_CATEGORIES$>
 | |
|     ServiceCategoryIds   = ReactorModeRec<REACTOR_MODES_SERVICE_CATEGORY_ID$>
 | |
|     ModeCategory         = ReactorModeRec<REACTOR_MODES_MODE_CATEGORY$>
 | |
|     EnterPermissions     = ReactorModeRec<REACTOR_MODES_GROUPS_ENTER$>
 | |
|     swap @VM with @FM in EnterPermissions
 | |
|     ExitPermissions      = ReactorModeRec<REACTOR_MODES_GROUPS_RELEASE$>
 | |
|     swap @VM with @FM in ExitPermissions
 | |
|     NotificationActive   = ReactorModeRec<REACTOR_MODES_NOTIFICATION_ACTIVE$>
 | |
|     NotificationClasses  = ReactorModeRec<REACTOR_MODES_NOTIFY_CLASS$>
 | |
|     swap @VM with @FM in NotificationClasses
 | |
|     
 | |
|     Icon                 = ReactorModeRec<REACTOR_MODES_ICON$> : '.bmp'
 | |
|     
 | |
|     ServiceCategoryArr = ''
 | |
|     ServiceCategoryArr<1> = ServiceCategoryIds
 | |
|     ServiceCategoryArr<2> = ServiceCategoryNames
 | |
|     
 | |
|     Set_Property(@Window:'.EDT_E10_STATE', 'TEXT', E10State)
 | |
|     Set_Property(@Window:'.EDT_DESCRIPTION', 'TEXT', Description)
 | |
|     Set_Property(@Window:'.EDT_SECURITY', 'TEXT',Security)
 | |
|     Set_Property(@Window:'.EDT_MODE_CATEGORY', 'TEXT',ModeCategory)
 | |
|     Set_Property(@Window:'.TBL_SERVICE_CATS', 'ARRAY', ServiceCategoryArr)
 | |
|     Set_Property(@Window: '.EDT_ENTER_PERMISSIONS', 'LIST', EnterPermissions)
 | |
|     Set_Property(@Window: '.EDT_EXIT_PERMISSIONS', 'LIST', ExitPermissions)
 | |
|     Set_Property(@Window: '.CHK_NOTIFICATION_ACTIVE', 'CHECK', NotificationActive)
 | |
|     Set_Property(@Window: '.EDT_NOTIFICATION_CLASSES', 'LIST', NotificationClasses)
 | |
|     Set_Property(@Window: '.CMB_ENTER_OPTIONS', 'TEXT' , '')
 | |
|     Set_Property(@Window: '.CMB_EXIT_OPTIONS', 'TEXT' , '')
 | |
|     Set_Property(@Window: '.CMB_NOTIFY_OPTIONS', 'TEXT' , '')
 | |
|     
 | |
| end event
 | |
| 
 | |
| 
 | |
| Event BTN_NEW_PROB_CAT.CLICK
 | |
|     
 | |
|     If MemberOf(@USER4,'ENGINEERING') OR MemberOf(@USER4,'SUPERVISOR') OR MemberOf(@User4, 'OI_ADMIN') then
 | |
|         ReactorModeRecKey = Get_Property(@WINDOW : '.CMB_REACTOR_MODE', 'DEFPROP')
 | |
|         test = Dialog_Box('NDW_ADD_PROB_CAT',@WINDOW,ReactorModeRecKey)
 | |
|     END else
 | |
|         ErrMsg('You must be authorized to change reactor mode categories')
 | |
|         Return
 | |
|     end
 | |
|     Send_Event(@Window : '.CMB_REACTOR_MODE', 'CHANGED')
 | |
|     
 | |
| end event
 | |
| 
 | |
| 
 | |
| Event PUB_ADD_EXISTING_CAT.CLICK()
 | |
| 	
 | |
|     If MemberOf(@USER4,'ENGINEERING') OR MemberOf(@USER4,'SUPERVISOR') OR MemberOf(@User4, 'OI_ADMIN') then
 | |
|         ReactorModeRecKey = Get_Property(@WINDOW : '.CMB_REACTOR_MODE', 'DEFPROP')
 | |
|         SelCats           = Popup(@Window, '', 'REACT_CAT_DESC')
 | |
|         If SelCats NE '' then 
 | |
| 			Done = False$
 | |
| 			For each SelCat in SelCats using @FM setting fPos
 | |
| 				SelCatId = SelCat<0, 1>
 | |
| 				Reactor_Modes_Services('AddExistingServiceCategory', ReactorModeRecKey, SelCatId)
 | |
| 				If Error_Services('HasError') then
 | |
| 					Error_Services('DisplayError')
 | |
| 					Done = True$
 | |
| 				end
 | |
| 			Until Done
 | |
| 			Next SelCat
 | |
| 			Send_Event(@Window : '.CMB_REACTOR_MODE', 'CHANGED')
 | |
| 		end
 | |
|     end else
 | |
|         ErrMsg('You must be authorized to change reactor mode categories')
 | |
|     end
 | |
| 	
 | |
| end event
 | |
| 
 | |
| 
 | |
| Event BTN_DELETE_CAT.CLICK
 | |
| 	
 | |
|     If MemberOf(@USER4,'ENGINEERING') OR MemberOf(@USER4,'SUPERVISOR') OR MemberOf(@User4, 'OI_ADMIN') then
 | |
|         ReactorModeRecKey = Get_Property(@WINDOW : '.CMB_REACTOR_MODE', 'DEFPROP')
 | |
|         CatArray = Get_Property(@Window:'.TBL_SERVICE_CATS', 'ARRAY')
 | |
|         Selected = Get_Property(@Window: '.TBL_SERVICE_CATS', "SELPOS")<2>
 | |
|         CatId = CatArray<1,Selected>
 | |
|         Reactor_Modes_Services('DeleteServiceCategory',ReactorModeRecKey, CatId)
 | |
|     END else
 | |
|         ErrMsg('You must be authorized to change reactor mode categories')
 | |
|         Return
 | |
|     end
 | |
| 
 | |
|     Send_Event(@Window : '.CMB_REACTOR_MODE', 'CHANGED')
 | |
|     
 | |
| end event
 | |
| 
 | |
| 
 | |
| Event PUB_ADD_ENTER.CLICK
 | |
| 	
 | |
|     If MemberOf(@USER4,'ENGINEERING') OR MemberOf(@USER4,'SUPERVISOR') OR MemberOf(@User4, 'OI_ADMIN') then
 | |
|         ReactorModeRecKey = Get_Property(@WINDOW : '.CMB_REACTOR_MODE', 'DEFPROP')
 | |
|         Selected          = Get_Property(@Window: '.CMB_ENTER_OPTIONS', "TEXT")
 | |
|         Reactor_Modes_Services('AddEnterPermission', ReactorModeRecKey, Selected)
 | |
|         if Error_Services('HasError') then
 | |
|             errorMsg = Error_Services('GetMessage')
 | |
|             msg( '', errorMsg )
 | |
|         end
 | |
|     end else
 | |
|         msg('', 'You must be authorized to change reactor mode records')
 | |
|     end
 | |
|     Send_Event(@Window : '.CMB_REACTOR_MODE', 'CHANGED')
 | |
|     
 | |
| end event
 | |
| 
 | |
| 
 | |
| Event PUB_ADD_EXIT.CLICK
 | |
| 	
 | |
|     If MemberOf(@USER4,'ENGINEERING') OR MemberOf(@USER4,'SUPERVISOR') OR MemberOf(@User4, 'OI_ADMIN') then
 | |
|         ReactorModeRecKey = Get_Property(@WINDOW : '.CMB_REACTOR_MODE', 'DEFPROP')
 | |
|         Selected          = Get_Property(@Window: '.CMB_EXIT_OPTIONS', "TEXT")
 | |
|         Reactor_Modes_Services('AddReleasePermission', ReactorModeRecKey, Selected)
 | |
|         if Error_Services('HasError') then
 | |
|             errorMsg = Error_Services('GetMessage')
 | |
|             msg( '', errorMsg )
 | |
|         end
 | |
|     end else
 | |
|         msg('', 'You must be authorized to change reactor mode records')
 | |
|     end
 | |
|     Send_Event(@Window : '.CMB_REACTOR_MODE', 'CHANGED')
 | |
|     
 | |
| end event
 | |
| 
 | |
| 
 | |
| Event PUB_REMOVE_ENTER.CLICK
 | |
| 	
 | |
|     If MemberOf(@USER4,'ENGINEERING') OR MemberOf(@USER4,'SUPERVISOR') OR MemberOf(@User4, 'OI_ADMIN') then
 | |
|         ReactorModeRecKey = Get_Property(@WINDOW : '.CMB_REACTOR_MODE', 'DEFPROP')
 | |
|         EnterArray        = Get_Property(@Window:'.EDT_ENTER_PERMISSIONS', 'ARRAY')
 | |
|         SelectedPos       = Get_Property(@Window: '.EDT_ENTER_PERMISSIONS', "SELPOS")<2>
 | |
|         Selected          = EnterArray<1,SelectedPos>
 | |
|         Reactor_Modes_Services('DeleteEnterPermission', ReactorModeRecKey, Selected)
 | |
|         if Error_Services('HasError') then
 | |
|             errorMsg = Error_Services('GetMessage')
 | |
|             msg( '', errorMsg )
 | |
|         end
 | |
|     end else
 | |
|         msg('', 'You must be authorized to change reactor mode records')
 | |
|     end
 | |
|     Send_Event(@Window : '.CMB_REACTOR_MODE', 'CHANGED')
 | |
|     
 | |
| end event
 | |
| 
 | |
| 
 | |
| Event PUB_REMOVE_EXIT.CLICK
 | |
| 	
 | |
|     If MemberOf(@USER4,'ENGINEERING') OR MemberOf(@USER4,'SUPERVISOR') OR MemberOf(@User4, 'OI_ADMIN') then
 | |
|         ReactorModeRecKey = Get_Property(@WINDOW : '.CMB_REACTOR_MODE', 'DEFPROP')
 | |
|         ExitArray         = Get_Property(@Window:'.EDT_EXIT_PERMISSIONS', 'ARRAY')
 | |
|         SelectedPos       = Get_Property(@Window: '.EDT_EXIT_PERMISSIONS', "SELPOS")<2>
 | |
|         Selected          = ExitArray<1,SelectedPos>
 | |
|         Reactor_Modes_Services('DeleteReleasePermission', ReactorModeRecKey, Selected)
 | |
|         if Error_Services('HasError') then
 | |
|             errorMsg = Error_Services('GetMessage')
 | |
|             msg( '', errorMsg )
 | |
|         end
 | |
|     end else
 | |
|         msg('', 'You must be authorized to change reactor mode records')
 | |
|     end
 | |
|     Send_Event(@Window : '.CMB_REACTOR_MODE', 'CHANGED')
 | |
|     
 | |
| end event
 | |
| 
 | |
| 
 | |
| Event CHK_NOTIFICATION_ACTIVE.CLICK
 | |
| 	
 | |
|     If MemberOf(@USER4,'ENGINEERING') OR MemberOf(@USER4,'SUPERVISOR') OR MemberOf(@User4, 'OI_ADMIN') then
 | |
|         newNotify                                          = Get_Property(@Window: '.CHK_NOTIFICATION_ACTIVE', 'CHECK')
 | |
|         ReactorModeRecKey                                  = Get_Property(@WINDOW : '.CMB_REACTOR_MODE', 'DEFPROP')
 | |
|         ReactorModeRec                                     = Database_Services('ReadDataRow', 'REACTOR_MODES', ReactorModeRecKey)
 | |
|         ReactorModeRec<REACTOR_MODES_NOTIFICATION_ACTIVE$> = newNotify
 | |
|         Database_Services('WriteDataRow', 'REACTOR_MODES', ReactorModeRecKey, ReactorModeRec)
 | |
|     end else
 | |
|         msg('', 'You must be authorized to change reactor mode records')
 | |
|     end
 | |
|     Send_Event(@Window : '.CMB_REACTOR_MODE', 'CHANGED')
 | |
|     
 | |
| end event
 | |
| 
 | |
| 
 | |
| Event PUB_ADD_NOTIFY.CLICK
 | |
| 	
 | |
|     If MemberOf(@USER4,'ENGINEERING') OR MemberOf(@USER4,'SUPERVISOR') OR MemberOf(@User4, 'OI_ADMIN') then
 | |
|         ReactorModeRecKey = Get_Property(@WINDOW : '.CMB_REACTOR_MODE', 'DEFPROP')
 | |
|         Selected          = Get_Property(@Window: '.CMB_NOTIFY_OPTIONS', "TEXT")
 | |
|         Reactor_Modes_Services('AddNotificationGroup', ReactorModeRecKey, Selected)
 | |
|         if Error_Services('HasError') then
 | |
|             errorMsg = Error_Services('GetMessage')
 | |
|             msg( '', errorMsg )
 | |
|         end
 | |
|     end else
 | |
|         msg('', 'You must be authorized to change reactor mode records')
 | |
|     end
 | |
|     Send_Event(@Window : '.CMB_REACTOR_MODE', 'CHANGED')
 | |
|     
 | |
| end event
 | |
| 
 | |
| 
 | |
| Event PUB_DELETE_NOTIFY.CLICK
 | |
| 	
 | |
|     If MemberOf(@USER4,'ENGINEERING') OR MemberOf(@USER4,'SUPERVISOR') OR MemberOf(@User4, 'OI_ADMIN') then
 | |
|         ReactorModeRecKey = Get_Property(@WINDOW : '.CMB_REACTOR_MODE', 'DEFPROP')
 | |
|         NotifArray        = Get_Property(@Window:'.EDT_NOTIFICATION_CLASSES', 'ARRAY')
 | |
|         SelectedPos       = Get_Property(@Window: '.EDT_NOTIFICATION_CLASSES', "SELPOS")<2>
 | |
|         Selected          = NotifArray<1,SelectedPos>
 | |
|         Reactor_Modes_Services('DeleteNotificationGroup', ReactorModeRecKey, Selected)
 | |
|         if Error_Services('HasError') then
 | |
|             errorMsg = Error_Services('GetMessage')
 | |
|             msg( '', errorMsg )
 | |
|         end
 | |
|     end else
 | |
|         msg('', 'You must be authorized to change reactor mode records')
 | |
|     end
 | |
|     Send_Event(@Window : '.CMB_REACTOR_MODE', 'CHANGED')
 | |
|     
 | |
| end event
 | |
| 
 |