Mercurial > hg > ismi-richfaces
diff src/main/webapp/imageServer/displayDigi.jsp @ 7:764f47286679
(none)
author | jurzua |
---|---|
date | Wed, 29 Oct 2014 14:28:34 +0000 |
parents | |
children | 672301480990 |
line wrap: on
line diff
--- /dev/null Thu Jan 01 00:00:00 1970 +0000 +++ b/src/main/webapp/imageServer/displayDigi.jsp Wed Oct 29 14:28:34 2014 +0000 @@ -0,0 +1,461 @@ +<%@ page contentType="text/html; charset=UTF-8" %> +<%@ taglib prefix="c" uri="http://java.sun.com/jsp/jstl/core" %> +<%@page import="org.mpi.openmind.repository.bo.Entity"%> +<%@page import="de.mpiwg.itgroup.diva.jsp.JSPDigitalization"%> + +<html> + <head> + <title>ismi - image server</title> + + + <link href="resources/css/bootstrap.css" type="text/css" rel="stylesheet" /> + <link href="resources/css/bootstrap-responsive.min.css" type="text/css" rel="stylesheet"> + <link href="resources/css/style.css" type="text/css" rel="stylesheet"> + <link href="resources/css/diva.min.css" type="text/css" rel="stylesheet" /> + <link href="resources/css/diva4ismi.css" type="text/css" rel="stylesheet" /> + + <script type="text/javascript" src="resources/js/jquery.min.js"></script> + <script type="text/javascript" src="resources/js/diva.min.js"></script> + <script type="text/javascript" src="resources/js/bootstrap.min.js"></script> + <script type="text/javascript" src="resources/js/typeahead.js"></script> + <script type="text/javascript" src="resources/js/diva4ismi.js"></script> + + <jsp:useBean id="digiBean" class="de.mpiwg.itgroup.diva.jsp.JSPDigitalization" scope="session" /> + <jsp:setProperty name="digiBean" property="request" value="${pageContext.request}" /> + <jsp:setProperty name="digiBean" property="response" value="${pageContext.response}" /> + + <%digiBean.init();%> + <% if(!digiBean.hasLogin()){ %> + <jsp:forward page="../imageServer/displayDigiList.xhtml?login=true" /> + <% } %> + +<script type="text/javascript"> + $(document).ready(function () { + + $("#witness-edit").on('click', '.update-witness', function(ev){ + + var witnessId = $(this).data('witness'); + + var startPageInput = $( "#input-start-page-"+witnessId ); + var endPageInput = $( "#input-end-page-"+witnessId ); + var digiIdInput = $("#digi_id"); + + var data = {}; + data["digi_id"] = digiIdInput[0].value; + + data["witness"] = {}; + data["witness"]["id"] = "" + witnessId; + data["witness"]["start_page"] = startPageInput[0].value; + data["witness"]["end_page"] = endPageInput[0].value; + + var witnessLink = $("#witness-link-" + witnessId); + witnessLink.data('start', startPageInput[0].value); + + $.ajax( + divaGlobal.rest_url + "/rest/witness/update?data=" + JSON.stringify(data), { + type: 'GET', + contentType: "application/json", + success: function(data, textStatus, jqXHR){ + var state = data["state"]; + if(state == "ok"){ + alert('Executed successfully'); + }else{ + alert(data["message"]); + } + }, + error: function(jqXHR, textStatus, errorThrown){ + alert('Error: ' + textStatus); + } + }); + + + }); + + /************************************************/ + + 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'); + if(start_page){ + dv.gotoPageByNumber(start_page); + ev.preventDefault(); + }else{ + alert("No page assigned to this witness."); + } + + }); + + 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. + + 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: divaGlobal.iipServerURL, + digiId: "<%=digiBean.getDigiId()%>", + objectData: divaGlobal.rest_url + "/rest/diva/proxy/json/<%=digiBean.getDigiLabel()%>", + imageDir: "/data7/srv/images/<%=digiBean.getDigiLabel()%>", + onSetCurrentPage : handlePageSwitch, + onDocumentLoaded : handleDocumentLoaded, + zoomLevel: 1, + canvasPlugin: { + proxyURL: divaGlobal.rest_url + "/rest/diva/proxy/image" + } + }); + }); + + +</script> +</head> + +<body bgcolor=white> + + <jsp:include page="header.jsp" /> + <div class="custom-container"> + + <div class="row-fluid"> + <div class="span4 page"> + <div style="height: 800px; overflow: scroll;"> + + + <input type='hidden' name='csrfmiddlewaretoken' value='psDBHsF5a1mttLSKeUgoUUVN3HL6f8Re' /> + + <c:if test="${digiBean.getDigi() != null}"> + + <input type="hidden" id="digi_id" value="${digiBean.getDigi().getId()}"> + + <div class="divaBackgroud"> + + <!-- XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX --> + + <h4><%=digiBean.getDigiLabel()%></h4> + + <c:if test="${digiBean.getWitnessList().size() > 0}"> + <span class="titlePanel">Titles in this Codex</span> + + <table class="table table-bordered table-condensed divaPanel"> + <thead> + <tr> + <th class="tableHead">Title</th> + <th class="tableHead">Folios</th> + </tr> + </thead> + <tbody> + <c:forEach var="witness" items="${digiBean.getWitnessList()}"> + <tr> + <td class="tdTitle"> + <c:out value="[${witness.id}] ${witness.title}"/> + <a target="_blank" + href="<c:out value='../search/displayTitle.xhtml?witnessId=${witness.id}#witnesses'/>"> + <img src="../resources/images/display_32.png" alt="Display witness" width="20" height="20" > + </a> + <a target="_blank" + href="<c:out value='../browse/entityDetails.xhtml?eid=${witness.id}'/>"> + <img src="../resources/images/network_32.png" alt="show witness" + width="20" height="20"> + </a> + <c:if test="${digiBean.canEdit()}"> + <a target="_blank" + href="<c:out value='../entry/createEntity.xhtml?eid=${witness.id}'/>"> + <img src="../resources/css/xp/css-images/edit.gif" alt="Edit codex" > + </a> + </c:if> + </td> + <td class="columnCentered"> + <a id="witness-link-${witness.id}" class="go-to-witness-link" data-start="${witness.startPage}" href="#"> + <c:out value="${witness.folios}"/> + </a> + </td> + </tr> + </c:forEach> + </tbody> + </table> + </c:if> + + <h4>Unknown titles in this Codex</h4> + <c:forEach var="witness" items="${digiBean.getUnknownList()}"> + <a id="witness-link-${witness.id}" class="go-to-witness-link" data-start="${witness.startPage}" href="#"> + <c:out value="${witness.folios}"/> + </a> + </c:forEach> + + <!-- XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX --> + + <h4>Edit Folio/Image Correspondence</h4> + + + <div id="page-jump-group" class="control-group"> + <label for="page-jump" class="control-label">Go to page: </label> + <div class="controls" id="page-jump-controls"> + <input id="page-jump" type="text" class="form-control"> + </div> + </div> + + <p> + <strong>Current Page Index:</strong> <span id="current-page-idx"></span> + </p> + <p> + <strong>Page Filename:</strong> <span id="current-page-fn"></span> + </p> + + <table> + <tr> + <td> + <span class="titlePanel">[${digiBean.getDigi().getId()}] Digitalization</span> + <c:if test="${digiBean.canEdit()}"> + <a href="<c:out value='../entry/createEntity.xhtml?eid=${digiBean.getDigi().getId()}'/>"> + <img src="../resources/css/xp/css-images/edit.gif" alt="Edit digitalization" > + </a> + </c:if> + <table class="divaPanel"> + <tr> + <td class="tdTitle">Name</td> + <td class="tdContent"><c:out value="${digiBean.getName()}"></c:out> </td> + </tr> + <tr> + <td class="tdTitle">Number of files</td> + <td class="tdContent"><c:out value="${digiBean.getNumFiles()}"></c:out> </td> + </tr> + </table> + </td> + </tr> + <tr> + <td> + <c:if test="${digiBean.getCodex() == null}"> + <span class="titlePanel">Codex not yet assigned!</span> + </c:if> + + <c:if test="${digiBean.getCodex() != null}"> + <span class="titlePanel">[${digiBean.getCodex().getId()}] Codex</span> + <c:if test="${digiBean.canEdit()}"> + <a href="<c:out value='../entry/createEntity.xhtml?eid=${digiBean.getCodex().getId()}'/>"> + <img src="../resources/css/xp/css-images/edit.gif" alt="Edit codex" > + </a> + </c:if> + <table class="divaPanel"> + <tr> + <td class="tdTitle">Own Value</td> + <td class="tdTitle"><c:out value="${digiBean.getCodex().getOv()}"></c:out> </td> + </tr> + <tr> + <td class="tdTitle">Shelf Mark</td> + <td class="tdContent"><c:out value="${digiBean.getCodex().getIdentifier()}"></c:out> </td> + </tr> + <tr> + <td class="tdTitle">Collection</td> + <td class="tdContent"><c:out value="${digiBean.getCodex().getCollection()}"></c:out> </td> + </tr> + <tr> + <td class="tdTitle">Repository</td> + <td class="tdContent"><c:out value="${digiBean.getCodex().getRepository()}"></c:out> </td> + </tr> + <tr> + <td class="tdTitle">City</td> + <td class="tdContent"><c:out value="${digiBean.getCodex().getCity()}"></c:out> </td> + </tr> + <tr> + <td class="tdTitle">Country</td> + <td class="tdContent"><c:out value="${digiBean.getCodex().getCountry()}"></c:out> </td> + </tr> + </table> + + <c:if test="${digiBean.getWitnessList().size() > 0}"> + <span class="titlePanel">Witnesses in Codex</span> + <table id="witness-edit" class="table table-bordered table-condensed divaPanel"> + <thead> + <tr> + <th></th> + <th class="tableHead">Start</th> + <th class="tableHead">End</th> + </tr> + </thead> + <tbody> + <c:forEach var="witness" items="${digiBean.getWitnessList()}"> + <tr> + <td> + <table class="witnessTableDetail"> + <tr> + <td class="tdTitle"> + <c:out value="[${witness.id}]"/> + </td> + </tr> + <tr> + <td class="tdTitle"> + <c:out value="${witness.title}"/> + </td> + </tr> + <tr> + <td class="tdTitle"> + <c:out value="Folios: ${witness.folios}"/> + </td> + </tr> + <tr> + <td > + <a href="<c:out value='../browse/entityDetails.xhtml?eid=${witness.id}'/>"> + <img src="../resources/images/network_32.png" alt="show witness" + width="20" height="20"> + </a> + <c:if test="${digiBean.canEdit()}"> + <a href="<c:out value='../entry/createEntity.xhtml?eid=${witness.id}'/>"> + <img src="../resources/css/xp/css-images/edit.gif" alt="Edit codex" > + </a> + </c:if> + </td> + </tr> + </table> + </td> + + <td class="columnCentered"> + <input + id="input-start-page-<c:out value="${witness.id}"/>" + data-witness="<c:out value="${witness.id}"/>" + type="text" + readonly="readonly" + value="<c:out value="${witness.startPage}"/>" class="inputPageNumber"> + <c:if test="${digiBean.canEdit()}"> + <button class="set-start-set ismi-button" data-witness="<c:out value="${witness.id}"/>">Set Start</button> + <button class="set-start-reset ismi-button" data-witness="<c:out value="${witness.id}"/>">Reset Start</button> + </c:if> + </td> + + <td class="columnCentered"> + <input + id="input-end-page-<c:out value="${witness.id}"/>" + data-witness="<c:out value="${witness.id}"/>" + type="text" + readonly="readonly" + value="<c:out value="${witness.endPage}"/>" class="inputPageNumber"> + <c:if test="${digiBean.canEdit()}"> + <button class="set-end-set ismi-button" data-witness="<c:out value="${witness.id}"/>">Set Start</button> + <button class="set-end-reset ismi-button" data-witness="<c:out value="${witness.id}"/>">Reset Start</button> + </c:if> + </td> + <c:if test="${digiBean.canEdit()}"> + <td class="columnCentered"> + <button class="update-witness ismi-button" data-witness="<c:out value="${witness.id}"/>">Update</button> + </td> + </c:if> + </tr> + </c:forEach> + </tbody> + </table> + </c:if> + + </c:if> + + </td> + </tr> + </table> + </div> + </c:if> + + + </div> + </div> + <div class="span8"> + <input type='hidden' name='csrfmiddlewaretoken' value='psDBHsF5a1mttLSKeUgoUUVN3HL6f8Re' /> + <div id="diva-wrapper"></div> + </div> + </div> + </div> + + +</body> +</html>