@ulb-darmstadt/shacl-form
Version:
SHACL form generator
35 lines (31 loc) • 1.2 kB
text/typescript
import { PREFIX_RDFS } from './constants'
import { Config } from './config'
import { findObjectValueByPredicate } from './util'
import { RokitCollapsible } from '@ro-kit/ui-widgets'
export function createShaclGroup(groupSubject: string, config: Config): HTMLElement {
let name = groupSubject
const quads = config.store.getQuads(groupSubject, null, null, null)
const label = findObjectValueByPredicate(quads, "label", PREFIX_RDFS, config.languages)
if (label) {
name = label
}
let group: HTMLElement
if (config.attributes.collapse !== null) {
group = new RokitCollapsible()
group.classList.add('collapsible');
(group as RokitCollapsible).open = config.attributes.collapse === 'open';
(group as RokitCollapsible).label = name
} else {
group = document.createElement('div')
const header = document.createElement('h1')
header.innerText = name
group.appendChild(header)
}
group.dataset['subject'] = groupSubject
group.classList.add('shacl-group')
const order = findObjectValueByPredicate(quads, "order")
if (order) {
group.style.order = order
}
return group
}