parent
110150a196
commit
3fb6270d9a
@ -0,0 +1,58 @@
|
|||||||
|
import * as vscode from 'vscode';
|
||||||
|
|
||||||
|
export class TextDocumentContentProvider implements vscode.TextDocumentContentProvider {
|
||||||
|
private _onDidChange = new vscode.EventEmitter<vscode.Uri>();
|
||||||
|
private _data = null;
|
||||||
|
|
||||||
|
public provideTextDocumentContent(uri: vscode.Uri): string {
|
||||||
|
if (!this._data) return this.errorSnippet();
|
||||||
|
|
||||||
|
let styles = `<style>
|
||||||
|
table {
|
||||||
|
border: solid 1px white;
|
||||||
|
border-collapse: collapse;
|
||||||
|
}
|
||||||
|
table td, table th {
|
||||||
|
border: solid 1px white;
|
||||||
|
padding: 3px;
|
||||||
|
}
|
||||||
|
</style>`
|
||||||
|
|
||||||
|
let text = `<body>${styles}<table><tr>`
|
||||||
|
text += this._data['columnDefinitions'].map((x) => `<th>${x['name']}</th>`).join('')
|
||||||
|
text += '</tr>'
|
||||||
|
text += this._data['rows'].map((r) =>
|
||||||
|
'<tr>' + r['columns'].map((c) => '<td>' + c['value'] + '</td>').join('') + '</tr>'
|
||||||
|
).join('')
|
||||||
|
text += '</table></body>'
|
||||||
|
return text;
|
||||||
|
}
|
||||||
|
|
||||||
|
get onDidChange(): vscode.Event<vscode.Uri> {
|
||||||
|
return this._onDidChange.event;
|
||||||
|
}
|
||||||
|
|
||||||
|
public update(uri: vscode.Uri) {
|
||||||
|
this._onDidChange.fire(uri);
|
||||||
|
}
|
||||||
|
|
||||||
|
public setData(data) {
|
||||||
|
this._data = data;
|
||||||
|
}
|
||||||
|
|
||||||
|
private errorSnippet(): string {
|
||||||
|
return `
|
||||||
|
<body>
|
||||||
|
<table>
|
||||||
|
<tr>
|
||||||
|
<th>ID</th>
|
||||||
|
<th>Name</th>
|
||||||
|
</tr>
|
||||||
|
<tr>
|
||||||
|
<td>1</td>
|
||||||
|
<td>Foobar</td>
|
||||||
|
</tr>
|
||||||
|
</table>
|
||||||
|
</body>`;
|
||||||
|
}
|
||||||
|
}
|
Loading…
Reference in new issue