More add database reference dialog UI (#12066)

* add suppress missing dependencies checkbox

* add example usage

* set font-styles

* Fix typo

* allow example usage to be selectable

* don't localize example usage

* move example usage strings to a new section
This commit is contained in:
Kim Santiago
2020-09-03 13:22:26 -07:00
committed by GitHub
parent 80b85ad74c
commit 78ff0c7d93
8 changed files with 136 additions and 32 deletions

View File

@@ -8,6 +8,7 @@ import { Uri } from 'vscode';
export interface IDatabaseReferenceSettings {
databaseName?: string;
suppressMissingDependenciesErrors: boolean;
}
export interface ISystemDatabaseReferenceSettings extends IDatabaseReferenceSettings {

View File

@@ -127,10 +127,14 @@ export class Project {
const nameNodes = references[r].getElementsByTagName(constants.DatabaseVariableLiteralValue);
const name = nameNodes.length === 1 ? nameNodes[0].childNodes[0].nodeValue : undefined;
const suppressMissingDependenciesErrorNode = references[r].getElementsByTagName(constants.SuppressMissingDependenciesErrors);
const suppressMissingDependences = suppressMissingDependenciesErrorNode[0].childNodes[0].nodeValue === true ?? false;
this.databaseReferences.push(new DacpacReferenceProjectEntry({
dacpacFileLocation: Uri.file(utils.getPlatformSafeFileEntryPath(filepath)),
databaseLocation: name ? DatabaseReferenceLocation.differentDatabaseSameServer : DatabaseReferenceLocation.sameDatabase,
databaseName: name
databaseName: name,
suppressMissingDependenciesErrors: suppressMissingDependences
}));
}
}
@@ -145,7 +149,11 @@ export class Project {
const nameNodes = projectReferences[r].getElementsByTagName(constants.Name);
const name = nameNodes[0].childNodes[0].nodeValue;
this.databaseReferences.push(new SqlProjectReferenceProjectEntry(Uri.file(utils.getPlatformSafeFileEntryPath(filepath)), name));
const suppressMissingDependenciesErrorNode = projectReferences[r].getElementsByTagName(constants.SuppressMissingDependenciesErrors);
const suppressMissingDependences = suppressMissingDependenciesErrorNode[0].childNodes[0].nodeValue === true ?? false;
this.databaseReferences.push(new SqlProjectReferenceProjectEntry(Uri.file(utils.getPlatformSafeFileEntryPath(filepath)), name, suppressMissingDependences));
}
}
@@ -316,7 +324,7 @@ export class Project {
ssdtUri = this.getSystemDacpacSsdtUri(constants.msdbDacpac);
}
const systemDatabaseReferenceProjectEntry = new SystemDatabaseReferenceProjectEntry(uri, ssdtUri, <string>settings.databaseName);
const systemDatabaseReferenceProjectEntry = new SystemDatabaseReferenceProjectEntry(uri, ssdtUri, <string>settings.databaseName, settings.suppressMissingDependenciesErrors);
await this.addToProjFile(systemDatabaseReferenceProjectEntry);
}
@@ -512,10 +520,9 @@ export class Project {
}
private addDatabaseReferenceChildren(referenceNode: any, entry: IDatabaseReferenceProjectEntry): void {
// TODO: create checkbox for this setting
const suppressMissingDependenciesErrorNode = this.projFileXmlDoc.createElement(constants.SuppressMissingDependenciesErrors);
const falseTextNode = this.projFileXmlDoc.createTextNode('False');
suppressMissingDependenciesErrorNode.appendChild(falseTextNode);
const suppressMissingDependenciesErrorTextNode = this.projFileXmlDoc.createTextNode(entry.suppressMissingDependenciesErrors ? constants.True : constants.False);
suppressMissingDependenciesErrorNode.appendChild(suppressMissingDependenciesErrorTextNode);
referenceNode.appendChild(suppressMissingDependenciesErrorNode);
if ((<DacpacReferenceProjectEntry>entry).databaseSqlCmdVariable) {
@@ -648,6 +655,10 @@ export class Project {
const nameNodes = currentNode.getElementsByTagName(constants.DatabaseVariableLiteralValue);
const databaseVariableName = nameNodes[0].childNodes[0]?.nodeValue;
// get suppressMissingDependenciesErrors
const suppressMissingDependenciesErrorNode = currentNode.getElementsByTagName(constants.SuppressMissingDependenciesErrors);
const suppressMissingDependences = suppressMissingDependenciesErrorNode[0].childNodes[0].nodeValue === true ?? false;
// remove this node
this.projFileXmlDoc.documentElement.removeChild(currentNode);
@@ -659,7 +670,7 @@ export class Project {
// remove from database references because it'll get added again later
this.databaseReferences.splice(this.databaseReferences.findIndex(n => n.databaseName === (systemDb === SystemDatabase.master ? constants.master : constants.msdb)), 1);
await this.addSystemDatabaseReference({ databaseName: databaseVariableName, systemDb: systemDb });
await this.addSystemDatabaseReference({ databaseName: databaseVariableName, systemDb: systemDb, suppressMissingDependenciesErrors: suppressMissingDependences });
}
}
}
@@ -778,6 +789,7 @@ export class FileProjectEntry extends ProjectEntry {
export interface IDatabaseReferenceProjectEntry extends FileProjectEntry {
databaseName: string;
databaseVariableLiteralValue?: string;
suppressMissingDependenciesErrors: boolean;
}
export class DacpacReferenceProjectEntry extends FileProjectEntry implements IDatabaseReferenceProjectEntry {
@@ -786,6 +798,7 @@ export class DacpacReferenceProjectEntry extends FileProjectEntry implements IDa
databaseSqlCmdVariable?: string;
serverName?: string;
serverSqlCmdVariable?: string;
suppressMissingDependenciesErrors: boolean;
constructor(settings: IDacpacReferenceSettings) {
super(settings.dacpacFileLocation, '', EntryType.DatabaseReference);
@@ -794,6 +807,7 @@ export class DacpacReferenceProjectEntry extends FileProjectEntry implements IDa
this.databaseVariableLiteralValue = settings.databaseName;
this.serverName = settings.serverName;
this.serverSqlCmdVariable = settings.serverVariable;
this.suppressMissingDependenciesErrors = settings.suppressMissingDependenciesErrors;
}
/**
@@ -805,7 +819,7 @@ export class DacpacReferenceProjectEntry extends FileProjectEntry implements IDa
}
class SystemDatabaseReferenceProjectEntry extends FileProjectEntry implements IDatabaseReferenceProjectEntry {
constructor(uri: Uri, public ssdtUri: Uri, public databaseVariableLiteralValue: string) {
constructor(uri: Uri, public ssdtUri: Uri, public databaseVariableLiteralValue: string, public suppressMissingDependenciesErrors: boolean) {
super(uri, '', EntryType.DatabaseReference);
}
@@ -828,11 +842,8 @@ class SystemDatabaseReferenceProjectEntry extends FileProjectEntry implements ID
}
export class SqlProjectReferenceProjectEntry extends FileProjectEntry implements IDatabaseReferenceProjectEntry {
projectName: string;
constructor(uri: Uri, name: string) {
constructor(uri: Uri, public projectName: string, public suppressMissingDependenciesErrors: boolean) {
super(uri, '', EntryType.DatabaseReference);
this.projectName = name;
}
public get databaseName(): string {