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 ( $trial_id, $trial_name );
{
    my %pos;
    for ( my $x = 0; $x < @_; $x += 2 )
    {
        $pos{ $_[$x] } = $x + 1;
    }
#line 3 "/home/production/cxgn/sgn/mason/breeders_toolbox/trial/trial_entry_numbers_upload_dialog.mas"
     $trial_id = exists $pos{'trial_id'} ? $_[ $pos{'trial_id'} ] :  undef;
#line 4 "/home/production/cxgn/sgn/mason/breeders_toolbox/trial/trial_entry_numbers_upload_dialog.mas"
     $trial_name = exists $pos{'trial_name'} ? $_[ $pos{'trial_name'} ] :  undef;
}
$m->debug_hook( $m->current_comp->path ) if ( HTML::Mason::Compiler::IN_PERL_DB() );

#line 1 "/home/production/cxgn/sgn/mason/breeders_toolbox/trial/trial_entry_numbers_upload_dialog.mas"
$m->print( '
' );
#line 6 "/home/production/cxgn/sgn/mason/breeders_toolbox/trial/trial_entry_numbers_upload_dialog.mas"
$m->print( '
<div class="modal fade" id="trial_entry_numbers_upload_dialog" name="trial_entry_numbers_upload_dialog" tabindex="-1" role="dialog" aria-labelledby="uploadTrialEntryNumbersDialog">
  <div class="modal-dialog modal-lg" role="document">
    <div class="modal-content">
      <div class="modal-header">
        <button type="button" class="close" data-dismiss="modal" aria-label="Close"><span aria-hidden="true">&times;</span></button>
        <h4 class="modal-title" id="uploadTrialEntryNumbersDialog">Upload Trial Entry Numbers</h4>
      </div>
      <div class="modal-body">
        <div class="container-fluid">
          <b>Trial Entry Numbers may be uploaded in an Excel file (.xls or .xlsx)</b><br>
          <br><br>
          <b>Header:</b><br>
          The first row (header) must contain the following:
          <br>
          <table class="table table-bordered table-hover">
            <tbody>
              <tr>
                <td>accession_name</td>
                <td>trial_names</td>
                <td>entry_number</td>
              </tr>
            </tbody>
          </table>
          <b>Column Definitions:</b><br>
          <b>accession_name:</b> (required) the unique name of the Accession record, must exist in the database<br>
          <b>trial_names:</b> (required) the name(s) of the Trials to assign entry numbers in (can include more than one comma-separated Trial name)<br>
          <b>entry_number:</b> The entry number to assign to the Accession in all of the specified Trial(s).  The entry number should be unique in this set of Trial(s).<br>
          <br>
          <form method="post" enctype="multipart/form-data" encoding="multipart/form-data" id="upload_entry_numbers_form" name="upload_entry_numbers_form">
            <label for="upload_entry_numbers_file" style="display: inline-block;">Entry Numbers File:</label>
            <input class="form-control" type="file" name="upload_entry_numbers_file" id="upload_entry_numbers_file" encoding="multipart/form-data" />
            <input id="upload_entry_numbers_ignore_warnings_cb" name="upload_entry_numbers_ignore_warnings_cb" type="checkbox" value="">
            <label for="upload_entry_numbers_ignore_warnings_cb"> Ignore Warnings - check to upload even if there are warnings with the file</label><br>
          </form>

          <br /><br />

          <div id="upload_entry_numbers_messages">
            <ul id="upload_entry_numbers_messages_list" class=\'list-group\'></ul>
          </div>
        </div>
      </div>
      <div class="modal-footer">
        <button type="button" class="btn btn-default" data-dismiss="modal">Close</button>
	      <button type="button" class="btn btn-primary" name="upload_entry_numbers_submit" id="upload_entry_numbers_submit">Upload</button>
      </div>
    </div>
  </div>
</div>

<script defer="defer">

jQuery(document).ready(function() {

  /**
   * Upload the selected entry number template to the database
   */
  jQuery(\'#upload_entry_numbers_submit\').click( function() {
    var uploadFile = jQuery("#upload_entry_numbers_file").val();
    if (uploadFile === \'\') {
      alert("Please select a file");
      return;
    }

    jQuery(\'#working_modal\').modal("show");
    jQuery(\'#upload_entry_numbers_messages_list\').empty();
    let formData = new FormData();
    formData.append(\'upload_entry_numbers_file\', jQuery(\'#upload_entry_numbers_file\').prop(\'files\')[0]);
    formData.append(\'ignore_warnings\', jQuery(\'#upload_entry_numbers_ignore_warnings_cb\').is(\':checked\'));

    jQuery.ajax({
      url: \'/ajax/breeders/trial_entry_numbers/upload\',
      type: \'POST\',
      data: formData,
      cache: false,
      contentType: false,
      processData: false,
      success: function(response) {
        jQuery(\'#working_modal\').modal("hide");
        jQuery("#upload_entry_numbers_file").val("");
        if ( response ) {
          if ( response.error ) {
            addErrors(response.error);
          }
          if ( response.warning ) {
            addWarnings(response.warning);
          }
          if ( response.success === 1) {
            addSuccess("Trial entry numbers stored!");
	    loadEntryNumbers();
          }
        }
      },
      error: function() {
        jQuery(\'#working_modal\').modal("hide");
        jQuery("#upload_entry_numbers_file").val("");
        alert("ERROR: Could not upload and process file due to server error!");
      }
    });
  });
});



/**
 * Add a result message
 * @param {string} message Message text
 * @param {string} [type] Type of message (error=default, warning, success)
 */
function addResultMessage(message, type) {
  let html = "";
  let class_name = "danger";
  let icon_name = "remove";
  
  if ( type === "success" ) {
    class_name = "success";
    icon_name = "ok";
  }
  else if ( type === "warning" ) {
    class_name = "warning";
    icon_name = "asterisk";
  }

  html += "<li class=\'list-group-item list-group-item-" + class_name + "\'>";
  html += "<span class=\'badge\'><span class=\'glyphicon glyphicon-" + icon_name + "\'></span></span>";
  html += message;
  html += "</li>";

  jQuery(\'#upload_entry_numbers_messages_list\').append(html);
}

/**
 * Add multiple error messages
 * @param {String[]} errors Array of error messages
 */
function addErrors(errors) {
  for ( let i = 0; i < errors.length; i++ ) {
    addResultMessage(errors[i]);
  }
}

/**
 * Add multiple warning messages
 * @param {String[]} warnings Array of warning messages
 */
function addWarnings(warnings) {
  for ( let i = 0; i < warnings.length; i++ ) {
    addResultMessage(warnings[i], "warning");
  }
}

/**
 * Add a single success message
 * @param {String} message Success message
 */
function addSuccess(message) {
  addResultMessage(message, "success");
}

</script>
' );
;return;
},
'declared_args' => {
  '$trial_id' => { default => ' undef' },
  '$trial_name' => { default => ' undef' }
},
'load_time' => 1763102299,

)
;