X-Git-Url: http://git.shadowcat.co.uk/gitweb/gitweb.cgi?a=blobdiff_plain;f=root%2Fjs%2Fcomponentload.js;h=00a49612e4b70af42466a67bc972edd75b3e6e7c;hb=e6d34d3e5a298e6d40e10dd313ba5f5cf3bb44e3;hp=888bf69d29473abbe6c04c128337afe383b44fe2;hpb=8e26de0f2079f2b952536a2be1af1ba159eba5c5;p=scpubgit%2Fstemmaweb.git diff --git a/root/js/componentload.js b/root/js/componentload.js index 888bf69..00a4961 100644 --- a/root/js/componentload.js +++ b/root/js/componentload.js @@ -137,13 +137,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,35 +157,80 @@ 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) { - // Look for a status message, either success, running, or notfound. - if( data.status === 'success' ) { - // Add the new stemmata to the textinfo and tell the user. - selectedTextInfo.stemweb_jobid = 0; - if( data.stemmata.length > 0 ) { - stemmata = stemmata.concat( data.stemmata ); - if( selectedStemmaID == -1 ) { - // We have a stemma for the first time; load the first one. - load_stemma( 0, true ); - } else { - // 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!' ); + process_stemweb_result( data ); + }); + // TODO need an error handler +} + +function process_stemweb_result(data) { + // Look for a status message, either success, running, or notfound. + if( data.status === 'success' ) { + // Add the new stemmata to the textinfo and tell the user. + selectedTextInfo.stemweb_jobid = 0; + if( data.stemmata.length > 0 ) { + stemmata = stemmata.concat( data.stemmata ); + if( selectedStemmaID == -1 ) { + // We have a stemma for the first time; load the first one. + load_stemma( 0, true ); } else { - alert( 'Stemweb run finished with no stemmata...huh?!' ); - } - } else if( data.status === 'running' ) { - // Just tell the user. - alert( '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.' ); + // Move to the index of the first added stemma. + var newIdx = stemmata.length - data.stemmata.length; + load_stemma( newIdx, true ); + } + $('#stemweb_run_status').empty().append( + _make_message( 'notification', 'You have one or more new stemmata!' ) ); + } else { + $('#stemweb_run_status').empty().append( + _make_message( 'warning', 'Stemweb run finished with no stemmata...huh?!' ) ); } - }); + } else if( data.status === 'running' ) { + // Just tell the user. + $('#stemweb_run_status').empty().append( + _make_message( 'notification', 'Your Stemweb query is still running!' ) ); + } else if( data.status === 'notfound' ) { + // Ask the user to refresh, for now. + $('#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 @@ -433,7 +472,8 @@ $(document).ready( function() { buttons: { Save: function (evt) { $("#edit_textinfo_status").empty(); - $(evt.target).button("disable"); + var mybuttons = $(evt.target).closest('button').parent().find('button'); + mybuttons.button( 'disable' ); var requrl = _get_url([ "textinfo", selectedTextID ]); var reqparam = $('#edit_textinfo').serialize(); $.post( requrl, reqparam, function (data) { @@ -441,7 +481,7 @@ $(document).ready( function() { selectedTextInfo = data; load_textinfo(); // Reenable the button and close the form - $(evt.target).button("enable"); + mybuttons.button("enable"); $('#textinfo-edit-dialog').dialog('close'); }, 'json' ); }, @@ -486,7 +526,8 @@ $(document).ready( function() { buttons: { Save: function (evt) { $("#edit_stemma_status").empty(); - $(evt.target).button("disable"); + var mybuttons = $(evt.target).closest('button').parent().find('button'); + mybuttons.button( 'disable' ); var stemmaseq = $('#stemmaseq').val(); var requrl = _get_url([ "stemma", selectedTextID, stemmaseq ]); var reqparam = { 'dot': $('#dot_field').val() }; @@ -503,7 +544,7 @@ $(document).ready( function() { // Display the new stemma load_stemma( selectedStemmaID, true ); // Reenable the button and close the form - $(evt.target).button("enable"); + mybuttons.button("enable"); $('#stemma-edit-dialog').dialog('close'); }, 'json' ); }, @@ -542,30 +583,46 @@ $(document).ready( function() { $('#stemweb-ui-dialog').dialog({ autoOpen: false, - height: 160, - width: 225, + height: 'auto', + width: 520, modal: true, buttons: { - Run: function (evt) { + Run: { + id: 'stemweb_run_button', + text: 'Run', + click: function (evt) { $("#stemweb_run_status").empty(); - $(evt.target).button("disable"); + var mybuttons = $(evt.target).closest('button').parent().find('button'); + mybuttons.button( 'disable' ); var requrl = _get_url([ "stemweb", "request" ]); var reqparam = $('#call_stemweb').serialize(); // 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? $.getJSON( requrl, reqparam, function (data) { - // Job ID is in data.jobid. TODO do something with it. - selectedTextInfo.stemweb_jobid = data.jobid; - $(evt.target).button("enable"); + mybuttons.button("enable"); $('#stemweb-ui-dialog').dialog('close'); - // Reload the current stemma to rejigger the buttons - load_stemma( selectedStemmaID, true ); + 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."); + // Reload the current stemma to rejigger the buttons + load_stemma( selectedStemmaID, true ); + } 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 @@ -592,8 +649,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]; @@ -628,10 +696,21 @@ $(document).ready( function() { open: function(evt) { $('#stemweb_run_status').empty(); $('#stemweb_tradition').attr('value', selectedTextID ); + if( selectedTextInfo.stemweb_jobid == 0 ) { + $('#stemweb_merge_reltypes').empty(); + $.each( selectedTextInfo.reltypes, function( i, r ) { + var relation_opt = $('