#4 -- Fix events. construct rule
Some checks failed
CI fuzzy controller / container-test-job (push) Failing after 30s

This commit is contained in:
Anton Romanov 2025-02-28 12:09:10 +04:00
parent 235bedb510
commit feb8a41304
2 changed files with 33 additions and 20 deletions

View File

@ -46,17 +46,17 @@ function getFromRest(url, callBack) {
} }
/* exported createRule */ /* exported createRule */
function createRule(ruleContentElement) { function createRule() {
var ruleString = "if "; var ruleString = "if ";
var inp = $('.selectpicker.inputVar').map(function() {return $(this).val();}).get(); var inp = $('.selectpicker.inputVar').children(':selected').map(function() {return $(this).text();}).get();
var inpVal = $('.selectpicker.inputVal').map(function() {return $(this).val();}).get(); var inpVal = $('.selectpicker.inputVal').children(':selected').map(function() {return $(this).text();}).get();
for (var i = 0; i < inp.length; i++) { for (var i = 0; i < inp.length; i++) {
if (i > 0) { if (i > 0) {
ruleString += ' and '; ruleString += ' and ';
} }
ruleString += inp[i] + " is " + inpVal[i]; ruleString += inp[i] + " is " + inpVal[i];
} }
$(ruleContentElement).val(ruleString); $('#ruleContent').val(ruleString);
} }
/* exported fillSelect */ /* exported fillSelect */
@ -67,8 +67,8 @@ function fillSelect(selectElement, values) {
}); });
} }
function fillFuzzyTerms(variableElement, fuzzyTermsElement) { function fillFuzzyTerms(variablesElement, fuzzyTermsElement) {
getFromRest("/rule/getFuzzyTerms/"+$(variableElement).val(), function (fuzzyTerms) { getFromRest("/rule/getFuzzyTerms/"+$(variablesElement).val(), function (fuzzyTerms) {
var fuzzyTermsData = []; var fuzzyTermsData = [];
$.each(fuzzyTerms, function (key, value) { $.each(fuzzyTerms, function (key, value) {
fuzzyTermsData.push({ fuzzyTermsData.push({
@ -82,7 +82,7 @@ function fillFuzzyTerms(variableElement, fuzzyTermsElement) {
}); });
} }
function fillVariables(projectId, variableElement) { function fillVariables(projectId, variablesElement) {
getFromRest("/rule/getVariables/"+projectId, function (variables) { getFromRest("/rule/getVariables/"+projectId, function (variables) {
var variablesData = []; var variablesData = [];
$.each(variables, function (key, value) { $.each(variables, function (key, value) {
@ -98,29 +98,40 @@ function fillVariables(projectId, variableElement) {
} }
function variableValueChanged(variablesElement, fuzzyTermsElement) { function variableValueChanged(variablesElement, fuzzyTermsElement) {
fillFuzzyTerms(variableElement, fuzzyTermsElement); fillFuzzyTerms(variablesElement, fuzzyTermsElement);
}
function fuzzyTermsValueChanged() {
createRule();
} }
function addVariableSelect(projectId) { function addVariableSelect(projectId) {
variablesElement = $("<select class='selectpicker inputVar m-2' data-live-search='true data-width='70%'></select>"); var variablesElement = $("<select class='selectpicker inputVar m-2' data-live-search='true data-width='70%'></select>");
$(variablesElement).append($("<option />").text('Значения загружаются...'));
fillVariables(projectId, variablesElement); fillVariables(projectId, variablesElement);
return variablesElement; return variablesElement;
} }
function addFuzzyTermsSelect(variableElement) { function addFuzzyTermsSelect(variablesElement) {
fuzzyTermsElement = $("<select class='selectpicker inputVal m-2' data-live-search='true data-width='70%'></select>"); fuzzyTermsElement = $("<select class='selectpicker inputVal m-2' data-live-search='true data-width='70%'></select>");
if ($(variableElement).val()) { if ($(variablesElement).val()) {
fillFuzzyTerms(variableElement, fuzzyTermsElement); fillFuzzyTerms(variablesElement, fuzzyTermsElement);
} }
return fuzzyTermsElement; return fuzzyTermsElement;
} }
function addAntecedent(parentElement, projectId) { function addAntecedent(parentElement, projectId) {
variableElement = addVariableSelect(projectId); rowElement = $("<div class='row'></div>");
fuzzyTermsElement = addFuzzyTermsSelect(variableElement) if ($(parentElement).find('.row').length) {
$(variablesElement).on( "change", function() {variableValueChanged(this, fuzzyTermsElement)}); $(rowElement).append("<label class='col col-md-1 m-2'>И</label>");
$(parentElement).append(variableElement); } else {
$(parentElement).append("<label class='col col-md-1'>есть</label>"); $(rowElement).append("<label class='col col-md-1 m-2'> </label>");
$(parentElement).append(fuzzyTermsElement); }
var variablesElement = addVariableSelect(projectId);
var fuzzyTermsElement = addFuzzyTermsSelect(variablesElement)
$(variablesElement).on( "change", function() {variableValueChanged(variablesElement, fuzzyTermsElement)});
$(fuzzyTermsElement).on( "change", function() {fuzzyTermsValueChanged()});
$(rowElement).append(variablesElement);
$(rowElement).append("<label class='col col-md-1 m-2'>есть</label>");
$(rowElement).append(fuzzyTermsElement);
$(parentElement).append(rowElement);
} }

View File

@ -26,8 +26,10 @@
</p> </p>
</div> </div>
<div class="form-group" id="rules"> <div class="form-group" id="rules">
<label class="col col-md-1">Если</label> <label class="col col-md-1 m-2">Если</label>
</div> </div>
<a href="#" class="btn btn-outline-dark" th:onclick="addAntecedent($('#rules'), $('#projectId').val());">+</a>
<hr/> <hr/>
<div class="form-group"> <div class="form-group">
<label class="col col-md-1">Если</label> <label class="col col-md-1">Если</label>