UNPKG

@yuebai008/cli

Version:

Command line interface for rapid qg-minigame development

1 lines 2.75 kB
import*as i18n from"../../core/i18n/i18n.js";import*as DataGrid from"../../ui/legacy/components/data_grid/data_grid.js";import*as SourceFrame from"../../ui/legacy/components/source_frame/source_frame.js";import*as UI from"../../ui/legacy/legacy.js";import eventDisplayTableStyles from"./eventDisplayTable.css.js";const UIStrings={timestamp:"Timestamp",eventName:"Event name",value:"Value",eventDisplay:"Event display"},str_=i18n.i18n.registerUIStrings("panels/media/EventDisplayTable.ts",UIStrings),i18nString=i18n.i18n.getLocalizedString.bind(void 0,str_);export class EventNode extends DataGrid.DataGrid.DataGridNode{expandableElement;constructor(e){super(e,!1),this.expandableElement=null}createCell(e){const t=this.createTD(e),i=this.data[e];if("value"===e){const e=t.createChild("div","event-display-table-contents-json-wrapper");this.expandableElement=new SourceFrame.JSONView.JSONView(new SourceFrame.JSONView.ParsedJSON(i,"",""),!0),this.expandableElement.markAsRoot(),this.expandableElement.show(e)}else t.classList.add("event-display-table-basic-text-table-entry"),UI.UIUtils.createTextChild(t,i);return t}}export class PlayerEventsView extends UI.Widget.VBox{dataGrid;firstEventTime;constructor(){super(),this.contentElement.classList.add("event-display-table-contents-table-container"),this.dataGrid=this.createDataGrid([{id:"displayTimestamp",title:i18nString(UIStrings.timestamp),weight:1,sortable:!1},{id:"event",title:i18nString(UIStrings.eventName),weight:2,sortable:!1},{id:"value",title:i18nString(UIStrings.value),weight:7,sortable:!1}]),this.firstEventTime=0,this.dataGrid.setStriped(!0),this.dataGrid.asWidget().show(this.contentElement)}createDataGrid(e){const t=[];for(const i of e)t.push(PlayerEventsView.convertToGridDescriptor(i));const i=new DataGrid.DataGrid.DataGridImpl({displayName:i18nString(UIStrings.eventDisplay),columns:t,deleteCallback:void 0,editCallback:void 0,refreshCallback:void 0});return i.asWidget().contentElement.classList.add("no-border-top-datagrid"),i}onEvent(e){0===this.firstEventTime&&"number"==typeof e.timestamp&&(this.firstEventTime=e.timestamp);const t=(e=this.subtractFirstEventTime(e)).value;try{const i=JSON.parse(t);e.event=i.event,delete i.event,e.value=i;const a=new EventNode(e),s=this.dataGrid.scrollContainer,r=s.scrollTop===s.scrollHeight-s.offsetHeight;this.dataGrid.rootNode().appendChild(a),r&&(s.scrollTop=s.scrollHeight)}catch(e){}}subtractFirstEventTime(e){return"number"==typeof e.timestamp&&(e.displayTimestamp=(e.timestamp-this.firstEventTime).toFixed(3)),e}static convertToGridDescriptor(e){return{id:e.id,title:e.title,sortable:e.sortable,weight:e.weight||0,sort:DataGrid.DataGrid.Order.Ascending}}wasShown(){super.wasShown(),this.registerCSSFiles([eventDisplayTableStyles])}}