|
|
|
@ -19,6 +19,21 @@ const UI = { |
|
|
|
|
}, |
|
|
|
|
}, |
|
|
|
|
|
|
|
|
|
SORT_TYPES: { |
|
|
|
|
GOALS: 'goals', |
|
|
|
|
COUNTRY: 'country', |
|
|
|
|
POPULATION: 'population', |
|
|
|
|
}, |
|
|
|
|
|
|
|
|
|
ROUND_TYPES: { |
|
|
|
|
PRELIM: 'prelims', |
|
|
|
|
ROUNDOF16: 'round-of-16', |
|
|
|
|
QUARTERFINAL: 'quarterfinals', |
|
|
|
|
SEMIFINAL: 'semifinals', |
|
|
|
|
CONSOLATION: 'consolation', |
|
|
|
|
FINAL: 'finals', |
|
|
|
|
}, |
|
|
|
|
|
|
|
|
|
DATA: { |
|
|
|
|
ROOT: 'data-root', |
|
|
|
|
EVENT: 'data-event-key', |
|
|
|
@ -47,16 +62,33 @@ const UI = { |
|
|
|
|
}); |
|
|
|
|
}, |
|
|
|
|
|
|
|
|
|
toggleRoundItem: (target) => { |
|
|
|
|
const hide = target.querySelector(`.${UI.CLASSNAMES.ROUND.HIDE}`); |
|
|
|
|
hide.innerHTML = (hide.innerHTML === UI.I18N.HIDE ? UI.I18N.SHOW : UI.I18N.HIDE); |
|
|
|
|
updateEventsPane: (eventKey) => { |
|
|
|
|
const eventItems = document.querySelectorAll(`.${UI.CLASSNAMES.EVENT.ITEM}`); |
|
|
|
|
UI.clearActive(eventItems); |
|
|
|
|
|
|
|
|
|
const activeEventNode = document.querySelector(`[${UI.DATA.EVENT}="${eventKey}"`); |
|
|
|
|
activeEventNode.className += ' active'; |
|
|
|
|
}, |
|
|
|
|
|
|
|
|
|
toggleRoundRibbons: (roundsToShow, ROUND_TYPES, allRounds) => { |
|
|
|
|
updateRoundsPane: (roundsToShow, allRounds) => { |
|
|
|
|
const roundsItems = document.querySelectorAll(`.${UI.CLASSNAMES.ROUND.ITEM}`); |
|
|
|
|
UI.clearActive(roundsItems); |
|
|
|
|
|
|
|
|
|
roundsItems.forEach(item => { |
|
|
|
|
const type = item.getAttribute(UI.DATA.ROUND); |
|
|
|
|
|
|
|
|
|
const hide = item.querySelector(`.${UI.CLASSNAMES.ROUND.HIDE}`); |
|
|
|
|
hide.innerHTML = (hide.innerHTML === UI.I18N.HIDE ? UI.I18N.SHOW : UI.I18N.HIDE); |
|
|
|
|
|
|
|
|
|
if (roundsToShow.indexOf(type) > -1) { |
|
|
|
|
item.className += ' active'; |
|
|
|
|
} |
|
|
|
|
}); |
|
|
|
|
|
|
|
|
|
const ribbons = document.querySelectorAll('.ribbon'); |
|
|
|
|
ribbons.forEach(ribbon => { |
|
|
|
|
const name = allRounds[ribbon.getAttribute("data-round-id")]; |
|
|
|
|
const type = UI.getRoundType(name, ROUND_TYPES); |
|
|
|
|
const type = UI.getRoundType(name); |
|
|
|
|
|
|
|
|
|
roundsToShow.indexOf(type) === -1 |
|
|
|
|
? ribbon.style.display = 'none' |
|
|
|
@ -64,18 +96,6 @@ const UI = { |
|
|
|
|
}); |
|
|
|
|
}, |
|
|
|
|
|
|
|
|
|
updateEventsPane: (eventKey) => { |
|
|
|
|
const eventItems = document.querySelectorAll(`.${UI.CLASSNAMES.EVENT.ITEM}`); |
|
|
|
|
UI.clearActive(eventItems); |
|
|
|
|
|
|
|
|
|
const activeEventNode = document.querySelector(`[${UI.DATA.EVENT}="${eventKey}"`); |
|
|
|
|
activeEventNode.className += ' active'; |
|
|
|
|
}, |
|
|
|
|
|
|
|
|
|
updateRoundsPane: (rounds) => { |
|
|
|
|
const roundsDiv = document.querySelector('.rounds'); |
|
|
|
|
}, |
|
|
|
|
|
|
|
|
|
updateSortPane: (sort) => { |
|
|
|
|
const sortItems = document.querySelectorAll('.sort-item'); |
|
|
|
|
UI.clearActive(sortItems); |
|
|
|
@ -146,12 +166,12 @@ const UI = { |
|
|
|
|
}); |
|
|
|
|
}, |
|
|
|
|
|
|
|
|
|
buildSortPane: (onClick, SORT_TYPES) => { |
|
|
|
|
buildSortPane: (onClick) => { |
|
|
|
|
const sortList = [ |
|
|
|
|
{ text: 'Order by continent', value: null }, |
|
|
|
|
{ text: 'Order by goals scored', value: SORT_TYPES.GOALS }, |
|
|
|
|
{ text: 'Order by country name', value: SORT_TYPES.COUNTRY }, |
|
|
|
|
{ text: 'Order by country population', value: SORT_TYPES.POPULATION }, |
|
|
|
|
{ text: 'Order by goals scored', value: UI.SORT_TYPES.GOALS }, |
|
|
|
|
{ text: 'Order by country name', value: UI.SORT_TYPES.COUNTRY }, |
|
|
|
|
{ text: 'Order by country population', value: UI.SORT_TYPES.POPULATION }, |
|
|
|
|
]; |
|
|
|
|
|
|
|
|
|
const sortDiv = document.querySelector('.sort'); |
|
|
|
@ -177,14 +197,14 @@ const UI = { |
|
|
|
|
}); |
|
|
|
|
}, |
|
|
|
|
|
|
|
|
|
buildRoundsPane: (onClick, ROUND_TYPES) => { |
|
|
|
|
buildRoundsPane: (onClick) => { |
|
|
|
|
const roundsList = [ |
|
|
|
|
{ text: 'Preliminaries', value: ROUND_TYPES.PRELIM }, |
|
|
|
|
{ text: 'Round of 16', value: ROUND_TYPES.ROUNDOF16 }, |
|
|
|
|
{ text: 'Quarterfinals', value: ROUND_TYPES.QUARTERFINAL }, |
|
|
|
|
{ text: 'Semifinals', value: ROUND_TYPES.SEMIFINAL }, |
|
|
|
|
{ text: 'Consolation', value: ROUND_TYPES.CONSOLATION }, |
|
|
|
|
{ text: 'Final', value: ROUND_TYPES.FINAL }, |
|
|
|
|
{ text: 'Preliminaries', value: UI.ROUND_TYPES.PRELIM }, |
|
|
|
|
{ text: 'Round of 16', value: UI.ROUND_TYPES.ROUNDOF16 }, |
|
|
|
|
{ text: 'Quarterfinals', value: UI.ROUND_TYPES.QUARTERFINAL }, |
|
|
|
|
{ text: 'Semifinals', value: UI.ROUND_TYPES.SEMIFINAL }, |
|
|
|
|
{ text: 'Consolation', value: UI.ROUND_TYPES.CONSOLATION }, |
|
|
|
|
{ text: 'Final', value: UI.ROUND_TYPES.FINAL }, |
|
|
|
|
]; |
|
|
|
|
|
|
|
|
|
const roundsDiv = document.querySelector('.rounds'); |
|
|
|
@ -214,7 +234,7 @@ const UI = { |
|
|
|
|
}); |
|
|
|
|
}, |
|
|
|
|
|
|
|
|
|
getRoundType: (name, ROUND_TYPES) => { |
|
|
|
|
getRoundType: (name) => { |
|
|
|
|
const name2 = name.match(/^Matchday/) ? 'First round' : name; |
|
|
|
|
|
|
|
|
|
switch (name2) { |
|
|
|
@ -225,25 +245,25 @@ const UI = { |
|
|
|
|
case 'Group-2 Play-off': |
|
|
|
|
case 'Group-3 Play-off': |
|
|
|
|
case 'Group-4 Play-off': |
|
|
|
|
return ROUND_TYPES.PRELIM; |
|
|
|
|
return UI.ROUND_TYPES.PRELIM; |
|
|
|
|
case 'Round of 16': |
|
|
|
|
return ROUND_TYPES.ROUNDOF16; |
|
|
|
|
return UI.ROUND_TYPES.ROUNDOF16; |
|
|
|
|
case 'Third place match': |
|
|
|
|
case 'Third-place match': |
|
|
|
|
case 'Match for third place': |
|
|
|
|
case 'Third place play-off': |
|
|
|
|
case 'Third-place play-off': |
|
|
|
|
return ROUND_TYPES.CONSOLATION; |
|
|
|
|
return UI.ROUND_TYPES.CONSOLATION; |
|
|
|
|
case 'Quarterfinals': |
|
|
|
|
case 'Quarter-finals': |
|
|
|
|
case 'Quarter-finals replays': |
|
|
|
|
return ROUND_TYPES.QUARTERFINAL; |
|
|
|
|
return UI.ROUND_TYPES.QUARTERFINAL; |
|
|
|
|
case 'Semifinals': |
|
|
|
|
case 'Semi-finals': |
|
|
|
|
return ROUND_TYPES.SEMIFINAL; |
|
|
|
|
return UI.ROUND_TYPES.SEMIFINAL; |
|
|
|
|
case 'Final': |
|
|
|
|
case 'Finals': |
|
|
|
|
return ROUND_TYPES.FINAL; |
|
|
|
|
return UI.ROUND_TYPES.FINAL; |
|
|
|
|
} |
|
|
|
|
|
|
|
|
|
console.error(`Unknown round name: ${name}`); |
|
|
|
|