if (!global.p5UI__MenuStore) throw 'Missing global.p5UI__MenuStore'
var DBG = DBG || 0
var DBG1 = 1
if (!global.p5UI__MenuStore) throw 'Missing global.p5UI__MenuStore'
function makeRenderDropdownListItem(data) {
return function renderDropdownListItem(idx) {
var item = data.urls[idx]
if (!item) return '';
var star = (-1 !== data.idsBookmarks.indexOf(item.id))
? ''
: ''
;
return '
' +
'' +
star +
' ' + '' + item.id + '' +
' ' + item.label +
'' +
''
;
}
}
function renderP5UrlsMenuDropdown(data, idSubMenu) {
var renderDropdownListItem = makeRenderDropdownListItem(data)
var labels = data.urls.map(function (item, idx) {
return {
idx: idx,
label: item.label,
}
});
var groupeByLabel = labels.reduce(function (ret, item) {
if (!ret.length) return [{ prefix: item.label, labels: [ item ] }];
var last = ret.pop()
var labelLast = last.prefix.replace('_', ' ').split(" ")
var labelItem = item.label.replace('_', ' ').split(" ")
if (labelLast[0] === labelItem[0]) {
last.labels.push(item)
last.prefix = labelLast[0] + " (" + last.labels.length + ")"
ret.push(last)
} else {
ret.push(last)
ret.push({ prefix: item.label, labels: [item] })
return ret;
}
return ret;
}, [])
DBG && console.log('DBG:renderP5UrlsMenuDropdown groupeByLabel ', { groupeByLabel })
var nodesGroupedByLabel = groupeByLabel.map(function (item) {
if (item.labels.length === 1) {
return renderDropdownListItem(item.labels[0].idx)
} else {
return '' + "\n"
;
}
})
var jqDropdownMenu = jQuery('#' + idSubMenu)
jqDropdownMenu.empty()
jqDropdownMenu.append(nodesGroupedByLabel)
}
function initP5UrlsMenuDropdown(btnNode, idSubMenu) {
if (!btnNode._initialized) {
var jqDropdownTrigger = jQuery(btnNode)
var rerenderDropdown = (function (global, idSubMenu) {
return function (data) {
DBG && console.log('DBG renderP5MainMenuDropdown', { data, idSubMenu });
renderP5UrlsMenuDropdown(data, idSubMenu);
}
})(global, idSubMenu);
global.p5UI__MenuStore.subscribe(rerenderDropdown)
jqDropdownTrigger.attr('data-toggle', 'dropdown') // is required by bootstrap dorpdown.js evenf if is called via js
global.p5UI__MenuStore.forceUpdate()
jQuery(btnNode).dropdown()
}
btnNode._initialized = true
return true;
}
global.initP5UrlsMenuDropdown = initP5UrlsMenuDropdown