UNPKG

@yuebai008/cli

Version:

Command line interface for rapid qg-minigame development

1 lines 3.38 kB
import*as Common from"../../core/common/common.js";import*as i18n from"../../core/i18n/i18n.js";import*as DataGrid from"../../ui/legacy/components/data_grid/data_grid.js";import*as UI from"../../ui/legacy/legacy.js";const UIStrings={database:"Database",refresh:"Refresh",visibleColumns:"Visible columns",theStableIsEmpty:'The "{PH1}" table is empty.',anErrorOccurredTryingToreadTheS:'An error occurred trying to read the "{PH1}" table.'},str_=i18n.i18n.registerUIStrings("panels/application/DatabaseTableView.ts",UIStrings),i18nString=i18n.i18n.getLocalizedString.bind(void 0,str_);export class DatabaseTableView extends UI.View.SimpleView{database;tableName;lastVisibleColumns;columnsMap;visibleColumnsSetting;refreshButton;visibleColumnsInput;dataGrid;emptyWidget;constructor(t,e){super(i18nString(UIStrings.database)),this.database=t,this.tableName=e,this.lastVisibleColumns="",this.columnsMap=new Map,this.element.classList.add("storage-view","table"),this.visibleColumnsSetting=Common.Settings.Settings.instance().createSetting("databaseTableViewVisibleColumns",{}),this.refreshButton=new UI.Toolbar.ToolbarButton(i18nString(UIStrings.refresh),"refresh"),this.refreshButton.addEventListener(UI.Toolbar.ToolbarButton.Events.Click,this.refreshButtonClicked,this),this.visibleColumnsInput=new UI.Toolbar.ToolbarInput(i18nString(UIStrings.visibleColumns),"",1),this.visibleColumnsInput.addEventListener(UI.Toolbar.ToolbarInput.Event.TextChanged,this.onVisibleColumnsChanged,this),this.dataGrid=null}wasShown(){this.update()}async toolbarItems(){return[this.refreshButton,this.visibleColumnsInput]}escapeTableName(t){return t.replace(/\"/g,'""')}update(){this.database.executeSql('SELECT rowid, * FROM "'+this.escapeTableName(this.tableName)+'"',this.queryFinished.bind(this),this.queryError.bind(this))}queryFinished(t,e){if(this.detachChildWidgets(),this.element.removeChildren(),this.dataGrid=DataGrid.SortableDataGrid.SortableDataGrid.create(t,e,i18nString(UIStrings.database)),this.visibleColumnsInput.setVisible(Boolean(this.dataGrid)),!this.dataGrid)return this.emptyWidget=new UI.EmptyWidget.EmptyWidget(i18nString(UIStrings.theStableIsEmpty,{PH1:this.tableName})),void this.emptyWidget.show(this.element);this.dataGrid.setStriped(!0),this.dataGrid.asWidget().show(this.element),this.dataGrid.autoSizeColumns(5),this.columnsMap.clear();for(let e=1;e<t.length;++e)this.columnsMap.set(t[e],String(e));this.lastVisibleColumns="";const i=this.visibleColumnsSetting.get()[this.tableName]||"";this.visibleColumnsInput.setValue(i),this.onVisibleColumnsChanged()}onVisibleColumnsChanged(){if(!this.dataGrid)return;const t=this.visibleColumnsInput.value(),e=t.split(/[\s,]+/),i=new Set,s=new Set;s.add("0");for(const t of e){const e=this.columnsMap.get(t);void 0!==e&&(i.add(t),s.add(e))}const a=[...i].sort().join(", ");if(0===a.length)for(const t of this.columnsMap.values())s.add(t);if(a===this.lastVisibleColumns)return;const n=this.visibleColumnsSetting.get();n[this.tableName]=t,this.visibleColumnsSetting.set(n),this.dataGrid.setColumnsVisiblity(s),this.lastVisibleColumns=a}queryError(){this.detachChildWidgets(),this.element.removeChildren();const t=document.createElement("div");t.className="storage-table-error",t.textContent=i18nString(UIStrings.anErrorOccurredTryingToreadTheS,{PH1:this.tableName}),this.element.appendChild(t)}refreshButtonClicked(){this.update()}}