From 235bedb510314e47c1bae1da09f7994bbe2e6787 Mon Sep 17 00:00:00 2001 From: Anton Romanov Date: Fri, 28 Feb 2025 11:08:46 +0400 Subject: [PATCH] #4 -- Add event listeners on value change --- .../rule/controller/FuzzyRuleController.java | 1 + src/main/resources/public/js/fuzzyRule.js | 126 ++++++++++++++++++ src/main/resources/templates/rule/edit.html | 28 ++-- 3 files changed, 137 insertions(+), 18 deletions(-) create mode 100644 src/main/resources/public/js/fuzzyRule.js diff --git a/src/main/java/ru/ulstu/fc/rule/controller/FuzzyRuleController.java b/src/main/java/ru/ulstu/fc/rule/controller/FuzzyRuleController.java index 5ab299e..c0c291c 100644 --- a/src/main/java/ru/ulstu/fc/rule/controller/FuzzyRuleController.java +++ b/src/main/java/ru/ulstu/fc/rule/controller/FuzzyRuleController.java @@ -65,6 +65,7 @@ public class FuzzyRuleController { @ResponseBody @GetMapping("/getVariables/{projectId}") public List getVariables(@PathVariable("projectId") Integer projectId) { + //TODO: return DTO without terms return variableService.getAllByProject(projectId); } diff --git a/src/main/resources/public/js/fuzzyRule.js b/src/main/resources/public/js/fuzzyRule.js new file mode 100644 index 0000000..5d775f3 --- /dev/null +++ b/src/main/resources/public/js/fuzzyRule.js @@ -0,0 +1,126 @@ +/* exported MessageTypesEnum */ +var MessageTypesEnum = { + INFO: "info", + SUCCESS: "success", + WARNING: "warning", + DANGER: "danger" +}; +Object.freeze(MessageTypesEnum); + +function isEmpty(value) { + if (typeof value === "function") { + return false; + } + return (value == null || value.length === 0); +} + +/* exported showFeedbackMessage */ +function showFeedbackMessage(message, type) { + alert(type + ' ' + message); +} +/* exported errorHandler */ +function errorHandler(response, callBack, errorCallBack) { + if (!isEmpty(response.error)) { + // TODO: add l10n + // showFeedbackMessage(response.error.code + ": " + response.error.message, MessageTypesEnum.DANGER); + if (!isEmpty(errorCallBack)) { + errorCallBack(response.data); + } + throw response.error.code + ": " + response.error.message + + " / Details: " + response.error.data; + } + if (!isEmpty(callBack)) { + callBack(response); + } +} + +/* exported getFromRest */ +function getFromRest(url, callBack) { + $.ajax({ + url: url, + cache: false, + success: function (response) { + errorHandler(response, callBack); + } + }); +} + +/* exported createRule */ + function createRule(ruleContentElement) { + var ruleString = "if "; + var inp = $('.selectpicker.inputVar').map(function() {return $(this).val();}).get(); + var inpVal = $('.selectpicker.inputVal').map(function() {return $(this).val();}).get(); + for (var i = 0; i < inp.length; i++) { + if (i > 0) { + ruleString += ' and '; + } + ruleString += inp[i] + " is " + inpVal[i]; + } + $(ruleContentElement).val(ruleString); +} + +/* exported fillSelect */ +function fillSelect(selectElement, values) { + $(selectElement).html(""); + $.each(values, function (key, value) { + $(selectElement).append($("