def fillTagSelect(editor = None, expanded = False) : """ Builds the html for the "browse tags" mode in the deck select. Also renders the html. """ tags = mw.col.tags.all() user_note_tags = get_all_tags() tags.extend(user_note_tags) tags = set(tags) tmap = utility.tags.to_tag_hierarchy(tags) most_active = get_most_active_tags(5) most_active_map = dict() for t in most_active: if t in tmap: most_active_map[t] = tmap[t] else: most_active_map[t] = {} def iterateMap(tmap, prefix, start=False): if start: html = "<ul class='deck-sub-list outer'>" else: html = "<ul class='deck-sub-list'>" for key, value in tmap.items(): full = prefix + "::" + key if prefix else key html += "<li class='deck-list-item' onclick=\"event.stopPropagation(); pycmd('searchTag %s')\"><div class='list-item-inner'><b class='exp'>%s</b> %s <span class='check'>✔</span></div>%s</li>" % (full, "[+]" if value else "", utility.text.trim_if_longer_than(key, 35), iterateMap(value, full, False)) html += "</ul>" return html most_active_html = iterateMap(most_active_map, "", True) html = iterateMap(tmap, "", True) # the dropdown should only be expanded on user click, not on initial render expanded_js = """$('#siac-switch-deck-btn').addClass("expanded");""" if expanded else "" cmd = """ document.getElementById('deck-sel-info-lbl').style.display = 'none'; document.getElementById('deckSelQuickWrapper').style.display = '%s'; document.getElementById('deckSelQuick').innerHTML = `%s`; document.getElementById('deckSel').innerHTML = `%s`; $('#deckSelWrapper .exp').click(function(e) { e.stopPropagation(); let icn = $(this); if (icn.text()) { if (icn.text() === '[+]') icn.text('[-]'); else icn.text('[+]'); } $(this).parent().parent().children('ul').toggle(); }); $("#siac-deck-sel-btn-wrapper").hide(); %s """ % ("block" if len(most_active_map) > 0 else "none", most_active_html, html, expanded_js) if editor is not None: editor.web.eval(cmd) else: get_index().output.js(cmd)
def get_all_tags_as_hierarchy(include_anki_tags): tags = None if include_anki_tags: tags = mw.col.tags.all() user_note_tags = get_all_tags() tags.extend(user_note_tags) else: tags = get_all_tags() return utility.tags.to_tag_hierarchy(tags)