Matthias,
What you want can be done, but with some Javascript. First, add
?autoCreate=false to exhibit-api.js:
<script
src="................./exhibit-api.js?autoCreate=false"></script>
Then give your type facet an ID
<div role="facet" id="the-type-facet" ex:expression=".type" ...></div>
Add an body onload handler
<body onload="onLoad();">
Implement that handler like so
function onLoad() {
var fDone = function() {
window.exhibit = Exhibit.create();
window.exhibit.configureFromDOM();
watchCollection();
};
window.database = Exhibit.Database.create();
window.database.loadDataLinks(fDone);
};
watchCollection is implemented like so
function watchCollection() {
window.exhibit.getDefaultCollection().addListener({
onItemsChanged: checkTypeFacet
});
}
function checkTypeFacet() {
var facet = window.exhibit.getComponent("the-type-facet");
var selection = facet._valueSet;
if (selection.size() == 1) {
if (selection.contains("typeA")) {
// if not previously selected typeA, then remove other
types' facets and create some facets for typeA
} else if (selection.contains("typeB")) {
// if not previously selected typeA, then remove other
types' facets and create some facets for typeB
}
} else {
// multiple selection, hmm...
}
}
to create a facet
function createFacetX() {
var div = document.createElement("div");
div.id = "the-facet-X";
someOtherElementInTheDOM.appendChild(div);
var facet = Exhibit.ListFacet.create(
{ expression: ".x", facetLabel: "X" },
div,
window.exhibit.getUIContext()
);
window.exhibit.setComponent("the-facet-X", facet);
}
to dispose a facet
window.exhibit.disposeComponent("the-facet-X");
var div = document.getElementById("the-facet-X");
div.parentNode.removeChild(div);
Let me know how that goes.
David