Skip to content

Commit 1b056be

Browse files
#172 added refresh all open data previews on data source file content change
1 parent 0a272ff commit 1b056be

File tree

3 files changed

+19
-13
lines changed

3 files changed

+19
-13
lines changed

src/data.preview.ts

Lines changed: 7 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -795,6 +795,13 @@ export class DataPreview {
795795
return this._uri;
796796
}
797797

798+
/**
799+
* Gets the source data url for this preview.
800+
*/
801+
get dataUrl(): string {
802+
return this._dataUrl;
803+
}
804+
798805
/**
799806
* Gets the preview uri to load on data preview command triggers or vscode IDE reload.
800807
*/

src/extension.ts

Lines changed: 7 additions & 9 deletions
Original file line numberDiff line numberDiff line change
@@ -74,22 +74,20 @@ export function activate(context: ExtensionContext) {
7474
// refresh associated preview on data file save
7575
workspace.onDidSaveTextDocument((document: TextDocument) => {
7676
if (isDataFile(document)) {
77-
const uri: Uri = document.uri.with({scheme: 'data'});
78-
const preview: DataPreview = previewManager.find(uri);
79-
if (preview) {
80-
preview.refresh();
81-
}
77+
const dataUri: Uri = document.uri; // .with({scheme: 'data'});
78+
const previews: Array<DataPreview> = previewManager.find(dataUri);
79+
previews.forEach(preview => preview.refresh());
8280
}
8381
});
8482

8583
// reset associated preview on data file change
8684
workspace.onDidChangeTextDocument((changeEvent: TextDocumentChangeEvent) => {
8785
if (isDataFile(changeEvent.document)) {
88-
const uri: Uri = changeEvent.document.uri.with({scheme: 'data'});
89-
const preview: DataPreview = previewManager.find(uri);
90-
if (preview && changeEvent.contentChanges.length > 0) {
86+
const dataUri: Uri = changeEvent.document.uri; //.with({scheme: 'data'});
87+
const previews: Array<DataPreview> = previewManager.find(dataUri);
88+
if (previews && changeEvent.contentChanges.length > 0) {
9189
// TODO: add refresh interval before enabling this
92-
// preview.refresh();
90+
// previews.forEach(preview => preview.refresh());
9391
}
9492
}
9593
});

src/preview.manager.ts

Lines changed: 5 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -39,11 +39,12 @@ export class PreviewManager {
3939
}
4040

4141
/**
42-
* Returns matching preview for the specified uri.
43-
* @param uri preview uri.
42+
* Returns matching preview for the specified data uri.
43+
* @param dataUri Data Uri to find for open data previews.
4444
*/
45-
public find(uri: Uri): DataPreview {
46-
return this._previews.find(p => p.previewUri.toString() === uri.toString());
45+
public find(dataUri: Uri): Array<DataPreview> {
46+
const dataUrl: string = dataUri.toString(true); // skip uri encoding
47+
return this._previews.filter(p => p.dataUrl === dataUrl);
4748
}
4849

4950
/**

0 commit comments

Comments
 (0)