- npm updates
Some checks failed
CI Pipeline / japa-tests (push) Failing after 51s

- added views and controller coder for reviewer role
- added program logic for publishing a dataset by editor
- added reviewer menu
- adapted routes.ts for additional routes
This commit is contained in:
Kaimbacher 2024-01-04 16:40:05 +01:00
parent c70fa4a0d8
commit 18635f77b3
17 changed files with 1224 additions and 393 deletions

View file

@ -55,7 +55,7 @@ export default class Dataset extends DatasetExtension {
@column({})
public language: string;
@column({})
@column({columnName: 'publish_id'})
public publish_id: number | null = null;
@column({})
@ -95,13 +95,14 @@ export default class Dataset extends DatasetExtension {
})
public created_at: DateTime;
@column.dateTime({
@column.dateTime({
serialize: (value: Date | null) => {
return value ? dayjs(value).format('MMMM D YYYY HH:mm a') : value;
},
autoCreate: true,
autoUpdate: true,
columnName: 'server_date_modified' })
autoCreate: true,
autoUpdate: true,
columnName: 'server_date_modified',
})
public server_date_modified: DateTime;
@manyToMany(() => Person, {
@ -250,4 +251,23 @@ export default class Dataset extends DatasetExtension {
return model || null;
}
static async getMax (column: string) {
let dataset = await this.query().max(column + ' as max_publish_id').firstOrFail();
return dataset.$extras.max_publish_id;
}
@computed({
serializeAs: 'remaining_time',
})
public get remainingTime() {
const dateFuture = this.server_date_modified.plus({ days: 14 });
if (this.server_state === 'approved') {
const now = DateTime.now();
let duration = dateFuture.diff(now, ['days', 'hours', 'months']).toObject();
return duration.days;
} else {
return 0;
}
}
}

View file

@ -159,7 +159,7 @@ export default abstract class DatasetExtension extends LucidBaseModel {
// // Initialize available date fields and set up date validator
// // if the particular field is present
let dateFields = new Array<string>('EmbargoDate', 'CreatedAt', 'ServerDatePublished', 'ServerDateDeleted');
let dateFields = new Array<string>('EmbargoDate', 'CreatedAt', 'ServerDateModified', 'ServerDatePublished', 'ServerDateDeleted');
dateFields.forEach((fieldname) => {
let dateField = this.getField(fieldname);
dateField instanceof Field && dateField.setValueModelClass(DateTime.now());