import jQuery from "jquery"; import I18n from "./i18n"; import flatpickr from "flatpickr"; (function ($) { var filters; $.filters = filters = { append: function (options) { var field_label = options["label"]; var field_name = options["name"]; var field_type = options["type"]; var field_value = options["value"] || ""; var field_operator = options["operator"]; var operators = options["operators"]; var index = options["index"]; var value_name = "f[" + field_name + "][" + index + "][v]"; var operator_name = "f[" + field_name + "][" + index + "][o]"; var control = null; var additional_control = null; if (operators.length > 0) { control = $( '' ).prop("name", operator_name); operators.forEach((operator) => { var element = this.build_operator(operator, options); if (!element) { return; } if (element.prop("value") === field_operator) { element.prop("selected", true); } control.append(element); }); if (control.find("[data-additional-fieldset]").length > 0) { control.addClass("switch-additional-fieldsets"); } } switch (field_type) { case "boolean": control && control .prop("name", value_name) .find("option") .each(function () { if ($(this).attr("value") === field_value) $(this).attr("selected", true); }); break; case "date": case "datetime": case "timestamp": case "time": additional_control = $.map( [undefined, "-∞", "∞"], function (placeholder, index) { var visible = index == 0 ? !field_operator || field_operator == "default" : field_operator == "between"; return $('') .addClass(index == 0 ? "default" : "between") .css("display", visible ? "inline-block" : "none") .html( $( '' ) .addClass(field_type == "date" ? "date" : "datetime") .prop("name", value_name + "[]") .prop("value", field_value[index] || "") .prop( "size", field_type == "date" || field_type == "time" ? 20 : 25 ) .prop("placeholder", placeholder) ); } ); break; case "enum": if (control) { var multiple = field_value instanceof Array; control = control .prop("name", multiple ? value_name + "[]" : value_name) .prop("multiple", multiple) .add( $('').append( $("").addClass( "fas fa-" + (multiple ? "minus" : "plus") ) ) ); control.find("option").each(function () { const value = $(this).attr("value"); if ( multiple ? field_value.includes(value) : value === field_value ) $(this).attr("selected", true); }); if (multiple) control.find("option[value^=_],option[disabled]").hide(); } break; case "citext": case "string": case "text": case "belongs_to_association": case "has_one_association": additional_control = $( '' ) .css( "display", field_operator == "_present" || field_operator == "_blank" ? "none" : "inline-block" ) .prop("name", value_name) .prop("value", field_value); break; case "integer": case "decimal": case "float": additional_control = $( '' ) .css( "display", !field_operator || field_operator == "default" ? "inline-block" : "none" ) .prop("type", field_type) .prop("name", value_name + "[]") .prop("value", field_value[0] || "") .add( $( '' ) .css( "display", field_operator == "between" ? "inline-block" : "none" ) .prop("type", field_type) .prop("name", value_name + "[]") .prop("value", field_value[1] || "") ) .add( $( '' ) .css( "display", field_operator == "between" ? "inline-block" : "none" ) .prop("type", field_type) .prop("name", value_name + "[]") .prop("value", field_value[2] || "") ); break; default: control = $( '' ) .prop("name", value_name) .prop("value", field_value); break; } var filterContainerId = field_name + "-" + index + "-filter-container"; $("#" + filterContainerId).remove(); var $content = $("