Sha256: 58654425eab11367c31aecf86c81068d9c067d7a45e83d61ef301786bd5cddbd

Contents?: true

Size: 1.93 KB

Versions: 103

Compression:

Stored size: 1.93 KB

Contents

(function( global ) {
  var Module = (function() {
    var nestableSelector = '[data-behavior="nestable"]';
    return {
      init: function(selector){

        $(selector || nestableSelector).each(function(){
          $(this).nestable($(this).data());
          updateWeightsAndRelationships($(this));
        });
      }
    };
    function updateWeightsAndRelationships(nestedList){
      nestedList.on('change', function(event){
        var container = $(event.currentTarget);
        var data = $(this).nestable('serialize');
        var weight = 0;
        for(var i in data){
          var parent_id = data[i]['id'];
          parent_node = findNode(parent_id, container);
          setWeight(parent_node, weight++);
          if(data[i]['children']){
            var children = data[i]['children'];
            for(var child in children){
              var id = children[child]['id']
              child_node = findNode(id, container);
              setWeight(child_node, weight++);
              setParent(child_node, parent_id);
            }
          } else {
            setParent(parent_node, "");
          }
        }
      });

    }
    function findNode(id, container) {
      return container.find("[data-id="+id+"]");
    }

    function setWeight(node, weight) {
      weight_field(node).val(weight);
    }

    function setParent(node, parent_id) {
      parent_page_field(node).val(parent_id);
    }

    /* find the input element with data-property="weight" that is nested under the given node */
    function weight_field(node) {
      return find_property(node, "weight");
    }

    /* find the input element with data-property="parent_page" that is nested under the given node */
    function parent_page_field(node){
      return find_property(node, "parent_page");
    }

    function find_property(node, property) {
      return node.find("input[data-property=" + property + "]");
    }
  })();

  global.SpotlightNestable = Module;

})( this );

Version data entries

103 entries across 103 versions & 1 rubygems

Version Path
blacklight-spotlight-3.0.0.alpha.2 app/assets/javascripts/spotlight/admin/spotlight_nestable.js
blacklight-spotlight-3.0.0.alpha.1 app/assets/javascripts/spotlight/admin/spotlight_nestable.js
blacklight-spotlight-2.13.0 app/assets/javascripts/spotlight/admin/spotlight_nestable.js
blacklight-spotlight-2.12.1 app/assets/javascripts/spotlight/admin/spotlight_nestable.js
blacklight-spotlight-2.12.0 app/assets/javascripts/spotlight/admin/spotlight_nestable.js
blacklight-spotlight-2.11.0 app/assets/javascripts/spotlight/admin/spotlight_nestable.js
blacklight-spotlight-2.10.0 app/assets/javascripts/spotlight/admin/spotlight_nestable.js
blacklight-spotlight-2.9.0 app/assets/javascripts/spotlight/admin/spotlight_nestable.js
blacklight-spotlight-2.8.0 app/assets/javascripts/spotlight/admin/spotlight_nestable.js
blacklight-spotlight-2.7.2 app/assets/javascripts/spotlight/spotlight_nestable.js
blacklight-spotlight-2.7.1 app/assets/javascripts/spotlight/spotlight_nestable.js
blacklight-spotlight-2.7.0 app/assets/javascripts/spotlight/spotlight_nestable.js
blacklight-spotlight-2.6.1.1 app/assets/javascripts/spotlight/spotlight_nestable.js
blacklight-spotlight-2.6.1 app/assets/javascripts/spotlight/spotlight_nestable.js
blacklight-spotlight-2.6.0 app/assets/javascripts/spotlight/spotlight_nestable.js
blacklight-spotlight-2.5.2 app/assets/javascripts/spotlight/spotlight_nestable.js
blacklight-spotlight-2.5.1 app/assets/javascripts/spotlight/spotlight_nestable.js
blacklight-spotlight-2.5.0 app/assets/javascripts/spotlight/spotlight_nestable.js
blacklight-spotlight-2.4.1 app/assets/javascripts/spotlight/spotlight_nestable.js
blacklight-spotlight-2.4.0 app/assets/javascripts/spotlight/spotlight_nestable.js