-
Notifications
You must be signed in to change notification settings - Fork 0
/
Copy pathjquery.choiceflow.min.js
2 lines (2 loc) · 3.35 KB
/
jquery.choiceflow.min.js
1
2
/* https://github.com/westwerk-ac/jquery.choiceflow */
(function($){var choiceflow={options:{beforeLinkAction:function(){return true},afterLinkAction:function(){}},groups:{},show:function(valueObject){if(valueObject.block.triggerHandler("choiceflow:show",[valueObject.name,valueObject.group])!==false){valueObject.block.show()}valueObject.block.addClass("choiceflow-block-active");$(valueObject.links).addClass("choiceflow-active");valueObject.block.triggerHandler("choiceflow:afterShow",[valueObject.name,valueObject.group])},hide:function(valueObject){if(valueObject.block.triggerHandler("choiceflow:hide",[valueObject.name,valueObject.group])!==false){valueObject.block.hide()}valueObject.block.removeClass("choiceflow-block-active");$(valueObject.links).removeClass("choiceflow-active");valueObject.block.triggerHandler("choiceflow:afterHide",[valueObject.name,valueObject.group])},display:function(group,values){groupObject=this.groups[group];var hide=$(groupObject.active).not(values).toArray();var show=$(values).not(groupObject.active).toArray();var aborted=false;if(false===this.options.beforeLinkAction(values,show,hide,group)){aborted=true}for(var v=0;v<values.length;++v){if(groupObject.values[values[v]].block.triggerHandler("choiceflow:display",[values,group,aborted])===false){aborted=true}}for(v=0;v<hide.length;++v){var value=hide[v];if(groupObject.values[value].block.triggerHandler("choiceflow:canHide",[value,group,aborted])===false){aborted=true}}for(v=0;v<show.length;++v){value=show[v];if(groupObject.values[value].block.triggerHandler("choiceflow:canShow",[value,group,aborted])===false){aborted=true}}if(aborted){return}for(var h=0;h<hide.length;++h){this.hide(groupObject.values[hide[h]])}for(var s=0;s<show.length;++s){this.show(groupObject.values[show[s]])}groupObject.active=values;for(v=0;v<values.length;++v){groupObject.values[values[v]].block.triggerHandler("choiceflow:afterDisplay",[values,hide,group])}this.options.afterLinkAction(values,show,hide,group)},initLink:function(link){var choiceflow=this;link=$(link);var group=link.data("choiceflowGroup");if(group==undefined)group="default";var values=link.data("choiceflowValue").toString().split(",");var active=link.data("choiceflowActive");if(!(group in choiceflow.groups)){this.groups[group]={name:group,values:{},active:[]}}var groupObject=choiceflow.groups[group];for(var v=0;v<values.length;++v){var value=values[v];if(!(value in groupObject.values)){groupObject.values[value]={name:value,group:group,links:[],block:$("#choiceflow-block-"+group+"-"+value)}}var valueObject=groupObject.values[value];valueObject.links.push(link);if(active=="1"){choiceflow.show(valueObject);groupObject.active.push(value)}else if($.inArray(value,groupObject.active)<0){choiceflow.hide(valueObject)}}link.css({cursor:"pointer"});link.click(function(group,values){return function(){choiceflow.display(group,values)}}(group,values))}};$.fn.choiceflow=function(action){switch(action){case"is-active":return this.is(".choiceflow-block-active");case"display":var id=this.attr("id").split("-");choiceflow.display(id[2],[id[3]]);break;case"init-link":this.each(function(){choiceflow.initLink(this)});break}return this};$.choiceflow=function(action){if(action==="init"){$("[data-choiceflow-value]").choiceflow("init-link")}else if(action!==null&&typeof action==="object"){$.extend(choiceflow.options,action)}return this};$(function(){$.choiceflow("init")})})(jQuery);