summaryrefslogtreecommitdiffstats
path: root/interface/js/app/selectors.js
diff options
context:
space:
mode:
Diffstat (limited to 'interface/js/app/selectors.js')
-rw-r--r--interface/js/app/selectors.js145
1 files changed, 145 insertions, 0 deletions
diff --git a/interface/js/app/selectors.js b/interface/js/app/selectors.js
new file mode 100644
index 0000000..53240d8
--- /dev/null
+++ b/interface/js/app/selectors.js
@@ -0,0 +1,145 @@
+define(["jquery", "app/common"],
+ ($, common) => {
+ "use strict";
+ const ui = {};
+
+ function enable_disable_check_btn() {
+ $("#selectorsChkMsgBtn").prop("disabled", (
+ $.trim($("#selectorsMsgArea").val()).length === 0 ||
+ !$("#selectorsSelArea").hasClass("is-valid")
+ ));
+ }
+
+ function get_server() {
+ const checked_server = common.getSelector("selSrv");
+ return (checked_server === "All SERVERS") ? "local" : checked_server;
+ }
+
+ function checkMsg(data) {
+ const selector = $("#selectorsSelArea").val();
+ common.query("plugins/selectors/check_message?selector=" + encodeURIComponent(selector), {
+ data: data,
+ method: "POST",
+ success: function (neighbours_status) {
+ const json = neighbours_status[0].data;
+ if (json.success) {
+ common.alertMessage("alert-success", "Message successfully processed");
+ $("#selectorsResArea")
+ .val(Object.prototype.hasOwnProperty.call(json, "data") ? json.data.toString() : "");
+ } else {
+ common.alertMessage("alert-error", "Unexpected error processing message");
+ }
+ },
+ server: get_server()
+ });
+ }
+
+ function checkSelectors() {
+ function toggle_form_group_class(remove, add) {
+ $("#selectorsSelArea").removeClass("is-" + remove).addClass("is-" + add);
+ enable_disable_check_btn();
+ }
+ const selector = $("#selectorsSelArea").val();
+ if (selector.length && !common.read_only) {
+ common.query("plugins/selectors/check_selector?selector=" + encodeURIComponent(selector), {
+ method: "GET",
+ success: function (json) {
+ if (json[0].data.success) {
+ toggle_form_group_class("invalid", "valid");
+ } else {
+ toggle_form_group_class("valid", "invalid");
+ }
+ },
+ server: get_server()
+ });
+ } else {
+ $("#selectorsSelArea").removeClass("is-valid is-invalid");
+ enable_disable_check_btn();
+ }
+ }
+
+ function buildLists() {
+ function build_table_from_json(json, table_id) {
+ Object.keys(json).forEach((key) => {
+ const td = $("<td/>");
+ const tr = $("<tr/>")
+ .append(td.clone().html("<code>" + key + "</code>"))
+ .append(td.clone().html(json[key].description));
+ $(table_id + " tbody").append(tr);
+ });
+ }
+
+ function getList(list) {
+ common.query("plugins/selectors/list_" + list, {
+ method: "GET",
+ success: function (neighbours_status) {
+ const json = neighbours_status[0].data;
+ build_table_from_json(json, "#selectorsTable-" + list);
+ },
+ server: get_server()
+ });
+ }
+
+ getList("extractors");
+ getList("transforms");
+ }
+
+ ui.displayUI = function () {
+ if (!common.read_only &&
+ !$("#selectorsTable-extractors>tbody>tr").length &&
+ !$("#selectorsTable-transforms>tbody>tr").length) buildLists();
+ if (!$("#selectorsSelArea").is(".is-valid, .is-invalid")) checkSelectors();
+ };
+
+
+ function toggleSidebar(side) {
+ $("#sidebar-" + side).toggleClass("collapsed");
+ let contentClass = "col-lg-6";
+ const openSidebarsCount = $("#sidebar-left").hasClass("collapsed") +
+ $("#sidebar-right").hasClass("collapsed");
+ switch (openSidebarsCount) {
+ case 1:
+ contentClass = "col-lg-9";
+ break;
+ case 2:
+ contentClass = "col-lg-12";
+ break;
+ default:
+ }
+ $("#content").removeClass("col-lg-12 col-lg-9 col-lg-6")
+ .addClass(contentClass);
+ }
+ $("#sidebar-tab-left>a").click(() => {
+ toggleSidebar("left");
+ return false;
+ });
+ $("#sidebar-tab-right>a").click(() => {
+ toggleSidebar("right");
+ return false;
+ });
+
+ $("#selectorsMsgClean").on("click", () => {
+ $("#selectorsChkMsgBtn").attr("disabled", true);
+ $("#selectorsMsgArea").val("");
+ return false;
+ });
+ $("#selectorsClean").on("click", () => {
+ $("#selectorsSelArea").val("");
+ checkSelectors();
+ return false;
+ });
+ $("#selectorsChkMsgBtn").on("click", () => {
+ $("#selectorsResArea").val("");
+ checkMsg($("#selectorsMsgArea").val());
+ return false;
+ });
+
+ $("#selectorsMsgArea").on("input", () => {
+ enable_disable_check_btn();
+ });
+ $("#selectorsSelArea").on("input", () => {
+ checkSelectors();
+ });
+
+ return ui;
+ });