Skip to content
Snippets Groups Projects
Commit 3b7b87d5 authored by piotr.kupczyk@id.ethz.ch's avatar piotr.kupczyk@id.ethz.ch
Browse files

NG_UI : plugins evaluation : SSDM-10431 - dependencies between...

NG_UI : plugins evaluation : SSDM-10431 - dependencies between plugin.entityKind, evaluationParameters.entityKind and evaluationParameters.entity fields
parent 0da5785d
No related branches found
No related tags found
No related merge requests found
import _ from 'lodash'
import PageControllerChange from '@src/js/components/common/page/PageControllerChange.js'
import PluginFormSelectionType from '@src/js/components/tools/form/plugin/PluginFormSelectionType.js'
import FormUtil from '@src/js/components/common/form/FormUtil.js'
......@@ -12,29 +13,86 @@ export default class PluginFormControllerChange extends PageControllerChange {
}
async _handleChangePlugin(params) {
await this.context.setState(state => {
await this.context.setState(oldState => {
const { newObject } = FormUtil.changeObjectField(
state.plugin,
oldState.plugin,
params.field,
params.value
)
return {
const newState = {
...oldState,
plugin: newObject
}
this._handleChangePluginEntityKind(oldState, newState)
return newState
})
await this.controller.changed(true)
}
_handleChangePluginEntityKind(oldState, newState) {
const oldEntityKind = oldState.plugin.entityKind.value
const newEntityKind = newState.plugin.entityKind.value
if (oldEntityKind !== newEntityKind) {
const newEvaluateEntityKind = newEntityKind
? newEntityKind
: newState.evaluateParameters.entityKind.value
const newEvaluateEntity =
newEntityKind &&
newEntityKind !== newState.evaluateParameters.entityKind.value
? null
: newState.evaluateParameters.entity.value
_.assign(newState, {
evaluateParameters: {
...newState.evaluateParameters,
entityKind: {
...newState.evaluateParameters.entityKind,
value: newEvaluateEntityKind,
enabled: !newEntityKind
},
entity: {
...newState.evaluateParameters.entity,
value: newEvaluateEntity,
enabled: !!newEvaluateEntityKind
}
}
})
}
}
async _handleChangeEvaluateParameter(params) {
await this.context.setState(state => {
const { newObject } = FormUtil.changeObjectField(
const { oldObject, newObject } = FormUtil.changeObjectField(
state.evaluateParameters,
params.field,
params.value
)
this._handleChangeEvaluateParameterEntityKind(oldObject, newObject)
return {
evaluateParameters: newObject
}
})
}
_handleChangeEvaluateParameterEntityKind(oldParameters, newParameters) {
const oldEntityKind = oldParameters.entityKind.value
const newEntityKind = newParameters.entityKind.value
if (oldEntityKind !== newEntityKind) {
_.assign(newParameters, {
entity: {
...newParameters.entity,
value: null,
enabled: !!newEntityKind
}
})
}
}
}
......@@ -15,7 +15,7 @@ export default class PluginFormControllerLoad extends PageControllerLoad {
}
const plugin = this._createPlugin(object, loadedPlugin)
const evaluateParameters = this._createEvaluateParameters()
const evaluateParameters = this._createEvaluateParameters(loadedPlugin)
const evaluateResults = this._createEvaluateResults()
return this.context.setState({
......@@ -74,10 +74,16 @@ export default class PluginFormControllerLoad extends PageControllerLoad {
return plugin
}
_createEvaluateParameters() {
_createEvaluateParameters(loadedPlugin) {
const entityKinds = _.get(loadedPlugin, 'entityKinds', [])
const entityKind = entityKinds.length === 1 ? entityKinds[0] : null
return {
entityKind: FormUtil.createField(),
entity: FormUtil.createField(),
entityKind: FormUtil.createField({
value: entityKind,
enabled: !entityKind
}),
entity: FormUtil.createField({ enabled: entityKind }),
entityIsNew: FormUtil.createField()
}
}
......
......@@ -57,6 +57,7 @@ class PluginFormEvaluateParameters extends React.PureComponent {
label='Entity Kind'
name='entityKind'
value={parameters.entityKind.value}
disabled={!parameters.entityKind.enabled}
options={options}
onChange={this.handleChange}
/>
......@@ -75,6 +76,7 @@ class PluginFormEvaluateParameters extends React.PureComponent {
name='entity'
entityKind={parameters.entityKind.value}
value={parameters.entity.value}
disabled={!parameters.entity.enabled}
onChange={this.handleChange}
/>
</div>
......@@ -91,6 +93,7 @@ class PluginFormEvaluateParameters extends React.PureComponent {
label='Is New Entity'
name='entityIsNew'
value={parameters.entityIsNew.value}
disabled={!parameters.entityIsNew.enabled}
onChange={this.handleChange}
/>
</div>
......
0% Loading or .
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment