7
|
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
|
61
|
160 /*
|
7
|
161 // we could do this with an ajax request, but we have
|
|
162 // the variables already here, we just need to get them
|
|
163 // from Django and not JS.
|
|
164 {% for witness in content.witnesses %}
|
|
165 {% if witness.start_page %}
|
|
166 witnesses[{{ witness.ismi_id }}] = {{ witness.start_page }};
|
|
167 {% endif %}
|
|
168 {% endfor %}
|
61
|
169 */
|
7
|
170
|
|
171 var urlParams = getURLParams();
|
|
172 if (urlParams.hasOwnProperty('witness'))
|
|
173 {
|
|
174 urlWitness = parseInt(urlParams['witness'], 10);
|
|
175
|
|
176 // this won't be populated if the witness doesn't have a
|
|
177 // start page set.
|
|
178 if (witnesses.hasOwnProperty(urlWitness))
|
|
179 {
|
|
180 this.gotoPageByNumber(witnesses[urlWitness]);
|
|
181 }
|
|
182 }
|
|
183 }
|
|
184
|
|
185 $("#diva-wrapper").diva(
|
|
186 {
|
|
187 enableAutoHeight: true,
|
|
188 enableAutoTitle: false,
|
|
189 enableGotoPage: false,
|
|
190 fixedHeightGrid: false,
|
|
191 contained: true,
|
|
192 iipServerURL: "https://images.rasi.mcgill.ca/fcgi-bin/iipsrv.fcgi",
|
|
193 imageDir: "/data7/srv/images/Abd_hamid_mawlawi_398",
|
|
194
|
|
195 onSetCurrentPage: handlePageSwitch,
|
|
196 onDocumentLoaded: handleDocumentLoaded
|
|
197 });
|
|
198
|
|
199 }); |