X-Git-Url: http://git.shadowcat.co.uk/gitweb/gitweb.cgi?a=blobdiff_plain;f=root%2Fjs%2Fcomponentload.js;h=76fe2df88201324e4163af1387b4dd880175184e;hb=54c050ab1db494fa4d8b24ce67bfb38ab14a25c0;hp=3abf1a2204179eb8ab0162868103f5a7507a1940;hpb=932277e1ee255147e7bb3f864b917d96bdbf857d;p=scpubgit%2Fstemmaweb.git diff --git a/root/js/componentload.js b/root/js/componentload.js index 3abf1a2..76fe2df 100644 --- a/root/js/componentload.js +++ b/root/js/componentload.js @@ -85,7 +85,10 @@ function load_textinfo() { $('#textinfo_waitbox').hide(); $('#textinfo_load_status').empty(); $('#textinfo_container').show(); + // The tradition name should appear here and should be identical in the + // corresponding directory span. In case the name was just changed... $('.texttitle').empty().append( selectedTextInfo.name ); + $('#' + selectedTextID).empty().append( selectedTextInfo.name ); // Witnesses $('#witness_num').empty().append( selectedTextInfo.witnesses.size ); $('#witness_list').empty().append( selectedTextInfo.witnesses.join( ', ' ) ); @@ -137,13 +140,7 @@ function load_stemma( idx ) { $('#stemma_identifier').empty(); // Add the relevant Stemweb functionality if( selectedTextEditable ) { - if( selectedTextInfo.stemweb_jobid == 0 ) { - $('#open_stemweb_ui').show(); - $('#query_stemweb_ui').hide(); - } else { - $('#query_stemweb_ui').show(); - $('#open_stemweb_ui').hide(); - } + switch_stemweb_ui(); } if( idx > -1 ) { // Load the stemma and its properties @@ -163,8 +160,28 @@ function load_stemma( idx ) { } } +function switch_stemweb_ui() { + if( selectedTextInfo.stemweb_jobid == 0 ) { + // We want to run Stemweb. + $('#open_stemweb_ui').show(); + $('#query_stemweb_ui').hide(); + if( ! $('#stemweb-ui-dialog').dialog('isOpen') ) { + $('#call_stemweb').show() + $('#stemweb_run_button').show(); + } + } else { + $('#query_stemweb_ui').show(); + $('#open_stemweb_ui').hide(); + $('#call_stemweb').hide(); + $('#stemweb_run_button').hide(); + } +} + function query_stemweb_progress() { var requrl = _get_url([ "stemweb", "query", selectedTextInfo.stemweb_jobid ]); + $('#stemweb-ui-dialog').dialog('open'); + $('#stemweb_run_status').empty().append( + _make_message( 'notification', 'Querying Stemweb for calculation progress...') ); $.getJSON( requrl, function (data) { process_stemweb_result( data ); }); @@ -184,20 +201,43 @@ function process_stemweb_result(data) { // Move to the index of the first added stemma. var newIdx = stemmata.length - data.stemmata.length; load_stemma( newIdx, true ); - } - alert( 'You have one or more new stemmata!' ); + } + // Hide the call dialog no matter how we got here + $('#call_stemweb').hide() + $('#stemweb_run_button').hide(); + $('#stemweb_run_status').empty().append( + _make_message( 'notification', 'You have one or more new stemmata!' ) ); } else { - alert( 'Stemweb run finished with no stemmata...huh?!' ); + $('#stemweb_run_status').empty().append( + _make_message( 'warning', 'Stemweb run finished with no stemmata...huh?!' ) ); } } else if( data.status === 'running' ) { // Just tell the user. - alert( 'Your Stemweb query is still running!' ); + $('#stemweb_run_status').empty().append( + _make_message( 'warning', 'Your Stemweb query is still running!' ) ); } else if( data.status === 'notfound' ) { // Ask the user to refresh, for now. - alert( 'Your Stemweb query probably finished and reported back. Please reload to check.' ); + $('#stemweb_run_status').empty().append( + _make_message( 'warning', 'Your Stemweb query probably finished and reported back. Please reload to check.' ) ); + } else if( data.status === 'failed' ) { + selectedTextInfo.stemweb_jobid = 0; + failureMsg = 'Your stemweb query failed'; + if( data.message ) { + failureMsg = failureMsg + ' with the following message: ' + data.message + } else { + failureMsg = failureMsg + ' without telling us why.' + } + $('#stemweb_run_status').empty().append( + _make_message( 'error', failureMsg ) ); } } +function _make_message( type, msg ) { + theMessage = $('').attr( 'class', type ); + theMessage.append( msg ); + return theMessage; +} + // Load the SVG we are given function loadSVG(svgData) { var svgElement = $('#stemma_graph'); @@ -234,6 +274,11 @@ function loadSVG(svgData) { function set_stemma_interactive( svg_element ) { if( selectedTextEditable ) { + // unbind is needed as this set_stemma_interactive is called each time + // the stemma is re-rooted, and each time jquery adds an + // onclick handler to the root_tree_dialog_button_ok + // that all re-root the stemma, that all add an onclick, etc.. + $( "#root_tree_dialog_button_ok" ).unbind(); $( "#root_tree_dialog_button_ok" ).click( function() { var requrl = _get_url([ "stemmaroot", selectedTextID, selectedStemmaID ]); var targetnode = $('#root_tree_dialog').data( 'selectedNode' ); @@ -548,11 +593,14 @@ $(document).ready( function() { $('#stemweb-ui-dialog').dialog({ autoOpen: false, - height: 160, - width: 240, + height: 'auto', + width: 520, modal: true, buttons: { - Run: function (evt) { + Run: { + id: 'stemweb_run_button', + text: 'Run', + click: function (evt) { $("#stemweb_run_status").empty(); var mybuttons = $(evt.target).closest('button').parent().find('button'); mybuttons.button( 'disable' ); @@ -563,22 +611,28 @@ $(document).ready( function() { // whether to send application/json or application/xml? $.getJSON( requrl, reqparam, function (data) { mybuttons.button("enable"); - $('#stemweb-ui-dialog').dialog('close'); if( 'jobid' in data ) { // There is a pending job. selectedTextInfo.stemweb_jobid = data.jobid; - alert("Your request has been submitted to Stemweb.\nThe resulting tree will appear in due course."); + $('#stemweb_run_status').empty().append( + _make_message( 'notification', "Your request has been submitted to Stemweb.\nThe resulting tree will appear in due course." ) ); // Reload the current stemma to rejigger the buttons - load_stemma( selectedStemmaID, true ); + switch_stemweb_ui(); } else { // We appear to have an answer; process it. process_stemweb_result( data ); } }, 'json' ); + }, + }, + Close: { + id: 'stemweb_close_button', + text: 'Close', + click: function() { + $('#stemweb-ui-dialog').dialog('close'); + switch_stemweb_ui(); + }, }, - Cancel: function() { - $('#stemweb-ui-dialog').dialog('close'); - } }, create: function(evt) { // Call out to Stemweb to get the algorithm options, with which we @@ -605,8 +659,19 @@ $(document).ready( function() { // Set up the relevant options for whichever algorithm is chosen. // "key" -> form name, option ID "stemweb_$key_opt" // "name" -> form label + $('#stemweb_algorithm_help').click( function() { + $('#stemweb_algorithm_desc_text').toggle( 'blind' ); + }); $('#stemweb_algorithm').change( function() { var pk = $(this).val(); + // Display a link to the popup description, and fill in + // the description itself, if we have one. + if( 'desc' in algorithmTypes[pk] ) { + $('#stemweb_algorithm_desc_text').empty().append( algorithmTypes[pk].desc ); + $('#stemweb_algorithm_desc').show(); + } else { + $('#stemweb_algorithm_desc').hide(); + } $('#stemweb_runtime_options').empty(); $.each( algorithmTypes[pk].args, function( i, apk ) { var argInfo = algorithmArgs[apk]; @@ -641,19 +706,21 @@ $(document).ready( function() { open: function(evt) { $('#stemweb_run_status').empty(); $('#stemweb_tradition').attr('value', selectedTextID ); - $('#stemweb_merge_reltypes').empty(); - $.each( selectedTextInfo.reltypes, function( i, r ) { - var relation_opt = $('