102 lines
2.0 KiB
JavaScript
102 lines
2.0 KiB
JavaScript
const DEFAULT_LANG = 'pt';
|
|
var data = {};
|
|
var prepared_data = {};
|
|
|
|
function prepare_convention_series(data){
|
|
prepared_data[data.statute.uuid]={'kind': 'statute', ...data.statute};
|
|
prepare_string(data.name);
|
|
for(var edition of data.editions) prepare_convention_edition(edition);
|
|
}
|
|
|
|
function prepare_string(data){
|
|
prepared_data[data.uuid]={'kind': 'string', ...data};
|
|
}
|
|
|
|
function prepare_convention_edition(data){
|
|
prepared_data[data.uuid]={'kind': 'convention_edition', ...data};
|
|
prepare_string(data.name);
|
|
prepare_string(data.theme);
|
|
for(var tag of data.tags) prepare_tag(tag);
|
|
for(var place of data.places) prepare_place(place);
|
|
for(var event of data.events) prepare_event(event);
|
|
}
|
|
|
|
function prepare_event(data){
|
|
}
|
|
|
|
function prepare_place(data){
|
|
|
|
}
|
|
|
|
function prepare_tag(data){
|
|
console.log(data);
|
|
}
|
|
|
|
function re_render_everything(){
|
|
document.body.innerHTML = '';
|
|
return
|
|
}
|
|
|
|
function render_page(){
|
|
return
|
|
}
|
|
|
|
var get_language = () => document.location.hash.split('#')[1] || "";
|
|
var get_pageuuid = () => document.location.hash.split('#')[2] || "";
|
|
|
|
function change_page(page){
|
|
window.history.replaceState(
|
|
{},
|
|
"",
|
|
(
|
|
"#"+
|
|
get_language()+
|
|
"#"+
|
|
page
|
|
)
|
|
);
|
|
}
|
|
|
|
function change_language(lang){
|
|
window.history.replaceState(
|
|
{},
|
|
"",
|
|
(
|
|
"#"+
|
|
lang+
|
|
"#"+
|
|
get_pageuuid()
|
|
)
|
|
);
|
|
}
|
|
|
|
function init(){
|
|
|
|
prepare_convention_series(data);
|
|
change_page(data.featured || data.editions[0]);
|
|
re_render_everything();
|
|
}
|
|
|
|
window.onpopstate = (event) => {
|
|
re_render_everything();
|
|
}
|
|
|
|
(() => {
|
|
if(
|
|
((document.location.hash.split('#')[2] || "") === "")
|
|
||
|
|
((document.location.hash.split('#')[1] || "") === "")
|
|
){
|
|
change_language(DEFAULT_LANG);
|
|
}
|
|
})();
|
|
|
|
jQuery.getJSON(
|
|
'./data.json',
|
|
(resp) => {
|
|
document.body.innerHTML = '';
|
|
data = resp;
|
|
init();
|
|
}
|
|
);
|