@ulb-darmstadt/shacl-form
Version:
SHACL form generator
36 lines (32 loc) • 1.18 kB
text/typescript
import { PREFIX_RDFS } from './constants'
import { Config } from './config'
import { findObjectValueByPredicate } from './util'
export function createShaclGroup(groupSubject: string, config: Config): HTMLElement {
const group = document.createElement('div')
group.dataset['subject'] = groupSubject
group.classList.add('shacl-group')
let name = groupSubject
const quads = config.shapesGraph.getQuads(groupSubject, null, null, null)
const label = findObjectValueByPredicate(quads, "label", PREFIX_RDFS, config.languages)
if (label) {
name = label
}
const order = findObjectValueByPredicate(quads, "order")
if (order) {
group.style.order = order
}
const header = document.createElement('h1')
header.innerText = name
group.appendChild(header)
if (config.attributes.collapse !== null) {
group.classList.add('collapsible')
if (config.attributes.collapse === 'open') {
group.classList.add('open')
}
header.classList.add('activator')
header.addEventListener('click', () => {
group.classList.toggle('open')
})
}
return group
}