/* CHOCA2 MENU */
jQuery(function() {
if (typeof choca2_nav === 'undefined')
{
console.log("CYA NAV CHOCA2 MENU INIT");
choca2_nav = true;
/* Status */
var statuses = [
"need_design",
"need_integration",
"need_qa",
"done",
"design_ready",
"updated",
"need_review",
"need_information",
"rework"
];
function at(a, i, d = false) {
if (typeof a == "undefined" || a === false || a === null) return d;
if (!(i in a)) return d;
return a[i];
}
function cookie_get(name) {
var json = localStorage.getItem(name, json);
/*var json = Cookies.get(name);*/
if (typeof json == "undefined" || json == false || json == null) json = "{}";
value = {}; try { value = JSON.parse(json); } catch (e) { console.log("Invalid cookie json", json); }
return value;
}
function cookie_set(name, value) {
var json = "{}";
try { json = JSON.stringify(value); } catch (e) { console.log("Invalid cookie value", value); }
/*Cookies.set(name, json);*/
localStorage.setItem(name, json);
}
function update_status_load(offset) {
var status = jQuery(".update_status_button").text();
var value = status == "⟳" ? 0 : (status == "" ? 0 : parseInt(status));
value += offset;
status = value == 0 ? "⟳" : ("" + value);
jQuery(".update_status_button").html(status);
}
var update_status_button_li = jQuery('⟳');
jQuery(".dw-page-icons .list-inline").prepend(update_status_button_li);
jQuery(".update_status_button").click(function () {
for (var s = 0; s < statuses.length; ++s)
{
var status = statuses[s];
cookie_set("cya_choca2_menu_link_status_"+status, {});
}
choca2_menu_init_indicators(true);
});
function choca2_menu_update_status_from_page(id, html, selector_a, selectors_spans) {
for (var s = 0; s < statuses.length; ++s)
{
var status = statuses[s];
var cookie_link_status = cookie_get("cya_choca2_menu_link_status_"+status);
if (status == "need_design" && html.indexOf("wrap_status"+" wrap_need"+" wrap_design" ) > 0) { console.log(jQuery(selector_a).text(), "need design"); cookie_link_status[id] = 1; }
if (status == "need_integration" && html.indexOf("wrap_status"+" wrap_need"+" wrap_integration" ) > 0) { console.log(jQuery(selector_a).text(), "need integration"); cookie_link_status[id] = 1; }
if (status == "need_qa" && html.indexOf("wrap_status"+" wrap_need"+" wrap_qa" ) > 0) { console.log(jQuery(selector_a).text(), "need qa"); cookie_link_status[id] = 1; }
if (status == "done" && html.indexOf("wrap_status"+" wrap_done" ) > 0) { console.log(jQuery(selector_a).text(), "done"); cookie_link_status[id] = 1; }
cookie_set("cya_choca2_menu_link_status_"+status, cookie_link_status);
}
choca2_menu_update_status_from_cookies(id, selectors_spans);
}
function choca2_menu_update_status_from_cookies(id, selectors_spans) {
for (var s = 0; s < statuses.length; ++s)
{
var status = statuses[s];
var cookie_link_status = cookie_get("cya_choca2_menu_link_status_"+status);
if (id in cookie_link_status) {
if (status == "need_design" ) { jQuery(selectors_spans).addClass("need design"); }
if (status == "need_integration" ) { jQuery(selectors_spans).addClass("need integration"); }
if (status == "need_qa" ) { jQuery(selectors_spans).addClass("need qa"); }
if (status == "done" ) { jQuery(selectors_spans).addClass("done"); }
}
}
}
function choca2_menu_init_indicators(parse_pages)
{
var block_index = 0;
jQuery(".wrap_nav.wrap_choca2 .wrap_block").each(function() {
++block_index;
var block_title = jQuery(this).find(">p a" ).first();
var block_menu = jQuery(this).find(">ul" ).first();
block_title.attr("data-link-id", 100*100*block_index);
if (block_title.find(".status").length == 0) {
var block_span = jQuery('');
block_title.prepend(block_span);
}
var block_id = 100*100*block_index;
block_title.attr("data-link-id", block_id);
console.log(block_index, block_title.text());
if (block_title.attr("href") != ""
&& block_title.attr("href") != false
&& block_title.attr("href") != null) {
var s = ".wrap_nav.wrap_choca2 a[data-link-id=" + block_id + "]";
var s0 = ".wrap_nav.wrap_choca2 a[data-link-id=" + block_id + "] > span";
choca2_menu_update_status_from_cookies(block_id, s0);
if (parse_pages) {
update_status_load(1);
jQuery.ajax({
url: block_title.attr("href"),
context: block_id,
async: true,
success: function(data) {
var _block_id = this;
var s = ".wrap_nav.wrap_choca2 a[data-link-id=" + _block_id + "]";
var s0 = ".wrap_nav.wrap_choca2 a[data-link-id=" + _block_id + "] > span";
choca2_menu_update_status_from_page(this, data, s, s0);
},
complete: function () {
update_status_load(-1);
}
});
}
}
var level1_index = 0;
block_menu.find(">li").each(function() {
++level1_index;
var lvl1_title = jQuery(this).find(">div a" ).first();
var lvl1_menu = jQuery(this).find(">ul" ).first();
lvl1_title.attr("data-link-id", 100*100*block_index+100*level1_index);
if (lvl1_title.find(".status").length == 0) {
var lvl1_span = jQuery('');
lvl1_title.prepend(lvl1_span);
}
var lvl1_id = 100*100*block_index + 100*level1_index;
lvl1_title.attr("data-link-id", lvl1_id);
console.log(block_index, level1_index, lvl1_title.text());
if (lvl1_title.attr("href") != ""
&& lvl1_title.attr("href") != false
&& lvl1_title.attr("href") != null) {
var s = ".wrap_nav.wrap_choca2 a[data-link-id=" + lvl1_id + "]";
var s1 = ".wrap_nav.wrap_choca2 a[data-link-id=" + lvl1_id + "] > span";
var s0 = ".wrap_nav.wrap_choca2 a[data-link-id=" + block_id + "] > span";
choca2_menu_update_status_from_cookies(lvl1_id, s1+","+s0);
if (parse_pages) {
update_status_load(1);
jQuery.ajax({
url: lvl1_title.attr("href"),
context: lvl1_id,
async: true,
success: function(data) {
var _lvl1_id = this;
var _block_id = 100*100*parseInt(_lvl1_id / (100*100));
var s = ".wrap_nav.wrap_choca2 a[data-link-id=" + _lvl1_id + "]";
var s1 = ".wrap_nav.wrap_choca2 a[data-link-id=" + _lvl1_id + "] > span";
var s0 = ".wrap_nav.wrap_choca2 a[data-link-id=" + _block_id + "] > span";
choca2_menu_update_status_from_page(this, data, s, s1+","+s0);
},
complete: function () {
update_status_load(-1);
}
});
}
}
var level2_index = 0;
lvl1_menu.find(">li").each(function() {
++level2_index;
var lvl2_title = jQuery(this).find(">div a" ).first();
var lvl2_id = 100*100*block_index + 100*level1_index + level2_index;
lvl2_title.attr("data-link-id", lvl2_id);
if (lvl2_title.find(".status").length == 0) {
var lvl2_span = jQuery('');
lvl2_title.prepend(lvl2_span);
}
console.log(block_index, level1_index, level2_index, lvl2_title.text());
if (lvl2_title.attr("href") != ""
&& lvl2_title.attr("href") != false
&& lvl2_title.attr("href") != null) {
var s = ".wrap_nav.wrap_choca2 a[data-link-id=" + lvl2_id + "]";
var s2 = ".wrap_nav.wrap_choca2 a[data-link-id=" + lvl2_id + "] > span";
var s1 = ".wrap_nav.wrap_choca2 a[data-link-id=" + lvl1_id + "] > span";
var s0 = ".wrap_nav.wrap_choca2 a[data-link-id=" + block_id + "] > span";
choca2_menu_update_status_from_cookies(lvl2_id, s2+","+s1+","+s0);
if (parse_pages) {
update_status_load(1);
jQuery.ajax({
url: lvl2_title.attr("href"),
context: lvl2_id,
async: true,
success: function(data) {
var _lvl2_id = this;
var _lvl1_id = 100*parseInt(_lvl2_id / 100);
var _block_id = 100*100*parseInt(_lvl1_id / (100*100));
var s = ".wrap_nav.wrap_choca2 a[data-link-id=" + _lvl2_id + "]";
var s2 = ".wrap_nav.wrap_choca2 a[data-link-id=" + _lvl2_id + "] > span";
var s1 = ".wrap_nav.wrap_choca2 a[data-link-id=" + _lvl1_id + "] > span";
var s0 = ".wrap_nav.wrap_choca2 a[data-link-id=" + _block_id + "] > span";
choca2_menu_update_status_from_page(this, data, s, s2+","+s1+","+s0);
},
complete: function () {
update_status_load(-1);
}
});
}
}
});
});
});
}
var page = window.location.pathname.substring(window.location.pathname.lastIndexOf('/')+1);
var use_cookies_menu = true;
var use_cookies_submenu = true;
/* DOM change */
jQuery(".wrap_nav.wrap_choca2 > * > *").each(function() {
var $el = jQuery(this);
// get first
var summaryHtml = $el.find("p").first().html();
// remove it from content
$el.find("p").first().remove();
// build new
var newHtml =
"" +
"" + summaryHtml + "
" +
$el.html() +
" ";
this.outerHTML = newHtml;
});
/* Niveau 1 */
var menu_id = 0;
jQuery(".wrap_nav.wrap_choca2 > * > *").each(function() {
++menu_id;
if (use_cookies_menu) {
jQuery(this).attr("data-id", menu_id);
var menu_click_coockie = cookie_get('CYA_CHOCA2_MENU_CLICK');
var hidden = at(menu_click_coockie, menu_id);
if (!hidden) {
jQuery(this).attr('open', true);
}
}
jQuery(this).find("p").first().on("click", function(event) {
if (event.target.tagName == "A") return;
if (!!jQuery(this).parent().attr("open"))
jQuery(this).parent().removeAttr("open");
else
jQuery(this).parent().attr("open", true);
if (use_cookies_menu) {
var hidden = !jQuery(this).parent().attr("open");
var id = jQuery(this).parent().attr("data-id");
var menu_click_coockie = cookie_get('CYA_CHOCA2_MENU_CLICK');
if (hidden) {
menu_click_coockie[id] = true;
} else {
menu_click_coockie[id] = false;
}
cookie_set('CYA_CHOCA2_MENU_CLICK', menu_click_coockie);
}
});
});
jQuery(".toggle_choca2").click(function () {
if (!!jQuery(this).attr("open"))
jQuery(this).removeAttr("open");
else
jQuery(this).attr("open", true);
jQuery(".wrap_nav.wrap_choca2 > * > * > p").click();
});
/* Niveau 2 */
var submenu_id = 0;
jQuery(".wrap_nav.wrap_choca2 > * > * > ul > li").each(function() {
++submenu_id;
var l2 = jQuery(this);
var l2_title = l2.find("div").first();
var l2_submenu = l2.find("ul").first();
l2_submenu.attr("data-id", submenu_id);
if (l2_submenu.find("li").length > 0)
{
l2_title.append('');
var l2_toogle = l2_title.find(".submenu-toggle").first();
var submenu_click_coockie = cookie_get('CYA_CHOCA2_MENU_SUBMENU_CLICK');
var hidden = !at(submenu_click_coockie, submenu_id);
if (!hidden) {
l2_submenu.attr("open", true);
}
jQuery(document).on('click', '.submenu-toggle[data-id="'+submenu_id+'"]', function(e) {
var id = jQuery(e.target).attr("data-id");
/*jQuery('ul[data-id="'+id+'"]').toggleClass("submenu-hidden");*/
if (!!jQuery('ul[data-id="'+id+'"]').attr("open"))
jQuery('ul[data-id="'+id+'"]').removeAttr("open");
else
jQuery('ul[data-id="'+id+'"]').attr("open", true);
/*var hidden = jQuery('ul[data-id="'+id+'"]').hasClass("submenu-hidden");*/
var hidden = !jQuery('ul[data-id="'+id+'"]').attr("open");
var submenu_click_coockie = cookie_get('CYA_CHOCA2_MENU_SUBMENU_CLICK');
if (hidden) {
submenu_click_coockie[id] = false;
} else {
submenu_click_coockie[id] = true;
}
cookie_set('CYA_CHOCA2_MENU_SUBMENU_CLICK', submenu_click_coockie);
});
}
});
choca2_menu_init_indicators(false);
}
});