applicationjs = c.uri_for( 'js/componentload.js' )
%]
<script type="text/javascript">
-var basepath = window.location.pathname
-if( basepath.lastIndexOf('/') == basepath.length - 1 ) {
- basepath = basepath.slice( 0, basepath.length - 1)
-};
-var selectedTextID;
-var selectedTextInfo;
-var selectedStemmaID = -1;
-var stemmata = [];
-
-function refreshDirectory () {
- var lmesg = $('#loading_message').clone();
- $('#directory').empty().append( lmesg.contents() );
- $('#directory').load( "[% c.uri_for( 'directory' ) %]",
- function(response, status, xhr) {
- if (status == "error") {
- var msg = "An error occurred: ";
- $("#directory").html(msg + xhr.status + " " + xhr.statusText);
- }
- }
- );
-}
-
-function start_upload_dialog() {
- if( typeof uploader != 'undefined' ){ uploader.destroy() };
- $('#upload-collation-dialog').dialog('option', 'attach_uploader')();
- $('#upload_status').empty();
- $('#upload_button').button('disable');
- $('#upload-collation-dialog').dialog('open');
-}
-
-$(document).ready( function() {
- // call out to load the directory div
- $('#textinfo_container').hide();
- $('#textinfo_waitbox').hide();
- refreshDirectory();
-
- // Set up the textinfo edit dialog
- $('#textinfo-edit-dialog').dialog({
- autoOpen: false,
- height: 200,
- width: 300,
- modal: true,
- buttons: {
- Save: function (evt) {
- $("#edit_textinfo_status").empty();
- $(evt.target).button("disable");
- var requrl = "[% c.uri_for( '/textinfo' ) %]/" + selectedTextID;
- var reqparam = $('#edit_textinfo').serialize();
- $.post( requrl, reqparam, function (data) {
- // Reload the selected text fields
- selectedTextInfo = data;
- load_textinfo();
- // Reenable the button and close the form
- $(evt.target).button("enable");
- $('#textinfo-edit-dialog').dialog('close');
- }, 'json' );
- },
- Cancel: function() {
- $('#textinfo-edit-dialog').dialog('close');
- }
- },
- open: function() {
- $("#edit_textinfo_status").empty();
- // Populate the form fields with the current values
- // edit_(name, language, public, owner)
- $.each([ 'name', 'language', 'owner' ], function( idx, k ) {
- var fname = '#edit_' + k;
- // Special case: language Default is basically language null
- if( k == 'language' && selectedTextInfo[k] == 'Default' ) {
- $(fname).val( "" );
- } else {
- $(fname).val( selectedTextInfo[k] );
- }
- });
- if( selectedTextInfo['public'] == true ) {
- $('#edit_public').attr('checked','true');
- } else {
- $('#edit_public').removeAttr('checked');
- }
- },
- }).ajaxError( function(event, jqXHR, ajaxSettings, thrownError) {
- $(event.target).parent().find('.ui-button').button("enable");
- if( ajaxSettings.url.indexOf( 'textinfo' ) > -1
- && ajaxSettings.type == 'POST' ) {
- display_error( jqXHR, $("#edit_textinfo_status") );
- }
- });
-
-
- // Set up the stemma editor dialog
- $('#stemma-edit-dialog').dialog({
- autoOpen: false,
- height: 700,
- width: 600,
- modal: true,
- buttons: {
- Save: function (evt) {
- $("#edit_stemma_status").empty();
- $(evt.target).button("disable");
- var stemmaseq = $('#stemmaseq').val();
- var requrl = "[% c.uri_for( '/stemma' ) %]/" + selectedTextID + "/" + stemmaseq;
- var reqparam = { 'dot': $('#dot_field').val() };
- // TODO We need to stash the literal SVG string in stemmata
- // somehow. Implement accept header on server side to decide
- // whether to send application/json or application/xml?
- $.post( requrl, reqparam, function (data) {
- // We received a stemma SVG string in return.
- // Update the current stemma sequence number
- selectedStemmaID = data.stemmaid;
- // Stash the answer in our SVG array
- stemmata[selectedStemmaID] = data.stemmasvg;
- // Display the new stemma
- load_stemma( selectedStemmaID );
- // Reenable the button and close the form
- $(evt.target).button("enable");
- $('#stemma-edit-dialog').dialog('close');
- }, 'json' );
- },
- Cancel: function() {
- $('#stemma-edit-dialog').dialog('close');
- }
- },
- open: function(evt) {
- $("#edit_stemma_status").empty();
- var stemmaseq = $('#stemmaseq').val();
- if( stemmaseq == 'n' ) {
- // If we are creating a new stemma, populate the textarea with a
- // bare digraph.
- $(evt.target).dialog('option', 'title', 'Add a new stemma')
- $('#dot_field').val( "digraph stemma {\n\n}" );
- } else {
- // If we are editing a stemma, grab its stemmadot and populate the
- // textarea with that.
- $(evt.target).dialog('option', 'title', 'Edit selected stemma')
- $('#dot_field').val( 'Loading, please wait...' );
- var doturl = "[% c.uri_for( '/stemmadot' ) %]/" + selectedTextID + "/" + stemmaseq;
- $.getJSON( doturl, function (data) {
- // Re-insert the line breaks
- var dotstring = data.dot.replace(/\|n/gm, "\n");
- $('#dot_field').val( dotstring );
- });
- }
- },
- }).ajaxError( function(event, jqXHR, ajaxSettings, thrownError) {
- $(event.target).parent().find('.ui-button').button("enable");
- if( ajaxSettings.url.indexOf( 'stemma' ) > -1
- && ajaxSettings.type == 'POST' ) {
- display_error( jqXHR, $("#edit_stemma_status") );
- }
- });
-
- $('#upload-collation-dialog').dialog({
- autoOpen: false,
- height: 325,
- width: 480,
- modal: true,
- buttons: {
- pick: {
- text: "Pick File",
- id: "pick_uploadfile_button",
- click: function() {}
- },
- upload: {
- text: 'Upload',
- id: 'upload_button',
- click: function() {
- $('#upload_status').empty();
- uploader.start();
- return false;
- }
- },
- Cancel: function() {
- $('#upload-collation-dialog').dialog('close');
- }
- },
- attach_uploader: function() {
- create_uploader( "[% c.uri_for ( '/newtradition' ) %]" );
- $('#filelist').empty().html( 'Use the \'Pick\' button to choose a source fileā¦' );
- }
- });
-
- $('#stemma_graph').mousedown( function(evt) {
- evt.stopPropagation();
- $('#stemma_graph').data( 'mousedown_xy', [evt.clientX, evt.clientY] );
- $('body').mousemove( function(evt) {
- mouse_scale = 1; // for now, was: mouse_scale = svg_root_element.getScreenCTM().a;
- dx = (evt.clientX - $('#stemma_graph').data( 'mousedown_xy' )[0]) / mouse_scale;
- dy = (evt.clientY - $('#stemma_graph').data( 'mousedown_xy' )[1]) / mouse_scale;
- $('#stemma_graph').data( 'mousedown_xy', [evt.clientX, evt.clientY] );
- var svg_root = $('#stemma_graph svg').svg().svg('get').root();
- var g = $('g.graph', svg_root).get(0);
- current_translate = g.getAttribute( 'transform' ).split(/translate\(/)[1].split(')',1)[0].split(' ');
- new_transform = g.getAttribute( 'transform' ).replace( /translate\([^\)]*\)/, 'translate(' + (parseFloat(current_translate[0]) + dx) + ' ' + (parseFloat(current_translate[1]) + dy) + ')' );
- g.setAttribute( 'transform', new_transform );
- evt.returnValue = false;
- evt.preventDefault();
- return false;
- });
- $('body').mouseup( function(evt) {
- $('body').unbind('mousemove');
- $('body').unbind('mouseup');
- });
- });
-
- $('#stemma_graph').mousewheel(function (event, delta) {
- event.returnValue = false;
- event.preventDefault();
- if (!delta || delta == null || delta == 0) delta = event.originalEvent.wheelDelta;
- if (!delta || delta == null || delta == 0) delta = -1 * event.originalEvent.detail;
- if( delta < -9 ) { delta = -9 };
- var z = 1 + delta/10;
- z = delta > 0 ? 1 : -1;
- var svg_root = $('#stemma_graph svg').svg().svg('get').root();
- var g = $('g.graph', svg_root).get(0);
- if (g && ((z<1 && (g.getScreenCTM().a * start_element_height) > 4.0) || (z>=1 && (g.getScreenCTM().a * start_element_height) < 1000))) {
- var scaleLevel = z/10;
- current_scale = parseFloat( g.getAttribute( 'transform' ).split(/scale\(/)[1].split(')',1)[0].split(' ')[0] );
- new_transform = g.getAttribute( 'transform' ).replace( /scale\([^\)]*\)/, 'scale(' + (current_scale + scaleLevel) + ')' );
- g.setAttribute( 'transform', new_transform );
- }
- });
-
-});
+// Set global variables that must be passed by the server
+var basepath = "[% c.uri_for( '/' ) %]";
+var textOnLoad = "[% withtradition %]";
</script>
[% END %]
<div id="topbanner">
<h1>Stemmaweb - a collection of tools for analysis of collated texts</h1>
- <span class="mainnav">[% IF c.user_exists %]Hello! [% c.user.get_object.email %] <a class="navlink" href="[% c.uri_for( '/logout' ) %]">Sign out</a> | [% ELSE %]<a class="navlink" onclick="window.open('[% c.uri_for( '/login' ) %]', 'loginwindow', 'height=385,width=445')">Login</a> | <a class="navlink" onclick="window.open('[% c.uri_for( '/register' ) %]', 'regwindow', 'height=385,width=445')">Register</a> | [% END %]<a class="navlink" href="[% c.uri_for( 'about.html' ) %]">About</a> </span>
+ <span class="mainnav">[% IF c.user_exists %]Hello! [% c.user.get_object.email %] <a class="navlink" href="[% c.uri_for( '/logout' ) %]">Sign out</a> | [% ELSE %]<a class="navlink" onclick="window.open('[% c.uri_for( '/login' ) %]', 'loginwindow', 'height=385,width=445')">Login</a> | [% END %]<a class="navlink" href="[% c.uri_for( '/about' ) %]">About</a> </span>
</div>
<div id="directory_container">
<h2>Text directory</h2>
<div id="textinfo_container">
<div id="textinfo_load_status"></div>
<h2>Text <span class="texttitle"></span></h2>
+ <form id="open_textinfo_edit" action="" method="GET" name="edit_textinfo">
+ <div class="button" id="edit_textinfo_button"
+ onClick="$('#textinfo-edit-dialog').dialog('open')">
+ <span>Modify information about this tradition</span>
+ </div>
+ </form>
<ul>
<li>is owned by <span id="owner_id"></span></li>
<li>is <span id="not_public"></span>public</li>
<li>has <span id="witness_num"></span> witnesses: <span id="witness_list"></span></li>
</ul>
- <!-- TODO buttons on either side of the graph div to flip through the stemmata -->
<div id="textinfo_container_buttons">
- <form id="open_textinfo_edit" action="" method="GET" name="edit_textinfo">
- <div class="button" id="edit_textinfo_button"
- onClick="$('#textinfo-edit-dialog').dialog('open')">
- <span>Modify information about this tradition</span>
- </div>
- </form>
<form id="stemma_pager" action="" method="GET" name="stemma_pager">
- <div class="button" id="stemma_pager_button" onClick="$('#stemma_pager').submit()">
- <span>Left & right go here</span>
+ <div id="stemma_pager_buttons">
+ <div class="pager_left_button" id="stemma_pager_left_button"></div>
+ <div class="pager_right_button" id="stemma_pager_right_button"></div>
</div>
</form>
<form id="open_stemma_add" action="" method="GET" name="add_new_stemma">