mirror of
https://github.com/pretix/pretix.git
synced 2026-09-13 16:14:40 +00:00
Move country-dependent state field JS logic to separate file
(avoids code duplication for presale and control)
This commit is contained in:
@@ -61,6 +61,7 @@
|
|||||||
<script type="text/javascript" src="{% static "fileupload/jquery.fileupload.js" %}"></script>
|
<script type="text/javascript" src="{% static "fileupload/jquery.fileupload.js" %}"></script>
|
||||||
<script type="text/javascript" src="{% static "lightbox/js/lightbox.js" %}"></script>
|
<script type="text/javascript" src="{% static "lightbox/js/lightbox.js" %}"></script>
|
||||||
<script type="text/javascript" src="{% static "are-you-sure/jquery.are-you-sure.js" %}"></script>
|
<script type="text/javascript" src="{% static "are-you-sure/jquery.are-you-sure.js" %}"></script>
|
||||||
|
<script type="text/javascript" src="{% static "pretixbase/js/addressform.js" %}"></script>
|
||||||
{% endcompress %}
|
{% endcompress %}
|
||||||
{{ html_head|safe }}
|
{{ html_head|safe }}
|
||||||
|
|
||||||
|
|||||||
@@ -20,4 +20,5 @@
|
|||||||
<script type="text/javascript" src="{% static "pretixpresale/js/ui/cart.js" %}"></script>
|
<script type="text/javascript" src="{% static "pretixpresale/js/ui/cart.js" %}"></script>
|
||||||
<script type="text/javascript" src="{% static "lightbox/js/lightbox.js" %}"></script>
|
<script type="text/javascript" src="{% static "lightbox/js/lightbox.js" %}"></script>
|
||||||
<script type="text/javascript" src="{% static "pretixpresale/js/ui/iframe.js" %}"></script>
|
<script type="text/javascript" src="{% static "pretixpresale/js/ui/iframe.js" %}"></script>
|
||||||
|
<script type="text/javascript" src="{% static "pretixbase/js/addressform.js" %}"></script>
|
||||||
{% endcompress %}
|
{% endcompress %}
|
||||||
|
|||||||
@@ -0,0 +1,44 @@
|
|||||||
|
$(function () {
|
||||||
|
"use strict";
|
||||||
|
|
||||||
|
$("select[name$=state]:not([data-static])").each(function () {
|
||||||
|
var dependent = $(this),
|
||||||
|
counter = 0,
|
||||||
|
dependency = $(this).closest(".panel-body, form").find('select[name$=country]'),
|
||||||
|
update = function (ev) {
|
||||||
|
counter++;
|
||||||
|
var curCounter = counter;
|
||||||
|
dependent.prop("disabled", true);
|
||||||
|
dependency.closest(".form-group").find("label").prepend("<span class='fa fa-cog fa-spin'></span> ");
|
||||||
|
$.getJSON('/js_helpers/states/?country=' + dependency.val(), function (data) {
|
||||||
|
if (counter > curCounter) {
|
||||||
|
return; // Lost race
|
||||||
|
}
|
||||||
|
var selected_value = dependent.prop("data-selected-value");
|
||||||
|
dependent.find("option").filter(function (t) {return !!$(this).attr("value")}).remove();
|
||||||
|
if (data.data.length > 0) {
|
||||||
|
$.each(data.data, function (k, s) {
|
||||||
|
var o = $("<option>").attr("value", s.code).text(s.name);
|
||||||
|
if (s.code == selected_value || (selected_value && selected_value.indexOf && selected_value.indexOf(s.code) > -1)) {
|
||||||
|
o.prop("selected", true);
|
||||||
|
}
|
||||||
|
dependent.append(o);
|
||||||
|
});
|
||||||
|
dependent.closest(".form-group").show();
|
||||||
|
dependent.prop('required', dependency.prop("required"));
|
||||||
|
} else {
|
||||||
|
dependent.closest(".form-group").hide();
|
||||||
|
dependent.prop("required", false);
|
||||||
|
}
|
||||||
|
dependent.prop("disabled", false);
|
||||||
|
dependency.closest(".form-group").find("label .fa-spin").remove();
|
||||||
|
});
|
||||||
|
};
|
||||||
|
if (dependent.find("option").length === 1) {
|
||||||
|
dependent.closest(".form-group").hide();
|
||||||
|
} else {
|
||||||
|
dependent.prop('required', dependency.prop("required"));
|
||||||
|
}
|
||||||
|
dependency.on("change", update);
|
||||||
|
});
|
||||||
|
});
|
||||||
@@ -452,42 +452,6 @@ var form_handlers = function (el) {
|
|||||||
dependency_id_is_business_1.on("change", update);
|
dependency_id_is_business_1.on("change", update);
|
||||||
});
|
});
|
||||||
|
|
||||||
$("select[name$=state]:not([data-static])").each(function () {
|
|
||||||
var dependent = $(this),
|
|
||||||
counter = 0,
|
|
||||||
dependency = $(this).closest(".panel-body, form").find('select[name$=country]'),
|
|
||||||
update = function (ev) {
|
|
||||||
counter++;
|
|
||||||
var curCounter = counter;
|
|
||||||
dependent.prop("disabled", true);
|
|
||||||
dependency.closest(".form-group").find("label").prepend("<span class='fa fa-cog fa-spin'></span> ");
|
|
||||||
$.getJSON('/js_helpers/states/?country=' + dependency.val(), function (data) {
|
|
||||||
if (counter > curCounter) {
|
|
||||||
return; // Lost race
|
|
||||||
}
|
|
||||||
dependent.find("option").filter(function (t) {return !!$(this).attr("value")}).remove();
|
|
||||||
if (data.data.length > 0) {
|
|
||||||
$.each(data.data, function (k, s) {
|
|
||||||
dependent.append($("<option>").attr("value", s.code).text(s.name));
|
|
||||||
});
|
|
||||||
dependent.closest(".form-group").show();
|
|
||||||
dependent.prop('required', dependency.prop("required"));
|
|
||||||
} else {
|
|
||||||
dependent.closest(".form-group").hide();
|
|
||||||
dependent.prop("required", false);
|
|
||||||
}
|
|
||||||
dependent.prop("disabled", false);
|
|
||||||
dependency.closest(".form-group").find("label .fa-spin").remove();
|
|
||||||
});
|
|
||||||
};
|
|
||||||
if (dependent.find("option").length === 1) {
|
|
||||||
dependent.closest(".form-group").hide();
|
|
||||||
} else {
|
|
||||||
dependent.prop('required', dependency.prop("required"));
|
|
||||||
}
|
|
||||||
dependency.on("change", update);
|
|
||||||
});
|
|
||||||
|
|
||||||
el.find("div.scrolling-choice:not(.no-search)").each(function () {
|
el.find("div.scrolling-choice:not(.no-search)").each(function () {
|
||||||
if ($(this).find("input[type=text]").length > 0) {
|
if ($(this).find("input[type=text]").length > 0) {
|
||||||
return;
|
return;
|
||||||
|
|||||||
@@ -535,47 +535,6 @@ $(function () {
|
|||||||
dependency_id_is_business_1.on("change", update);
|
dependency_id_is_business_1.on("change", update);
|
||||||
});
|
});
|
||||||
|
|
||||||
$("select[name$=state]").each(function () {
|
|
||||||
var dependent = $(this),
|
|
||||||
counter = 0,
|
|
||||||
dependency = $(this).closest(".panel-body, form").find('select[name$=country]'),
|
|
||||||
update = function (ev) {
|
|
||||||
counter++;
|
|
||||||
var curCounter = counter;
|
|
||||||
dependent.prop("disabled", true);
|
|
||||||
dependency.closest(".form-group").find("label").prepend("<span class='fa fa-cog fa-spin'></span> ");
|
|
||||||
$.getJSON('/js_helpers/states/?country=' + dependency.val(), function (data) {
|
|
||||||
if (counter > curCounter) {
|
|
||||||
return; // Lost race
|
|
||||||
}
|
|
||||||
var selected_value = dependent.prop("data-selected-value");
|
|
||||||
dependent.find("option").filter(function (t) {return !!$(this).attr("value")}).remove();
|
|
||||||
if (data.data.length > 0) {
|
|
||||||
$.each(data.data, function (k, s) {
|
|
||||||
var o = $("<option>").attr("value", s.code).text(s.name);
|
|
||||||
if (s.code == selected_value || (selected_value && selected_value.indexOf && selected_value.indexOf(s.code) > -1)) {
|
|
||||||
o.prop("selected", true);
|
|
||||||
}
|
|
||||||
dependent.append(o);
|
|
||||||
});
|
|
||||||
dependent.closest(".form-group").show();
|
|
||||||
dependent.prop('required', dependency.prop("required"));
|
|
||||||
} else {
|
|
||||||
dependent.closest(".form-group").hide();
|
|
||||||
dependent.prop("required", false);
|
|
||||||
}
|
|
||||||
dependent.prop("disabled", false);
|
|
||||||
dependency.closest(".form-group").find("label .fa-spin").remove();
|
|
||||||
});
|
|
||||||
};
|
|
||||||
if (dependent.find("option").length === 1) {
|
|
||||||
dependent.closest(".form-group").hide();
|
|
||||||
} else {
|
|
||||||
dependent.prop('required', dependency.prop("required"));
|
|
||||||
}
|
|
||||||
dependency.on("change", update);
|
|
||||||
});
|
|
||||||
|
|
||||||
form_handlers($("body"));
|
form_handlers($("body"));
|
||||||
|
|
||||||
var local_tz = moment.tz.guess()
|
var local_tz = moment.tz.guess()
|
||||||
|
|||||||
Reference in New Issue
Block a user