@yuebai008/cli
Version:
Command line interface for rapid qg-minigame development
1 lines • 1.39 kB
JavaScript
import*as TraceEngine from"../../models/trace/trace.js";import*as i18n from"../../core/i18n/i18n.js";import{buildGroupStyle,buildTrackHeader,getFormattedTime}from"./AppenderUtils.js";const UIStrings={thread:"Main Thread by new engine",anonymous:"(anonymous)"},str_=i18n.i18n.registerUIStrings("panels/timeline/ThreadAppender.ts",UIStrings),i18nString=i18n.i18n.getLocalizedString.bind(void 0,str_);export class ThreadAppender{appenderName="Thread";#e;#r;#t;#i=[];#n;constructor(e,r,t,i,n){this.#r=e,this.#e=t,this.#t=r,this.#n=i;const s=this.#t.Renderer?.processes.get(i)?.threads?.get(n)?.entries;if(!s)throw new Error(`Could not find data for thread with id ${n} in process with id ${i}`);this.#i=s}appendTrackAtLevel(e,r){return 0===this.#i.length?e:(this.#s(e,r),this.#a(e))}#s(e,r){const t=this.#i.length>0,i=buildGroupStyle({shareHeaderLine:!1,collapsible:t}),n=this.#t.Renderer?.processes.get(this.#n)?.url||"",s=buildTrackHeader(e,i18nString(UIStrings.thread)+" "+n,i,!0,r);this.#r.registerTrackForGroup(s,this)}#a(e){return this.#r.appendEventsAtLevel(this.#i,e,this)}colorForEvent(e){const r=this.titleForEvent(e);return this.#e.colorForID(r)}titleForEvent(e){return TraceEngine.Types.TraceEvents.isProfileCall(e)?e.callFrame.functionName||i18nString(UIStrings.anonymous):e.name}highlightedEntryInfo(e){return{title:this.titleForEvent(e),formattedTime:getFormattedTime(e.dur)}}}