comparison src/main/webapp/imageServer/displayDigi.jsp @ 7:764f47286679

(none)
author jurzua
date Wed, 29 Oct 2014 14:28:34 +0000
parents
children 672301480990
comparison
equal deleted inserted replaced
6:ded3bccf2cf9 7:764f47286679
1 <%@ page contentType="text/html; charset=UTF-8" %>
2 <%@ taglib prefix="c" uri="http://java.sun.com/jsp/jstl/core" %>
3 <%@page import="org.mpi.openmind.repository.bo.Entity"%>
4 <%@page import="de.mpiwg.itgroup.diva.jsp.JSPDigitalization"%>
5
6 <html>
7 <head>
8 <title>ismi - image server</title>
9
10
11 <link href="resources/css/bootstrap.css" type="text/css" rel="stylesheet" />
12 <link href="resources/css/bootstrap-responsive.min.css" type="text/css" rel="stylesheet">
13 <link href="resources/css/style.css" type="text/css" rel="stylesheet">
14 <link href="resources/css/diva.min.css" type="text/css" rel="stylesheet" />
15 <link href="resources/css/diva4ismi.css" type="text/css" rel="stylesheet" />
16
17 <script type="text/javascript" src="resources/js/jquery.min.js"></script>
18 <script type="text/javascript" src="resources/js/diva.min.js"></script>
19 <script type="text/javascript" src="resources/js/bootstrap.min.js"></script>
20 <script type="text/javascript" src="resources/js/typeahead.js"></script>
21 <script type="text/javascript" src="resources/js/diva4ismi.js"></script>
22
23 <jsp:useBean id="digiBean" class="de.mpiwg.itgroup.diva.jsp.JSPDigitalization" scope="session" />
24 <jsp:setProperty name="digiBean" property="request" value="${pageContext.request}" />
25 <jsp:setProperty name="digiBean" property="response" value="${pageContext.response}" />
26
27 <%digiBean.init();%>
28 <% if(!digiBean.hasLogin()){ %>
29 <jsp:forward page="../imageServer/displayDigiList.xhtml?login=true" />
30 <% } %>
31
32 <script type="text/javascript">
33 $(document).ready(function () {
34
35 $("#witness-edit").on('click', '.update-witness', function(ev){
36
37 var witnessId = $(this).data('witness');
38
39 var startPageInput = $( "#input-start-page-"+witnessId );
40 var endPageInput = $( "#input-end-page-"+witnessId );
41 var digiIdInput = $("#digi_id");
42
43 var data = {};
44 data["digi_id"] = digiIdInput[0].value;
45
46 data["witness"] = {};
47 data["witness"]["id"] = "" + witnessId;
48 data["witness"]["start_page"] = startPageInput[0].value;
49 data["witness"]["end_page"] = endPageInput[0].value;
50
51 var witnessLink = $("#witness-link-" + witnessId);
52 witnessLink.data('start', startPageInput[0].value);
53
54 $.ajax(
55 divaGlobal.rest_url + "/rest/witness/update?data=" + JSON.stringify(data), {
56 type: 'GET',
57 contentType: "application/json",
58 success: function(data, textStatus, jqXHR){
59 var state = data["state"];
60 if(state == "ok"){
61 alert('Executed successfully');
62 }else{
63 alert(data["message"]);
64 }
65 },
66 error: function(jqXHR, textStatus, errorThrown){
67 alert('Error: ' + textStatus);
68 }
69 });
70
71
72 });
73
74 /************************************************/
75
76 function getURLParams()
77 {
78 var urlParams = {},
79 match,
80 pl = /\+/g, // Regex for replacing addition symbol with a space
81 search = /([^&=]+)=?([^&]*)/g,
82 decode = function (s) { return decodeURIComponent(s.replace(pl, " ")); },
83 query = window.location.search.substring(1);
84 while (match = search.exec(query))
85 {
86 urlParams[decode(match[1])] = decode(match[2]);
87 }
88
89 return urlParams;
90 }
91
92
93 $('#page-jump').on('keypress', function(ev)
94 {
95 if (ev.which == '13')
96 {
97 var dv = $('#diva-wrapper').data('diva');
98 var value = $(this).val();
99 var success = dv.gotoPageByNumber(value);
100
101 if (!success)
102 {
103 if (!$('#page-jump-group').hasClass('error'))
104 {
105 $('#page-jump-group').addClass('error');
106 $('#page-jump-controls').append('<span id="jump-error-help" class="help-inline">The page you specified is not valid.</span>');
107 }
108 }
109 else
110 {
111 if ($('#page-jump-group').hasClass('error'))
112 {
113 $('#page-jump-group').removeClass('error');
114 $('#jump-error-help').remove();
115 }
116 }
117
118 }
119 });
120
121 $('.go-to-witness-link').on('click', function(ev) {
122 var dv = $('#diva-wrapper').data('diva');
123 var start_page = $(this).data('start');
124 if(start_page){
125 dv.gotoPageByNumber(start_page);
126 ev.preventDefault();
127 }else{
128 alert("No page assigned to this witness.");
129 }
130
131 });
132
133 function modifyWitness(witness_id, key, value, successCallback, caller) {
134 var csrf = $("[name=csrfmiddlewaretoken]").val();
135 var witnessURL = "/witness/" + witness_id;
136 var data = {};
137 data[key] = value;
138
139 $.ajax(witnessURL, {
140 type: 'PATCH',
141 headers: {
142 'X-CSRFToken': csrf
143 },
144 data: JSON.stringify(data),
145 contentType: "application/json",
146 success: function(data, status, xhr)
147 {
148 // we'll need to operate on the button, so pass it back...
149 successCallback(data, caller);
150 }
151 });
152 }
153
154 function handlePageSwitch(idx, fn, divid)
155 {
156 // page number is what we're after, which is always
157 // page index + 1.
158 $('#current-page-idx').text(idx + 1);
159 $('#current-page-fn').text(fn);
160 }
161
162 function handleDocumentLoaded(idx, fn)
163 {
164 var witnesses = {};
165
166 // we could do this with an ajax request, but we have
167 // the variables already here, we just need to get them
168 // from Django and not JS.
169
170 var urlParams = getURLParams();
171 if (urlParams.hasOwnProperty('witness'))
172 {
173 urlWitness = parseInt(urlParams['witness'], 10);
174
175 // this won't be populated if the witness doesn't have a
176 // start page set.
177 if (witnesses.hasOwnProperty(urlWitness))
178 {
179 this.gotoPageByNumber(witnesses[urlWitness]);
180 }
181 }
182 }
183
184 $("#diva-wrapper").diva(
185 {
186 enableAutoHeight: true,
187 enableAutoTitle: false,
188 enableGotoPage: false,
189 fixedHeightGrid: false,
190 contained: true,
191 iipServerURL: divaGlobal.iipServerURL,
192 digiId: "<%=digiBean.getDigiId()%>",
193 objectData: divaGlobal.rest_url + "/rest/diva/proxy/json/<%=digiBean.getDigiLabel()%>",
194 imageDir: "/data7/srv/images/<%=digiBean.getDigiLabel()%>",
195 onSetCurrentPage : handlePageSwitch,
196 onDocumentLoaded : handleDocumentLoaded,
197 zoomLevel: 1,
198 canvasPlugin: {
199 proxyURL: divaGlobal.rest_url + "/rest/diva/proxy/image"
200 }
201 });
202 });
203
204
205 </script>
206 </head>
207
208 <body bgcolor=white>
209
210 <jsp:include page="header.jsp" />
211 <div class="custom-container">
212
213 <div class="row-fluid">
214 <div class="span4 page">
215 <div style="height: 800px; overflow: scroll;">
216
217
218 <input type='hidden' name='csrfmiddlewaretoken' value='psDBHsF5a1mttLSKeUgoUUVN3HL6f8Re' />
219
220 <c:if test="${digiBean.getDigi() != null}">
221
222 <input type="hidden" id="digi_id" value="${digiBean.getDigi().getId()}">
223
224 <div class="divaBackgroud">
225
226 <!-- XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX -->
227
228 <h4><%=digiBean.getDigiLabel()%></h4>
229
230 <c:if test="${digiBean.getWitnessList().size() > 0}">
231 <span class="titlePanel">Titles in this Codex</span>
232
233 <table class="table table-bordered table-condensed divaPanel">
234 <thead>
235 <tr>
236 <th class="tableHead">Title</th>
237 <th class="tableHead">Folios</th>
238 </tr>
239 </thead>
240 <tbody>
241 <c:forEach var="witness" items="${digiBean.getWitnessList()}">
242 <tr>
243 <td class="tdTitle">
244 <c:out value="[${witness.id}] ${witness.title}"/>
245 <a target="_blank"
246 href="<c:out value='../search/displayTitle.xhtml?witnessId=${witness.id}#witnesses'/>">
247 <img src="../resources/images/display_32.png" alt="Display witness" width="20" height="20" >
248 </a>
249 <a target="_blank"
250 href="<c:out value='../browse/entityDetails.xhtml?eid=${witness.id}'/>">
251 <img src="../resources/images/network_32.png" alt="show witness"
252 width="20" height="20">
253 </a>
254 <c:if test="${digiBean.canEdit()}">
255 <a target="_blank"
256 href="<c:out value='../entry/createEntity.xhtml?eid=${witness.id}'/>">
257 <img src="../resources/css/xp/css-images/edit.gif" alt="Edit codex" >
258 </a>
259 </c:if>
260 </td>
261 <td class="columnCentered">
262 <a id="witness-link-${witness.id}" class="go-to-witness-link" data-start="${witness.startPage}" href="#">
263 <c:out value="${witness.folios}"/>
264 </a>
265 </td>
266 </tr>
267 </c:forEach>
268 </tbody>
269 </table>
270 </c:if>
271
272 <h4>Unknown titles in this Codex</h4>
273 <c:forEach var="witness" items="${digiBean.getUnknownList()}">
274 <a id="witness-link-${witness.id}" class="go-to-witness-link" data-start="${witness.startPage}" href="#">
275 <c:out value="${witness.folios}"/>
276 </a>
277 </c:forEach>
278
279 <!-- XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX -->
280
281 <h4>Edit Folio/Image Correspondence</h4>
282
283
284 <div id="page-jump-group" class="control-group">
285 <label for="page-jump" class="control-label">Go to page: </label>
286 <div class="controls" id="page-jump-controls">
287 <input id="page-jump" type="text" class="form-control">
288 </div>
289 </div>
290
291 <p>
292 <strong>Current Page Index:</strong> <span id="current-page-idx"></span>
293 </p>
294 <p>
295 <strong>Page Filename:</strong> <span id="current-page-fn"></span>
296 </p>
297
298 <table>
299 <tr>
300 <td>
301 <span class="titlePanel">[${digiBean.getDigi().getId()}] Digitalization</span>
302 <c:if test="${digiBean.canEdit()}">
303 <a href="<c:out value='../entry/createEntity.xhtml?eid=${digiBean.getDigi().getId()}'/>">
304 <img src="../resources/css/xp/css-images/edit.gif" alt="Edit digitalization" >
305 </a>
306 </c:if>
307 <table class="divaPanel">
308 <tr>
309 <td class="tdTitle">Name</td>
310 <td class="tdContent"><c:out value="${digiBean.getName()}"></c:out> </td>
311 </tr>
312 <tr>
313 <td class="tdTitle">Number of files</td>
314 <td class="tdContent"><c:out value="${digiBean.getNumFiles()}"></c:out> </td>
315 </tr>
316 </table>
317 </td>
318 </tr>
319 <tr>
320 <td>
321 <c:if test="${digiBean.getCodex() == null}">
322 <span class="titlePanel">Codex not yet assigned!</span>
323 </c:if>
324
325 <c:if test="${digiBean.getCodex() != null}">
326 <span class="titlePanel">[${digiBean.getCodex().getId()}] Codex</span>
327 <c:if test="${digiBean.canEdit()}">
328 <a href="<c:out value='../entry/createEntity.xhtml?eid=${digiBean.getCodex().getId()}'/>">
329 <img src="../resources/css/xp/css-images/edit.gif" alt="Edit codex" >
330 </a>
331 </c:if>
332 <table class="divaPanel">
333 <tr>
334 <td class="tdTitle">Own Value</td>
335 <td class="tdTitle"><c:out value="${digiBean.getCodex().getOv()}"></c:out> </td>
336 </tr>
337 <tr>
338 <td class="tdTitle">Shelf Mark</td>
339 <td class="tdContent"><c:out value="${digiBean.getCodex().getIdentifier()}"></c:out> </td>
340 </tr>
341 <tr>
342 <td class="tdTitle">Collection</td>
343 <td class="tdContent"><c:out value="${digiBean.getCodex().getCollection()}"></c:out> </td>
344 </tr>
345 <tr>
346 <td class="tdTitle">Repository</td>
347 <td class="tdContent"><c:out value="${digiBean.getCodex().getRepository()}"></c:out> </td>
348 </tr>
349 <tr>
350 <td class="tdTitle">City</td>
351 <td class="tdContent"><c:out value="${digiBean.getCodex().getCity()}"></c:out> </td>
352 </tr>
353 <tr>
354 <td class="tdTitle">Country</td>
355 <td class="tdContent"><c:out value="${digiBean.getCodex().getCountry()}"></c:out> </td>
356 </tr>
357 </table>
358
359 <c:if test="${digiBean.getWitnessList().size() > 0}">
360 <span class="titlePanel">Witnesses in Codex</span>
361 <table id="witness-edit" class="table table-bordered table-condensed divaPanel">
362 <thead>
363 <tr>
364 <th></th>
365 <th class="tableHead">Start</th>
366 <th class="tableHead">End</th>
367 </tr>
368 </thead>
369 <tbody>
370 <c:forEach var="witness" items="${digiBean.getWitnessList()}">
371 <tr>
372 <td>
373 <table class="witnessTableDetail">
374 <tr>
375 <td class="tdTitle">
376 <c:out value="[${witness.id}]"/>
377 </td>
378 </tr>
379 <tr>
380 <td class="tdTitle">
381 <c:out value="${witness.title}"/>
382 </td>
383 </tr>
384 <tr>
385 <td class="tdTitle">
386 <c:out value="Folios: ${witness.folios}"/>
387 </td>
388 </tr>
389 <tr>
390 <td >
391 <a href="<c:out value='../browse/entityDetails.xhtml?eid=${witness.id}'/>">
392 <img src="../resources/images/network_32.png" alt="show witness"
393 width="20" height="20">
394 </a>
395 <c:if test="${digiBean.canEdit()}">
396 <a href="<c:out value='../entry/createEntity.xhtml?eid=${witness.id}'/>">
397 <img src="../resources/css/xp/css-images/edit.gif" alt="Edit codex" >
398 </a>
399 </c:if>
400 </td>
401 </tr>
402 </table>
403 </td>
404
405 <td class="columnCentered">
406 <input
407 id="input-start-page-<c:out value="${witness.id}"/>"
408 data-witness="<c:out value="${witness.id}"/>"
409 type="text"
410 readonly="readonly"
411 value="<c:out value="${witness.startPage}"/>" class="inputPageNumber">
412 <c:if test="${digiBean.canEdit()}">
413 <button class="set-start-set ismi-button" data-witness="<c:out value="${witness.id}"/>">Set Start</button>
414 <button class="set-start-reset ismi-button" data-witness="<c:out value="${witness.id}"/>">Reset Start</button>
415 </c:if>
416 </td>
417
418 <td class="columnCentered">
419 <input
420 id="input-end-page-<c:out value="${witness.id}"/>"
421 data-witness="<c:out value="${witness.id}"/>"
422 type="text"
423 readonly="readonly"
424 value="<c:out value="${witness.endPage}"/>" class="inputPageNumber">
425 <c:if test="${digiBean.canEdit()}">
426 <button class="set-end-set ismi-button" data-witness="<c:out value="${witness.id}"/>">Set Start</button>
427 <button class="set-end-reset ismi-button" data-witness="<c:out value="${witness.id}"/>">Reset Start</button>
428 </c:if>
429 </td>
430 <c:if test="${digiBean.canEdit()}">
431 <td class="columnCentered">
432 <button class="update-witness ismi-button" data-witness="<c:out value="${witness.id}"/>">Update</button>
433 </td>
434 </c:if>
435 </tr>
436 </c:forEach>
437 </tbody>
438 </table>
439 </c:if>
440
441 </c:if>
442
443 </td>
444 </tr>
445 </table>
446 </div>
447 </c:if>
448
449
450 </div>
451 </div>
452 <div class="span8">
453 <input type='hidden' name='csrfmiddlewaretoken' value='psDBHsF5a1mttLSKeUgoUUVN3HL6f8Re' />
454 <div id="diva-wrapper"></div>
455 </div>
456 </div>
457 </div>
458
459
460 </body>
461 </html>