mirror of
https://gitlab.com/allianceauth/allianceauth.git
synced 2025-07-11 05:20:16 +02:00
108 lines
6.4 KiB
JavaScript
108 lines
6.4 KiB
JavaScript
(function (b) {
|
|
b.fn.formset = function (d) {
|
|
var a = b.extend({}, b.fn.formset.defaults, d), c = b(this), d = c.parent(), i = function (a, e, g) {
|
|
var d = RegExp("(" + e + "-(\\d+|__prefix__))"), e = e + "-" + g;
|
|
b(a).prop("for") && b(a).prop("for", b(a).prop("for").replace(d, e));
|
|
a.id && (a.id = a.id.replace(d, e));
|
|
a.name && (a.name = a.name.replace(d, e))
|
|
}, f = b("#id_" + a.prefix + "-TOTAL_FORMS").prop("autocomplete", "off"), g = parseInt(f.val(), 10), e = b("#id_" + a.prefix + "-MAX_NUM_FORMS").prop("autocomplete", "off"), f = "" === e.val() || 0 < e.val() - f.val();
|
|
c.each(function () {
|
|
b(this).not("." +
|
|
a.emptyCssClass).addClass(a.formCssClass)
|
|
});
|
|
if (c.length && f) {
|
|
var h;
|
|
"TR" == c.prop("tagName") ? (c = this.eq(-1).children().length, d.append('<tr class="' + a.addCssClass + '"><td colspan="' + c + '"><a href="javascript:void(0)">' + a.addText + "</a></tr>"), h = d.find("tr:last a")) : (c.filter(":last").after('<div class="' + a.addCssClass + '"><a href="javascript:void(0)">' + a.addText + "</a></div>"), h = c.filter(":last").next().find("a"));
|
|
h.click(function (d) {
|
|
d.preventDefault();
|
|
var f = b("#id_" + a.prefix + "-TOTAL_FORMS"), d = b("#" + a.prefix +
|
|
"-empty"), c = d.clone(true);
|
|
c.removeClass(a.emptyCssClass).addClass(a.formCssClass).attr("id", a.prefix + "-" + g);
|
|
c.is("tr") ? c.children(":last").append('<div><a class="' + a.deleteCssClass + '" href="javascript:void(0)">' + a.deleteText + "</a></div>") : c.is("ul") || c.is("ol") ? c.append('<li><a class="' + a.deleteCssClass + '" href="javascript:void(0)">' + a.deleteText + "</a></li>") : c.children(":first").append('<span><a class="' + a.deleteCssClass + '" href="javascript:void(0)">' + a.deleteText + "</a></span>");
|
|
c.find("*").each(function () {
|
|
i(this,
|
|
a.prefix, f.val())
|
|
});
|
|
c.insertBefore(b(d));
|
|
b(f).val(parseInt(f.val(), 10) + 1);
|
|
g = g + 1;
|
|
e.val() !== "" && e.val() - f.val() <= 0 && h.parent().hide();
|
|
c.find("a." + a.deleteCssClass).click(function (d) {
|
|
d.preventDefault();
|
|
d = b(this).parents("." + a.formCssClass);
|
|
d.remove();
|
|
g = g - 1;
|
|
a.removed && a.removed(d);
|
|
d = b("." + a.formCssClass);
|
|
b("#id_" + a.prefix + "-TOTAL_FORMS").val(d.length);
|
|
(e.val() === "" || e.val() - d.length > 0) && h.parent().show();
|
|
for (var c = 0, f = d.length; c < f; c++) {
|
|
i(b(d).get(c), a.prefix, c);
|
|
b(d.get(c)).find("*").each(function () {
|
|
i(this,
|
|
a.prefix, c)
|
|
})
|
|
}
|
|
});
|
|
a.added && a.added(c)
|
|
})
|
|
}
|
|
return this
|
|
};
|
|
b.fn.formset.defaults = {prefix: "form", addText: "add another", deleteText: "remove", addCssClass: "add-row", deleteCssClass: "delete-row", emptyCssClass: "empty-row", formCssClass: "dynamic-form", added: null, removed: null};
|
|
b.fn.tabularFormset = function (d) {
|
|
var a = b(this), c = function () {
|
|
b(a.selector).not(".add-row").removeClass("row1 row2").filter(":even").addClass("row1").end().filter(":odd").addClass("row2")
|
|
};
|
|
a.formset({prefix: d.prefix, addText: d.addText, formCssClass: "dynamic-" +
|
|
d.prefix, deleteCssClass: "inline-deletelink", deleteText: d.deleteText, emptyCssClass: "empty-form", removed: c, added: function (a) {
|
|
a.find(".prepopulated_field").each(function () {
|
|
var d = b(this).find("input, select, textarea"), c = d.data("dependency_list") || [], e = [];
|
|
b.each(c, function (d, b) {
|
|
e.push("#" + a.find(".field-" + b).find("input, select, textarea").attr("id"))
|
|
});
|
|
e.length && d.prepopulate(e, d.attr("maxlength"))
|
|
});
|
|
"undefined" != typeof DateTimeShortcuts && (b(".datetimeshortcuts").remove(), DateTimeShortcuts.init());
|
|
"undefined" != typeof SelectFilter && (b(".selectfilter").each(function (a, b) {
|
|
var c = b.name.split("-");
|
|
SelectFilter.init(b.id, c[c.length - 1], false, d.adminStaticPrefix)
|
|
}), b(".selectfilterstacked").each(function (a, b) {
|
|
var c = b.name.split("-");
|
|
SelectFilter.init(b.id, c[c.length - 1], true, d.adminStaticPrefix)
|
|
}));
|
|
c(a)
|
|
}});
|
|
return a
|
|
};
|
|
b.fn.stackedFormset = function (d) {
|
|
var a = b(this), c = function () {
|
|
b(a.selector).find(".inline_label").each(function (a) {
|
|
a += 1;
|
|
b(this).html(b(this).html().replace(/(#\d+)/g, "#" + a))
|
|
})
|
|
};
|
|
a.formset({prefix: d.prefix,
|
|
addText: d.addText, formCssClass: "dynamic-" + d.prefix, deleteCssClass: "inline-deletelink", deleteText: d.deleteText, emptyCssClass: "empty-form", removed: c, added: function (a) {
|
|
a.find(".prepopulated_field").each(function () {
|
|
var d = b(this).find("input, select, textarea"), c = d.data("dependency_list") || [], e = [];
|
|
b.each(c, function (d, b) {
|
|
e.push("#" + a.find(".form-row .field-" + b).find("input, select, textarea").attr("id"))
|
|
});
|
|
e.length && d.prepopulate(e, d.attr("maxlength"))
|
|
});
|
|
"undefined" != typeof DateTimeShortcuts && (b(".datetimeshortcuts").remove(),
|
|
DateTimeShortcuts.init());
|
|
"undefined" != typeof SelectFilter && (b(".selectfilter").each(function (a, b) {
|
|
var c = b.name.split("-");
|
|
SelectFilter.init(b.id, c[c.length - 1], false, d.adminStaticPrefix)
|
|
}), b(".selectfilterstacked").each(function (a, b) {
|
|
var c = b.name.split("-");
|
|
SelectFilter.init(b.id, c[c.length - 1], true, d.adminStaticPrefix)
|
|
}));
|
|
c(a)
|
|
}});
|
|
return a
|
|
}
|
|
})(django.jQuery);
|