Mercurial > hg > ismi-richfaces
diff src/main/webapp/imageServer/resources/js/jurzua/shared.js @ 7:764f47286679
(none)
author | jurzua |
---|---|
date | Wed, 29 Oct 2014 14:28:34 +0000 |
parents | |
children |
line wrap: on
line diff
--- /dev/null Thu Jan 01 00:00:00 1970 +0000 +++ b/src/main/webapp/imageServer/resources/js/jurzua/shared.js Wed Oct 29 14:28:34 2014 +0000 @@ -0,0 +1,201 @@ + +$(document).ready(function () { + + alert('asdfsafdasffsd'); + + + function getURLParams() + { + var urlParams = {}, + match, + pl = /\+/g, // Regex for replacing addition symbol with a space + search = /([^&=]+)=?([^&]*)/g, + decode = function (s) { return decodeURIComponent(s.replace(pl, " ")); }, + query = window.location.search.substring(1); + while (match = search.exec(query)) + { + urlParams[decode(match[1])] = decode(match[2]); + } + + return urlParams; + } + + + $('#page-jump').on('keypress', function(ev) + { + if (ev.which == '13') + { + var dv = $('#diva-wrapper').data('diva'); + var value = $(this).val(); + var success = dv.gotoPageByNumber(value); + + if (!success) + { + if (!$('#page-jump-group').hasClass('error')) + { + $('#page-jump-group').addClass('error'); + $('#page-jump-controls').append('<span id="jump-error-help" class="help-inline">The page you specified is not valid.</span>'); + } + } + else + { + if ($('#page-jump-group').hasClass('error')) + { + $('#page-jump-group').removeClass('error'); + $('#jump-error-help').remove(); + } + } + + } + }); + + $('.go-to-witness-link').on('click', function(ev) { + var dv = $('#diva-wrapper').data('diva'); + var start_page = $(this).data('start'); + dv.gotoPageByNumber(start_page); + + ev.preventDefault(); + }); + + $("#witness-edit").on('click', '.set-start-image-btn', function(ev) + { + var dv = $('#diva-wrapper').data('diva'); + var witness = $(this).data('witness'); + var page = dv.getCurrentPageNumber(); + + var startSetCallback = function(data, caller) + { + var parent = caller.parent(); + var el = $("<span>" + data.start_page + "(<a href='#' class='remove-start-image' data-witness='" + data.ismi_id + "'>X</a>)</span>"); + caller.remove(); + parent.append(el); + } + + modifyWitness(witness, 'start_page', page, startSetCallback, $(this)); + }); + + $("#witness-edit").on('click', '.set-end-image-btn', function(ev) + { + var dv = $('#diva-wrapper').data('diva'); + var witness = $(this).data('witness'); + var page = dv.getCurrentPageNumber(); + + var endSetCallback = function(data, caller) + { + var parent = caller.parent(); + var el = $("<span>" + data.end_page + "(<a href='#' class='remove-end-image' data-witness='" + data.ismi_id + "'>X</a>)</span>"); + caller.remove(); + parent.append(el); + } + + modifyWitness(witness, 'end_page', page, endSetCallback, $(this)); + }); + + $("#witness-edit").on('click', '.remove-start-image', function(ev) + { + var witness = $(this).data('witness'); + var startRemoveCallback = function(data, caller) + { + var parentTd = caller.parent().parent(); + var parent = caller.parent(); + var el = $("<button class='btn set-start-image-btn' data-witness='" + data.ismi_id + "'>Set Start Image</button>"); + parent.remove(); + parentTd.append(el); + } + + modifyWitness(witness, 'start_page', null, startRemoveCallback, $(this)); + }); + + $("#witness-edit").on('click', '.remove-end-image', function(ev) + { + var witness = $(this).data('witness'); + + var endRemoveCallback = function(data, caller) + { + var parentTd = caller.parent().parent(); + var parent = caller.parent(); + var el = $("<button class='btn set-end-image-btn' data-witness='" + data.ismi_id + "'>Set End Image</button>"); + parent.remove(); + parentTd.append(el); + } + + modifyWitness(witness, 'end_page', null, endRemoveCallback, $(this)); + }); + + $("#test-highlight").on('click', function(ev) + { + var dv = $("#diva-wrapper").data('diva'); + dv.highlightOnPage('foo', 'bar', 'baz'); + }); + + function modifyWitness(witness_id, key, value, successCallback, caller) { + var csrf = $("[name=csrfmiddlewaretoken]").val(); + var witnessURL = "/witness/" + witness_id; + var data = {}; + data[key] = value; + + $.ajax(witnessURL, { + type: 'PATCH', + headers: { + 'X-CSRFToken': csrf + }, + data: JSON.stringify(data), + contentType: "application/json", + success: function(data, status, xhr) + { + // we'll need to operate on the button, so pass it back... + successCallback(data, caller); + } + }); + } + + function handlePageSwitch(idx, fn, divid) + { + // page number is what we're after, which is always + // page index + 1. + $('#current-page-idx').text(idx + 1); + $('#current-page-fn').text(fn); + } + + function handleDocumentLoaded(idx, fn) + { + var witnesses = {}; + + // we could do this with an ajax request, but we have + // the variables already here, we just need to get them + // from Django and not JS. + /* + {% for witness in content.witnesses %} + {% if witness.start_page %} + witnesses[{{ witness.ismi_id }}] = {{ witness.start_page }}; + {% endif %} + {% endfor %}*/ + + var urlParams = getURLParams(); + if (urlParams.hasOwnProperty('witness')) + { + urlWitness = parseInt(urlParams['witness'], 10); + + // this won't be populated if the witness doesn't have a + // start page set. + if (witnesses.hasOwnProperty(urlWitness)) + { + this.gotoPageByNumber(witnesses[urlWitness]); + } + } + } + + $("#diva-wrapper").diva( + { + enableAutoHeight: true, + enableAutoTitle: false, + enableGotoPage: false, + fixedHeightGrid: false, + contained: true, + iipServerURL: "https://images.rasi.mcgill.ca/fcgi-bin/iipsrv.fcgi", + imageDir: "/data7/srv/images/Majlis_shura_21", + + onSetCurrentPage: handlePageSwitch, + onDocumentLoaded: handleDocumentLoaded + }); +}); \ No newline at end of file