Skip to content

Commit 429cd51

Browse files
enable scripts for the table editor view, and reorder table view init methods (#12)
1 parent f1bd98d commit 429cd51

File tree

2 files changed

+42
-34
lines changed

2 files changed

+42
-34
lines changed

src/views/tableEditor.ts

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -56,7 +56,7 @@ export class TableEditor implements CustomTextEditorProvider {
5656
document: TextDocument,
5757
webviewPanel: WebviewPanel,
5858
token: CancellationToken
59-
): Promise<void> {
59+
): Promise<void> {
6060
// create new table view for the given tabular text data document and render it
6161
TableView.render(this.context.extensionUri, document.uri, webviewPanel);
6262
}

src/views/tableView.ts

Lines changed: 41 additions & 33 deletions
Original file line numberDiff line numberDiff line change
@@ -31,38 +31,11 @@ export class TableView {
3131
private _disposables: Disposable[] = [];
3232

3333
/**
34-
* Creates new TableView instance for tabular data rendering.
35-
*
36-
* @param webviewPanel Reference to the webview panel.
37-
* @param extensionUri Extension directory Uri.
38-
* @param documentUri Data document Uri.
39-
*/
40-
private constructor(webviewPanel: WebviewPanel, extensionUri: Uri, documentUri: Uri) {
41-
this._webviewPanel = webviewPanel;
42-
this._extensionUri = extensionUri;
43-
this._documentUri = documentUri;
44-
45-
// create custom table view Uri
46-
this._viewUri = documentUri.with({ scheme: 'tabular-data' });
47-
48-
// extract data file name from the data source document path
49-
this._fileName = fileUtils.getFileName(documentUri);
50-
51-
// dispose table view resources when table view panel is closed by the user or via vscode apis
52-
this._webviewPanel.onDidDispose(this.dispose, null, this._disposables);
53-
54-
// configure webview panel
55-
this.configure();
56-
57-
// add it to the tracked table webviews
58-
TableView._views.set(this._viewUri.toString(), this);
59-
}
60-
61-
/**
62-
* Reveals current table view or creates new table webview panel for table data display.
34+
* Reveals current table view or creates new table webview panel for tabular data display.
6335
*
6436
* @param extensionUri Extension directory Uri.
6537
* @param documentUri Data document Uri.
38+
* @param webviewPanel Optional webview panel instance.
6639
*/
6740
public static render(extensionUri: Uri, documentUri: Uri, webviewPanel?: WebviewPanel) {
6841
const viewUri: Uri = documentUri.with({ scheme: 'tabular-data' });
@@ -76,11 +49,18 @@ export class TableView {
7649
if (!webviewPanel) {
7750
// create new webview panel for the table view
7851
webviewPanel = TableView.createWebviewPanel(documentUri);
79-
80-
// set custom table view panel icon
81-
webviewPanel.iconPath = Uri.file(path.join(extensionUri.fsPath, './resources/icons/tabular-data-viewer.svg'));
52+
}
53+
else {
54+
// enable scripts for existing webview panel from table editor
55+
webviewPanel.webview.options = {
56+
enableScripts: true,
57+
enableCommandUris: true
58+
};
8259
}
8360

61+
// set custom table view panel icon
62+
webviewPanel.iconPath = Uri.file(path.join(extensionUri.fsPath, './resources/icons/tabular-data-viewer.svg'));
63+
8464
// set as current table view
8565
TableView.currentView = new TableView(webviewPanel, extensionUri, documentUri);
8666
}
@@ -101,7 +81,7 @@ export class TableView {
10181
viewColumn: ViewColumn.Active, // use active view column for display
10282
preserveFocus: true
10383
},
104-
{ // weview panel options
84+
{ // webview panel options
10585
enableScripts: true, // enable JavaScript in webview
10686
enableCommandUris: true,
10787
enableFindWidget: true,
@@ -110,6 +90,34 @@ export class TableView {
11090
);
11191
}
11292

93+
/**
94+
* Creates new TableView instance for tabular data rendering.
95+
*
96+
* @param webviewPanel Reference to the webview panel.
97+
* @param extensionUri Extension directory Uri.
98+
* @param documentUri Data document Uri.
99+
*/
100+
private constructor(webviewPanel: WebviewPanel, extensionUri: Uri, documentUri: Uri) {
101+
this._webviewPanel = webviewPanel;
102+
this._extensionUri = extensionUri;
103+
this._documentUri = documentUri;
104+
105+
// create custom table view Uri
106+
this._viewUri = documentUri.with({ scheme: 'tabular-data' });
107+
108+
// extract data file name from the data source document path
109+
this._fileName = fileUtils.getFileName(documentUri);
110+
111+
// dispose table view resources when table view panel is closed by the user or via vscode apis
112+
this._webviewPanel.onDidDispose(this.dispose, null, this._disposables);
113+
114+
// configure webview panel
115+
this.configure();
116+
117+
// add it to the tracked table webviews
118+
TableView._views.set(this._viewUri.toString(), this);
119+
}
120+
113121
/**
114122
* Disposes table view resources when webview panel is closed.
115123
*/

0 commit comments

Comments
 (0)