sparnatural
Version:
Visual client-side SPARQL query builder and knowledge graph exploration tool
81 lines (75 loc) • 2.52 kB
text/typescript
import GroupWrapper from "../GroupWrapper";
import { addAndComponent } from "./events/AddAndComponent";
import { addWhereComponent } from "./events/AddWhereComponent";
import { completeGrpInput } from "./events/CompleteGrpInput";
import { inCompleteGrpInput } from "./events/InCompleteGrpInput";
import { removeEndClass } from "./events/RemoveEndClass";
import { removeGrpWrapper } from "./events/RemoveGrpWrapper";
import { triggerOption } from "./events/TriggerOption";
export default class GroupWrapperEventStore {
grpWrapper: GroupWrapper;
constructor(grpWrapper: GroupWrapper) {
this.grpWrapper = grpWrapper;
this.#registerGrpWrapperEvents();
}
#registerGrpWrapperEvents() {
this.grpWrapper.html[0].addEventListener(
"onGrpInputCompleted",
(e: CustomEvent) => {
e.stopImmediatePropagation();
completeGrpInput(this.grpWrapper);
}
);
this.grpWrapper.html[0].addEventListener(
"onGrpInputNotCompleted",
(e: CustomEvent) => {
e.stopImmediatePropagation();
inCompleteGrpInput(this.grpWrapper);
}
);
this.grpWrapper.html[0].addEventListener(
"onRemoveEndClass",
(e: CustomEvent) => {
e.stopImmediatePropagation();
removeEndClass(this.grpWrapper);
}
);
this.grpWrapper.html[0].addEventListener(
"onRemoveGrp",
(e: CustomEvent) => {
e.stopImmediatePropagation();
removeGrpWrapper(this.grpWrapper);
}
);
this.grpWrapper.html[0].addEventListener(
"addAndComponent",
(e: CustomEvent) => {
e.stopImmediatePropagation();
addAndComponent(this.grpWrapper, e.detail);
}
);
this.grpWrapper.html[0].addEventListener(
"addWhereComponent",
(e: CustomEvent) => {
e.stopImmediatePropagation();
completeGrpInput(this.grpWrapper);
addWhereComponent(this.grpWrapper, e.detail);
}
);
this.grpWrapper.html[0].addEventListener(
"optionTriggered",
(e: CustomEvent) => {
if (!("detail" in e) || e.detail == "" || !e.detail)
throw Error(
"No OptionalType payload received! optionTriggered must send payload of type OptionTypes!"
);
e.stopImmediatePropagation();
let newOptionState = e.detail;
triggerOption(this.grpWrapper, newOptionState);
this.grpWrapper.html[0].dispatchEvent(
new CustomEvent("generateQuery", { bubbles: true })
);
}
);
}
}