package SGN::View::Mason::Commands;
use strict;
use vars qw($m $c);
HTML::Mason::Component::FileBased->new(
'code' => sub {
use utf8; local $SGN::View::Mason::Commands::m = $HTML::Mason::Commands::m;
HTML::Mason::Exception::Params->throw
    ( error =>
      "Odd number of parameters passed to component expecting name/value pairs"
    ) if @_ % 2;
my ( $cvterm_id, $subset, $props, $editable, $div_name, $edit_privs, $cv_name );
{
    my %pos;
    for ( my $x = 0; $x < @_; $x += 2 )
    {
        $pos{ $_[$x] } = $x + 1;
    }

    foreach my $arg ( qw( cvterm_id props ) )
    {
        HTML::Mason::Exception::Params->throw
            ( error => "no value sent for required parameter '$arg'" )
                unless exists $pos{$arg};
    }
#line 29 "/home/production/cxgn/sgn/mason/chado/cvtermprops.mas"
    $cvterm_id = $_[ $pos{'cvterm_id'} ];
#line 30 "/home/production/cxgn/sgn/mason/chado/cvtermprops.mas"
     $subset = exists $pos{'subset'} ? $_[ $pos{'subset'} ] :  [];
#line 31 "/home/production/cxgn/sgn/mason/chado/cvtermprops.mas"
    $props = $_[ $pos{'props'} ];
#line 32 "/home/production/cxgn/sgn/mason/chado/cvtermprops.mas"
     $editable = exists $pos{'editable'} ? $_[ $pos{'editable'} ] :  [];
#line 33 "/home/production/cxgn/sgn/mason/chado/cvtermprops.mas"
     $div_name = exists $pos{'div_name'} ? $_[ $pos{'div_name'} ] :  '';
#line 34 "/home/production/cxgn/sgn/mason/chado/cvtermprops.mas"
     $edit_privs = exists $pos{'edit_privs'} ? $_[ $pos{'edit_privs'} ] :  0;
#line 35 "/home/production/cxgn/sgn/mason/chado/cvtermprops.mas"
     $cv_name = exists $pos{'cv_name'} ? $_[ $pos{'cv_name'} ] :  'trait_property';
}
$m->debug_hook( $m->current_comp->path ) if ( HTML::Mason::Compiler::IN_PERL_DB() );

#line 27 "/home/production/cxgn/sgn/mason/chado/cvtermprops.mas"
$m->print( '
' );
#line 37 "/home/production/cxgn/sgn/mason/chado/cvtermprops.mas"
$m->print( '
' );
#line 38 "/home/production/cxgn/sgn/mason/chado/cvtermprops.mas"

use JSON::Any;

my $subset_json = JSON::Any->objToJson($subset);

$div_name ||= join("_", @$subset);
$div_name =~ s/ +/\_/g;

my $prop_select = prop_select($editable, $div_name);

$edit_privs ||= 0;

sub prop_select {
  my $editable = shift;
  my $div_name = shift;
  my $html = "<select id=\"$div_name"."_select"."\">";
  foreach my $item (@$editable) { 
      $html .= qq{ <option>$item</option> };
  }
  $html .= qq{ </select> };
  return $html;
}


#line 63 "/home/production/cxgn/sgn/mason/chado/cvtermprops.mas"
$m->print( '
<div id="' );
#line 64 "/home/production/cxgn/sgn/mason/chado/cvtermprops.mas"
$m->print(  $div_name  );
#line 64 "/home/production/cxgn/sgn/mason/chado/cvtermprops.mas"
$m->print( '_content">
</div>

<div id="' );
#line 67 "/home/production/cxgn/sgn/mason/chado/cvtermprops.mas"
$m->print(  $div_name  );
#line 67 "/home/production/cxgn/sgn/mason/chado/cvtermprops.mas"
$m->print( '_add_dialog" >
Add ' );
#line 68 "/home/production/cxgn/sgn/mason/chado/cvtermprops.mas"
$m->print(  $prop_select  );
#line 68 "/home/production/cxgn/sgn/mason/chado/cvtermprops.mas"
$m->print( '
<input id="' );
#line 69 "/home/production/cxgn/sgn/mason/chado/cvtermprops.mas"
$m->print(  $div_name  );
#line 69 "/home/production/cxgn/sgn/mason/chado/cvtermprops.mas"
$m->print( '_prop" />
</div>

<script defer="defer" >

jQuery(document).ready(function() { 

  jQuery(\'#' );
#line 76 "/home/production/cxgn/sgn/mason/chado/cvtermprops.mas"
$m->print(  $div_name  );
#line 76 "/home/production/cxgn/sgn/mason/chado/cvtermprops.mas"
$m->print( '_add_dialog\').dialog( {
     title: \'Add property\',
     buttons: { \'Cancel\': function() { jQuery(\'#' );
#line 78 "/home/production/cxgn/sgn/mason/chado/cvtermprops.mas"
$m->print(  $div_name  );
#line 78 "/home/production/cxgn/sgn/mason/chado/cvtermprops.mas"
$m->print( '_add_dialog\').dialog("close"); }, \'Add\': {text: \'Add\', id: \'' );
#line 78 "/home/production/cxgn/sgn/mason/chado/cvtermprops.mas"
$m->print(  $div_name  );
#line 78 "/home/production/cxgn/sgn/mason/chado/cvtermprops.mas"
$m->print( '_addProp_submit\', click: function() { ' );
#line 78 "/home/production/cxgn/sgn/mason/chado/cvtermprops.mas"
$m->print(  $div_name  );
#line 78 "/home/production/cxgn/sgn/mason/chado/cvtermprops.mas"
$m->print( '_addProp() } } },
     autoOpen: false,
     modal: true
  });

  ' );
#line 83 "/home/production/cxgn/sgn/mason/chado/cvtermprops.mas"
$m->print(  $div_name  );
#line 83 "/home/production/cxgn/sgn/mason/chado/cvtermprops.mas"
$m->print( '_getProps();
  
});

// note: the $div_name prefix is needed when several instances are created on a page

function ' );
#line 89 "/home/production/cxgn/sgn/mason/chado/cvtermprops.mas"
$m->print(  $div_name  );
#line 89 "/home/production/cxgn/sgn/mason/chado/cvtermprops.mas"
$m->print( '_getProps() { 
  jQuery.ajax( { 
    type: \'GET\',
    url: \'/cvterm/prop/get\',
    data: { cvterm_id: ' );
#line 93 "/home/production/cxgn/sgn/mason/chado/cvtermprops.mas"
$m->print(  $cvterm_id  );
#line 93 "/home/production/cxgn/sgn/mason/chado/cvtermprops.mas"
$m->print( ' },
    success: function(response) { ' );
#line 94 "/home/production/cxgn/sgn/mason/chado/cvtermprops.mas"
$m->print(  $div_name  );
#line 94 "/home/production/cxgn/sgn/mason/chado/cvtermprops.mas"
$m->print( '_renderProps(response);  },
    error: function(response) { alert(\'an error occurred\'); }
  });
}


function ' );
#line 100 "/home/production/cxgn/sgn/mason/chado/cvtermprops.mas"
$m->print(  $div_name  );
#line 100 "/home/production/cxgn/sgn/mason/chado/cvtermprops.mas"
$m->print( '_renderProps(props) { 
   var subset = eval(' );
#line 101 "/home/production/cxgn/sgn/mason/chado/cvtermprops.mas"
$m->print(  $subset_json  );
#line 101 "/home/production/cxgn/sgn/mason/chado/cvtermprops.mas"
$m->print( ');

   // eliminate types without values
   var filteredSet = {};
   for (var n=0; n<subset.length; n++) {				   
     for (var i=0; i<props.length; i++) {
       if (subset[n] ==  props[i][\'type_name\']) { 
         filteredSet[subset[n]]=1;
           }
       }
   }
    
   
   var html = \'\';
   var prop_string;
   var edit_privs = ' );
#line 116 "/home/production/cxgn/sgn/mason/chado/cvtermprops.mas"
$m->print(  $edit_privs  );
#line 116 "/home/production/cxgn/sgn/mason/chado/cvtermprops.mas"
$m->print( ';
   for (var n in filteredSet) {
      var lines = new Array();
      for(var i=0; i<props.length; i++) {
        if (n ===  props[i][\'type_name\']) { 
          var lineStr = props[i][\'value\'];
          if (jQuery.cookie("sgn_session_id") && edit_privs === 1) { 
            lineStr = lineStr + \'[<a href="javascript:' );
#line 123 "/home/production/cxgn/sgn/mason/chado/cvtermprops.mas"
$m->print(  $div_name  );
#line 123 "/home/production/cxgn/sgn/mason/chado/cvtermprops.mas"
$m->print( '_deleteProp(\\\'\'+props[i][\'value\']+\'\\\', \'+props[i][\'cvtermprop_id\']+\')">X</a>]\';		
          }
	  lines.push(lineStr);
        }
          
      }
      html = html + \'<b>\'+n+\'</b>&nbsp;&nbsp;\'; 
      //html  = html + lineStr;
      html = html + lines.join(", ");
      html = html + \'<br />\\n\';
      
   }
   jQuery(\'#' );
#line 135 "/home/production/cxgn/sgn/mason/chado/cvtermprops.mas"
$m->print(  $div_name  );
#line 135 "/home/production/cxgn/sgn/mason/chado/cvtermprops.mas"
$m->print( '_content\').html(html);
		
}		 

function ' );
#line 139 "/home/production/cxgn/sgn/mason/chado/cvtermprops.mas"
$m->print(  $div_name  );
#line 139 "/home/production/cxgn/sgn/mason/chado/cvtermprops.mas"
$m->print( '_addPropDialog(prop, typeId) { 
  jQuery(\'#' );
#line 140 "/home/production/cxgn/sgn/mason/chado/cvtermprops.mas"
$m->print(  $div_name  );
#line 140 "/home/production/cxgn/sgn/mason/chado/cvtermprops.mas"
$m->print( '_add_dialog\').dialog("open");

}



function ' );
#line 146 "/home/production/cxgn/sgn/mason/chado/cvtermprops.mas"
$m->print(  $div_name  );
#line 146 "/home/production/cxgn/sgn/mason/chado/cvtermprops.mas"
$m->print( '_addProp() { 
  var prop_type = jQuery(\'#' );
#line 147 "/home/production/cxgn/sgn/mason/chado/cvtermprops.mas"
$m->print(  $div_name  );
#line 147 "/home/production/cxgn/sgn/mason/chado/cvtermprops.mas"
$m->print( '_select\').val();
  var prop = jQuery(\'#' );
#line 148 "/home/production/cxgn/sgn/mason/chado/cvtermprops.mas"
$m->print(  $div_name  );
#line 148 "/home/production/cxgn/sgn/mason/chado/cvtermprops.mas"
$m->print( '_prop\').val();

  if (prop === \'\') { alert("Please fill in the field."); return; }
				 
  jQuery.ajax( { 
    type: \'POST\',
    url: \'/cvterm/prop/add\',
    beforeSend: function(){
        jQuery(\'#working_modal\').modal(\'show\');
    },
    data: { \'cvterm_id\' : ' );
#line 158 "/home/production/cxgn/sgn/mason/chado/cvtermprops.mas"
$m->print(  $cvterm_id  );
#line 158 "/home/production/cxgn/sgn/mason/chado/cvtermprops.mas"
$m->print( ', \'prop\' : prop, \'prop_type\': prop_type, \'cv_name\' : "' );
#line 158 "/home/production/cxgn/sgn/mason/chado/cvtermprops.mas"
$m->print(  $cv_name  );
#line 158 "/home/production/cxgn/sgn/mason/chado/cvtermprops.mas"
$m->print( '" },
    success: function(response) {
        jQuery(\'#working_modal\').modal(\'hide\');
        if ("error" in response) { alert (\'ERROR \'+response.error); }
        if ("message" in response) { alert(\'Successfully added property: \' + prop + \'. (\'+response.message+\')\'); }
    },
    error: function(response) {
        jQuery(\'#working_modal\').modal(\'hide\');
        alert(\'an error occurred while storing the prop \' + response.error);
    }
  });

  ' );
#line 170 "/home/production/cxgn/sgn/mason/chado/cvtermprops.mas"
$m->print(  $div_name  );
#line 170 "/home/production/cxgn/sgn/mason/chado/cvtermprops.mas"
$m->print( '_getProps();
  jQuery(\'#' );
#line 171 "/home/production/cxgn/sgn/mason/chado/cvtermprops.mas"
$m->print(  $div_name  );
#line 171 "/home/production/cxgn/sgn/mason/chado/cvtermprops.mas"
$m->print( '_add_dialog\').dialog("close");
}


function ' );
#line 175 "/home/production/cxgn/sgn/mason/chado/cvtermprops.mas"
$m->print(  $div_name  );
#line 175 "/home/production/cxgn/sgn/mason/chado/cvtermprops.mas"
$m->print( '_deleteProp(cvtermprop_value, cvtermprop_id) { 
  if (confirm(\'Delete cvtermprop \'+cvtermprop_value+\'?\')) { 
    jQuery.ajax( { 
      method: \'GET\',
      url: \'/cvterm/prop/delete\',
      data: { \'cvtermprop_id\' : cvtermprop_id },
      success: function(response) {  
        if (\'message\' in response) {  alert(response.message); } 
        if (\'error\'   in response) {  alert(response.error);   }
      },
      error: function(response) {
        alert(\'An error occurred. Please try again later.\');
      }
  
    });
  }
  ' );
#line 191 "/home/production/cxgn/sgn/mason/chado/cvtermprops.mas"
$m->print(  $div_name  );
#line 191 "/home/production/cxgn/sgn/mason/chado/cvtermprops.mas"
$m->print( '_getProps();
}

</script>
' );
;return;
},
'declared_args' => {
  '$cv_name' => { default => ' \'trait_property\'' },
  '$cvterm_id' => { default => undef },
  '$div_name' => { default => ' \'\'' },
  '$edit_privs' => { default => ' 0' },
  '$editable' => { default => ' []' },
  '$props' => { default => undef },
  '$subset' => { default => ' []' }
},
'load_time' => 1763079580,

)
;