cloud-pipeline
cloud-pipeline copied to clipboard
Plugin framework for GUI customization
Background
Cloud Pipeline platform allows to launch various types of applications using common GUI. To improve user experience we would like to develop a plugins framework that will allow to customize pipeline/tool launch form and run page.
Approach
In a nutshell, the approach for plugins usage shall be the following:
- admin adds new custom "page" (necessary scripts) to the specific folder on the server side. Additionally to that folder, a config file shall be added with info about that custom "page" (e.g., base Platform page which UI shall be replaced, name for the custom UI page, etc.)
- in the Platform GUI:
- admin opens settings of the tool/pipeline for which custom UI shall be configured
- in the configuration form, admin selects custom UI that will be used for the selected tool/pipeline
- in the configuration form, admin selects user(s)/group(s)/role(s) for which configured custom UI will be used for the selected tool/pipeline
- when user tries to launch the tool/pipeline and opens the corresponding page for which custom UI was configured - the user only sees that custom UI of the page (not the base UI)
Custom UI setting
Note: For the first stage, we shall implement supporting of the GUI customization for the only one page - "Launch form" page.
In the Platform GUI, admin shall have the ability to configure custom UI usage for the tool/pipeline.
For the tools, we shall add a new control to the settings, e.g.:
And similarly, for pipelines, e.g.:
By click this control, additional form shall be opened:
By default, form shall contain:
- button to add new custom UI that shall be used for the current tool
- buttons to save/cancel. Save button shall be disabled
By click the button "Add custom UI", fields shall appear:
Here, the following elements shall be:
- Base page - base page which UI shall be replaced. Shall be implemented as dropdown list. Multiselect is not allowed. List of available base pages, that may be replaced, shall be defined from config files of custom pages on the server side of the specific Platform deployment.
Note: For the first stage, we shall implement supporting of the GUI customization for the only one base page - "Launch form" page. Therefore currently, the only one item ("Launch form") shall be in this control.
- Custom UI - name of the custom UI page. Shall be implemented as dropdown list. Multiselect is not allowed. List of available custom UI page names shall be defined from config files of the corresponding custom pages on the server side of the specific Platform deployment. Field shall be disabled if not any Base page is selected.
- field to specify user(s)/group(s)/role(s). Admin shall have the ability to specify any count of user(s)/group(s)/role(s) for which selected custom UI will be applied for the current tool
- button to remove the setting
The flow of the custom UI setting shall be:
- Select Base page from the list
- Select Custom UI from the list available for the selected Base page. If Base page and Custom UI fields are not empty, the Save button shall become enabled
- If necessary, specify user(s) and/or user group(s) for which selected custom UI will be applied. The flow shall be like the following:
- start specify the user/group name. Possible matches shall appear under the field, e.g.:
- select the user/group name from the list, e.g.:
- selected user/group shall appear under the field as separate label:
- any count of users/groups can be added by the described way. To remove a user/group from the selected list, the cross-button shall be used near the corresponding label
- if no users/groups were selected, selected custom UI shall be set for all users of that tool
- start specify the user/group name. Possible matches shall appear under the field, e.g.:
- By the described way, several custom UIs can be set. The form shall have the view like:
- Once custom UIs are configured, click the Save button.
When custom UIs are configured in the form and settings were saved, at the tool setting page, the control shall change its view and contain short info about configuration, e.g.:
Other options
TBD If there several settings were applied for the same user/group, only the first shall be actually applied, the rest shall be skipped.