Mercurial > hg > ismi-richfaces
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 }); |