Version 13 (modified by csa, 14 years ago) |
---|
Channel Addressing
There is two ways of addressing channels ...
The READER Interface
The READER class provides an abstract interface to the historical and control data of the data source. The minimal READER should provide 3 methods
- GetGroupInfo - returns annotated list of all logging groups.
- GetItemList - returns list of all channels in the specified logging group.
- GetRawData - returns Iterator object with requested data.
The SEARCH Subsystem
ADEI has a modular search subsystem. The search capabilities are provided by the search engines which providing one-or-more search modules. Besides the search term, the search string may specify the search modules to perform search. The module parameters could be specified along with the modules. Read more...
Providing additional data using ADEI Web Interface
Examples of additional data are:
- The alarms registered during the data collection by control systems
- The system operator messages
- The information about events registered by DAQ subsystem
- Anything else...
This section describes how the additional data could be provided using ADEI Web Interface. The simplest approach is to provide a service generating an XML data, and XSLT stylesheet which would convert it to HTML. Of course it is possible to generate directly XHTML, but with XML+XSLT approach it is easier to alter presentation form and establish some automation (the XML service could be used by 3rd party client applications). After the service is ready, the new ADEI module (an extra page in the upper menu) should be created and registered in configuration.
So, the following steps should be taken to setup extra ADEI page:
- Create a service and put it in the services/ subdirectory (see description here)
- Create a module and put it in the modules/ directory (see description here)
- Create a XSLT stylesheet which accepts produced XML and generates HTML to be displayed and put it in the xslt/ folder.
- Optionally, if additional parameters, like target for multi-task services, should be passed to the service, special update service should be created in services/update/ directory (see details)
- The module should be registered in $MODULES variable in the configuration file config.php. Be careful, some of the global configuration options specified in the config.php located in the root folder of ADEI installation may be overriden in setups by setup-specific configuration file.
Providing Additional Control Tab
This section describes how to extend left sidebar with additional control tabs.
- As with additional pages, the new control tab should be created in the modules directory following the guidelines. It should define module_title variable and moduleJS, modulePage functions (the name of tab should be used instead of module prefix).
- The modulePage should provide HTML markup and moduleJS attach JavaScript? handlers to set ADEI variables and, hence, control ADEI engine. The global variable adei should be used to access ADEI functionality.
- The SELECT class provides useful interface to generate cascading select controls.
- Like with pages, the XML Module can be used to fill control context.
- In certain cases the care on resizing should be taken. The following function registering callbacks can be useful: adei.popup.RegisterOnCallback?, adei.popup.RegisterOffCallback?, adei.popup.RegisterReHeightCallback?, adei.popup.RegisterReWidthCallback?, control_modules.RegisterCallback?, and some others. For examples, take a look on virtual.php and source.php in the modules folder.
- Finally, the module should be enabled. Just add the control name into the $CONTROLS variable in the configuration. The false value in array will enforce starting of a new line of controls.
Implementing context dependent control. It is possible to track if the control is currently on display or not using mentioned before functions: 'adei.popup.RegisterOnCallback?, adei.popup.RegisterOffCallback?, control_modules.RegisterCallback?. Example is available in source.php. The adei.config.GetModule?() function will return currently opened page. The page change notification callback can be requested using adei.module.RegisterCallback? function.