@yuebai008/cli
Version:
Command line interface for rapid qg-minigame development
1 lines • 5.17 kB
JavaScript
import*as Common from"../../core/common/common.js";import*as i18n from"../../core/i18n/i18n.js";import*as SDK from"../../core/sdk/sdk.js";import*as UI from"../../ui/legacy/legacy.js";import{ConsoleFilter,FilterType}from"./ConsoleFilter.js";import consoleSidebarStyles from"./consoleSidebar.css.js";const UIStrings={other:"<other>",dUserMessages:"{n, plural, =0 {No user messages} =1 {# user message} other {# user messages}}",dMessages:"{n, plural, =0 {No messages} =1 {# message} other {# messages}}",dErrors:"{n, plural, =0 {No errors} =1 {# error} other {# errors}}",dWarnings:"{n, plural, =0 {No warnings} =1 {# warning} other {# warnings}}",dInfo:"{n, plural, =0 {No info} =1 {# info} other {# info}}",dVerbose:"{n, plural, =0 {No verbose} =1 {# verbose} other {# verbose}}"},str_=i18n.i18n.registerUIStrings("panels/console/ConsoleSidebar.ts",UIStrings),i18nString=i18n.i18n.getLocalizedString.bind(void 0,str_);export class ConsoleSidebar extends(Common.ObjectWrapper.eventMixin(UI.Widget.VBox)){tree;selectedTreeElement;treeElements;constructor(){super(!0),this.setMinimumSize(125,0),this.tree=new UI.TreeOutline.TreeOutlineInShadow,this.tree.addEventListener(UI.TreeOutline.Events.ElementSelected,this.selectionChanged.bind(this)),this.contentElement.appendChild(this.tree.element),this.selectedTreeElement=null,this.treeElements=[];const e=Common.Settings.Settings.instance().createSetting("console.sidebarSelectedFilter",null),t=[{key:FilterType.Source,text:SDK.ConsoleModel.FrontendMessageSource.ConsoleAPI,negative:!1,regex:void 0}];this.appendGroup("message",[],ConsoleFilter.allLevelsFilterValue(),UI.Icon.Icon.create("list"),e),this.appendGroup("user message",t,ConsoleFilter.allLevelsFilterValue(),UI.Icon.Icon.create("profile"),e),this.appendGroup("error",[],ConsoleFilter.singleLevelMask("error"),UI.Icon.Icon.create("cross-circle"),e),this.appendGroup("warning",[],ConsoleFilter.singleLevelMask("warning"),UI.Icon.Icon.create("warning"),e),this.appendGroup("info",[],ConsoleFilter.singleLevelMask("info"),UI.Icon.Icon.create("info"),e),this.appendGroup("verbose",[],ConsoleFilter.singleLevelMask("verbose"),UI.Icon.Icon.create("bug"),e);const s=e.get();(this.treeElements.find((e=>e.name()===s))||this.treeElements[0]).select()}appendGroup(e,t,s,n,r){const o=new ConsoleFilter(e,t,null,s),i=new FilterTreeElement(o,n,r);this.tree.appendChild(i),this.treeElements.push(i)}clear(){for(const e of this.treeElements)e.clear()}onMessageAdded(e){for(const t of this.treeElements)t.onMessageAdded(e)}shouldBeVisible(e){return!(this.selectedTreeElement instanceof ConsoleSidebarTreeElement)||this.selectedTreeElement.filter().shouldBeVisible(e)}selectionChanged(e){this.selectedTreeElement=e.data,this.dispatchEventToListeners("FilterSelected")}wasShown(){super.wasShown(),this.tree.registerCSSFiles([consoleSidebarStyles])}}class ConsoleSidebarTreeElement extends UI.TreeOutline.TreeElement{filterInternal;constructor(e,t){super(e),this.filterInternal=t}filter(){return this.filterInternal}}export class URLGroupTreeElement extends ConsoleSidebarTreeElement{countElement;messageCount;constructor(e){super(e.name,e),this.countElement=this.listItemElement.createChild("span","count");const t=[UI.Icon.Icon.create("document")];this.setLeadingIcons(t),this.messageCount=0}incrementAndUpdateCounter(){this.messageCount++,this.countElement.textContent=`${this.messageCount}`}}const stringForFilterSidebarItemMap=new Map([["user message",UIStrings.dUserMessages],["message",UIStrings.dMessages],["error",UIStrings.dErrors],["warning",UIStrings.dWarnings],["info",UIStrings.dInfo],["verbose",UIStrings.dVerbose]]);export class FilterTreeElement extends ConsoleSidebarTreeElement{selectedFilterSetting;urlTreeElements;messageCount;uiStringForFilterCount;constructor(e,t,s){super(e.name,e),this.uiStringForFilterCount=stringForFilterSidebarItemMap.get(e.name)||"",this.selectedFilterSetting=s,this.urlTreeElements=new Map,this.setLeadingIcons([t]),this.messageCount=0,this.updateCounter()}clear(){this.urlTreeElements.clear(),this.removeChildren(),this.messageCount=0,this.updateCounter()}name(){return this.filterInternal.name}onselect(e){return this.selectedFilterSetting.set(this.filterInternal.name),super.onselect(e)}updateCounter(){this.title=this.updateGroupTitle(this.messageCount),this.setExpandable(Boolean(this.childCount()))}updateGroupTitle(e){return this.uiStringForFilterCount?i18nString(this.uiStringForFilterCount,{n:e}):""}onMessageAdded(e){const t=e.consoleMessage(),s=t.type!==SDK.ConsoleModel.FrontendMessageType.Command&&t.type!==SDK.ConsoleModel.FrontendMessageType.Result&&!t.isGroupMessage();if(!this.filterInternal.shouldBeVisible(e)||!s)return;this.childElement(t.url).incrementAndUpdateCounter(),this.messageCount++,this.updateCounter()}childElement(e){const t=e||null;let s=this.urlTreeElements.get(t);if(s)return s;const n=this.filterInternal.clone(),r=t?Common.ParsedURL.ParsedURL.fromString(t):null;return n.name=t?r?r.displayName:t:i18nString(UIStrings.other),n.parsedFilters.push({key:FilterType.Url,text:t,negative:!1,regex:void 0}),s=new URLGroupTreeElement(n),t&&(s.tooltip=t),this.urlTreeElements.set(t,s),this.appendChild(s),s}}