Compare commits

..

3 Commits

Author SHA1 Message Date
Patrick Jentsch
d3f2d5648e Further javascript improvements 2023-10-05 16:08:04 +02:00
Patrick Jentsch
7cae84ffdc Make the joblist clickable again 2023-10-05 14:19:46 +02:00
Patrick Jentsch
1d6834302d Change js structure for displays 2023-10-05 14:11:17 +02:00
11 changed files with 44 additions and 34 deletions

View File

@ -29,7 +29,7 @@ class JobList extends ResourceList {
get item() { get item() {
return ` return `
<tr class="list-item service-scheme"> <tr class="list-item service-scheme clickable hoverable">
<td> <td>
<label class="list-action-trigger" data-list-action="select"> <label class="list-action-trigger" data-list-action="select">
<input class="select-checkbox" type="checkbox"> <input class="select-checkbox" type="checkbox">
@ -112,7 +112,7 @@ class JobList extends ResourceList {
if (listItemElement === null) {return;} if (listItemElement === null) {return;}
let itemId = listItemElement.dataset.id; let itemId = listItemElement.dataset.id;
let listActionElement = event.target.closest('.list-action-trigger[data-list-action]'); let listActionElement = event.target.closest('.list-action-trigger[data-list-action]');
let listAction = listActionElement === null ? '' : listActionElement.dataset.listAction; let listAction = listActionElement === null ? 'view' : listActionElement.dataset.listAction;
switch (listAction) { switch (listAction) {
case 'delete-request': { case 'delete-request': {
let values = this.listjs.get('id', itemId)[0].values(); let values = this.listjs.get('id', itemId)[0].values();

View File

@ -1,8 +1,8 @@
class CreateContributionForm extends Form { Forms.CreateContributionForm = class CreateContributionForm extends Forms.BaseForm {
static autoInit() { static autoInit() {
let createContributionFormElements = document.querySelectorAll('.create-contribution-form'); let createContributionFormElements = document.querySelectorAll('.create-contribution-form');
for (let createContributionFormElement of createContributionFormElements) { for (let createContributionFormElement of createContributionFormElements) {
new CreateContributionForm(createContributionFormElement); new Forms.CreateContributionForm(createContributionFormElement);
} }
} }
@ -15,4 +15,4 @@ class CreateContributionForm extends Form {
} }
}); });
} }
} };

View File

@ -1,8 +1,8 @@
class CreateCorpusFileForm extends Form { Forms.CreateCorpusFileForm = class CreateCorpusFileForm extends Forms.BaseForm {
static autoInit() { static autoInit() {
let createCorpusFileFormElements = document.querySelectorAll('.create-corpus-file-form'); let createCorpusFileFormElements = document.querySelectorAll('.create-corpus-file-form');
for (let createCorpusFileFormElement of createCorpusFileFormElements) { for (let createCorpusFileFormElement of createCorpusFileFormElements) {
new CreateCorpusFileForm(createCorpusFileFormElement); new Forms.CreateCorpusFileForm(createCorpusFileFormElement);
} }
} }
@ -15,4 +15,4 @@ class CreateCorpusFileForm extends Form {
} }
}); });
} }
} };

View File

@ -1,8 +1,8 @@
class CreateJobForm extends Form { Forms.CreateJobForm = class CreateJobForm extends Forms.BaseForm {
static autoInit() { static autoInit() {
let createJobFormElements = document.querySelectorAll('.create-job-form'); let createJobFormElements = document.querySelectorAll('.create-job-form');
for (let createJobFormElement of createJobFormElements) { for (let createJobFormElement of createJobFormElements) {
new CreateJobForm(createJobFormElement); new Forms.CreateJobForm(createJobFormElement);
} }
} }
@ -22,4 +22,4 @@ class CreateJobForm extends Form {
} }
}); });
} }
} };

View File

@ -1,9 +1,17 @@
class Form { var Forms = {};
static autoInit() {
CreateContributionForm.autoInit(); Forms.autoInit = () => {
CreateCorpusFileForm.autoInit(); for (let propertyName in Forms) {
CreateJobForm.autoInit(); 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) { constructor(formElement) {
this.formElement = formElement; this.formElement = formElement;
@ -139,4 +147,4 @@ class Form {
} }
} }
} }
} };

View File

@ -1,4 +1,4 @@
class CorpusDisplay extends ResourceDisplay { ResourceDisplays.CorpusDisplay = class CorpusDisplay extends ResourceDisplays.BaseDisplay {
constructor(displayElement) { constructor(displayElement) {
super(displayElement); super(displayElement);
this.corpusId = displayElement.dataset.corpusId; this.corpusId = displayElement.dataset.corpusId;
@ -102,4 +102,4 @@ class CorpusDisplay extends ResourceDisplay {
new Date(creationDate).toLocaleString("en-US") new Date(creationDate).toLocaleString("en-US")
); );
} }
} };

View File

@ -1,4 +1,6 @@
class ResourceDisplay { var ResourceDisplays = {};
ResourceDisplays.BaseDisplay = class BaseDisplay {
constructor(displayElement) { constructor(displayElement) {
this.displayElement = displayElement; this.displayElement = displayElement;
this.userId = this.displayElement.dataset.userId; this.userId = this.displayElement.dataset.userId;
@ -41,4 +43,4 @@ class ResourceDisplay {
this.setElement(element, value); this.setElement(element, value);
} }
} }
} };

View File

@ -1,4 +1,4 @@
class JobDisplay extends ResourceDisplay { ResourceDisplays.JobDisplay = class JobDisplay extends ResourceDisplays.BaseDisplay {
constructor(displayElement) { constructor(displayElement) {
super(displayElement); super(displayElement);
this.jobId = this.displayElement.dataset.jobId; this.jobId = this.displayElement.dataset.jobId;
@ -123,4 +123,4 @@ class JobDisplay extends ResourceDisplay {
setServiceVersion(serviceVersion) { setServiceVersion(serviceVersion) {
this.setElements(this.displayElement.querySelectorAll('.job-service-version'), serviceVersion); this.setElements(this.displayElement.querySelectorAll('.job-service-version'), serviceVersion);
} }
} };

View File

@ -35,20 +35,20 @@
{%- assets {%- assets
filters='rjsmin', filters='rjsmin',
output='gen/Forms.%(version)s.js', output='gen/Forms.%(version)s.js',
'js/Forms/Form.js', 'js/forms/index.js',
'js/Forms/CreateCorpusFileForm.js', 'js/forms/create-contribution-form.js',
'js/Forms/CreateJobForm.js', 'js/forms/create-corpus-file-form.js',
'js/Forms/CreateContributionForm.js' 'js/forms/create-job-form.js'
%} %}
<script src="{{ ASSET_URL }}"></script> <script src="{{ ASSET_URL }}"></script>
{%- endassets %} {%- endassets %}
{%- assets {%- assets
filters='rjsmin', filters='rjsmin',
output='gen/ResourceDisplays.%(version)s.js', output='gen/resource-displays.%(version)s.js',
'js/ResourceDisplays/ResourceDisplay.js', 'js/resource-displays/index.js',
'js/ResourceDisplays/CorpusDisplay.js', 'js/resource-displays/corpus-display.js',
'js/ResourceDisplays/JobDisplay.js' 'js/resource-displays/job-display.js'
%} %}
<script src="{{ ASSET_URL }}"></script> <script src="{{ ASSET_URL }}"></script>
{%- endassets %} {%- endassets %}
@ -141,7 +141,7 @@
{alignment: 'right', constrainWidth: false, coverTrigger: false} {alignment: 'right', constrainWidth: false, coverTrigger: false}
); );
ResourceList.autoInit(); ResourceList.autoInit();
Form.autoInit(); Forms.autoInit();
// Display flashed messages // Display flashed messages
for (let [category, message] of {{ get_flashed_messages(with_categories=True)|tojson }}) { for (let [category, message] of {{ get_flashed_messages(with_categories=True)|tojson }}) {

View File

@ -237,7 +237,7 @@
{% block scripts %} {% block scripts %}
{{ super() }} {{ super() }}
<script> <script>
let corpusDisplay = new CorpusDisplay(document.querySelector('#corpus-display')); let corpusDisplay = new ResourceDisplays.CorpusDisplay(document.querySelector('#corpus-display'));
{# {% if current_user.is_following_corpus(corpus) %} {# {% if current_user.is_following_corpus(corpus) %}
let unfollowRequestElement = document.querySelector('.action-button[data-action="unfollow-request"]'); let unfollowRequestElement = document.querySelector('.action-button[data-action="unfollow-request"]');

View File

@ -150,7 +150,7 @@
{% block scripts %} {% block scripts %}
{{ super() }} {{ super() }}
<script> <script>
let jobDisplay = new JobDisplay(document.querySelector('#job-display')); let jobDisplay = new ResourceDisplays.JobDisplay(document.querySelector('#job-display'));
let deleteJobRequestElement = document.querySelector('#delete-job-request'); let deleteJobRequestElement = document.querySelector('#delete-job-request');
let restartJobRequestElement = document.querySelector('#restart-job-request'); let restartJobRequestElement = document.querySelector('#restart-job-request');
deleteJobRequestElement.addEventListener('click', (event) => { deleteJobRequestElement.addEventListener('click', (event) => {