diff --git a/openbis_ng_ui/src/js/components/tools/form/plugin/PluginForm.jsx b/openbis_ng_ui/src/js/components/tools/form/plugin/PluginForm.jsx index 9468b6ea7caf197836398b8647f8e3446cb364d7..9ecbede7d4ee1795196bcfd24d64282f68e9e6cd 100644 --- a/openbis_ng_ui/src/js/components/tools/form/plugin/PluginForm.jsx +++ b/openbis_ng_ui/src/js/components/tools/form/plugin/PluginForm.jsx @@ -10,6 +10,7 @@ import PluginFormFacade from '@src/js/components/tools/form/plugin/PluginFormFac import PluginFormScript from '@src/js/components/tools/form/plugin/PluginFormScript.jsx' import PluginFormParameters from '@src/js/components/tools/form/plugin/PluginFormParameters.jsx' import PluginFormButtons from '@src/js/components/tools/form/plugin/PluginFormButtons.jsx' +import openbis from '@src/js/services/openbis.js' import logger from '@src/js/common/logger.js' const styles = () => ({}) @@ -55,16 +56,20 @@ class PluginForm extends React.PureComponent { const { controller } = this const { plugin, selection, mode } = this.state - return ( - <PluginFormScript - plugin={plugin} - selection={selection} - mode={mode} - onChange={controller.handleChange} - onSelectionChange={controller.handleSelectionChange} - onBlur={controller.handleBlur} - /> - ) + if (plugin.pluginKind === openbis.PluginKind.JYTHON) { + return ( + <PluginFormScript + plugin={plugin} + selection={selection} + mode={mode} + onChange={controller.handleChange} + onSelectionChange={controller.handleSelectionChange} + onBlur={controller.handleBlur} + /> + ) + } else { + return <div></div> + } } renderAdditionalPanel() { diff --git a/openbis_ng_ui/src/js/components/tools/form/plugin/PluginFormButtons.jsx b/openbis_ng_ui/src/js/components/tools/form/plugin/PluginFormButtons.jsx index fcfb016997361f45dacf6f93df4952515685394f..0552368188b77e590ea4c45fd2d3bdd90a02002d 100644 --- a/openbis_ng_ui/src/js/components/tools/form/plugin/PluginFormButtons.jsx +++ b/openbis_ng_ui/src/js/components/tools/form/plugin/PluginFormButtons.jsx @@ -1,5 +1,6 @@ import React from 'react' import PageButtons from '@src/js/components/common/page/PageButtons.jsx' +import openbis from '@src/js/services/openbis.js' import logger from '@src/js/common/logger.js' class PluginFormButtons extends React.PureComponent { @@ -12,7 +13,7 @@ class PluginFormButtons extends React.PureComponent { <PageButtons mode={mode} changed={changed} - onEdit={onEdit} + onEdit={plugin.pluginKind === openbis.PluginKind.JYTHON ? onEdit : null} onSave={onSave} onCancel={plugin.id ? onCancel : null} /> diff --git a/openbis_ng_ui/src/js/components/tools/form/plugin/PluginFormControllerLoad.js b/openbis_ng_ui/src/js/components/tools/form/plugin/PluginFormControllerLoad.js index 7009284b7e36b8f6e9e8a6f0b5e8d53958671805..c6609a04d51df1035165095f528754d794a9f662 100644 --- a/openbis_ng_ui/src/js/components/tools/form/plugin/PluginFormControllerLoad.js +++ b/openbis_ng_ui/src/js/components/tools/form/plugin/PluginFormControllerLoad.js @@ -59,6 +59,9 @@ export default class PluginFormControllerLoad extends PageControllerLoad { }), script: FormUtil.createField({ value: _.get(loadedPlugin, 'script', null) + }), + available: FormUtil.createField({ + value: _.get(loadedPlugin, 'available', true) }) } if (loadedPlugin) { diff --git a/openbis_ng_ui/src/js/components/tools/form/plugin/PluginFormParameters.jsx b/openbis_ng_ui/src/js/components/tools/form/plugin/PluginFormParameters.jsx index e388a406c413c714f52522b2a5e35cd542550774..f8da7b61b8355cf08598976d67a99ebee1f6a3c8 100644 --- a/openbis_ng_ui/src/js/components/tools/form/plugin/PluginFormParameters.jsx +++ b/openbis_ng_ui/src/js/components/tools/form/plugin/PluginFormParameters.jsx @@ -2,6 +2,7 @@ import React from 'react' import { withStyles } from '@material-ui/core/styles' import Container from '@src/js/components/common/form/Container.jsx' import Header from '@src/js/components/common/form/Header.jsx' +import Message from '@src/js/components/common/form/Message.jsx' import TextField from '@src/js/components/common/form/TextField.jsx' import SelectField from '@src/js/components/common/form/SelectField.jsx' import PluginFormSelectionType from '@src/js/components/tools/form/plugin/PluginFormSelectionType.js' @@ -78,6 +79,8 @@ class PluginFormParameters extends React.PureComponent { return ( <Container> <Header>Plugin</Header> + {this.renderMessageDisabled(plugin)} + {this.renderMessagePredeployed(plugin)} {this.renderName(plugin)} {this.renderEntityKind(plugin)} {this.renderDescription(plugin)} @@ -85,6 +88,38 @@ class PluginFormParameters extends React.PureComponent { ) } + renderMessageDisabled(plugin) { + const { classes } = this.props + + if (!plugin.available.value) { + return ( + <div className={classes.field}> + <Message type='warning'>The plugin is disabled.</Message> + </div> + ) + } else { + return null + } + } + + renderMessagePredeployed(plugin) { + const { classes } = this.props + + if (plugin.pluginKind === openbis.PluginKind.PREDEPLOYED) { + return ( + <div className={classes.field}> + <Message type='info'> + This is a predeployed Java plugin. Its parameters and logic are + defined in the plugin Java class and therefore cannot be changed + from the UI. + </Message> + </div> + ) + } else { + return null + } + } + renderName(plugin) { const { visible, enabled, error, value } = { ...plugin.name }