@yuebai008/cli
Version:
Command line interface for rapid qg-minigame development
1 lines • 3.93 kB
JavaScript
import*as ARIAUtils from"./ARIAUtils.js";import reportViewStyles from"./reportView.css.legacy.js";import{Toolbar}from"./Toolbar.js";import{Tooltip}from"./Tooltip.js";import{VBox}from"./Widget.js";export class ReportView extends VBox{contentBox;headerElement;titleElement;sectionList;subtitleElement;urlElement;constructor(e){super(!0),this.registerRequiredCSS(reportViewStyles),this.contentBox=this.contentElement.createChild("div","report-content-box"),this.headerElement=this.contentBox.createChild("div","report-header vbox"),this.titleElement=this.headerElement.createChild("div","report-title"),e?this.titleElement.textContent=e:this.headerElement.classList.add("hidden"),ARIAUtils.markAsHeading(this.titleElement,1),this.sectionList=this.contentBox.createChild("div","vbox")}getHeaderElement(){return this.headerElement}setTitle(e){this.titleElement.textContent!==e&&(this.titleElement.textContent=e,this.headerElement.classList.toggle("hidden",Boolean(e)))}setSubtitle(e){this.subtitleElement&&this.subtitleElement.textContent===e||(this.subtitleElement||(this.subtitleElement=this.headerElement.createChild("div","report-subtitle")),this.subtitleElement.textContent=e)}setURL(e){this.urlElement||(this.urlElement=this.headerElement.createChild("div","report-url link")),this.urlElement.removeChildren(),e&&this.urlElement.appendChild(e)}createToolbar(){const e=new Toolbar("");return this.headerElement.appendChild(e.element),e}appendSection(e,t){const i=new Section(e,t);return i.show(this.sectionList),i}sortSections(e){const t=this.children().slice();if(!t.every(((t,i,l)=>!i||e(l[i-1],l[i])<=0))){this.detachChildWidgets(),t.sort(e);for(const e of t)e.show(this.sectionList)}}setHeaderVisible(e){this.headerElement.classList.toggle("hidden",!e)}setBodyScrollable(e){this.contentBox.classList.toggle("no-scroll",!e)}}export class Section extends VBox{headerElement;titleElement;fieldList;fieldMap;constructor(e,t){super(),this.element.classList.add("report-section"),t&&this.element.classList.add(t),this.headerElement=this.element.createChild("div","report-section-header"),this.titleElement=this.headerElement.createChild("div","report-section-title"),this.setTitle(e),ARIAUtils.markAsHeading(this.titleElement,2),this.fieldList=this.element.createChild("div","vbox"),this.fieldMap=new Map}title(){return this.titleElement.textContent||""}getTitleElement(){return this.titleElement}getFieldElement(){return this.fieldList}appendFieldWithCustomView(e){this.fieldList.append(e)}setTitle(e,t){this.titleElement.textContent!==e&&(this.titleElement.textContent=e),Tooltip.install(this.titleElement,t||""),this.titleElement.classList.toggle("hidden",!this.titleElement.textContent)}setUiGroupTitle(e){ARIAUtils.markAsGroup(this.element),ARIAUtils.setLabel(this.element,e)}createToolbar(){const e=new Toolbar("");return this.headerElement.appendChild(e.element),e}appendField(e,t){let i=this.fieldMap.get(e);return i||(i=this.fieldList.createChild("div","report-field"),i.createChild("div","report-field-name").textContent=e,this.fieldMap.set(e,i),i.createChild("div","report-field-value")),t&&i.lastElementChild&&(i.lastElementChild.textContent=t),i.lastElementChild}appendFlexedField(e,t){const i=this.appendField(e,t);return i.classList.add("report-field-value-is-flexed"),i}removeField(e){const t=this.fieldMap.get(e);t&&t.remove(),this.fieldMap.delete(e)}setFieldVisible(e,t){const i=this.fieldMap.get(e);i&&i.classList.toggle("hidden",!t)}fieldValue(e){const t=this.fieldMap.get(e);return t?t.lastElementChild:null}appendRow(){return this.fieldList.createChild("div","report-row")}appendSelectableRow(){return this.fieldList.createChild("div","report-row report-row-selectable")}clearContent(){this.fieldList.removeChildren(),this.fieldMap.clear()}markFieldListAsGroup(){ARIAUtils.markAsGroup(this.fieldList),ARIAUtils.setLabel(this.fieldList,this.title())}setIconMasked(e){this.element.classList.toggle("show-mask",e)}}