From b44a51ea7c2a63433316e130bb869d5975521e11 Mon Sep 17 00:00:00 2001 From: Sami Mokaddem Date: Tue, 26 Jul 2022 12:12:26 +0200 Subject: [PATCH] fix: [workflows:editor] Improved node filtering UI and behavior --- .../js/workflows-editor/workflows-editor.js | 21 ++++++++++++------- 1 file changed, 14 insertions(+), 7 deletions(-) diff --git a/app/webroot/js/workflows-editor/workflows-editor.js b/app/webroot/js/workflows-editor/workflows-editor.js index d8af4a825..c95dfc97e 100644 --- a/app/webroot/js/workflows-editor/workflows-editor.js +++ b/app/webroot/js/workflows-editor/workflows-editor.js @@ -1432,7 +1432,11 @@ function saveFilteringForModule() { var value = $blockFilteringModal.find('input#filtering-value').val() var operator = $blockFilteringModal.find('select#filtering-operator').val() var path = $blockFilteringModal.find('input#filtering-path').val() - if (selector && value && operator && path) { + if (selector.length > 0 && (value.length == 0 || operator.length == 0 || path.length == 0)) { + $blockFilteringModal.find('.modal-body').append( + $('
').addClass('alert alert-danger').text('Some fields cannot be empty') + ) + } else { var node_id = $blockFilteringModal.data('selected-node-id') var block = $blockFilteringModal.data('selected-block') block.saved_filters = { @@ -1442,10 +1446,13 @@ function saveFilteringForModule() { path: path, } editor.updateNodeDataFromId(node_id, block) + if (selector.length > 0) { + $drawflow.find('#node-' + node_id).find('.filtering-button').addClass('btn-success') + } else { + $drawflow.find('#node-' + node_id).find('.filtering-button').removeClass('btn-success') + } invalidateContentCache() $blockFilteringModal.modal('hide') - } else { - $blockFilteringModal.find('form')[0].reportValidity() } } @@ -1572,7 +1579,7 @@ function genBlockFilteringHtml(block) { .attr({ href: '#block-filtering-modal', role: 'button', - class: 'btn btn-mini ' + (getFiltersFromNode(block).value ? 'btn-success' : ''), + class: 'filtering-button btn btn-mini ' + (getFiltersFromNode(block).value ? 'btn-success' : ''), onclick: 'showFilteringModalForBlock(this)', title: 'Module filtering conditions' }) @@ -1610,10 +1617,10 @@ function genGenericBlockFilter(block) { ] var filters = getFiltersFromNode(block) var $div = $('
').append($('
').append( - genGenericInput({ id: 'filtering-selector', label: 'Element selector', type: 'text', placeholder: 'Attribute.{n}', required: true, value: filters.selector}), - genGenericInput({id: 'filtering-value', label: 'Value', type: 'text', placeholder: 'tlp:white', required: true, value: filters.value}), + genGenericInput({ id: 'filtering-selector', label: 'Element selector', type: 'text', placeholder: 'Attribute.{n}', required: false, value: filters.selector}), + genGenericInput({ id: 'filtering-value', label: 'Value', type: 'text', placeholder: 'tlp:white', required: false, value: filters.value}), genGenericSelect({ id: 'filtering-operator', label: 'Operator', options: operatorOptions, value: filters.operator}), - genGenericInput({ id: 'filtering-path', label: 'Hash Path', type: 'text', placeholder: 'AttributeTag.{n}.Tag.name', required: true, value: filters.path}), + genGenericInput({ id: 'filtering-path', label: 'Hash Path', type: 'text', placeholder: 'AttributeTag.{n}.Tag.name', required: false, value: filters.path}), )) return $div[0].outerHTML }