Skip to content

Commit 44566bb

Browse files
committed
Merge branch 'release/22.8.0'
2 parents 0c9c73b + 6d118dc commit 44566bb

File tree

105 files changed

+2903
-272
lines changed

Some content is hidden

Large Commits have some content hidden by default. Use the searchbox below for content that may be hidden.

105 files changed

+2903
-272
lines changed

CHANGELOG.md

Lines changed: 5 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -4,6 +4,10 @@ All notable changes to this project will be documented in this file.
44
The format is based on [Keep a Changelog](http://keepachangelog.com/en/1.0.0/)
55
and this project adheres to [Semantic Versioning](http://semver.org/spec/v2.0.0.html).
66

7+
## [22.8.0] - 2022-8-29
8+
### Added
9+
- Registration resources (output reporting)
10+
711
## [22.7.0] - 2022-7-20
812
### Added
913
- Show extra information on files detail page for dataverse files
@@ -12,7 +16,6 @@ and this project adheres to [Semantic Versioning](http://semver.org/spec/v2.0.0.
1216
- Hide left navbar links when users don't have permissions
1317
- Update registries landing page
1418

15-
1619
## [22.6.2] - 2022-6-24
1720
### Hotfix
1821
- Fix long file name display issue
@@ -1867,6 +1870,7 @@ and this project adheres to [Semantic Versioning](http://semver.org/spec/v2.0.0.
18671870
### Added
18681871
- Quick Files
18691872

1873+
[22.8.0]: https://github.com/CenterForOpenScience/ember-osf-web/releases/tag/22.8.0
18701874
[22.7.0]: https://github.com/CenterForOpenScience/ember-osf-web/releases/tag/22.7.0
18711875
[22.6.0]: https://github.com/CenterForOpenScience/ember-osf-web/releases/tag/22.6.0
18721876
[22.5.0]: https://github.com/CenterForOpenScience/ember-osf-web/releases/tag/22.5.0

app/adapters/resource.ts

Lines changed: 11 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,11 @@
1+
import OsfAdapter from './osf-adapter';
2+
3+
export default class ResourceAdapter extends OsfAdapter {
4+
5+
}
6+
7+
declare module 'ember-data/types/registries/adapter' {
8+
export default interface AdapterRegistry {
9+
resource: ResourceAdapter;
10+
} // eslint-disable-line semi
11+
}
Lines changed: 35 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,35 @@
1+
import { ResourceTypes } from 'ember-osf-web/models/resource';
2+
3+
export function getBadgeIcon(resourceType: ResourceTypes) {
4+
switch (resourceType) {
5+
case ResourceTypes.Data:
6+
return '/assets/images/badges/data_small_color.png';
7+
case ResourceTypes.Materials:
8+
return '/assets/images/badges/materials_small_color.png';
9+
case ResourceTypes.AnalyticCode:
10+
return '/assets/images/badges/analytic_code_small_color.png';
11+
case ResourceTypes.Papers:
12+
return '/assets/images/badges/papers_small_color.png';
13+
case ResourceTypes.Supplements:
14+
return '/assets/images/badges/supplements_small_color.png';
15+
default:
16+
return '/assets/images/badges/data_small_color.png';
17+
}
18+
}
19+
20+
export function getBadgeIconDisabled(resourceType: ResourceTypes) {
21+
switch (resourceType) {
22+
case ResourceTypes.Data:
23+
return '/assets/images/badges/data_small_gray.png';
24+
case ResourceTypes.Materials:
25+
return '/assets/images/badges/materials_small_gray.png';
26+
case ResourceTypes.AnalyticCode:
27+
return '/assets/images/badges/analytic_code_small_gray.png';
28+
case ResourceTypes.Papers:
29+
return '/assets/images/badges/papers_small_gray.png';
30+
case ResourceTypes.Supplements:
31+
return '/assets/images/badges/supplements_small_gray.png';
32+
default:
33+
return '/assets/images/badges/data_small_gray.png';
34+
}
35+
}

app/models/registration.ts

Lines changed: 16 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -2,6 +2,7 @@ import { attr, belongsTo, hasMany, AsyncBelongsTo, AsyncHasMany } from '@ember-d
22
import { buildValidations, validator } from 'ember-cp-validations';
33

44
import DraftRegistrationModel from 'ember-osf-web/models/draft-registration';
5+
import ResourceModel from 'ember-osf-web/models/resource';
56
import ReviewActionModel, { ReviewActionTrigger } from 'ember-osf-web/models/review-action';
67
import SchemaResponseModel, { RevisionReviewStates } from 'ember-osf-web/models/schema-response';
78
import { RegistrationResponse } from 'ember-osf-web/packages/registration-schema';
@@ -106,6 +107,11 @@ export default class RegistrationModel extends NodeModel.extend(Validations) {
106107
@attr('array') providerSpecificMetadata!: ProviderMetadata[];
107108
@attr('fixstring') revisionState!: RevisionReviewStates;
108109
@attr('boolean') wikiEnabled!: boolean;
110+
@attr('boolean') hasData!: boolean;
111+
@attr('boolean') hasMaterials!: boolean;
112+
@attr('boolean') hasAnalyticCode!: boolean;
113+
@attr('boolean') hasPapers!: boolean;
114+
@attr('boolean') hasSupplements!: boolean;
109115

110116
// Write-only attributes
111117
@attr('array') includedNodeIds?: string[];
@@ -153,9 +159,19 @@ export default class RegistrationModel extends NodeModel.extend(Validations) {
153159
@belongsTo('schema-response', { inverse: null })
154160
latestResponse!: AsyncBelongsTo<SchemaResponseModel> & SchemaResponseModel; // Latest accepted response
155161

162+
@hasMany('resource', { inverse: 'registration' })
163+
resources!: AsyncHasMany<ResourceModel> | ResourceModel[];
164+
156165
// Write-only relationships
157166
@belongsTo('draft-registration', { inverse: null })
158167
draftRegistration!: DraftRegistrationModel;
168+
169+
get resourcesVisible(): boolean {
170+
return ![
171+
RegistrationReviewStates.Initial,
172+
RegistrationReviewStates.Pending,
173+
].includes(this.reviewsState) && !this.withdrawn && !this.archiving;
174+
}
159175
}
160176

161177
declare module 'ember-data/types/registries/model' {

app/models/resource.ts

Lines changed: 31 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,31 @@
1+
import { AsyncBelongsTo, attr, belongsTo } from '@ember-data/model';
2+
import RegistrationModel from 'ember-osf-web/models/registration';
3+
4+
import OsfModel from './osf-model';
5+
6+
export enum ResourceTypes {
7+
Data = 'data',
8+
AnalyticCode = 'analytic_code',
9+
Materials = 'materials',
10+
Papers = 'papers',
11+
Supplements = 'supplements',
12+
}
13+
14+
export default class ResourceModel extends OsfModel {
15+
@attr('fixstring') pid!: string;
16+
@attr('fixstring') name!: string;
17+
@attr('fixstring') resourceType!: ResourceTypes | 'undefined';
18+
@attr('fixstring') description!: string;
19+
@attr('date') dateCreated!: Date;
20+
@attr('date') dateModified!: Date;
21+
@attr('boolean') finalized!: boolean;
22+
23+
@belongsTo('registration', { inverse: 'resources' })
24+
registration!: AsyncBelongsTo<RegistrationModel> & RegistrationModel;
25+
}
26+
27+
declare module 'ember-data/types/registries/model' {
28+
export default interface ModelRegistry {
29+
resource: ResourceModel;
30+
} // eslint-disable-line semi
31+
}

app/serializers/resource.ts

Lines changed: 11 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,11 @@
1+
import OsfSerializer from './osf-serializer';
2+
3+
export default class ResourceSerializer extends OsfSerializer {
4+
5+
}
6+
7+
declare module 'ember-data/types/registries/serializer' {
8+
export default interface SerializerRegistry {
9+
'resource': ResourceSerializer;
10+
} // eslint-disable-line semi
11+
}

config/environment.d.ts

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -82,6 +82,7 @@ declare const config: {
8282
keenSessionId: string;
8383
analyticsDismissAdblock: string;
8484
cookieConsent: string;
85+
outputFeaturePopover: string;
8586
maintenance: string;
8687
csrf: string;
8788
authSession: string;

config/environment.js

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -154,6 +154,7 @@ module.exports = function(environment) {
154154
keenSessionId: 'keenSessionId',
155155
analyticsDismissAdblock: 'adBlockDismiss',
156156
cookieConsent: 'osf_cookieconsent',
157+
outputFeaturePopover: 'outputFeaturePopover',
157158
maintenance: 'maintenance',
158159
csrf: 'api-csrf',
159160
authSession: 'embosf-auth-session',
Lines changed: 64 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,64 @@
1+
import Component from '@glimmer/component';
2+
import { tracked } from '@glimmer/tracking';
3+
import { action } from '@ember/object';
4+
5+
interface Args {
6+
height?: number;
7+
open?: boolean;
8+
}
9+
10+
export default class ExpandablePreview extends Component<Args> {
11+
@tracked thresholdHeight: number;
12+
@tracked collapsed: boolean;
13+
@tracked collapsible = false;
14+
@tracked wrapperElement?: HTMLElement;
15+
16+
@action
17+
didInsert(element: HTMLElement) {
18+
this.wrapperElement = element;
19+
this.checkThreshold(element);
20+
}
21+
22+
@action
23+
checkThreshold(element: HTMLElement) {
24+
if (!this.wrapperElement) {
25+
this.wrapperElement = element;
26+
}
27+
if (this.thresholdHeight < element.clientHeight) {
28+
this.collapsible = true;
29+
if (this.collapsed) {
30+
this.collapseWrapper();
31+
}
32+
}
33+
}
34+
35+
@action
36+
toggleCollapse() {
37+
this.collapsed = !this.collapsed;
38+
if (this.collapsed) {
39+
this.collapseWrapper();
40+
} else {
41+
this.expandWrapper();
42+
}
43+
}
44+
45+
@action
46+
collapseWrapper() {
47+
if (this.wrapperElement) {
48+
this.wrapperElement.style.maxHeight = this.thresholdHeight + 'px';
49+
}
50+
}
51+
52+
@action
53+
expandWrapper() {
54+
if (this.wrapperElement) {
55+
this.wrapperElement.style.maxHeight = '';
56+
}
57+
}
58+
59+
constructor(owner: unknown, args: Args) {
60+
super(owner, args);
61+
this.thresholdHeight = this.args.height || 200;
62+
this.collapsed = !this.args.open;
63+
}
64+
}
Lines changed: 16 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,16 @@
1+
.Wrapper {
2+
position: relative;
3+
overflow: hidden;
4+
}
5+
6+
.Wrapper__Overlay {
7+
position: absolute;
8+
bottom: 0;
9+
right: 0;
10+
width: 100%;
11+
height: 100%;
12+
13+
&.Wrapper__Collapsed {
14+
background-image: linear-gradient(rgba(255, 255, 255, 0), rgba(255, 255, 255, 1));
15+
}
16+
}

0 commit comments

Comments
 (0)