#2 -- Add async-await
All checks were successful
CI fuzzy controller / container-test-job (push) Successful in 1m48s
All checks were successful
CI fuzzy controller / container-test-job (push) Successful in 1m48s
This commit is contained in:
parent
7339ca4062
commit
efd0cb66c7
@ -29,13 +29,13 @@ public class ProjectVariableService {
|
||||
if (projectId == null || projectId == 0) {
|
||||
return Collections.emptyList();
|
||||
}
|
||||
return variableRepository.findInputByProject(projectService.getById(projectId));
|
||||
return variableRepository.getInputByProject(projectService.getById(projectId));
|
||||
}
|
||||
|
||||
public List<Variable> getOutputByProjectId(Integer projectId) {
|
||||
if (projectId == null || projectId == 0) {
|
||||
return Collections.emptyList();
|
||||
}
|
||||
return variableRepository.findOutputByProject(projectService.getById(projectId));
|
||||
return variableRepository.getOutputByProject(projectService.getById(projectId));
|
||||
}
|
||||
}
|
||||
|
@ -71,6 +71,22 @@ public class FuzzyRuleController {
|
||||
return variableService.getAllDtoByProject(projectId);
|
||||
}
|
||||
|
||||
@ResponseBody
|
||||
@GetMapping("/getInputVariables/{projectId}")
|
||||
public List<VariableDto> getInputVariables(@PathVariable("projectId") Integer projectId,
|
||||
final HttpServletResponse response) {
|
||||
response.addHeader("Cache-Control", "max-age=60, must-revalidate, no-transform");
|
||||
return variableService.getInputVariablesDtoByProject(projectId);
|
||||
}
|
||||
|
||||
@ResponseBody
|
||||
@GetMapping("/getOutputVariables/{projectId}")
|
||||
public List<VariableDto> getOutputVariables(@PathVariable("projectId") Integer projectId,
|
||||
final HttpServletResponse response) {
|
||||
response.addHeader("Cache-Control", "max-age=60, must-revalidate, no-transform");
|
||||
return variableService.getOutputVariablesDtoByProject(projectId);
|
||||
}
|
||||
|
||||
@ResponseBody
|
||||
@GetMapping("/getFuzzyTerms/{variableId}")
|
||||
public List<FuzzyTerm> getTerms(@PathVariable("variableId") Integer variableId,
|
||||
|
@ -15,8 +15,8 @@ public interface VariableRepository extends JpaRepository<Variable, Integer> {
|
||||
List<Variable> getByProject(Project project);
|
||||
|
||||
@Query("SELECT v FROM Variable v WHERE v.project = :project AND v.input = true")
|
||||
List<Variable> findInputByProject(@Param("project") Project project);
|
||||
List<Variable> getInputByProject(@Param("project") Project project);
|
||||
|
||||
@Query("SELECT v FROM Variable v WHERE v.project = :project AND v.input = false")
|
||||
List<Variable> findOutputByProject(@Param("project") Project project);
|
||||
List<Variable> getOutputByProject(@Param("project") Project project);
|
||||
}
|
||||
|
@ -80,4 +80,18 @@ public class VariableService {
|
||||
public void checkIsCurrentUserVariableWithThrow(Variable variable) {
|
||||
projectService.checkIsCurrentUserProjectWithThrow(variable.getProject());
|
||||
}
|
||||
|
||||
public List<VariableDto> getInputVariablesDtoByProject(Integer projectId) {
|
||||
return variableRepository.getInputByProject(projectService.getById(projectId))
|
||||
.stream()
|
||||
.map(VariableDto::new)
|
||||
.toList();
|
||||
}
|
||||
|
||||
public List<VariableDto> getOutputVariablesDtoByProject(Integer projectId) {
|
||||
return variableRepository.getOutputByProject(projectService.getById(projectId))
|
||||
.stream()
|
||||
.map(VariableDto::new)
|
||||
.toList();
|
||||
}
|
||||
}
|
||||
|
@ -62,15 +62,12 @@ function errorHandler(response, callBack, errorCallBack) {
|
||||
}
|
||||
|
||||
/* exported getFromRest */
|
||||
function getFromRest(url, callBack) {
|
||||
$.ajax({
|
||||
async function getFromRest(url) {
|
||||
return await $.ajax({
|
||||
url: url,
|
||||
method: 'get',
|
||||
cache: true,
|
||||
dataType: 'json',
|
||||
success: function (response) {
|
||||
errorHandler(response, callBack);
|
||||
}
|
||||
dataType: 'json'
|
||||
});
|
||||
}
|
||||
|
||||
@ -112,60 +109,63 @@ function fillSelect(selectElement, values, selectedVal) {
|
||||
$(selectElement).append($("<option />").val(value.id).text(value.name));
|
||||
});
|
||||
$(selectElement).children().each(function () {
|
||||
if ($(this).text() == selectedVal) {
|
||||
if ($(this).text() === selectedVal) {
|
||||
$(this).prop('selected', true);
|
||||
}
|
||||
});
|
||||
}
|
||||
|
||||
function fillFuzzyTerms(variablesElement, fuzzyTermsElement, termVal) {
|
||||
getFromRest("/rule/getFuzzyTerms/" + $(variablesElement).val(), function (fuzzyTerms) {
|
||||
let fuzzyTermsData = [];
|
||||
$.each(fuzzyTerms, function (key, value) {
|
||||
fuzzyTermsData.push({
|
||||
id: value.id,
|
||||
name: value.description
|
||||
});
|
||||
async function fillFuzzyTerms(variablesElement, fuzzyTermsElement, termVal) {
|
||||
let fuzzyTerms = await getFromRest("/rule/getFuzzyTerms/" + $(variablesElement).val());
|
||||
let fuzzyTermsData = [];
|
||||
$.each(fuzzyTerms, function (key, value) {
|
||||
fuzzyTermsData.push({
|
||||
id: value.id,
|
||||
name: value.description
|
||||
});
|
||||
fillSelect(fuzzyTermsElement, fuzzyTermsData, termVal);
|
||||
$(fuzzyTermsElement).selectpicker("refresh");
|
||||
$(fuzzyTermsElement).trigger("change");
|
||||
});
|
||||
fillSelect(fuzzyTermsElement, fuzzyTermsData, termVal);
|
||||
}
|
||||
|
||||
function fillVariables(projectId, variablesElement, variableVal) {
|
||||
getFromRest("/rule/getVariables/" + projectId, function (variables) {
|
||||
let variablesData = [];
|
||||
$.each(variables, function (key, value) {
|
||||
variablesData.push({
|
||||
id: value.id,
|
||||
name: value.name
|
||||
});
|
||||
async function fillVariables(projectId, variablesElement, variableVal, cls) {
|
||||
let url = '/rule/';
|
||||
if (cls === 'inputVar') {
|
||||
url += 'getInputVariables/';
|
||||
} else {
|
||||
url += 'getOutputVariables/';
|
||||
}
|
||||
let variables = await getFromRest(url + projectId);
|
||||
let variablesData = [];
|
||||
$.each(variables, function (key, value) {
|
||||
variablesData.push({
|
||||
id: value.id,
|
||||
name: value.name
|
||||
});
|
||||
fillSelect(variablesElement, variablesData, variableVal);
|
||||
$(variablesElement).selectpicker("refresh");
|
||||
$(variablesElement).trigger("change");
|
||||
});
|
||||
fillSelect(variablesElement, variablesData, variableVal);
|
||||
}
|
||||
|
||||
function variableValueChanged(variablesElement, fuzzyTermsElement) {
|
||||
fillFuzzyTerms(variablesElement, fuzzyTermsElement);
|
||||
}
|
||||
|
||||
function fuzzyTermsValueChanged() {
|
||||
async function variableValueChanged(variablesElement, fuzzyTermsElement) {
|
||||
await fillFuzzyTerms(variablesElement, fuzzyTermsElement);
|
||||
$(".selectpicker").selectpicker("refresh");
|
||||
createRule();
|
||||
}
|
||||
|
||||
function createVariableSelect(cls, projectId, variableVal) {
|
||||
function fuzzyTermsValueChanged() {
|
||||
$(".selectpicker").selectpicker("refresh");
|
||||
createRule();
|
||||
}
|
||||
|
||||
async function createVariableSelect(cls, projectId, variableVal) {
|
||||
let variablesElement = $("<select class='selectpicker " + cls + " m-2' data-live-search='true data-width='70%'></select>");
|
||||
fillVariables(projectId, variablesElement, variableVal);
|
||||
await fillVariables(projectId, variablesElement, variableVal, cls);
|
||||
return variablesElement;
|
||||
}
|
||||
|
||||
function createFuzzyTermsSelect(cls, variablesElement, termVal) {
|
||||
async function createFuzzyTermsSelect(cls, variablesElement, termVal) {
|
||||
let fuzzyTermsElement = $("<select class='selectpicker " + cls + " m-2' data-live-search='true data-width='70%'></select>");
|
||||
if ($(variablesElement).val()) {
|
||||
fillFuzzyTerms(variablesElement, fuzzyTermsElement, termVal);
|
||||
await fillFuzzyTerms(variablesElement, fuzzyTermsElement, termVal);
|
||||
}
|
||||
return fuzzyTermsElement;
|
||||
}
|
||||
@ -180,15 +180,15 @@ function removeConsequent(buttonElement) {
|
||||
fuzzyTermsValueChanged();
|
||||
}
|
||||
|
||||
function addAntecedent(parentElement, projectId, variableVal, termVal) {
|
||||
async function addAntecedent(parentElement, projectId, variableVal, termVal) {
|
||||
let rowElement = $("<div class='row'></div>");
|
||||
if ($(parentElement).find('.row').length) {
|
||||
$(rowElement).append("<label class='col col-md-1 m-2'>И</label>");
|
||||
} else {
|
||||
$(rowElement).append("<label class='col col-md-1 m-2'> </label>");
|
||||
}
|
||||
let variablesElement = createVariableSelect('inputVar', projectId, variableVal);
|
||||
let fuzzyTermsElement = createFuzzyTermsSelect('inputVal', variablesElement, termVal);
|
||||
let variablesElement = await createVariableSelect('inputVar', projectId, variableVal);
|
||||
let fuzzyTermsElement = await createFuzzyTermsSelect('inputVal', variablesElement, termVal);
|
||||
$(variablesElement).on("change", function () {
|
||||
variableValueChanged(variablesElement, fuzzyTermsElement)
|
||||
});
|
||||
@ -204,17 +204,17 @@ function addAntecedent(parentElement, projectId, variableVal, termVal) {
|
||||
$(parentElement).append(rowElement);
|
||||
}
|
||||
|
||||
function addConsequent(parentElement, projectId, variableVal, termVal) {
|
||||
async function addConsequent(parentElement, projectId, variableVal, termVal) {
|
||||
let rowElement = $("<div class='row'></div>");
|
||||
if ($(parentElement).find('.row').length) {
|
||||
$(rowElement).append("<label class='col col-md-1 m-2'>И</label>");
|
||||
} else {
|
||||
$(rowElement).append("<label class='col col-md-1 m-2'> </label>");
|
||||
}
|
||||
let variablesElement = createVariableSelect('outVar', projectId, variableVal);
|
||||
let fuzzyTermsElement = createFuzzyTermsSelect('outVal', variablesElement, termVal);
|
||||
$(variablesElement).on("change", function () {
|
||||
variableValueChanged(variablesElement, fuzzyTermsElement)
|
||||
let variablesElement = await createVariableSelect('outVar', projectId, variableVal);
|
||||
let fuzzyTermsElement = await createFuzzyTermsSelect('outVal', variablesElement, termVal);
|
||||
$(variablesElement).on("change", async function () {
|
||||
await variableValueChanged(variablesElement, fuzzyTermsElement)
|
||||
});
|
||||
$(fuzzyTermsElement).on("change", function () {
|
||||
fuzzyTermsValueChanged()
|
||||
@ -228,18 +228,31 @@ function addConsequent(parentElement, projectId, variableVal, termVal) {
|
||||
$(parentElement).append(rowElement);
|
||||
}
|
||||
|
||||
function addAntecedentFromRule(parentElement, projectId, ruleContent) {
|
||||
async function addAntecedentFromRule(parentElement, projectId, ruleContent) {
|
||||
let antecedentComponents = getRuleComponents(getAntecedent(ruleContent));
|
||||
for (let i = 0; i < antecedentComponents.length; i++) {
|
||||
let a = antecedentComponents[i];
|
||||
addAntecedent(parentElement, projectId, getVariable(a), getVariableValue(a));
|
||||
await addAntecedent(parentElement, projectId, getVariable(a), getVariableValue(a));
|
||||
}
|
||||
}
|
||||
|
||||
function addConsequentFromRule(parentElement, projectId, ruleContent) {
|
||||
async function addConsequentFromRule(parentElement, projectId, ruleContent) {
|
||||
let consequentComponents = getRuleComponents(getConsequent(ruleContent));
|
||||
for (let i = 0; i < consequentComponents.length; i++) {
|
||||
let c = consequentComponents[i];
|
||||
addConsequent(parentElement, projectId, getVariable(c), getVariableValue(c));
|
||||
await addConsequent(parentElement, projectId, getVariable(c), getVariableValue(c));
|
||||
}
|
||||
}
|
||||
|
||||
async function initSelects() {
|
||||
let ruleContentEl = $('#ruleContent');
|
||||
let projectIdEl = $('#projectId');
|
||||
if ($(ruleContentEl).val()) {
|
||||
await addAntecedentFromRule($('#rulesAntecedent'), $(projectIdEl).val(), $(ruleContentEl).val());
|
||||
await addConsequentFromRule($('#rulesConsequent'), $(projectIdEl).val(), $(ruleContentEl).val());
|
||||
} else {
|
||||
await addAntecedent($('#rulesAntecedent'), $(projectIdEl).val());
|
||||
await addConsequent($('#rulesConsequent'), $(projectIdEl).val());
|
||||
}
|
||||
$(".selectpicker").selectpicker("refresh");
|
||||
}
|
@ -50,15 +50,9 @@
|
||||
</div>
|
||||
<script type="text/javascript" src="/js/fuzzyRule.js"></script>
|
||||
<script type="text/javascript">
|
||||
let ruleContentEl = $('#ruleContent');
|
||||
let projectIdEl = $('#projectId');
|
||||
if ($(ruleContentEl).val()) {
|
||||
addAntecedentFromRule($('#rulesAntecedent'), $(projectIdEl).val(), $(ruleContentEl).val());
|
||||
addConsequentFromRule($('#rulesConsequent'), $(projectIdEl).val(), $(ruleContentEl).val());
|
||||
} else {
|
||||
addAntecedent($('#rulesAntecedent'), $(projectIdEl).val());
|
||||
addConsequent($('#rulesConsequent'), $(projectIdEl).val());
|
||||
}
|
||||
(async () => {
|
||||
await initSelects();
|
||||
})();
|
||||
</script>
|
||||
</form>
|
||||
</div>
|
||||
|
Loading…
x
Reference in New Issue
Block a user