mirror of
https://github.com/ckaczor/azuredatastudio.git
synced 2026-02-17 11:01:37 -05:00
Compare commits
8 Commits
| Author | SHA1 | Date | |
|---|---|---|---|
|
|
5fdb967ffc | ||
|
|
4a911b60f7 | ||
|
|
3cc849a999 | ||
|
|
1a5469b7a1 | ||
|
|
c042aacd17 | ||
|
|
9bd007a555 | ||
|
|
75b9ab643d | ||
|
|
c4d3a90266 |
@@ -52,6 +52,9 @@ export abstract class BasePage {
|
||||
return undefined;
|
||||
}
|
||||
|
||||
// reverse list so that most recent connections are first
|
||||
cons.reverse();
|
||||
|
||||
let count = -1;
|
||||
let idx = -1;
|
||||
|
||||
@@ -99,9 +102,6 @@ export abstract class BasePage {
|
||||
return uniqueValues;
|
||||
}, []);
|
||||
|
||||
// reverse list so that most recent connections show first
|
||||
values.reverse();
|
||||
|
||||
return values;
|
||||
}
|
||||
|
||||
|
||||
@@ -24,12 +24,17 @@ export class BookTreeViewProvider implements vscode.TreeDataProvider<BookTreeIte
|
||||
private _extensionContext: vscode.ExtensionContext;
|
||||
private _throttleTimer: any;
|
||||
private _resource: string;
|
||||
private _onReadAllTOCFiles: vscode.EventEmitter<void> = new vscode.EventEmitter<void>();
|
||||
|
||||
constructor(workspaceFolders: vscode.WorkspaceFolder[], extensionContext: vscode.ExtensionContext) {
|
||||
this.getTableOfContentFiles(workspaceFolders).then(() => undefined, (err) => { console.log(err); });
|
||||
this._extensionContext = extensionContext;
|
||||
}
|
||||
|
||||
public get onReadAllTOCFiles(): vscode.Event<void> {
|
||||
return this._onReadAllTOCFiles.event;
|
||||
}
|
||||
|
||||
async getTableOfContentFiles(workspaceFolders: vscode.WorkspaceFolder[]): Promise<void> {
|
||||
let notebookConfig = vscode.workspace.getConfiguration(notebookConfigKey);
|
||||
let maxDepth = notebookConfig[maxBookSearchDepth];
|
||||
@@ -46,6 +51,7 @@ export class BookTreeViewProvider implements vscode.TreeDataProvider<BookTreeIte
|
||||
}
|
||||
let bookOpened: boolean = this._tableOfContentPaths.length > 0;
|
||||
vscode.commands.executeCommand('setContext', 'bookOpened', bookOpened);
|
||||
this._onReadAllTOCFiles.fire();
|
||||
}
|
||||
|
||||
async openNotebook(resource: string): Promise<void> {
|
||||
|
||||
@@ -73,26 +73,30 @@ describe('BookTreeViewProvider.getChildren', function (): void {
|
||||
});
|
||||
|
||||
it('should return all book nodes when element is undefined', async function (): Promise<void> {
|
||||
const children = await bookTreeViewProvider.getChildren();
|
||||
should(children).be.Array();
|
||||
should(children.length).equal(1);
|
||||
book = children[0];
|
||||
should(book.title).equal(expectedBook.title);
|
||||
bookTreeViewProvider.onReadAllTOCFiles(async () => {
|
||||
const children = await bookTreeViewProvider.getChildren();
|
||||
should(children).be.Array();
|
||||
should(children.length).equal(1);
|
||||
book = children[0];
|
||||
should(book.title).equal(expectedBook.title);
|
||||
});
|
||||
});
|
||||
|
||||
it('should return all page nodes when element is a book', async function (): Promise<void> {
|
||||
const children = await bookTreeViewProvider.getChildren(book);
|
||||
should(children).be.Array();
|
||||
should(children.length).equal(3);
|
||||
const notebook = children[0];
|
||||
const markdown = children[1];
|
||||
const externalLink = children[2];
|
||||
should(notebook.title).equal(expectedNotebook.title);
|
||||
should(notebook.uri).equal(expectedNotebook.url);
|
||||
should(markdown.title).equal(expectedMarkdown.title);
|
||||
should(markdown.uri).equal(expectedMarkdown.url);
|
||||
should(externalLink.title).equal(expectedExternalLink.title);
|
||||
should(externalLink.uri).equal(expectedExternalLink.url);
|
||||
bookTreeViewProvider.onReadAllTOCFiles(async () => {
|
||||
const children = await bookTreeViewProvider.getChildren(book);
|
||||
should(children).be.Array();
|
||||
should(children.length).equal(3);
|
||||
const notebook = children[0];
|
||||
const markdown = children[1];
|
||||
const externalLink = children[2];
|
||||
should(notebook.title).equal(expectedNotebook.title);
|
||||
should(notebook.uri).equal(expectedNotebook.url);
|
||||
should(markdown.title).equal(expectedMarkdown.title);
|
||||
should(markdown.uri).equal(expectedMarkdown.url);
|
||||
should(externalLink.title).equal(expectedExternalLink.title);
|
||||
should(externalLink.uri).equal(expectedExternalLink.url);
|
||||
});
|
||||
});
|
||||
|
||||
this.afterAll(async function () {
|
||||
|
||||
@@ -7,7 +7,7 @@
|
||||
"preview": true,
|
||||
"engines": {
|
||||
"vscode": "^1.25.0",
|
||||
"azdata": ">=1.9.0"
|
||||
"azdata": ">=1.10.0"
|
||||
},
|
||||
"license": "https://raw.githubusercontent.com/Microsoft/azuredatastudio/master/extensions/import/Microsoft_SQL_Server_Import_Extension_and_Tools_Import_Flat_File_Preview.docx",
|
||||
"icon": "images/sqlserver.png",
|
||||
|
||||
@@ -1,3 +1 @@
|
||||
<svg width="16" height="16" viewBox="0 0 16 16" fill="none" xmlns="http://www.w3.org/2000/svg">
|
||||
<path fill-rule="evenodd" clip-rule="evenodd" d="M4 2V14.4805L12.9146 8.24024L4 2ZM11.1809 8.24024L4.995 12.5684V3.91209L11.1809 8.24024Z" fill="#C5C5C5"/>
|
||||
</svg>
|
||||
<svg xmlns="http://www.w3.org/2000/svg" viewBox="0 0 16 16"><defs><style>.icon-canvas-transparent,.icon-vs-out{fill:#f6f6f6;}.icon-canvas-transparent{opacity:0;}.icon-vs-action-green{fill:#388a34;}</style></defs><title>continue</title><g id="canvas"><path class="icon-canvas-transparent" d="M16,0V16H0V0Z"/></g><g id="outline" style="display: none;"><path class="icon-vs-out" d="M14.334,8,3.667,16H3V0h.667Z"/></g><g id="iconBg"><path class="icon-vs-action-green" d="M4,1.5v13L12.667,8,4,1.5Z"/></g></svg>
|
||||
|
||||
|
Before Width: | Height: | Size: 259 B After Width: | Height: | Size: 506 B |
@@ -1,3 +1 @@
|
||||
<svg width="16" height="16" viewBox="0 0 16 16" fill="none" xmlns="http://www.w3.org/2000/svg">
|
||||
<path fill-rule="evenodd" clip-rule="evenodd" d="M4 2V14.4805L12.9146 8.24024L4 2ZM11.1809 8.24024L4.995 12.5684V3.91209L11.1809 8.24024Z" fill="#424242"/>
|
||||
</svg>
|
||||
<svg xmlns="http://www.w3.org/2000/svg" viewBox="0 0 16 16"><defs><style>.icon-canvas-transparent,.icon-vs-out{fill:#252526;}.icon-canvas-transparent{opacity:0;}.icon-vs-action-green{fill:#89d185;}</style></defs><title>continue</title><g id="canvas"><path class="icon-canvas-transparent" d="M16,0V16H0V0Z"/></g><g id="outline" style="display: none;"><path class="icon-vs-out" d="M14.334,8,3.667,16H3V0h.667Z"/></g><g id="iconBg"><path class="icon-vs-action-green" d="M4,1.5v13L12.667,8,4,1.5Z"/></g></svg>
|
||||
|
||||
|
Before Width: | Height: | Size: 259 B After Width: | Height: | Size: 506 B |
@@ -11,11 +11,11 @@
|
||||
<loading-spinner [loading]="isLoading"></loading-spinner>
|
||||
<div class="hoverButtonsContainer" *ngIf="(cells && cells.length > 0) && !isLoading">
|
||||
<span class="containerBackground"></span>
|
||||
<button class="hoverButton" (click)="addCell('code', 0)">
|
||||
<button class="hoverButton" (click)="addCell('code', 0, $event)">
|
||||
<div class="addCodeIcon"></div>
|
||||
<span>{{addCodeLabel}}</span>
|
||||
</button>
|
||||
<button class="hoverButton" (click)="addCell('markdown', 0)">
|
||||
<button class="hoverButton" (click)="addCell('markdown', 0, $event)">
|
||||
<div class="addTextIcon"></div>
|
||||
<span>{{addTextLabel}}</span>
|
||||
</button>
|
||||
@@ -29,11 +29,11 @@
|
||||
</div>
|
||||
<div class="hoverButtonsContainer">
|
||||
<span class="containerBackground"></span>
|
||||
<button class="hoverButton" (click)="addCell('code', findCellIndex(cell) + 1)">
|
||||
<button class="hoverButton" (click)="addCell('code', findCellIndex(cell) + 1, $event)">
|
||||
<div class="addCodeIcon"></div>
|
||||
<span>{{addCodeLabel}}</span>
|
||||
</button>
|
||||
<button class="hoverButton" (click)="addCell('markdown', findCellIndex(cell) + 1)">
|
||||
<button class="hoverButton" (click)="addCell('markdown', findCellIndex(cell) + 1, $event)">
|
||||
<div class="addTextIcon"></div>
|
||||
<span>{{addTextLabel}}</span>
|
||||
</button>
|
||||
|
||||
@@ -200,7 +200,10 @@ export class NotebookComponent extends AngularDisposable implements OnInit, OnDe
|
||||
}
|
||||
|
||||
// Add cell based on cell type
|
||||
public addCell(cellType: CellType, index?: number) {
|
||||
public addCell(cellType: CellType, index?: number, event?: Event) {
|
||||
if (event) {
|
||||
event.stopPropagation();
|
||||
}
|
||||
this._model.addCell(cellType, index);
|
||||
}
|
||||
|
||||
|
||||
@@ -219,10 +219,10 @@ export class ChartDataAction extends Action {
|
||||
}
|
||||
|
||||
public run(context: IGridActionContext): Promise<boolean> {
|
||||
// show the visualizer extension recommendation notification
|
||||
this.extensionTipsService.promptRecommendedExtensionsByScenario(Constants.visualizerExtensions);
|
||||
|
||||
const activeEditor = this.editorService.activeControl as QueryEditor;
|
||||
if (this.environmentService.appQuality !== 'stable') {
|
||||
this.extensionTipsService.promptRecommendedExtensionsByScenario(Constants.visualizerExtensions);
|
||||
}
|
||||
activeEditor.chart({ batchId: context.batchId, resultId: context.resultId });
|
||||
return Promise.resolve(true);
|
||||
}
|
||||
|
||||
@@ -203,6 +203,10 @@ export class GridPanel {
|
||||
let tables: GridTable<any>[] = [];
|
||||
|
||||
for (let set of resultSet) {
|
||||
// ensure we aren't adding a resultSet that is already visible
|
||||
if (this.tables.find(t => t.resultSet.batchId === set.batchId && t.resultSet.id === set.id)) {
|
||||
continue;
|
||||
}
|
||||
let tableState: GridTableState;
|
||||
if (this.state) {
|
||||
tableState = this.state.tableStates.find(e => e.batchId === set.batchId && e.resultId === set.id);
|
||||
|
||||
@@ -130,7 +130,7 @@ export class ResultSerializer {
|
||||
}
|
||||
|
||||
|
||||
private promptForFilepath(format: SaveFormat, resourceUri: string): Thenable<string> {
|
||||
private promptForFilepath(format: SaveFormat, resourceUri: string): Thenable<string | undefined> {
|
||||
let filepathPlaceHolder = prevSavePath ? path.dirname(prevSavePath) : resolveCurrentDirectory(resourceUri, this.rootPath);
|
||||
if (filepathPlaceHolder) {
|
||||
filepathPlaceHolder = path.join(filepathPlaceHolder, this.getResultsDefaultFilename(format));
|
||||
@@ -141,8 +141,11 @@ export class ResultSerializer {
|
||||
defaultUri: filepathPlaceHolder ? URI.file(filepathPlaceHolder) : undefined,
|
||||
filters: this.getResultsFileExtension(format)
|
||||
}).then(filePath => {
|
||||
prevSavePath = filePath.fsPath;
|
||||
return filePath.fsPath;
|
||||
if (filePath) {
|
||||
prevSavePath = filePath.fsPath;
|
||||
return filePath.fsPath;
|
||||
}
|
||||
return undefined;
|
||||
});
|
||||
}
|
||||
|
||||
|
||||
Reference in New Issue
Block a user