This commit is contained in:
Rachel Macfarlane
2019-02-12 16:49:50 -08:00
parent 48ffb9a4e0
commit a509265116
3 changed files with 68 additions and 12 deletions

View File

@@ -311,6 +311,7 @@ export class IssueReporter extends Disposable {
ipcRenderer.send('vscode:issuePerformanceInfoRequest');
}
this.updatePreviewButtonState();
this.setSourceOptions();
this.render();
});
@@ -342,7 +343,19 @@ export class IssueReporter extends Disposable {
}
this.addEventListener('issue-source', 'change', (e: Event) => {
const fileOnExtension = JSON.parse((<HTMLInputElement>e.target).value);
const value = (<HTMLInputElement>e.target).value;
const problemSourceHelpText = this.getElementById('problem-source-help-text')!;
if (value === '') {
this.issueReporterModel.update({ fileOnExtension: undefined, includeExtensions: false });
show(problemSourceHelpText);
this.clearSearchResults();
this.render();
return;
} else {
hide(problemSourceHelpText);
}
const fileOnExtension = JSON.parse(value);
this.issueReporterModel.update({ fileOnExtension: fileOnExtension, includeExtensions: !fileOnExtension });
this.render();
@@ -360,7 +373,7 @@ export class IssueReporter extends Disposable {
this.issueReporterModel.update({ issueDescription });
// Only search for extension issues on title change
if (!this.issueReporterModel.fileOnExtension()) {
if (this.issueReporterModel.fileOnExtension() === false) {
const title = (<HTMLInputElement>this.getElementById('issue-title')).value;
this.searchVSCodeIssues(title, issueDescription);
}
@@ -375,7 +388,12 @@ export class IssueReporter extends Disposable {
hide(lengthValidationMessage);
}
if (this.issueReporterModel.fileOnExtension()) {
const fileOnExtension = this.issueReporterModel.fileOnExtension();
if (fileOnExtension === undefined) {
return;
}
if (fileOnExtension) {
this.searchExtensionIssues(title);
} else {
const description = this.issueReporterModel.getData().issueDescription;
@@ -662,6 +680,45 @@ export class IssueReporter extends Disposable {
}
typeSelect.value = issueType.toString();
this.setSourceOptions();
}
private makeOption(value: string, description: string, disabled: boolean): HTMLOptionElement {
const option: HTMLOptionElement = document.createElement('option');
option.disabled = disabled;
option.value = value;
option.textContent = description;
return option;
}
private setSourceOptions(): void {
const sourceSelect = this.getElementById('issue-source')! as HTMLSelectElement;
const selected = sourceSelect.selectedIndex;
sourceSelect.innerHTML = '';
const { issueType } = this.issueReporterModel.getData();
if (issueType === IssueType.FeatureRequest) {
sourceSelect.append(...[
this.makeOption('', localize('selectSource', "Select source"), true),
this.makeOption('false', localize('vscode', "Visual Studio Code"), false),
this.makeOption('true', localize('extension', "An extension"), false)
]);
} else {
sourceSelect.append(...[
this.makeOption('', localize('selectSource', "Select source"), true),
this.makeOption('false', localize('vscode', "Visual Studio Code"), false),
this.makeOption('true', localize('extension', "An extension"), false),
this.makeOption('', localize('unknown', "Don't Know"), false)
]);
}
if (selected !== -1 && selected < sourceSelect.options.length) {
sourceSelect.selectedIndex = selected;
} else {
sourceSelect.selectedIndex = 0;
hide(this.getElementById('problem-source-help-text'));
}
}
private renderBlocks(): void {
@@ -676,7 +733,6 @@ export class IssueReporter extends Disposable {
const settingsSearchResultsBlock = document.querySelector('.block-settingsSearchResults');
const problemSource = this.getElementById('problem-source')!;
const problemSourceHelpText = this.getElementById('problem-source-help-text')!;
const descriptionTitle = this.getElementById('issue-description-label')!;
const descriptionSubtitle = this.getElementById('issue-description-subtitle')!;
const extensionSelector = this.getElementById('extension-selection')!;
@@ -690,7 +746,6 @@ export class IssueReporter extends Disposable {
hide(searchedExtensionsBlock);
hide(settingsSearchResultsBlock);
hide(problemSource);
hide(problemSourceHelpText);
hide(extensionSelector);
if (issueType === IssueType.Bug) {
@@ -702,7 +757,6 @@ export class IssueReporter extends Disposable {
show(extensionSelector);
} else {
show(extensionsBlock);
show(problemSourceHelpText);
}
descriptionTitle.innerHTML = `${localize('stepsToReproduce', "Steps to Reproduce")} <span class="required-input">*</span>`;
@@ -718,7 +772,6 @@ export class IssueReporter extends Disposable {
show(extensionSelector);
} else {
show(extensionsBlock);
show(problemSourceHelpText);
}
descriptionTitle.innerHTML = `${localize('stepsToReproduce', "Steps to Reproduce")} <span class="required-input">*</span>`;
@@ -782,6 +835,10 @@ export class IssueReporter extends Disposable {
this.validateInput('description');
});
this.addEventListener('issue-source', 'change', _ => {
this.validateInput('issue-source');
});
if (this.issueReporterModel.fileOnExtension()) {
this.addEventListener('extension-selector', 'change', _ => {
this.validateInput('extension-selector');