mirror of https://github.com/MISP/MISP
chg: [workflows:editor] Added possibility to show/hide node parameters based on the value of others
parent
bc6d4a8305
commit
48521a7b39
|
@ -1213,6 +1213,13 @@ function deleteSelectedNode() {
|
|||
editor.removeNodeId(getSelectedNodeID())
|
||||
}
|
||||
|
||||
function getNodeFromContainedHtml(htmlNode) {
|
||||
var $drawflowNode = $(htmlNode).closest('.drawflow-node')
|
||||
var nodeStringId = $drawflowNode.attr('id')
|
||||
var nodeId = nodeStringId ? parseInt(nodeStringId.split('-')[1]) : null
|
||||
return nodeId !== null ? editor.getNodeFromId(nodeId) : null
|
||||
}
|
||||
|
||||
function deleteSelectedNodes(fromDelKey) {
|
||||
selection.getSelection().forEach(function(node) {
|
||||
if (fromDelKey && getSelectedNodeID() !== null && getSelectedNodeID() == node.id) {
|
||||
|
@ -1335,6 +1342,7 @@ function genNodeParamHtml(node, forNode = true) {
|
|||
function afterNodeDrawCallback() {
|
||||
var $nodes = $drawflow.find('.drawflow-node')
|
||||
$nodes.find('.start-chosen').chosen()
|
||||
toggleDisplayOnFields()
|
||||
}
|
||||
|
||||
function afterModalShowCallback() {
|
||||
|
@ -1359,6 +1367,34 @@ function afterModalShowCallback() {
|
|||
})
|
||||
}
|
||||
|
||||
function toggleDisplayOnFields() {
|
||||
var $nodes = $drawflow.find('.drawflow-node')
|
||||
$nodes.find('div.node-param-container.display-on').each(function() {
|
||||
var $container = $(this)
|
||||
var node = getNodeFromContainedHtml($container)
|
||||
var param_id = $container.attr('param-id')
|
||||
var node_param_config = node.data.module_data.params.filter(function(param_config) {
|
||||
return param_config.id == param_id
|
||||
})
|
||||
var showContainer = false
|
||||
if (node_param_config) {
|
||||
node_param_config = node_param_config[0]
|
||||
Object.keys(node_param_config.display_on).forEach(function(target_param_id) {
|
||||
var target_param_values = node_param_config.display_on[target_param_id]
|
||||
var node_param_value = node.data.indexed_params[target_param_id]
|
||||
if (target_param_values == node_param_value) {
|
||||
showContainer = true
|
||||
}
|
||||
});
|
||||
}
|
||||
if (showContainer) {
|
||||
$container.show()
|
||||
} else {
|
||||
$container.hide()
|
||||
}
|
||||
})
|
||||
}
|
||||
|
||||
function genParameterWarning(options) {
|
||||
var text = '', text_short = ''
|
||||
if (options.is_invalid) {
|
||||
|
@ -1381,6 +1417,11 @@ function genParameterWarning(options) {
|
|||
|
||||
function genSelect(options, forNode = true) {
|
||||
var $container = $('<div>')
|
||||
.addClass('node-param-container')
|
||||
.attr('param-id', options.id)
|
||||
if (options.display_on) {
|
||||
$container.addClass('display-on')
|
||||
}
|
||||
var $label = $('<label>')
|
||||
.css({
|
||||
marginLeft: '0.25em',
|
||||
|
@ -1450,6 +1491,8 @@ function genPicker(options, forNode = true) {
|
|||
|
||||
function genInput(options, isTextArea, forNode = true) {
|
||||
var $container = $('<div>')
|
||||
.addClass('node-param-container')
|
||||
.data('param-id', options.id)
|
||||
var $label = $('<label>')
|
||||
.css({
|
||||
marginLeft: '0.25em',
|
||||
|
@ -1513,6 +1556,8 @@ function genCheckbox(options, forNode = true) {
|
|||
}
|
||||
$label.append($input)
|
||||
var $container = $('<div>')
|
||||
.addClass('node-param-container')
|
||||
.data('param-id', options.id)
|
||||
.addClass('checkbox')
|
||||
.append($label)
|
||||
return $container
|
||||
|
@ -1520,6 +1565,8 @@ function genCheckbox(options, forNode = true) {
|
|||
|
||||
function genRadio(options, forNode = true) {
|
||||
var $container = $('<div>')
|
||||
.addClass('node-param-container')
|
||||
.data('param-id', options.id)
|
||||
var $rootLabel = $('<label>')
|
||||
.css({
|
||||
marginLeft: '0.25em',
|
||||
|
@ -1577,6 +1624,7 @@ function handleInputChange(changed) {
|
|||
var node = getNodeFromNodeInput($input)
|
||||
var node_data = setParamValueForInput($input, node.data)
|
||||
editor.updateNodeDataFromId(node.id, node_data)
|
||||
toggleDisplayOnFields()
|
||||
invalidateContentCache()
|
||||
}
|
||||
|
||||
|
@ -1585,6 +1633,7 @@ function handleSelectChange(changed) {
|
|||
var node = getNodeFromNodeInput($input)
|
||||
var node_data = setParamValueForInput($input, node.data)
|
||||
editor.updateNodeDataFromId(node.id, node_data)
|
||||
toggleDisplayOnFields()
|
||||
invalidateContentCache()
|
||||
}
|
||||
|
||||
|
|
Loading…
Reference in New Issue