rapidftr/RapidFTR

View on GitHub
app/assets/javascripts/form_section.js

Summary

Maintainability
B
4 hrs
Test Coverage
$(document).ready(function() {
    if($('div.form_page').length == 0){
      return;
    }

    $("a.delete").click(deleteItem);
    $("a.add_field").click(toggleFieldPanel);
    $("ul.field_types a").click(showFieldDetails);
    $(".field_details_panel a.link_cancel").click(toggleFieldPanel);
    $(".field_hide_show").bind('change',toggleField);
    $(".field_matchable").bind('change',toggleField);
    $(".link_moveto").click(showMovePanel);
    triggerErrors();
    var rows = $("table#form_sections tbody");
    rows.sortable({
      update: function(event, ui){
        var tds = $(ui.item).find("td")
        var datas = [];
        $(this).find("tr").each(function(index, ele){
            datas.push($(ele).attr("data"));
        });
        $.post($("#save_order_url").val(), {'ids' : datas})
            .success(function() {
                tds.parent().css('background-color', "#87A96B");
                tds.animate({opacity: 0.3}, 300).animate({opacity: 1}, 300, "swing", function() {
                    tds.parent().css('background-color', "transparent");
                    });
                })
            .error(function(jqXHR) {
                tds.parent().css('background-color', "#DD2726");
                tds.animate({opacity: 0.5}, 300);
                $("#errorNotice").show();
            });
        }
    });
    $(".field_location").bind('change', changeForm);

    function changeForm(event){
      var parent_div = $($(event.target).parent());
      parent_div.find(".destination_form_id").val($(this).val());
      parent_div.find("form").submit();
    }

    function toggleField(){
        var checkbox = $(this);
        var td = $("#" + $(this).val() + "_row td");
        var origColor = td.parent().children().css("background-color");
        var fieldToToggle = $(this).data('field-name');
        console.log($(this).data('field-name'));
        console.log(fieldToToggle);

        $.post($("#toggle_url").val(), {id: $(this).val(), field: fieldToToggle})
            .success(function(data) {
                td.parent().css('background-color', "#87A96B");
                td.animate({opacity: 0.7}, 300).animate({opacity: 1}, 300, "swing", function() {
                    td.parent().css('background-color', "transparent");
                });
            })
            .error(function(jqXHR) {
                td.parent().css('background-color', "#DD2726");
                td.animate({opacity: 0.5}, 300);
                checkbox.prop( "checked", function( i, val ) {
                    return !val;
                });
                $("#errorNotice").show();
            });
        $("table#form_sections tbody").sortable();
    }

    function showMovePanel(){
        $(this).toggleClass("sel");
        $(this).siblings("div.move_to_panel").toggleClass("hide");
    }

    function triggerErrors(){
        if((typeof(show_add_field) != 'undefined') && (show_add_field)){
            toggleFieldPanel(null, getFieldDetails(field_type));
            $("ul.field_types a").removeClass("sel");
            $("#"+field_type).addClass("sel");
        }
    }

    function toggleFieldPanel(event, div_to_show){
        resetAddField();
        if(div_to_show === undefined){
            div_to_show = "#field_details";
        }
        var edit_url = $($("#edit_url")).val();
        if(event != null && $(event.target).hasClass("add_field") && edit_url.indexOf(window.location.pathname) < 0){
          window.location = edit_url + "?show_add_field=true";
          return;
        }
        $(div_to_show).slideDown();
        $(".field_details_overlay").css("height",$(document).height());
        $(".field_details_panel").css("top", scrollY + 150);
        $(".translation_lang_selected").text($("#locale option:selected").text());
        $("#err_msg_panel").hide();
        $(".field_details_overlay").toggleClass("hide");
        $(".field_details_panel").toggleClass("hide");
    }

    function resetAddField(){
        $('#field_details_options').hide();
        $('#field_details').hide();
        $("ul.field_types a").removeClass("sel");
        $("ul.field_types a#text_field").addClass("sel");
    }

    function showFieldDetails(){
        $("ul.field_types a").removeClass("sel");
        $(this).addClass("sel");
        $("#err_msg_panel").hide();


        $("#field_details_options, #field_details").hide();

        $(".field_details_panel input[type='text'], .field_details_panel textarea").val("");
        var _this = this;
        $(".field_type").each(function(){
            $(this).val(_this.id);
        })
        $(getFieldDetails(this.id)).slideDown("fast");
    }

    function getFieldDetails(field_type){
        var fields_with_options = ["check_boxes","radio_button","select_box"];
        return $.inArray(field_type, fields_with_options) > -1 ? "#field_details_options" : "#field_details";
    }

    function deleteItem() {
        var td = $(this).parents("td");
        var fieldName = td.find("input[name=field_name]").val();
        $('#deleteFieldName').val(fieldName);
        if (confirm(I18n.t("messages.delete_item"))) {
            $('#'+fieldName+'deleteSubmit').click();
        }
    }
});

function setTranslationFields(element) {
    var locale = $(element).val();
    $(".translation_forms").hide();
    $("div ." + locale).show();
}
$(function() {
    $(".locale").change( function(event){
        setTranslationFields(event.target);
    });
});