UNPKG

dol-match-bracket

Version:

- Javascript Library to make tree structured tournament brackets. - using Recursion to generate tournament bracket based on match JSON not team JSON(example below)

1 lines 2.24 kB
var messageMap=new Map,defaultConfig=(messageMap.set("container","Container not found. check your selector"),messageMap.set("noFinal",'Final game not found. The data needs one element with a null value of "next".'),messageMap.set("overFinal",'Only one element is allowed to have a null value of "next".'),messageMap.set("overId",'There are more than two items with the same "next" value. -'),{containerClass:"dol-bracket",matchClass:"dol-bracket-match",mainGameClass:"dol-bracket-main",subGameClass:"dol-bracket-sub",hasByeClass:"dol-bracket-bye",itemTemplate:'<div class="dol-bracket-item">{{school1}} : {{school2}}</div>',leftClass:"dol-bracket-left",rightClass:"dol-bracket-right"});function makeMatchFragment(t,e,a,n){var s=document.createElement("div"),o=a.itemTemplate.replace(/{{\s*([^}]*)\s*}}/g,function(e,a){return"".concat(t[a])}),l=e.filter(function(e){return e.next===t.id});return 2<l.length&&console.warn("".concat(messageMap.get("overId")," ").concat(t.id)),s.classList.add(a.matchClass),n&&s.classList.add(n<0?a.leftClass:a.rightClass),s.innerHTML='<div class="'.concat(a.mainGameClass,'">').concat(o,"</div>"),l.length&&((n=document.createElement("div")).classList.add(a.subGameClass),1===l.length?n.classList.add(a.hasByeClass):l.sort(function(e,a){return"left"===e.pos||"right"===a.pos?-1:"right"===e.pos||"left"===a.pos?1:0}),"match-type-top"===a.matchType||"match-type-left"===a.matchType?(l[0]&&n.prepend(makeMatchFragment(l[0],e,a,-1)),l[1]&&n.prepend(makeMatchFragment(l[1],e,a,1)),s.prepend(n)):(l[0]&&n.append(makeMatchFragment(l[0],e,a,-1)),l[1]&&n.append(makeMatchFragment(l[1],e,a,1)),s.append(n))),s}function makeBracket(e,a,t){var n,s=a.filter(function(e){return!e.next});document.createElement("div");if("string"==typeof e?n=document.querySelector(e):e.nodeName&&(n=e),!n)throw messageMap.get("container");if(!s.length)throw messageMap.get("noFinal");if(1<s.length)throw messageMap.get("overFinal");e=Object.assign(defaultConfig,t),t=makeMatchFragment(s[0],a,e),n.classList.add(e.containerClass),e.matchType&&n.classList.add(e.matchType),n.append(t)}!function(e,a){"function"==typeof define&&define.amd?define([],a):"object"==typeof module&&module.exports?module.exports=a:e.MakeDolBracket=a}(this,makeBracket);