Browse Source

tagsDisplay: for tag2link tags with multiple formatters show selector

master
parent
commit
1c1850dead
  1. 23
      src/category.css
  2. 42
      src/tagsDisplay.js

23
src/category.css

@ -161,3 +161,26 @@
.info .infoShowDetails .summary {
display: none;
}
dl > dd {
position: relative;
}
.tag2link {
position: absolute;
top: 1em;
left: 0;
border: 1px solid black;
padding: 0.25em;
background: white;
z-index: 1;
}
.tag2link > .closeButton {
float: right;
}
.tag2link > ul {
padding-left: 0;
margin: 0;
}
.tag2link > ul > li {
list-style: none;
}

42
src/tagsDisplay.js

@ -33,6 +33,7 @@ const formatter = [
}
]
let tag2link
let compiled = false
let defaultTemplate
@ -91,17 +92,54 @@ register_hook('init_callback', (initState, callback) => {
return callback()
}
let tag2link = JSON.parse(result.body)
tag2link = JSON.parse(result.body)
Object.keys(tag2link).forEach(key => {
let tag = tag2link[key]
let link = tag.formatter[0].link.replace('$1', '{{ value }}')
if (tag.formatter.length > 1) {
link = "#\" onclick=\"return tag2link(this, " + JSON.stringify(key).replace(/"/g, '"') + ", {{ value|json_encode }})"
}
formatter.push({
regexp: new RegExp("^" + key + "$"),
link: tag.formatter[0].link.replace('$1', '{{ value }}')
link
})
})
callback()
})
})
global.tag2link = function (dom, key, value) {
let div = document.createElement('div')
div.className = 'tag2link'
dom.parentNode.appendChild(div)
let closeButton = document.createElement('div')
closeButton.className = 'closeButton'
closeButton.innerHTML = '❌'
closeButton.onclick = () => {
dom.parentNode.removeChild(div)
}
div.appendChild(closeButton)
let selector = document.createElement('ul')
div.appendChild(selector)
let tag = tag2link[key]
tag.formatter.forEach(formatter => {
let li = document.createElement('li')
let a = document.createElement('a')
a.target = '_blank'
a.href = formatter.link.replace('$1', value)
a.appendChild(document.createTextNode(formatter.operator))
li.appendChild(a)
selector.appendChild(li)
})
return false
}
Loading…
Cancel
Save