@yuebai008/cli
Version:
Command line interface for rapid qg-minigame development
1 lines • 5.91 kB
JavaScript
import*as Host from"../../core/host/host.js";import*as i18n from"../../core/i18n/i18n.js";import*as Platform from"../../core/platform/platform.js";import*as SDK from"../../core/sdk/sdk.js";import*as TextUtils from"../../models/text_utils/text_utils.js";import*as DataGrid from"../../ui/legacy/components/data_grid/data_grid.js";import*as UI from"../../ui/legacy/legacy.js";import developerResourcesListViewStyles from"./developerResourcesListView.css.js";const UIStrings={status:"Status",url:"URL",initiator:"Initiator",totalBytes:"Total Bytes",error:"Error",developerResources:"Developer Resources",copyUrl:"Copy URL",copyInitiatorUrl:"Copy initiator URL",pending:"pending",success:"success",failure:"failure",sBytes:"{n, plural, =1 {# byte} other {# bytes}}"},str_=i18n.i18n.registerUIStrings("panels/developer_resources/DeveloperResourcesListView.ts",UIStrings),i18nString=i18n.i18n.getLocalizedString.bind(void 0,str_);export class DeveloperResourcesListView extends UI.Widget.VBox{nodeForItem;isVisibleFilter;highlightRegExp;dataGrid;constructor(t){super(!0),this.nodeForItem=new Map,this.isVisibleFilter=t,this.highlightRegExp=null;const e=[{id:"status",title:i18nString(UIStrings.status),width:"60px",fixedWidth:!0,sortable:!0},{id:"url",title:i18nString(UIStrings.url),width:"250px",fixedWidth:!1,sortable:!0},{id:"initiator",title:i18nString(UIStrings.initiator),width:"80px",fixedWidth:!1,sortable:!0},{id:"size",title:i18nString(UIStrings.totalBytes),width:"80px",fixedWidth:!0,sortable:!0,align:DataGrid.DataGrid.Align.Right},{id:"errorMessage",title:i18nString(UIStrings.error),width:"200px",fixedWidth:!1,sortable:!0}];this.dataGrid=new DataGrid.SortableDataGrid.SortableDataGrid({displayName:i18nString(UIStrings.developerResources),columns:e,editCallback:void 0,refreshCallback:void 0,deleteCallback:void 0}),this.dataGrid.setResizeMethod(DataGrid.DataGrid.ResizeMethod.Last),this.dataGrid.element.classList.add("flex-auto"),this.dataGrid.addEventListener(DataGrid.DataGrid.Events.SortingChanged,this.sortingChanged,this),this.dataGrid.setRowContextMenuCallback(this.populateContextMenu.bind(this));const i=this.dataGrid.asWidget();i.show(this.contentElement),this.setDefaultFocusedChild(i)}populateContextMenu(t,e){const i=e.item;t.clipboardSection().appendItem(i18nString(UIStrings.copyUrl),(()=>{Host.InspectorFrontendHost.InspectorFrontendHostInstance.copyText(i.url)})),i.initiator.initiatorUrl&&t.clipboardSection().appendItem(i18nString(UIStrings.copyInitiatorUrl),(()=>{Host.InspectorFrontendHost.InspectorFrontendHostInstance.copyText(i.initiator.initiatorUrl)}))}update(t){let e=!1;const i=this.dataGrid.rootNode();for(const s of t){let t=this.nodeForItem.get(s);t?this.isVisibleFilter(t.item)&&(e=t.refreshIfNeeded()||e):(t=new GridNode(s),this.nodeForItem.set(s,t),this.isVisibleFilter(t.item)&&(i.appendChild(t),e=!0))}e&&this.sortingChanged()}reset(){this.nodeForItem.clear(),this.dataGrid.rootNode().removeChildren()}updateFilterAndHighlight(t){this.highlightRegExp=t;let e=!1;for(const t of this.nodeForItem.values()){const i=this.isVisibleFilter(t.item),s=Boolean(t.parent);i&&t.setHighlight(this.highlightRegExp),i!==s&&(e=!0,i?this.dataGrid.rootNode().appendChild(t):t.remove())}e&&this.sortingChanged()}sortingChanged(){const t=this.dataGrid.sortColumnId();if(!t)return;const e=GridNode.sortFunctionForColumn(t);e&&this.dataGrid.sortNodes(e,!this.dataGrid.isSortOrderAscending())}wasShown(){super.wasShown(),this.registerCSSFiles([developerResourcesListViewStyles])}}class GridNode extends DataGrid.SortableDataGrid.SortableDataGridNode{item;highlightRegExp;constructor(t){super(),this.item=t,this.highlightRegExp=null}setHighlight(t){this.highlightRegExp!==t&&(this.highlightRegExp=t,this.refresh())}refreshIfNeeded(){return this.refresh(),!0}createCell(t){const e=this.createTD(t);switch(t){case"url":{UI.Tooltip.Tooltip.install(e,this.item.url);const i=e.createChild("div","url-outer"),s=i.createChild("div","url-prefix"),r=i.createChild("div","url-suffix"),o=/^(.*)(\/[^/]*)$/.exec(this.item.url);s.textContent=o?o[1]:this.item.url,r.textContent=o?o[2]:"",this.highlightRegExp&&this.highlight(i,this.item.url),this.setCellAccessibleName(this.item.url,e,t);break}case"initiator":{const i=this.item.initiator.initiatorUrl||"";e.textContent=i,UI.Tooltip.Tooltip.install(e,i),this.setCellAccessibleName(i,e,t),e.onmouseenter=()=>{const t=this.item.initiator.frameId,e=t?SDK.FrameManager.FrameManager.instance().getFrame(t):null;e&&e.highlight()},e.onmouseleave=()=>SDK.OverlayModel.OverlayModel.hideDOMNodeHighlight();break}case"status":null===this.item.success?e.textContent=i18nString(UIStrings.pending):e.textContent=this.item.success?i18nString(UIStrings.success):i18nString(UIStrings.failure);break;case"size":{const i=this.item.size;if(null!==i){e.createChild("span").textContent=Platform.NumberUtilities.withThousandsSeparator(i);const s=i18nString(UIStrings.sBytes,{n:i});this.setCellAccessibleName(s,e,t)}break}case"errorMessage":e.classList.add("error-message"),this.item.errorMessage&&(e.textContent=this.item.errorMessage,this.highlightRegExp&&this.highlight(e,this.item.errorMessage))}return e}highlight(t,e){if(!this.highlightRegExp)return;const i=this.highlightRegExp.exec(e);if(!i||!i.length)return;const s=new TextUtils.TextRange.SourceRange(i.index,i[0].length);UI.UIUtils.highlightRangesWithStyleClass(t,[s],"filter-highlight")}static sortFunctionForColumn(t){const e=t=>null===t?-1:Number(t);switch(t){case"url":return(t,e)=>t.item.url.localeCompare(e.item.url);case"status":return(t,i)=>e(t.item.success)-e(i.item.success);case"size":return(t,i)=>e(t.item.size)-e(i.item.size);case"initiator":return(t,e)=>(t.item.initiator.initiatorUrl||"").localeCompare(e.item.initiator.initiatorUrl||"");case"errorMessage":return(t,e)=>(t.item.errorMessage||"").localeCompare(e.item.errorMessage||"");default:return console.assert(!1,"Unknown sort field: "+t),null}}}