UNPKG

sparnatural

Version:

Visual client-side SPARQL query builder and knowledge graph exploration tool

83 lines (74 loc) 2.6 kB
import { Order } from "../../../generators/json/ISparJson"; import { I18n } from "../../../settings/I18n"; import AscendBtn from "../../buttons/AscendBtn"; import DescendBtn from "../../buttons/DescendBtn"; import NoOrderBtn from "../../buttons/NoOrderBtn"; import VariableOptionsSelectBtn from "../../buttons/VariableOptionsSelectBtn"; import HTMLComponent from "../../HtmlComponent"; import VariableSection from "../VariableSelection"; class VariableSortOption extends HTMLComponent { ascendBtn: AscendBtn; descendBtn: DescendBtn; noOrderBtn: NoOrderBtn; variableOptionSelectBtn: VariableOptionsSelectBtn; constructor(parentComponent: VariableSection) { let widgetHtml = $( `<strong>${I18n.labels.labelOrderSort}</strong>` ); super("variablesOrdersSelect", parentComponent, widgetHtml); } render(): this { this.htmlParent = $(this.parentComponent.html).find(".line1"); super.render(); this.ascendBtn = new AscendBtn(this, this.changeSortOrderCallBack).render(); this.descendBtn = new DescendBtn(this, this.changeSortOrderCallBack).render(); this.noOrderBtn = new NoOrderBtn(this, this.changeSortOrderCallBack).render(); // select no order by default this.noOrderBtn.setSelected(true); this.variableOptionSelectBtn = new VariableOptionsSelectBtn( this, this.toggleVarNames ).render(); // when one of the button is clicked, unselect the other ones this.html[0].addEventListener( "changeSortOrder", (e: CustomEvent) => { switch(e.detail) { case Order.ASC : { this.ascendBtn.setSelected(true); this.descendBtn.setSelected(false); this.noOrderBtn.setSelected(false); break; } case Order.DESC : { this.ascendBtn.setSelected(false); this.descendBtn.setSelected(true); this.noOrderBtn.setSelected(false); break; } case Order.NOORDER : { this.ascendBtn.setSelected(false); this.descendBtn.setSelected(false); this.noOrderBtn.setSelected(true); break; } default: { break; } } } ); return this; } changeSortOrderCallBack = (order:Order) =>{ this.html[0].dispatchEvent( new CustomEvent("changeSortOrder", { bubbles: true, detail: order }) ); } toggleVarNames = () => { this.html[0].dispatchEvent( new CustomEvent("toggleVarNames", { bubbles: true }) ); }; } export default VariableSortOption;