1- import { belongsTo , attr } from '@ember-data/model' ;
1+ import { belongsTo , hasMany , AsyncHasMany , attr } from '@ember-data/model' ;
22import { computed } from '@ember/object' ;
33import { alias as iAlias } from '@ember/object/computed' ;
44import { buildValidations , validator } from 'ember-cp-validations' ;
55
66import tuple from 'ember-osf-web/utils/tuple' ;
77
88import Collection , { ChoicesFields } from './collection' ;
9+ import CollectionSubmissionAction , {
10+ CollectionSubmissionActionTrigger ,
11+ } from './collection-submission-action' ;
912import Node from './node' ;
1013import OsfModel from './osf-model' ;
1114import User from './user' ;
@@ -20,6 +23,31 @@ export const choiceFields = tuple(
2023 'schoolType' ,
2124) ;
2225
26+ export enum CollectionSubmissionReviewStates {
27+ Accepted = 'accepted' ,
28+ InProgress = 'in_progress' ,
29+ Pending = 'pending' ,
30+ Removed = 'removed' ,
31+ Rejected = 'rejected' ,
32+ }
33+
34+ export const SubmissionIconMap = {
35+ [ CollectionSubmissionReviewStates . Pending ] : 'clock' ,
36+ [ CollectionSubmissionReviewStates . Accepted ] : 'check' ,
37+ [ CollectionSubmissionReviewStates . Removed ] : 'trash' ,
38+ [ CollectionSubmissionReviewStates . Rejected ] : 'times' ,
39+ [ CollectionSubmissionReviewStates . InProgress ] : 'times' ,
40+ } ;
41+
42+ export type ActionableCollectionSubmissionStates =
43+ CollectionSubmissionReviewStates . Accepted | CollectionSubmissionReviewStates . Pending ;
44+
45+ export const collectionSubmissionStateToDecisionMap = {
46+ [ CollectionSubmissionReviewStates . Accepted ] : [ CollectionSubmissionActionTrigger . Remove ] ,
47+ [ CollectionSubmissionReviewStates . Pending ] :
48+ [ CollectionSubmissionActionTrigger . Accept , CollectionSubmissionActionTrigger . Reject ] ,
49+ } ;
50+
2351const Validations = buildValidations ( {
2452 ...choiceFields . reduce ( ( acc , val ) => {
2553 const disabled = computed ( 'model.displayChoiceFields.[]' , function ( ) : boolean {
@@ -42,18 +70,21 @@ const Validations = buildValidations({
4270 } , { } ) ,
4371} ) ;
4472
45- export default class CollectedMetadatumModel extends OsfModel . extend ( Validations ) {
73+ export default class CollectionSubmissionModel extends OsfModel . extend ( Validations ) {
4674 @attr ( 'string' ) collectedType ?: string ;
4775 @attr ( 'string' ) issue ?: string ;
4876 @attr ( 'string' ) programArea ?: string ;
4977 @attr ( 'string' ) status ?: string ;
5078 @attr ( 'string' ) volume ?: string ;
79+ @attr ( 'string' ) reviewsState ?: CollectionSubmissionReviewStates ;
5180 @attr ( 'string' ) studyDesign ?: string ; // custom field for Character Lab
5281 @attr ( 'string' ) schoolType ?: string ; // custom field for Character Lab
5382
5483 @belongsTo ( 'collection' ) collection ! : Collection ;
5584 @belongsTo ( 'node' ) guid ! : Node ;
5685 @belongsTo ( 'user' ) creator ! : User ;
86+ @hasMany ( 'collection-submission-action' )
87+ collectionSubmissionActions ! : AsyncHasMany < CollectionSubmissionAction > | CollectionSubmissionAction [ ] ;
5788
5889 @computed ( 'collection.displayChoicesFields.[]' )
5990 get displayChoiceFields ( ) {
@@ -69,6 +100,6 @@ export default class CollectedMetadatumModel extends OsfModel.extend(Validations
69100
70101declare module 'ember-data/types/registries/model' {
71102 export default interface ModelRegistry {
72- 'collected-metadatum ' : CollectedMetadatumModel ;
103+ 'collection-submission ' : CollectionSubmissionModel ;
73104 } // eslint-disable-line semi
74105}
0 commit comments