diff --git a/app/static/js/Forms/CreateContributionForm.js b/app/static/js/forms/create-contribution-form.js similarity index 74% rename from app/static/js/Forms/CreateContributionForm.js rename to app/static/js/forms/create-contribution-form.js index e7651ab0..68003796 100644 --- a/app/static/js/Forms/CreateContributionForm.js +++ b/app/static/js/forms/create-contribution-form.js @@ -1,8 +1,8 @@ -class CreateContributionForm extends Form { +Forms.CreateContributionForm = class CreateContributionForm extends Forms.BaseForm { static autoInit() { let createContributionFormElements = document.querySelectorAll('.create-contribution-form'); for (let createContributionFormElement of createContributionFormElements) { - new CreateContributionForm(createContributionFormElement); + new Forms.CreateContributionForm(createContributionFormElement); } } @@ -15,4 +15,4 @@ class CreateContributionForm extends Form { } }); } -} +}; diff --git a/app/static/js/Forms/CreateCorpusFileForm.js b/app/static/js/forms/create-corpus-file-form.js similarity index 74% rename from app/static/js/Forms/CreateCorpusFileForm.js rename to app/static/js/forms/create-corpus-file-form.js index ae8dba3b..6cbc8a3a 100644 --- a/app/static/js/Forms/CreateCorpusFileForm.js +++ b/app/static/js/forms/create-corpus-file-form.js @@ -1,8 +1,8 @@ -class CreateCorpusFileForm extends Form { +Forms.CreateCorpusFileForm = class CreateCorpusFileForm extends Forms.BaseForm { static autoInit() { let createCorpusFileFormElements = document.querySelectorAll('.create-corpus-file-form'); for (let createCorpusFileFormElement of createCorpusFileFormElements) { - new CreateCorpusFileForm(createCorpusFileFormElement); + new Forms.CreateCorpusFileForm(createCorpusFileFormElement); } } @@ -15,4 +15,4 @@ class CreateCorpusFileForm extends Form { } }); } -} +}; diff --git a/app/static/js/Forms/CreateJobForm.js b/app/static/js/forms/create-job-form.js similarity index 85% rename from app/static/js/Forms/CreateJobForm.js rename to app/static/js/forms/create-job-form.js index 6aa2d1b6..0ee64e3a 100644 --- a/app/static/js/Forms/CreateJobForm.js +++ b/app/static/js/forms/create-job-form.js @@ -1,8 +1,8 @@ -class CreateJobForm extends Form { +Forms.CreateJobForm = class CreateJobForm extends Forms.BaseForm { static autoInit() { let createJobFormElements = document.querySelectorAll('.create-job-form'); for (let createJobFormElement of createJobFormElements) { - new CreateJobForm(createJobFormElement); + new Forms.CreateJobForm(createJobFormElement); } } @@ -22,4 +22,4 @@ class CreateJobForm extends Form { } }); } -} +}; diff --git a/app/static/js/Forms/Form.js b/app/static/js/forms/index.js similarity index 92% rename from app/static/js/Forms/Form.js rename to app/static/js/forms/index.js index c3496e18..b3bd9224 100644 --- a/app/static/js/Forms/Form.js +++ b/app/static/js/forms/index.js @@ -1,9 +1,17 @@ -class Form { - static autoInit() { - CreateContributionForm.autoInit(); - CreateCorpusFileForm.autoInit(); - CreateJobForm.autoInit(); +var Forms = {}; + +Forms.autoInit = () => { + for (let propertyName in Forms) { + let property = Forms[propertyName]; + // Call the autoInit method of all properties that are subclasses of Forms.BaseForm + if (property.prototype instanceof Forms.BaseForm) { + property.autoInit(); + } } +}; + +Forms.BaseForm = class BaseForm { + static autoInit() {throw 'Not implemented';} constructor(formElement) { this.formElement = formElement; @@ -139,4 +147,4 @@ class Form { } } } -} +}; diff --git a/app/static/js/resource-displays/corpus-display.js b/app/static/js/resource-displays/corpus-display.js index 6bfa1676..4381ec88 100644 --- a/app/static/js/resource-displays/corpus-display.js +++ b/app/static/js/resource-displays/corpus-display.js @@ -102,4 +102,4 @@ ResourceDisplays.CorpusDisplay = class CorpusDisplay extends ResourceDisplays.Ba new Date(creationDate).toLocaleString("en-US") ); } -} +}; diff --git a/app/static/js/resource-displays/job-display.js b/app/static/js/resource-displays/job-display.js index 2d107716..d52f0b0e 100644 --- a/app/static/js/resource-displays/job-display.js +++ b/app/static/js/resource-displays/job-display.js @@ -123,4 +123,4 @@ ResourceDisplays.JobDisplay = class JobDisplay extends ResourceDisplays.BaseDisp setServiceVersion(serviceVersion) { this.setElements(this.displayElement.querySelectorAll('.job-service-version'), serviceVersion); } -} +}; diff --git a/app/templates/_scripts.html.j2 b/app/templates/_scripts.html.j2 index b2ca56a4..de457973 100644 --- a/app/templates/_scripts.html.j2 +++ b/app/templates/_scripts.html.j2 @@ -35,10 +35,10 @@ {%- assets filters='rjsmin', output='gen/Forms.%(version)s.js', - 'js/Forms/Form.js', - 'js/Forms/CreateCorpusFileForm.js', - 'js/Forms/CreateJobForm.js', - 'js/Forms/CreateContributionForm.js' + 'js/forms/index.js', + 'js/forms/create-contribution-form.js', + 'js/forms/create-corpus-file-form.js', + 'js/forms/create-job-form.js' %} {%- endassets %} @@ -141,7 +141,7 @@ {alignment: 'right', constrainWidth: false, coverTrigger: false} ); ResourceList.autoInit(); - Form.autoInit(); + Forms.autoInit(); // Display flashed messages for (let [category, message] of {{ get_flashed_messages(with_categories=True)|tojson }}) {