#2 -- Add inference dtos #22
@ -29,13 +29,13 @@ public class ProjectVariableService {
|
|||||||
if (projectId == null || projectId == 0) {
|
if (projectId == null || projectId == 0) {
|
||||||
return Collections.emptyList();
|
return Collections.emptyList();
|
||||||
}
|
}
|
||||||
return variableRepository.findInputByProject(projectService.getById(projectId));
|
return variableRepository.getInputByProject(projectService.getById(projectId));
|
||||||
}
|
}
|
||||||
|
|
||||||
public List<Variable> getOutputByProjectId(Integer projectId) {
|
public List<Variable> getOutputByProjectId(Integer projectId) {
|
||||||
if (projectId == null || projectId == 0) {
|
if (projectId == null || projectId == 0) {
|
||||||
return Collections.emptyList();
|
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);
|
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
|
@ResponseBody
|
||||||
@GetMapping("/getFuzzyTerms/{variableId}")
|
@GetMapping("/getFuzzyTerms/{variableId}")
|
||||||
public List<FuzzyTerm> getTerms(@PathVariable("variableId") Integer 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);
|
List<Variable> getByProject(Project project);
|
||||||
|
|
||||||
@Query("SELECT v FROM Variable v WHERE v.project = :project AND v.input = true")
|
@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")
|
@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) {
|
public void checkIsCurrentUserVariableWithThrow(Variable variable) {
|
||||||
projectService.checkIsCurrentUserProjectWithThrow(variable.getProject());
|
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 */
|
/* exported getFromRest */
|
||||||
function getFromRest(url, callBack) {
|
async function getFromRest(url) {
|
||||||
$.ajax({
|
return await $.ajax({
|
||||||
url: url,
|
url: url,
|
||||||
method: 'get',
|
method: 'get',
|
||||||
cache: true,
|
cache: true,
|
||||||
dataType: 'json',
|
dataType: 'json'
|
||||||
success: function (response) {
|
|
||||||
errorHandler(response, callBack);
|
|
||||||
}
|
|
||||||
});
|
});
|
||||||
}
|
}
|
||||||
|
|
||||||
@ -112,60 +109,63 @@ function fillSelect(selectElement, values, selectedVal) {
|
|||||||
$(selectElement).append($("<option />").val(value.id).text(value.name));
|
$(selectElement).append($("<option />").val(value.id).text(value.name));
|
||||||
});
|
});
|
||||||
$(selectElement).children().each(function () {
|
$(selectElement).children().each(function () {
|
||||||
if ($(this).text() == selectedVal) {
|
if ($(this).text() === selectedVal) {
|
||||||
$(this).prop('selected', true);
|
$(this).prop('selected', true);
|
||||||
}
|
}
|
||||||
});
|
});
|
||||||
}
|
}
|
||||||
|
|
||||||
function fillFuzzyTerms(variablesElement, fuzzyTermsElement, termVal) {
|
async function fillFuzzyTerms(variablesElement, fuzzyTermsElement, termVal) {
|
||||||
getFromRest("/rule/getFuzzyTerms/" + $(variablesElement).val(), function (fuzzyTerms) {
|
let fuzzyTerms = await getFromRest("/rule/getFuzzyTerms/" + $(variablesElement).val());
|
||||||
let fuzzyTermsData = [];
|
let fuzzyTermsData = [];
|
||||||
$.each(fuzzyTerms, function (key, value) {
|
$.each(fuzzyTerms, function (key, value) {
|
||||||
fuzzyTermsData.push({
|
fuzzyTermsData.push({
|
||||||
id: value.id,
|
id: value.id,
|
||||||
name: value.description
|
name: value.description
|
||||||
});
|
|
||||||
});
|
});
|
||||||
fillSelect(fuzzyTermsElement, fuzzyTermsData, termVal);
|
|
||||||
$(fuzzyTermsElement).selectpicker("refresh");
|
|
||||||
$(fuzzyTermsElement).trigger("change");
|
|
||||||
});
|
});
|
||||||
|
fillSelect(fuzzyTermsElement, fuzzyTermsData, termVal);
|
||||||
}
|
}
|
||||||
|
|
||||||
function fillVariables(projectId, variablesElement, variableVal) {
|
async function fillVariables(projectId, variablesElement, variableVal, cls) {
|
||||||
getFromRest("/rule/getVariables/" + projectId, function (variables) {
|
let url = '/rule/';
|
||||||
let variablesData = [];
|
if (cls === 'inputVar') {
|
||||||
$.each(variables, function (key, value) {
|
url += 'getInputVariables/';
|
||||||
variablesData.push({
|
} else {
|
||||||
id: value.id,
|
url += 'getOutputVariables/';
|
||||||
name: value.name
|
}
|
||||||
});
|
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) {
|
async function variableValueChanged(variablesElement, fuzzyTermsElement) {
|
||||||
fillFuzzyTerms(variablesElement, fuzzyTermsElement);
|
await fillFuzzyTerms(variablesElement, fuzzyTermsElement);
|
||||||
}
|
$(".selectpicker").selectpicker("refresh");
|
||||||
|
|
||||||
function fuzzyTermsValueChanged() {
|
|
||||||
createRule();
|
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>");
|
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;
|
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>");
|
let fuzzyTermsElement = $("<select class='selectpicker " + cls + " m-2' data-live-search='true data-width='70%'></select>");
|
||||||
if ($(variablesElement).val()) {
|
if ($(variablesElement).val()) {
|
||||||
fillFuzzyTerms(variablesElement, fuzzyTermsElement, termVal);
|
await fillFuzzyTerms(variablesElement, fuzzyTermsElement, termVal);
|
||||||
}
|
}
|
||||||
return fuzzyTermsElement;
|
return fuzzyTermsElement;
|
||||||
}
|
}
|
||||||
@ -180,15 +180,15 @@ function removeConsequent(buttonElement) {
|
|||||||
fuzzyTermsValueChanged();
|
fuzzyTermsValueChanged();
|
||||||
}
|
}
|
||||||
|
|
||||||
function addAntecedent(parentElement, projectId, variableVal, termVal) {
|
async function addAntecedent(parentElement, projectId, variableVal, termVal) {
|
||||||
let rowElement = $("<div class='row'></div>");
|
let 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>");
|
||||||
}
|
}
|
||||||
let variablesElement = createVariableSelect('inputVar', projectId, variableVal);
|
let variablesElement = await createVariableSelect('inputVar', projectId, variableVal);
|
||||||
let fuzzyTermsElement = createFuzzyTermsSelect('inputVal', variablesElement, termVal);
|
let fuzzyTermsElement = await createFuzzyTermsSelect('inputVal', variablesElement, termVal);
|
||||||
$(variablesElement).on("change", function () {
|
$(variablesElement).on("change", function () {
|
||||||
variableValueChanged(variablesElement, fuzzyTermsElement)
|
variableValueChanged(variablesElement, fuzzyTermsElement)
|
||||||
});
|
});
|
||||||
@ -204,17 +204,17 @@ function addAntecedent(parentElement, projectId, variableVal, termVal) {
|
|||||||
$(parentElement).append(rowElement);
|
$(parentElement).append(rowElement);
|
||||||
}
|
}
|
||||||
|
|
||||||
function addConsequent(parentElement, projectId, variableVal, termVal) {
|
async function addConsequent(parentElement, projectId, variableVal, termVal) {
|
||||||
let rowElement = $("<div class='row'></div>");
|
let 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>");
|
||||||
}
|
}
|
||||||
let variablesElement = createVariableSelect('outVar', projectId, variableVal);
|
let variablesElement = await createVariableSelect('outVar', projectId, variableVal);
|
||||||
let fuzzyTermsElement = createFuzzyTermsSelect('outVal', variablesElement, termVal);
|
let fuzzyTermsElement = await createFuzzyTermsSelect('outVal', variablesElement, termVal);
|
||||||
$(variablesElement).on("change", function () {
|
$(variablesElement).on("change", async function () {
|
||||||
variableValueChanged(variablesElement, fuzzyTermsElement)
|
await variableValueChanged(variablesElement, fuzzyTermsElement)
|
||||||
});
|
});
|
||||||
$(fuzzyTermsElement).on("change", function () {
|
$(fuzzyTermsElement).on("change", function () {
|
||||||
fuzzyTermsValueChanged()
|
fuzzyTermsValueChanged()
|
||||||
@ -228,18 +228,31 @@ function addConsequent(parentElement, projectId, variableVal, termVal) {
|
|||||||
$(parentElement).append(rowElement);
|
$(parentElement).append(rowElement);
|
||||||
}
|
}
|
||||||
|
|
||||||
function addAntecedentFromRule(parentElement, projectId, ruleContent) {
|
async function addAntecedentFromRule(parentElement, projectId, ruleContent) {
|
||||||
let antecedentComponents = getRuleComponents(getAntecedent(ruleContent));
|
let antecedentComponents = getRuleComponents(getAntecedent(ruleContent));
|
||||||
for (let i = 0; i < antecedentComponents.length; i++) {
|
for (let i = 0; i < antecedentComponents.length; i++) {
|
||||||
let a = antecedentComponents[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));
|
let consequentComponents = getRuleComponents(getConsequent(ruleContent));
|
||||||
for (let i = 0; i < consequentComponents.length; i++) {
|
for (let i = 0; i < consequentComponents.length; i++) {
|
||||||
let c = consequentComponents[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>
|
</div>
|
||||||
<script type="text/javascript" src="/js/fuzzyRule.js"></script>
|
<script type="text/javascript" src="/js/fuzzyRule.js"></script>
|
||||||
<script type="text/javascript">
|
<script type="text/javascript">
|
||||||
let ruleContentEl = $('#ruleContent');
|
(async () => {
|
||||||
let projectIdEl = $('#projectId');
|
await initSelects();
|
||||||
if ($(ruleContentEl).val()) {
|
})();
|
||||||
addAntecedentFromRule($('#rulesAntecedent'), $(projectIdEl).val(), $(ruleContentEl).val());
|
|
||||||
addConsequentFromRule($('#rulesConsequent'), $(projectIdEl).val(), $(ruleContentEl).val());
|
|
||||||
} else {
|
|
||||||
addAntecedent($('#rulesAntecedent'), $(projectIdEl).val());
|
|
||||||
addConsequent($('#rulesConsequent'), $(projectIdEl).val());
|
|
||||||
}
|
|
||||||
</script>
|
</script>
|
||||||
</form>
|
</form>
|
||||||
</div>
|
</div>
|
||||||
|
Loading…
x
Reference in New Issue
Block a user