edit-software.js 2.77 KB
modulejs.define('EditSoftware', ['jquery', 'NoosferoRoot', 'AutoComplete', 'NewSoftware'], function($, NoosferoRoot, AutoComplete, NewSoftware) {
  'use strict';

  var AJAX_URL = {
    get_field_data:
      NoosferoRoot.urlWithSubDirectory("/plugin/software_communities/get_field_data")
  };


  function database_autocomplete() {
    AutoComplete.enable("database", ".database_description_id", ".database_autocomplete", AJAX_URL.get_field_data);
  }


  function language_autocomplete() {
    AutoComplete.enable("software_language", ".programming_language_id", ".language_autocomplete", AJAX_URL.get_field_data);
  }


  function delete_dynamic_table() {
    var button = $(".delete-dynamic-table");

    button.each(function(){
      var table = $(this).parent().parent().parent().parent();
      var color = table.css("background-color");

      $(this).click(function(){
        table.remove();
        return false;
      }).mouseover(function(){
        table.css("background-color", "#eee");
      }).mouseout(function(){
        table.css("background-color", color);
      });
    });
  }


  function has_more_than_one(table_class) {
    return ($("."+table_class).length > 2); // One is always added by defaul and its hidden
  }


  function add_dynamic_table(element_id, content) {
    $("#"+element_id).append(content);
  }


  function hide_show_public_software_fields() {
    if ($("#software_public_software").is(":checked")) {
      $(".public-software-fields").show();
    } else {
      $(".public-software-fields").hide();
    }
  }


  function replace_software_creations_step() {
    var software_creation_step = $("#software_creation_step").remove();

    if( software_creation_step.size() > 0 ) {
      $("#profile-data").parent().prepend(software_creation_step);
    }
  }


  return {
    isCurrentPage: function() {
      return $("#especific-info").length === 1;
    },


    init: function() {
      var dynamic_tables = ["dynamic-databases", "dynamic-languages", "dynamic-libraries","dynamic-operating_systems"];

      delete_dynamic_table();
      database_autocomplete();
      language_autocomplete();

      $(".new-dynamic-table").click(function(){
        var link = $(this);

        dynamic_tables.forEach(function(value){
          if( link.hasClass(value) ) {
            var table_id = value.split("-")[1];

            var table_html = $("#table_structure_"+table_id).html();

            add_dynamic_table(table_id, table_html);
          }
        });

        delete_dynamic_table();
        database_autocomplete();
        language_autocomplete();

        return false;
      });




      hide_show_public_software_fields();
      $("#software_public_software").click(hide_show_public_software_fields);

      replace_software_creations_step();

      NewSoftware.init();
    }
  }
});