Skip to content

Commit cd77b7c

Browse files
committed
Merge branch 'hotfix/23.15.3'
2 parents daed496 + dad4613 commit cd77b7c

File tree

29 files changed

+417
-31
lines changed

29 files changed

+417
-31
lines changed

CHANGELOG.md

Lines changed: 2 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -1962,6 +1962,8 @@ and this project adheres to [Semantic Versioning](http://semver.org/spec/v2.0.0.
19621962
### Added
19631963
- Quick Files
19641964

1965+
[23.15.3]: https://github.com/CenterForOpenScience/ember-osf-web/releases/tag/23.15.3
1966+
[23.15.2]: https://github.com/CenterForOpenScience/ember-osf-web/releases/tag/23.15.2
19651967
[23.15.1]: https://github.com/CenterForOpenScience/ember-osf-web/releases/tag/23.15.1
19661968
[23.15.0]: https://github.com/CenterForOpenScience/ember-osf-web/releases/tag/23.15.0
19671969
[23.14.0]: https://github.com/CenterForOpenScience/ember-osf-web/releases/tag/23.14.0

app/config/environment.d.ts

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -72,6 +72,7 @@ declare const config: {
7272
learnMoreUrl: string;
7373
donateUrl: string;
7474
renderUrl: string;
75+
mfrUrl: string;
7576
waterbutlerUrl: string;
7677
helpUrl: string;
7778
shareBaseUrl: string;

app/institutions/discover/controller.ts

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -10,7 +10,7 @@ import {
1010
export default class InstitutionDiscoverController extends Controller {
1111
@service currentUser!: CurrentUser;
1212

13-
@tracked cardSearchText?: string = '';
13+
@tracked q?: string = '';
1414
@tracked sort?: string = '-relevance';
1515
@tracked resourceType: ResourceTypeFilterValue = ResourceTypeFilterValue.Projects;
1616
@tracked activeFilters?: Filter[] = [];

app/institutions/discover/template.hbs

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -2,7 +2,7 @@
22

33
<SearchPage
44
@route='search'
5-
@query={{this.q}}
5+
@cardSearchText={{this.q}}
66
@defaultQueryOptions={{this.defaultQueryOptions}}
77
@queryParams={{this.queryParams}}
88
@onQueryParamChange={{action this.onQueryParamChange}}

app/models/file-version.ts

Lines changed: 9 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -1,11 +1,20 @@
11
import { attr } from '@ember-data/model';
2+
import { Link } from 'jsonapi-typescript';
3+
import { NormalLinks } from 'osf-api';
24

35
import OsfModel from './osf-model';
46

7+
export interface FileVersionLinks extends NormalLinks {
8+
download?: Link;
9+
render?: Link;
10+
}
11+
512
export default class FileVersionModel extends OsfModel {
613
@attr('number') size!: number;
714
@attr('date') dateCreated!: Date;
815
@attr('fixstring') contentType!: string;
16+
@attr('fixstring') name!: string;
17+
@attr() links!: FileVersionLinks;
918
}
1019

1120
declare module 'ember-data/types/registries/model' {
Lines changed: 77 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,77 @@
1+
import Component from '@glimmer/component';
2+
import { inject as service } from '@ember/service';
3+
import FileModel from 'ember-osf-web/models/file';
4+
import PreprintProviderModel from 'ember-osf-web/models/preprint-provider';
5+
import PreprintModel from 'ember-osf-web/models/preprint';
6+
import Theme from 'ember-osf-web/services/theme';
7+
import { tracked } from '@glimmer/tracking';
8+
import { task } from 'ember-concurrency';
9+
import { waitFor } from '@ember/test-waiters';
10+
import { taskFor } from 'ember-concurrency-ts';
11+
import FileVersionModel from 'ember-osf-web/models/file-version';
12+
import Media from 'ember-responsive';
13+
14+
15+
interface InputArgs {
16+
preprint: PreprintModel;
17+
provider: PreprintProviderModel;
18+
primaryFile: FileModel;
19+
}
20+
21+
export interface VersionModel extends FileVersionModel {
22+
downloadUrl?: string;
23+
}
24+
25+
export default class PreprintFileRender extends Component<InputArgs> {
26+
@service theme!: Theme;
27+
@service media!: Media;
28+
29+
@tracked allowCommenting = false;
30+
@tracked primaryFileHasVersions = false;
31+
@tracked fileVersions: VersionModel[] = [];
32+
33+
primaryFile = this.args.primaryFile;
34+
provider = this.args.provider;
35+
preprint = this.args.preprint;
36+
37+
constructor(owner: unknown, args: InputArgs) {
38+
super(owner, args);
39+
40+
taskFor(this.loadPrimaryFileVersions).perform();
41+
42+
this.allowCommenting = this.provider.allowCommenting && this.preprint.isPublished && this.preprint.public;
43+
}
44+
45+
@task
46+
@waitFor
47+
private async loadPrimaryFileVersions() {
48+
const primaryFileVersions = (await this.primaryFile.queryHasMany('versions', {
49+
sort: '-id', 'page[size]': 50,
50+
})).toArray();
51+
this.serializeVersions(primaryFileVersions);
52+
this.primaryFileHasVersions = primaryFileVersions.length > 0;
53+
}
54+
55+
private serializeVersions(versions: FileVersionModel[]) {
56+
const downloadUrl = this.primaryFile.links.download as string || '';
57+
58+
versions.map((version: VersionModel) => {
59+
const dateFormatted = encodeURIComponent(version.dateCreated.toISOString());
60+
const displayName = version.name.replace(/(\.\w+)?$/, ext => `-${dateFormatted}${ext}`);
61+
62+
this.fileVersions.push(
63+
{
64+
name: version.name,
65+
id: version.id,
66+
dateCreated: version.dateCreated,
67+
downloadUrl: `${downloadUrl}?version=${version.id}&displayName=${displayName}`,
68+
} as VersionModel,
69+
);
70+
return version;
71+
});
72+
}
73+
74+
get isMobile() {
75+
return this.media.isMobile;
76+
}
77+
}
Lines changed: 122 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,122 @@
1+
// stylelint-disable max-nesting-depth, selector-max-compound-selectors
2+
3+
.file-renderer-container {
4+
width: 100%;
5+
height: 1150px;
6+
display: flex;
7+
flex-direction: column;
8+
align-items: flex-start;
9+
justify-content: flex-start;
10+
11+
.file-container {
12+
width: 100%;
13+
height: 1100px;
14+
display: flex;
15+
flex-direction: column;
16+
align-items: flex-start;
17+
justify-content: flex-start;
18+
}
19+
20+
.details-container {
21+
width: 100%;
22+
height: 50px;
23+
display: flex;
24+
flex-direction: row;
25+
align-items: center;
26+
justify-content: flex-start;
27+
28+
.name-container {
29+
width: 60%;
30+
height: 50px;
31+
overflow: hidden;
32+
display: flex;
33+
flex-direction: row;
34+
align-items: center;
35+
justify-content: space-between;
36+
37+
.name,
38+
.version {
39+
display: flex;
40+
flex-direction: row;
41+
align-items: center;
42+
justify-content: flex-start;
43+
height: 25px;
44+
}
45+
}
46+
47+
.version-container {
48+
width: 40%;
49+
height: 50px;
50+
display: flex;
51+
flex-direction: row;
52+
align-items: center;
53+
justify-content: flex-end;
54+
55+
.version-menu {
56+
background-color: $color-bg-white;
57+
border: 1px solid rgba(0, 0, 0, 0.15);
58+
border-radius: 4px;
59+
box-shadow: 0 6px 12px rgba(0, 0, 0, 0.175);
60+
padding: 5px;
61+
margin: 2px 0 0;
62+
63+
ul {
64+
list-style: none;
65+
padding-inline-start: 0;
66+
}
67+
68+
.li-container {
69+
margin-top: 10px;
70+
margin-bottom: 10px;
71+
72+
.btn {
73+
display: inline-block;
74+
margin-bottom: 0;
75+
font-weight: 400;
76+
text-align: center;
77+
white-space: nowrap;
78+
touch-action: manipulation;
79+
cursor: pointer;
80+
background-image: none;
81+
border: 1px solid transparent;
82+
border-radius: 2px;
83+
padding: 6px 12px;
84+
font-size: 14px;
85+
line-height: 1.42857;
86+
user-select: none;
87+
vertical-align: middle;
88+
color: $color-text-white;
89+
}
90+
91+
.btn-primary {
92+
color: $color-text-white;
93+
background-color: $color-bg-blue-dark;
94+
border-color: #2e6da4;
95+
}
96+
}
97+
}
98+
}
99+
}
100+
101+
&.mobile {
102+
height: 500px;
103+
104+
.file-container {
105+
height: 400px;
106+
}
107+
108+
.details-container {
109+
height: 100px;
110+
flex-direction: column;
111+
112+
.version-container,
113+
.name-container {
114+
height: 50px;
115+
width: 100%;
116+
justify-content: center;
117+
align-items: flex-start;
118+
flex-direction: column;
119+
}
120+
}
121+
}
122+
}
Lines changed: 49 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,49 @@
1+
<div local-class='file-renderer-container {{if this.isMobile 'mobile'}}'>
2+
<div local-class='file-container'>
3+
<FileRenderer
4+
@allowCommenting={{this.allowCommenting}}
5+
@download={{this.primaryFile.links.download}}
6+
/>
7+
</div>
8+
9+
<div local-class='details-container'>
10+
<div local-class='name-container'>
11+
<div data-test-selected-file-name local-class='name'>
12+
{{this.primaryFile.name}}
13+
</div>
14+
<div data-test-file-version local-class='version'>
15+
{{t 'preprints.detail.file_renderer.version'}}: {{this.primaryFile.currentVersion}}
16+
</div>
17+
</div>
18+
<div local-class='version-container'>
19+
{{#if this.primaryFileHasVersions}}
20+
<ResponsiveDropdown
21+
@renderInPlace={{true}}
22+
@buttonStyling={{true}}
23+
as |dd|
24+
>
25+
<dd.trigger>
26+
{{t 'preprints.detail.file_renderer.download_previous_versions'}}
27+
<span class='fa fa-caret-down'></span>
28+
</dd.trigger>
29+
<dd.content local-class='version-menu'>
30+
<ul role='menu' tabindex='-1'>
31+
{{#each this.fileVersions as |version|}}
32+
<li role='menuitem' local-class='li-container'>
33+
<OsfLink
34+
data-test-get-started-button
35+
data-analytics-name='Content - Download Previous Version'
36+
local-class='btn btn-primary'
37+
@href={{version.downloadUrl}}
38+
>
39+
{{t 'preprints.detail.file_renderer.version'}} {{version.id}}, {{moment-format version.dateCreated 'MM/DD/YYYY HH:mm:SS'}}
40+
</OsfLink>
41+
</li>
42+
{{/each}}
43+
</ul>
44+
</dd.content>
45+
</ResponsiveDropdown>
46+
{{/if}}
47+
</div>
48+
</div>
49+
</div>

app/preprints/detail/controller.ts

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -46,6 +46,7 @@ export default class PrePrintsDetailController extends Controller {
4646
@service media!: Media;
4747

4848
@tracked fullScreenMFR = false;
49+
@tracked plauditIsReady = false;
4950

5051
metricsStartDate = config.OSF.metricsStartDate;
5152

app/preprints/detail/route.ts

Lines changed: 4 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -17,6 +17,7 @@ import Ready from 'ember-osf-web/services/ready';
1717
import Theme from 'ember-osf-web/services/theme';
1818
import captureException from 'ember-osf-web/utils/capture-exception';
1919
import pathJoin from 'ember-osf-web/utils/path-join';
20+
import PrePrintsDetailController from './controller';
2021

2122
/**
2223
* @module ember-preprints
@@ -59,15 +60,15 @@ export default class PreprintsDetail extends Route {
5960

6061
const primaryFile = await preprint?.get('primaryFile');
6162

63+
primaryFile.versions = await primaryFile?.versions;
64+
6265
this.theme.set('providerType', 'preprint');
6366
this.theme.set('id', provider.id);
6467

6568
const contributors = await preprint?.queryHasMany('contributors');
6669

6770
const license = await preprint?.get('license');
6871

69-
const node = await preprint?.get('node');
70-
7172
const subjects = await preprint?.queryHasMany('subjects');
7273

7374
return {
@@ -78,7 +79,6 @@ export default class PreprintsDetail extends Route {
7879
primaryFile,
7980
license,
8081
subjects,
81-
node,
8282
};
8383

8484
} catch (error) {
@@ -143,6 +143,7 @@ export default class PreprintsDetail extends Route {
143143
}
144144
this.set('headTags', allTags);
145145
this.metaTags.updateHeadTags();
146+
(this.controller as PrePrintsDetailController).plauditIsReady = true;
146147
}
147148
blocker.done();
148149
}

0 commit comments

Comments
 (0)