#4 -- Now you can load rule
All checks were successful
CI fuzzy controller / container-test-job (push) Successful in 59s

This commit is contained in:
Anton Romanov 2025-02-28 15:40:49 +04:00
parent 311b8a4c5c
commit e91642e1d0
2 changed files with 29 additions and 18 deletions

View File

@ -81,14 +81,19 @@ function getFromRest(url, callBack) {
} }
/* exported fillSelect */ /* exported fillSelect */
function fillSelect(selectElement, values) { function fillSelect(selectElement, values, selectedVal) {
$(selectElement).html(""); $(selectElement).html("");
$.each(values, function (key, value) { $.each(values, function (key, value) {
$(selectElement).append($("<option />").val(value.id).text(value.name)); $(selectElement).append($("<option />").val(value.id).text(value.name));
}); });
$(selectElement).children().each(function() {
if ($(this).text() == selectedVal) {
$(this).prop('selected', true);
}
});
} }
function fillFuzzyTerms(variablesElement, fuzzyTermsElement) { function fillFuzzyTerms(variablesElement, fuzzyTermsElement, termVal) {
getFromRest("/rule/getFuzzyTerms/"+$(variablesElement).val(), function (fuzzyTerms) { getFromRest("/rule/getFuzzyTerms/"+$(variablesElement).val(), function (fuzzyTerms) {
var fuzzyTermsData = []; var fuzzyTermsData = [];
$.each(fuzzyTerms, function (key, value) { $.each(fuzzyTerms, function (key, value) {
@ -97,13 +102,13 @@ function fillFuzzyTerms(variablesElement, fuzzyTermsElement) {
name: value.description name: value.description
}); });
}); });
fillSelect(fuzzyTermsElement, fuzzyTermsData); fillSelect(fuzzyTermsElement, fuzzyTermsData, termVal);
$(fuzzyTermsElement).selectpicker("refresh"); $(fuzzyTermsElement).selectpicker("refresh");
$(fuzzyTermsElement).trigger("change"); $(fuzzyTermsElement).trigger("change");
}); });
} }
function fillVariables(projectId, variablesElement) { function fillVariables(projectId, variablesElement, variableVal) {
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) {
@ -112,7 +117,7 @@ function fillVariables(projectId, variablesElement) {
name: value.name name: value.name
}); });
}); });
fillSelect(variablesElement, variablesData); fillSelect(variablesElement, variablesData, variableVal);
$(variablesElement).selectpicker("refresh"); $(variablesElement).selectpicker("refresh");
$(variablesElement).trigger("change"); $(variablesElement).trigger("change");
}); });
@ -126,16 +131,16 @@ function fuzzyTermsValueChanged() {
createRule(); createRule();
} }
function addVariableSelect(projectId) { function addVariableSelect(projectId, variableVal) {
var 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>");
fillVariables(projectId, variablesElement); fillVariables(projectId, variablesElement, variableVal);
return variablesElement; return variablesElement;
} }
function addFuzzyTermsSelect(variablesElement) { function addFuzzyTermsSelect(variablesElement, termVal) {
fuzzyTermsElement = $("<select class='selectpicker inputVal m-2' data-live-search='true data-width='70%'></select>"); var fuzzyTermsElement = $("<select class='selectpicker inputVal m-2' data-live-search='true data-width='70%'></select>");
if ($(variablesElement).val()) { if ($(variablesElement).val()) {
fillFuzzyTerms(variablesElement, fuzzyTermsElement); fillFuzzyTerms(variablesElement, fuzzyTermsElement, termVal);
} }
return fuzzyTermsElement; return fuzzyTermsElement;
} }
@ -144,15 +149,15 @@ function removeAntecedent(buttonElement) {
fuzzyTermsValueChanged(); fuzzyTermsValueChanged();
} }
function addAntecedent(parentElement, projectId) { function addAntecedent(parentElement, projectId, variableVal, termVal) {
rowElement = $("<div class='row'></div>"); var rowElement = $("<div class='row'></div>");
if ($(parentElement).find('.row').length) { if ($(parentElement).find('.row').length) {
$(rowElement).append("<label class='col col-md-1 m-2'>И</label>"); $(rowElement).append("<label class='col col-md-1 m-2'>И</label>");
} else { } else {
$(rowElement).append("<label class='col col-md-1 m-2'> </label>"); $(rowElement).append("<label class='col col-md-1 m-2'> </label>");
} }
var variablesElement = addVariableSelect(projectId); var variablesElement = addVariableSelect(projectId, variableVal);
var fuzzyTermsElement = addFuzzyTermsSelect(variablesElement) var fuzzyTermsElement = addFuzzyTermsSelect(variablesElement, termVal);
$(variablesElement).on( "change", function() {variableValueChanged(variablesElement, fuzzyTermsElement)}); $(variablesElement).on( "change", function() {variableValueChanged(variablesElement, fuzzyTermsElement)});
$(fuzzyTermsElement).on( "change", function() {fuzzyTermsValueChanged()}); $(fuzzyTermsElement).on( "change", function() {fuzzyTermsValueChanged()});
$(rowElement).append(variablesElement); $(rowElement).append(variablesElement);
@ -163,3 +168,11 @@ function addAntecedent(parentElement, projectId) {
} }
$(parentElement).append(rowElement); $(parentElement).append(rowElement);
} }
function addAntecedentFromRule(parentElement, projectId, ruleContent) {
var antecedentComponents = getAntecedentComponents(getAntecedent(ruleContent));
for (let i = 0; i < antecedentComponents.length; i++) {
var a = antecedentComponents[i];
addAntecedent(parentElement, projectId, getVariable(a), getVariableValue(a));
}
}

View File

@ -47,13 +47,11 @@
</div> </div>
<script type="text/javascript" src="/js/fuzzyRule.js"></script> <script type="text/javascript" src="/js/fuzzyRule.js"></script>
<script> <script>
/*<![CDATA[*/
if ($('#ruleContent').val()) { if ($('#ruleContent').val()) {
alert('123'); addAntecedentFromRule($('#rulesAntecedent'), $('#projectId').val(), $('#ruleContent').val());
} else { } else {
addAntecedent($('#rulesAntecedent'), [[${projectId}]]); addAntecedent($('#rulesAntecedent'), $('#projectId').val());
} }
/*]]>*/
</script> </script>
</form> </form>
</div> </div>