X-Git-Url: http://git.shadowcat.co.uk/gitweb/gitweb.cgi?a=blobdiff_plain;f=root%2Fjs%2Frelationship-full.js;h=814e58ed855de6f7003c3225bc8103abd6b925c5;hb=56e3972ee78693b5fbcb530fad920ed9beb6be5a;hp=3ca852c0a404994f63b3330750b9ed2a568496c3;hpb=3f9d7ae52124ba47d54d45a7c8e9f57455c9d389;p=scpubgit%2Fstemmaweb.git diff --git a/root/js/relationship-full.js b/root/js/relationship-full.js index 3ca852c..814e58e 100644 --- a/root/js/relationship-full.js +++ b/root/js/relationship-full.js @@ -5,10 +5,6 @@ var start_element_height = 0; var reltypes = {}; var readingdata = {}; -function getRelativePath() { - return basepath; -} - function getTextURL( which ) { return basepath + textid + '/' + which; } @@ -59,26 +55,31 @@ function toggle_checkbox( box, value ) { } function morphology_form ( lexlist ) { - $('#morphology').empty(); - $.each( lexlist, function( idx, lex ) { - var morphoptions = []; - if( 'wordform_matchlist' in lex ) { - $.each( lex['wordform_matchlist'], function( tdx, tag ) { - var tagstr = stringify_wordform( tag ); - morphoptions.push( tagstr ); + if( lexlist.length ) { + $('#morph_outer').show(); + $('#morphology').empty(); + $.each( lexlist, function( idx, lex ) { + var morphoptions = []; + if( 'wordform_matchlist' in lex ) { + $.each( lex['wordform_matchlist'], function( tdx, tag ) { + var tagstr = stringify_wordform( tag ); + morphoptions.push( tagstr ); + }); + } + var formtag = 'morphology_' + idx; + var formstr = ''; + if( 'form' in lex ) { + formstr = stringify_wordform( lex['form'] ); + } + var form_morph_elements = morph_elements( + formtag, lex['string'], formstr, morphoptions ); + $.each( form_morph_elements, function( idx, el ) { + $('#morphology').append( el ); }); - } - var formtag = 'morphology_' + idx; - var formstr = ''; - if( 'form' in lex ) { - formstr = stringify_wordform( lex['form'] ); - } - var form_morph_elements = morph_elements( - formtag, lex['string'], formstr, morphoptions ); - $.each( form_morph_elements, function( idx, el ) { - $('#morphology').append( el ); }); - }); + } else { + $('#morph_outer').hide(); + } } function stringify_wordform ( tag ) { @@ -200,32 +201,38 @@ function svgEnlargementLoaded() { } function add_relations( callback_fn ) { - var basepath = getRelativePath(); + // Add the relationship types to the keymap list + // TODO Make the descriptions (in typedef.description) available somewhere + $.each( relationship_types, function(index, typedef) { + var elid = 'list_rel_' + typedef.name; + $('#keymaplist').append( $('
  • ').attr( 'id', elid ).css( "border-color", relation_manager.relation_colors[index] ).text(typedef.name) ); + }); + // Now fetch the relationships themselves and add them to the graph + var rel_types = $.map( relationship_types, function(t) { return t.name }); + // Save this list of names to the outer element data so that the relationship + // factory can access it + $('#keymap').data('relations', rel_types); var textrelpath = getTextURL( 'relationships' ); - $.getJSON( basepath + 'definitions', function(data) { - var rel_types = data.types.sort(); - $.getJSON( textrelpath, - function(data) { - $.each(data, function( index, rel_info ) { - var type_index = $.inArray(rel_info.type, rel_types); - var source_found = get_ellipse( rel_info.source ); - var target_found = get_ellipse( rel_info.target ); - if( type_index != -1 && source_found.size() && target_found.size() ) { - var relation = relation_manager.create( rel_info.source, rel_info.target, type_index ); - relation.data( 'type', rel_info.type ); - relation.data( 'scope', rel_info.scope ); - relation.data( 'note', rel_info.note ); - var node_obj = get_node_obj(rel_info.source); - node_obj.set_draggable( false ); - node_obj.ellipse.data( 'node_obj', null ); - node_obj = get_node_obj(rel_info.target); - node_obj.set_draggable( false ); - node_obj.ellipse.data( 'node_obj', null ); - } - }); - callback_fn.call(); - }); - }); + $.getJSON( textrelpath, function(data) { + $.each(data, function( index, rel_info ) { + var type_index = $.inArray(rel_info.type, rel_types); + var source_found = get_ellipse( rel_info.source ); + var target_found = get_ellipse( rel_info.target ); + if( type_index != -1 && source_found.size() && target_found.size() ) { + var relation = relation_manager.create( rel_info.source, rel_info.target, type_index ); + relation.data( 'type', rel_info.type ); + relation.data( 'scope', rel_info.scope ); + relation.data( 'note', rel_info.note ); + var node_obj = get_node_obj(rel_info.source); + node_obj.set_draggable( false ); + node_obj.ellipse.data( 'node_obj', null ); + node_obj = get_node_obj(rel_info.target); + node_obj.set_draggable( false ); + node_obj.ellipse.data( 'node_obj', null ); + } + }); + callback_fn.call(); + }); } function get_ellipse( node_id ) { @@ -638,9 +645,10 @@ $(document).ready(function () { $.each( data, function(item, source_target) { var source_found = get_ellipse( source_target[0] ); var target_found = get_ellipse( source_target[1] ); - if( source_found.size() && target_found.size() ) { - var relation = relation_manager.create( source_target[0], source_target[1], $('#rel_type')[0].selectedIndex-1 ); - relation.data( 'type', $('#rel_type :selected').text() ); + var relation_found = $.inArray( source_target[2], $('#keymap').data('relations') ); + if( source_found.size() && target_found.size() && relation_found > -1 ) { + var relation = relation_manager.create( source_target[0], source_target[1], relation_found ); + relation.data( 'type', source_target[2] ); relation.data( 'scope', $('#scope :selected').text() ); relation.data( 'note', $('#note').val() ); relation_manager.toggle_active( relation.attr('id') ); @@ -656,18 +664,11 @@ $(document).ready(function () { }, create: function(event, ui) { $(this).data( 'relation_drawn', false ); - //TODO? Err handling? - var basepath = getRelativePath(); - var jqjson = $.getJSON( basepath + '/definitions', function(data) { - var types = data.types.sort(); - $.each( types, function(index, value) { - $('#rel_type').append( $('
  • ').css( "border-color", relation_manager.relation_colors[index] ).text(value) ); - }); - var scopes = data.scopes; - $.each( scopes, function(index, value) { - $('#scope').append( $('