function edit_ob_vehicle( $entry, player_no ) { _do_edit_ob_vo( $entry, player_no, "vehicle" ) ; } function edit_ob_ordnance( $entry, player_no ) { _do_edit_ob_vo( $entry, player_no, "ordnance" ) ; } // - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - function _do_edit_ob_vo( $entry, player_no, vo_type ) { function get_default_capabilities( vo_entry, params, show_warnings ) { return make_capabilities( false, vo_entry, params[ "PLAYER_"+player_no ], params.SCENARIO_THEATER, params.SCENARIO_YEAR, params.SCENARIO_MONTH, show_warnings ) ; } function get_default_comments( vo_entry ) { return vo_entry.comments ? vo_entry.comments : [] ; } function load_entries( $sortable, entries ) { $sortable.sortable2( "delete-all" ) ; for ( var i=0 ; i < entries.length ; ++i ) add_entry( $sortable, entries[i], false ) ; } function unload_entries( $sortable ) { var entries = [] ; $sortable.find( "input[type='text']" ).each( function() { var val = $(this).val().trim() ; if ( val ) entries.push( val ) ; } ) ; return entries ; } // get the vehicle/ordnance's capabilities/comments var params = unload_snippet_params( true, null ) ; var vo_entry = $entry.data( "sortable2-data" ).vo_entry ; var capabilities = $entry.data( "sortable2-data" ).custom_capabilities ; if ( ! capabilities ) capabilities = get_default_capabilities( vo_entry, params, true ).slice() ; var comments = $entry.data( "sortable2-data" ).custom_comments ; if ( ! comments ) comments = get_default_comments( vo_entry ) ; // load the dialog var vo_image_id = $entry.data( "sortable2-data" ).vo_image_id ; var url = get_vo_image_url( vo_entry, vo_image_id, true ) ; var buf = [ "
", "", "
", "" + vo_entry.name + "", "
", " 1 ) { $header.find( "img" ).data( "vo-images", vo_images ) ; var $btn = $( "" ) ; $header.children( ".content" ).append( $btn ) ; $btn.click( function() { $(this).blur() ; on_select_vo_image( $(this) ) ; } ) ; } $( "#edit-vo .header" ).replaceWith( $header ) ; // initialize var $capabilities = $( "#vo_capabilities-sortable" ) ; var $comments = $( "#vo_comments-sortable" ) ; function add_entry( $sortable, val, visible ) { var $elem = $( "
" + "" + "" + "
" ) ; $elem.children( "input[type='text']" ).val( val ).keydown( function(evt) { auto_dismiss_dialog( $dlg, evt, "OK" ) ; } ) ; var $entry = $sortable.sortable2( "add", { content: $elem, data: { fixed_height: "1.5em" }, } ) ; if ( visible ) { $entry.find( "input[type='text']" ).focus() ; $entry[0].scrollIntoView() ; } } // NOTE: on_reset_capabilities/comments() get bound when the sortable2 is *created*, so they need some way // to get the *current* vo_entry and params, otherwise they will use the values active when they were bound. var $reset_capabilities = $( "#vo_capabilities-reset" ) ; $reset_capabilities.data( { vo_entry: vo_entry, params: params } ) ; function on_reset_capabilities() { load_entries( $capabilities, get_default_capabilities( $reset_capabilities.data("vo_entry"), $reset_capabilities.data("params"), false ) ) ; } var $reset_comments = $( "#vo_comments-reset" ) ; $reset_comments.data( { vo_entry: vo_entry, params: params } ) ; function on_reset_comments() { load_entries( $comments, get_default_comments( $reset_comments.data("vo_entry") ) ) ; } // show the dialog var $dlg = $( "#edit-vo" ).dialog( { dialogClass: "edit-vo", title: "Edit "+vo_type, minWidth: 550, minHeight: 470, modal: true, create: function() { // initialize the dialog init_dialog( $(this), "OK", false ) ; $capabilities.sortable2( "init", { add: function() { add_entry( $capabilities, "", true ) ; }, reset: on_reset_capabilities, no_confirm_delete: true, } ) ; $comments.sortable2( "init", { add: function() { add_entry( $comments, "", true ) ; }, reset: on_reset_comments, no_confirm_delete: true, } ) ; }, open: function() { // initialize on_dialog_open( $(this) ) ; add_flag_to_dialog_titlebar( $(this), player_no ) ; // set the titlebar color var colors = get_player_colors( player_no ) ; $( ".ui-dialog.edit-vo .ui-dialog-titlebar" ).css( { background: colors[0], border: "1px solid "+colors[2], } ) ; // load the dialog load_entries( $capabilities, capabilities ) ; load_entries( $comments, comments ) ; }, buttons: { OK: function() { // save the V/O image ID var $img = $dlg.find( "img[class='vasl-image']" ) ; vo_image_id = $img.data( "vo-image-id" ) ; if ( vo_image_id ) $entry.data( "sortable2-data" ).vo_image_id = vo_image_id ; // unload the capabilities var capabilities = unload_entries( $capabilities ) ; if ( capabilities.join() !== get_default_capabilities( vo_entry, params, false ).join() ) $entry.data( "sortable2-data" ).custom_capabilities = capabilities ; else { // the capabilities are the same as the default - no need to retain these custom settings delete $entry.data( "sortable2-data" ).custom_capabilities ; } // unload the comments var comments = unload_entries( $comments ) ; if ( comments.join() !== get_default_comments( vo_entry ).join() ) { $entry.data( "sortable2-data" ).custom_comments = comments ; } else { // the comments are the same as the default - no need to retain these custom settings delete $entry.data( "sortable2-data" ).custom_comments ; } // update the original V/O entry to reflect the changes update_vo_sortable2_entry( $entry ) ; $(this).dialog( "close" ) ; }, Cancel: function() { $(this).dialog( "close" ) ; }, }, } ) ; }