ncbo/bioportal_web_ui

View on GitHub
app/views/virtual_appliance/index.html.haml

Summary

Maintainability
Test Coverage
-@title = "OntoPortal Virtual Appliance Download"

%div{:style => "padding: 13px; max-width: 800px;", :class => "enable-lists"}
  %h1 OntoPortal Virtual Appliance Download
  %p
    OntoPortal Virtual Appliance distribution contains a pre-installed,
    pre-configured version of commonly-used open source NCBO software running
    on a Linux operating system.
  %p The following software is included on the image:
  %ul
    %li Ontologies API (REST service)
    %li Annotator
    %li Recommender
    %li BioPortal Web User Interface (including ontology visualization, widgets, and Annotator UI)
  %p
    Please see our
    =link_to 'documentation', 'https://ontoportal.github.io/documentation/administration/steps/getting_started', target: '_blank'
    for more information on working with the Appliance.
  %h2 Download Latest OntoPortal
  %ul
    %li
      Version 3.2.2
      <a href="https://www.bioontology.org/ontoportal-appliance/ontoportal_appliance-vmware-3.2.2.ova"> OVA</a>
      |
      <a href="https://ontoportal.github.io/documentation/administration/steps/getting_started#amazon-aws-ami"> Amazon EC2</a>
    %li
      Version 3.2.1
      <a href="https://www.bioontology.org/ontoportal-appliance/ontoportal_appliance-vmware-3.2.1.ova"> OVA</a>
      |
      <a href="https://ontoportal.github.io/documentation/administration/steps/getting_started#amazon-aws-ami"> Amazon EC2</a>
    %li
      Version 3.2.0
      <a href="https://www.bioontology.org/ontoportal-appliance/ontoportal_appliance-vmware-3.2.0.ova"> OVA</a>
      |
      <a href="https://ontoportal.github.io/documentation/administration/steps/getting_started#amazon-aws-ami"> Amazon EC2</a>
    %li
      Version 3.1.1
      <a href="https://www.bioontology.org/ontoportal-appliance/ontoportal_appliance-vmware-3.1.1.ova"> OVA</a>
      |
      <a href="https://ontoportal.github.io/documentation/administration/steps/getting_started#amazon-aws-ami"> Amazon EC2</a>
    %li
      Version 3.1.0
      <a href="https://www.bioontology.org/ontoportal-appliance/ontoportal_appliance-vmware-3.1.0.ova"> OVA</a>
      |
      <a href="https://ontoportal.github.io/documentation/administration/steps/getting_started#amazon-aws-ami"> Amazon EC2</a>
    %li
      Version 3.0.6
      <a href="https://www.bioontology.org/ontoportal-appliance/ontoportal_appliance-vmware-3.0.6.ova"> OVA</a>
      |
      <a href="https://ontoportal.github.io/documentation/administration/steps/getting_started#amazon-aws-ami"> Amazon EC2</a>
    %li
      Version 3.0.5
      <a href="https://www.bioontology.org/ontoportal-appliance/ontoportal_appliance-vmware-3.0.5.ova"> OVA</a>
      |
      <a href="https://ontoportal.github.io/documentation/administration/steps/getting_started#amazon-aws-ami"> Amazon EC2</a>
    %li
      Version 3.0.4
      <a href="https://www.bioontology.org/ontoportal-appliance/ontoportal_appliance-vmware-3.0.4.ova"> OVA</a>
      |
      <a href="https://ontoportal.github.io/documentation/administration/steps/getting_started#amazon-aws-ami"> Amazon EC2</a>
    %li
      Version 3.0.3
      <a href="https://www.bioontology.org/ontoportal-appliance/ontoportal_appliance-vmware-3.0.3.ova"> OVA</a>
      |
      <a href="https://ontoportal.github.io/documentation/administration/steps/getting_started#amazon-aws-ami"> Amazon EC2</a>
    %li
      Version 3.0.2
      <a href="https://www.bioontology.org/ontoportal-appliance/ontoportal_appliance-vmware-3.0.2.ova"> OVA</a>
      |
      <a href="https://ontoportal.github.io/documentation/administration/steps/getting_started#amazon-aws-ami"> Amazon EC2</a>

  -if @virtual_appliance_access
    %h3 Archives
    %p
      The OntoPortal 2.5 Virtual Appliance is not longer offered for new
      users. This archival distribution is available only as a backup for
      those who registered for the Appliance before June 2020
    %ul
      %li
        Version 2.5
        =link_to 'OVF', 'https://www.bioontology.org/ontoportal-appliance/ontoportal-2.5.zip'

  -if @user.admin?
    %div{:style => "margin: 2em 0 0; padding: 1em 1em; border: solid thin gray; background-color: lightGray;"}
      %h1{:style => "margin-bottom: 15px;"} Admin: Add Users
      =form_for :appliance_user do |f|
        = f.label :user_id, "Account Name: "
        = f.text_field :user_id
        &nbsp;&nbsp;
        = f.submit "Add User"

      %h2{:style => "margin-top: 1em;"}
        Accounts with access
        %a#export{href: "#", style: "margin-left: 2em; margin-top: -1em; font-size: 11px;"}
          Export Appliance Users As CSV
      %table#user_table.zebra{style: "border: thin lightGray solid; background-color: white;"}
        %thead
          %tr
            %th BioPortal User ID
        %tbody
        -@va_users.each do |u|
          %tr
            %td= link_to nil, u.user_id, target: '_blank'

:javascript

  $(document).ready(function() {
    function exportTableToCSV($table, filename) {
      var $headers = $table.find('tr:has(th)'),
          $rows = $table.find('tr:has(td)'),
          // Temporary delimiter characters unlikely to be typed by keyboard
          // This is to avoid accidentally splitting the actual contents
          tmpColDelim = String.fromCharCode(11), // vertical tab character
          tmpRowDelim = String.fromCharCode(0), // null character
          // actual delimiter characters for CSV format
          colDelim = '","',
          rowDelim = '"\r\n"',
          // Grab text from table into CSV formatted string
          csv = '"',
          csvData;
      csv += formatRows($headers.map(grabRow));
      csv += rowDelim;
      csv += formatRows($rows.map(grabRow)) + '"';

      // Data URI
      csvData = 'data:application/csv;charset=utf-8,' + encodeURIComponent(csv);
      $(this).attr({
        'download': filename,
        'href': csvData
      });

      //------------------------------------------------------------
      // Helper Functions
      //------------------------------------------------------------

      // Format the output so it has the appropriate delimiters
      function formatRows(rows) {
          return rows.get().join(tmpRowDelim).split(tmpRowDelim).join(rowDelim).split(tmpColDelim).join(colDelim);
      }

      // Grab and format a row from the table
      function grabRow(i, row) {
        var $row = $(row);
        //for some reason $cols = $row.find('td') || $row.find('th') won't work...
        var $cols = $row.find('td');
        if (!$cols.length) $cols = $row.find('th');
        return $cols.map(grabCol).get().join(tmpColDelim);
      }

      // Grab and format a column from the table
      function grabCol(j, col) {
        var $col = $(col),
            $text = $col.text();
        return $text.replace('"', '""'); // escape double quotes
      }
    }

    // This must be a hyperlink
    $("#export").click(function(event) {
      var outputFile = 'appliance_users.csv'
      exportTableToCSV.apply(this, [$('#user_table'), outputFile]);
    });
  });