diff options
Diffstat (limited to 'web/cobrands/zurich/js.js')
-rw-r--r-- | web/cobrands/zurich/js.js | 135 |
1 files changed, 135 insertions, 0 deletions
diff --git a/web/cobrands/zurich/js.js b/web/cobrands/zurich/js.js new file mode 100644 index 000000000..d895789f1 --- /dev/null +++ b/web/cobrands/zurich/js.js @@ -0,0 +1,135 @@ +$(function() { + // Front page + + $( "#pc" ).autocomplete({ + minLength: 3, + source: "/ajax/geocode" + }); + + /* + * Admin things + */ + + // Row highlighting/clicking + + $('.row-link').hover(function(){ + $(this).toggleClass("active"); + }).click(function(){ + window.location = this.getElementsByTagName('a')[0]; + }).find('td:last').hide(); + + $('th.edit').hide(); + + // Map copy for printing + + if ($('.admin-report-edit--interact').length) { + $('#map_box .noscript').clone().removeClass('noscript').addClass('map_clone print-only').prependTo('.admin-report-edit--interact'); + } + + // Response templates + + $('.js-template-name').change(function() { + var $this = $(this); + $('#' + $this.data('for')).val($this.val()); + }); + + // Report editing + + var form_fields_changed = false; + + $('#form_time_spent').spinner({ + spin: function (e, ui) { + if (ui.value < 0) { return false; } + form_fields_changed = true; + } + }); + + setTimeout(function(){ + $('.message-updated').fadeOut(250, function(){ + $(this).remove(); + }); + }, 5000); + + // When the user changes a select box, this bit of code + // makes the labels for the other two select boxes grey. + $('.assignation__select, .assignation select').change(function(){ + if (this.value === "") { + $('.assignation').css('color', '#000'); + } else { + var a = $(this).closest('li').css('color', '#000'); + $('.assignation select').not(this).val(""); + $('.assignation').not(a).css('color', '#999'); + } + }); + + $('form#report_edit #state').change(function(){ + // Show or hide the automatic reply field + var state = $(this).val(); + + // show or disable assignation, templates, public_response, publish if + // same or different state to the one we started on + if (state === $(this).data('pstate')) { + $('input[name=publish_response]').show(); + $('.response_templates_select').show(); + $('#status_update_container').show(); + + if (state === 'confirmed') { + $('#assignation__category').show(); + $('#assignation__subdivision').show(); + } + if ((state === 'closed') || (state === 'investigating')) { + $('#assignation__external').show(); + } else { + $('#assignation__external').hide(); + } + } + else { + $('input[name=publish_response]').hide(); + $('.response_templates_select').hide(); + $('#status_update_container').hide(); + + $('#assignation__category').hide(); + $('#assignation__subdivision').hide(); + $('#assignation__category select').val(''); + $('#assignation__subdivision select').val(''); + + $('#assignation__external select').val(''); + $('#assignation__external').hide(); + $('#external_body').hide(); + $('#third_personal, label[for=third_personal]').hide(); + } + + }).change(); + + $("form#report_edit input[type=submit]").click(function() { + $("form#report_edit").data("clicked_button", $(this).attr("name")); + }); + + $("form#report_edit").submit(function() { + // Make sure the external body field has a value if it's visible + // and the form is submitted as a 'save' action (i.e. not a rotate + // photo). + var clicked = $(this).data("clicked_button"); + if (clicked == "publish_response" || clicked == "Submit changes") { + var visible = $("select#body_external:visible").length > 0; + var val = parseInt($("select#body_external").val(), 10); + if (visible && isNaN(val)) { + $("#assignation__external .error").removeClass("hidden"); + $("select#body_external").focus().get(0).scrollIntoView(); + return false; + } + } + // If the user has clicked to rotate a photo and has edited other + // fields, ask for confirmation before submitting the form + if (/rotate_photo/.test(clicked) && form_fields_changed) { + var message = $(this).parent().data('confirm'); + if (!confirm(message)) { + return false; + } + } + }); + + $("form#report_edit").find("input, select, textarea").change(function() { + form_fields_changed = true; + }); +}); |