comparison src/main/webapp/imageServer/resources/js/init.js @ 7:764f47286679

(none)
author jurzua
date Wed, 29 Oct 2014 14:28:34 +0000
parents
children 8cbc94004a64
comparison
equal deleted inserted replaced
6:ded3bccf2cf9 7:764f47286679
1 $(document).ready(function () {
2
3 function getURLParams()
4 {
5 var urlParams = {},
6 match,
7 pl = /\+/g, // Regex for replacing addition symbol with a space
8 search = /([^&=]+)=?([^&]*)/g,
9 decode = function (s) { return decodeURIComponent(s.replace(pl, " ")); },
10 query = window.location.search.substring(1);
11 while (match = search.exec(query))
12 {
13 urlParams[decode(match[1])] = decode(match[2]);
14 }
15
16 return urlParams;
17 }
18
19
20 $('#page-jump').on('keypress', function(ev)
21 {
22 if (ev.which == '13')
23 {
24 var dv = $('#diva-wrapper').data('diva');
25 var value = $(this).val();
26 var success = dv.gotoPageByNumber(value);
27
28 if (!success)
29 {
30 if (!$('#page-jump-group').hasClass('error'))
31 {
32 $('#page-jump-group').addClass('error');
33 $('#page-jump-controls').append('<span id="jump-error-help" class="help-inline">The page you specified is not valid.</span>');
34 }
35 }
36 else
37 {
38 if ($('#page-jump-group').hasClass('error'))
39 {
40 $('#page-jump-group').removeClass('error');
41 $('#jump-error-help').remove();
42 }
43 }
44
45 }
46 });
47
48 $('.go-to-witness-link').on('click', function(ev) {
49 var dv = $('#diva-wrapper').data('diva');
50 var start_page = $(this).data('start');
51 dv.gotoPageByNumber(start_page);
52
53 ev.preventDefault();
54 });
55
56 $("#witness-edit").on('click', '.set-start-image-btn', function(ev)
57 {
58 var dv = $('#diva-wrapper').data('diva');
59 var witness = $(this).data('witness');
60 var page = dv.getCurrentPageNumber();
61
62 var startSetCallback = function(data, caller)
63 {
64 var parent = caller.parent();
65 var el = $("<span>" + data.start_page + "(<a href='#' class='remove-start-image' data-witness='" + data.ismi_id + "'>X</a>)</span>");
66 caller.remove();
67 parent.append(el);
68 }
69
70 modifyWitness(witness, 'start_page', page, startSetCallback, $(this));
71 });
72
73 $("#witness-edit").on('click', '.set-end-image-btn', function(ev)
74 {
75 var dv = $('#diva-wrapper').data('diva');
76 var witness = $(this).data('witness');
77 var page = dv.getCurrentPageNumber();
78
79 var endSetCallback = function(data, caller)
80 {
81 var parent = caller.parent();
82 var el = $("<span>" + data.end_page + "(<a href='#' class='remove-end-image' data-witness='" + data.ismi_id + "'>X</a>)</span>");
83 caller.remove();
84 parent.append(el);
85 }
86
87 modifyWitness(witness, 'end_page', page, endSetCallback, $(this));
88 });
89
90 $("#witness-edit").on('click', '.remove-start-image', function(ev)
91 {
92 var witness = $(this).data('witness');
93 var startRemoveCallback = function(data, caller)
94 {
95 var parentTd = caller.parent().parent();
96 var parent = caller.parent();
97 var el = $("<button class='btn set-start-image-btn' data-witness='" + data.ismi_id + "'>Set Start Image</button>");
98 parent.remove();
99 parentTd.append(el);
100 }
101
102 modifyWitness(witness, 'start_page', null, startRemoveCallback, $(this));
103 });
104
105 $("#witness-edit").on('click', '.remove-end-image', function(ev)
106 {
107 var witness = $(this).data('witness');
108
109 var endRemoveCallback = function(data, caller)
110 {
111 var parentTd = caller.parent().parent();
112 var parent = caller.parent();
113 var el = $("<button class='btn set-end-image-btn' data-witness='" + data.ismi_id + "'>Set End Image</button>");
114 parent.remove();
115 parentTd.append(el);
116 }
117
118 modifyWitness(witness, 'end_page', null, endRemoveCallback, $(this));
119 });
120
121 $("#test-highlight").on('click', function(ev)
122 {
123 var dv = $("#diva-wrapper").data('diva');
124 dv.highlightOnPage('foo', 'bar', 'baz');
125 });
126
127 function modifyWitness(witness_id, key, value, successCallback, caller) {
128 var csrf = $("[name=csrfmiddlewaretoken]").val();
129 var witnessURL = "/witness/" + witness_id;
130 var data = {};
131 data[key] = value;
132
133 $.ajax(witnessURL, {
134 type: 'PATCH',
135 headers: {
136 'X-CSRFToken': csrf
137 },
138 data: JSON.stringify(data),
139 contentType: "application/json",
140 success: function(data, status, xhr)
141 {
142 // we'll need to operate on the button, so pass it back...
143 successCallback(data, caller);
144 }
145 });
146 }
147
148 function handlePageSwitch(idx, fn, divid)
149 {
150 // page number is what we're after, which is always
151 // page index + 1.
152 $('#current-page-idx').text(idx + 1);
153 $('#current-page-fn').text(fn);
154 }
155
156 function handleDocumentLoaded(idx, fn)
157 {
158 var witnesses = {};
159
160 // we could do this with an ajax request, but we have
161 // the variables already here, we just need to get them
162 // from Django and not JS.
163 {% for witness in content.witnesses %}
164 {% if witness.start_page %}
165 witnesses[{{ witness.ismi_id }}] = {{ witness.start_page }};
166 {% endif %}
167 {% endfor %}
168
169 var urlParams = getURLParams();
170 if (urlParams.hasOwnProperty('witness'))
171 {
172 urlWitness = parseInt(urlParams['witness'], 10);
173
174 // this won't be populated if the witness doesn't have a
175 // start page set.
176 if (witnesses.hasOwnProperty(urlWitness))
177 {
178 this.gotoPageByNumber(witnesses[urlWitness]);
179 }
180 }
181 }
182
183 $("#diva-wrapper").diva(
184 {
185 enableAutoHeight: true,
186 enableAutoTitle: false,
187 enableGotoPage: false,
188 fixedHeightGrid: false,
189 contained: true,
190 iipServerURL: "https://images.rasi.mcgill.ca/fcgi-bin/iipsrv.fcgi",
191 imageDir: "/data7/srv/images/Abd_hamid_mawlawi_398",
192
193 onSetCurrentPage: handlePageSwitch,
194 onDocumentLoaded: handleDocumentLoaded
195 });
196
197 });