summaryrefslogtreecommitdiff
path: root/app/assets/javascripts/blob/file_template_mediator.js
diff options
context:
space:
mode:
Diffstat (limited to 'app/assets/javascripts/blob/file_template_mediator.js')
-rw-r--r--app/assets/javascripts/blob/file_template_mediator.js45
1 files changed, 26 insertions, 19 deletions
diff --git a/app/assets/javascripts/blob/file_template_mediator.js b/app/assets/javascripts/blob/file_template_mediator.js
index 8f64bda1ba6..c35f9934004 100644
--- a/app/assets/javascripts/blob/file_template_mediator.js
+++ b/app/assets/javascripts/blob/file_template_mediator.js
@@ -9,6 +9,7 @@ import { deprecatedCreateFlash as Flash } from '../flash';
import FileTemplateTypeSelector from './template_selectors/type_selector';
import BlobCiYamlSelector from './template_selectors/ci_yaml_selector';
+import BlobCiSyntaxYamlSelector from './template_selectors/ci_syntax_yaml_selector';
import DockerfileSelector from './template_selectors/dockerfile_selector';
import GitignoreSelector from './template_selectors/gitignore_selector';
import LicenseSelector from './template_selectors/license_selector';
@@ -33,24 +34,30 @@ export default class FileTemplateMediator {
this.templateSelectors = [
GitignoreSelector,
BlobCiYamlSelector,
+ BlobCiSyntaxYamlSelector,
MetricsDashboardSelector,
DockerfileSelector,
LicenseSelector,
- ].map(TemplateSelectorClass => new TemplateSelectorClass({ mediator: this }));
+ ].map((TemplateSelectorClass) => new TemplateSelectorClass({ mediator: this }));
}
initTemplateTypeSelector() {
this.typeSelector = new FileTemplateTypeSelector({
mediator: this,
- dropdownData: this.templateSelectors.map(templateSelector => {
- const cfg = templateSelector.config;
-
- return {
- name: cfg.name,
- key: cfg.key,
- id: cfg.key,
- };
- }),
+ dropdownData: this.templateSelectors
+ .map((templateSelector) => {
+ const cfg = templateSelector.config;
+
+ return {
+ name: cfg.name,
+ key: cfg.key,
+ id: cfg.key,
+ };
+ })
+ .reduce(
+ (acc, current) => (acc.find((item) => item.id === current.id) ? acc : [...acc, current]),
+ [],
+ ),
});
}
@@ -92,7 +99,7 @@ export default class FileTemplateMediator {
}
listenForPreviewMode() {
- this.$navLinks.on('click', 'a', e => {
+ this.$navLinks.on('click', 'a', (e) => {
const urlPieces = e.target.href.split('#');
const hash = urlPieces[1];
if (hash === 'preview') {
@@ -108,7 +115,7 @@ export default class FileTemplateMediator {
e.preventDefault();
}
- this.templateSelectors.forEach(selector => {
+ this.templateSelectors.forEach((selector) => {
if (selector.config.key === item.key) {
selector.show();
} else {
@@ -131,7 +138,7 @@ export default class FileTemplateMediator {
selector.renderLoading();
this.fetchFileTemplate(selector.config.type, query, data)
- .then(file => {
+ .then((file) => {
this.setEditorContent(file);
this.setFilename(name);
selector.renderLoaded();
@@ -150,12 +157,12 @@ export default class FileTemplateMediator {
initPopover(suggestCommitChanges);
}
})
- .catch(err => new Flash(`An error occurred while fetching the template: ${err}`));
+ .catch((err) => new Flash(`An error occurred while fetching the template: ${err}`));
}
displayMatchedTemplateSelector() {
const currentInput = this.getFilename();
- this.templateSelectors.forEach(selector => {
+ this.templateSelectors.forEach((selector) => {
const match = selector.config.pattern.test(currentInput);
if (match) {
@@ -167,8 +174,8 @@ export default class FileTemplateMediator {
}
fetchFileTemplate(type, query, data = {}) {
- return new Promise(resolve => {
- const resolveFile = file => resolve(file);
+ return new Promise((resolve) => {
+ const resolveFile = (file) => resolve(file);
Api.projectTemplate(this.projectId, type, query, data, resolveFile);
});
@@ -187,7 +194,7 @@ export default class FileTemplateMediator {
}
findTemplateSelectorByKey(key) {
- return this.templateSelectors.find(selector => selector.config.key === key);
+ return this.templateSelectors.find((selector) => selector.config.key === key);
}
hideTemplateSelectorMenu() {
@@ -243,6 +250,6 @@ export default class FileTemplateMediator {
}
getSelected() {
- return this.templateSelectors.find(selector => selector.selected);
+ return this.templateSelectors.find((selector) => selector.selected);
}
}