Skip to content

Commit 8efe662

Browse files
committed
Merge branch 'release/22.4.0'
2 parents 8332ca5 + 34dd5a2 commit 8efe662

File tree

135 files changed

+2598
-591
lines changed

Some content is hidden

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

135 files changed

+2598
-591
lines changed

CHANGELOG.md

Lines changed: 6 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -4,6 +4,11 @@ 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.4.0] - 2022-3-31
8+
### Added
9+
- Files page redesign phase 1
10+
- Use helpscout links for support pages
11+
712
## [22.3.0] - 2022-3-11
813
### Removed
914
- Sunset quickfiles
@@ -1831,6 +1836,7 @@ and this project adheres to [Semantic Versioning](http://semver.org/spec/v2.0.0.
18311836
### Added
18321837
- Quick Files
18331838

1839+
[22.4.0]: https://github.com/CenterForOpenScience/ember-osf-web/releases/tag/22.4.0
18341840
[22.3.0]: https://github.com/CenterForOpenScience/ember-osf-web/releases/tag/22.3.0
18351841
[22.2.0]: https://github.com/CenterForOpenScience/ember-osf-web/releases/tag/22.2.0
18361842
[22.1.0]: https://github.com/CenterForOpenScience/ember-osf-web/releases/tag/22.1.0

app/application/styles.scss

Lines changed: 2 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -7,4 +7,6 @@
77

88
.Application__page {
99
flex: 1 0 auto;
10+
display: flex;
11+
flex-direction: column;
1012
}
Lines changed: 57 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,57 @@
1+
.Container {
2+
display: flex;
3+
flex-direction: row;
4+
flex-grow: 1;
5+
}
6+
7+
.MainColumn {
8+
flex-grow: 3;
9+
}
10+
11+
.RightColumn {
12+
flex-grow: 1;
13+
border-left: 1px solid #ddd;
14+
flex-basis: 300px;
15+
16+
&.is-closed {
17+
display: none;
18+
}
19+
}
20+
21+
.RightButtons {
22+
@media (max-width: 767px) {
23+
display: flex;
24+
flex-direction: row;
25+
justify-content: space-evenly;
26+
border-top: 1px solid #ddd;
27+
}
28+
flex-grow: 0;
29+
display: flex;
30+
flex-direction: column;
31+
border-left: 1px solid #ddd;
32+
z-index: 1;
33+
}
34+
35+
.Slider {
36+
position: absolute;
37+
width: 100%;
38+
height: 100%;
39+
transform: translateX(-100%);
40+
}
41+
42+
.slide-in {
43+
animation: slide-in 0.5s forwards;
44+
}
45+
46+
.slide-out {
47+
animation: slide-out 0.5s forwards;
48+
}
49+
50+
@keyframes slide-in {
51+
100% { transform: translateX(0%); }
52+
}
53+
54+
@keyframes slide-out {
55+
0% { transform: translateX(0%); }
56+
100% { transform: translateX(-100%); }
57+
}
Lines changed: 28 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,28 @@
1+
<div local-class='Container'>
2+
{{#if @isMobile}}
3+
<div local-class='MainColumn'>
4+
{{yield to='header'}}
5+
<div local-class='RightButtons'>
6+
{{yield to='rightButtons'}}
7+
</div>
8+
<div>
9+
{{#if @rightColumnClosed}}
10+
{{yield to='body'}}
11+
{{else}}
12+
{{yield to='right'}}
13+
{{/if}}
14+
</div>
15+
</div>
16+
{{else}}
17+
<div local-class='MainColumn'>
18+
{{yield to='header'}}
19+
{{yield to='body'}}
20+
</div>
21+
<div local-class='RightColumn {{if @rightColumnClosed 'is-closed'}}'>
22+
{{yield to='right'}}
23+
</div>
24+
<div local-class='RightButtons'>
25+
{{yield to='rightButtons'}}
26+
</div>
27+
{{/if}}
28+
</div>

app/guid-file/controller.ts

Lines changed: 79 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,79 @@
1+
import Controller from '@ember/controller';
2+
import { action } from '@ember/object';
3+
import { inject as service } from '@ember/service';
4+
import { tracked } from '@glimmer/tracking';
5+
import { taskFor } from 'ember-concurrency-ts';
6+
import Media from 'ember-responsive';
7+
import Toast from 'ember-toastr/services/toast';
8+
9+
export default class GuidFile extends Controller {
10+
@service media!: Media;
11+
@service toast!: Toast;
12+
13+
@tracked revisionsOpened = false;
14+
@tracked tagsOpened = false;
15+
16+
@tracked viewedVersion?: number;
17+
18+
get rightColumnClosed() {
19+
return !(this.revisionsOpened || this.tagsOpened);
20+
}
21+
22+
get isMobile() {
23+
return this.media.isMobile;
24+
}
25+
26+
get isTablet() {
27+
return this.media.isTablet;
28+
}
29+
30+
@action
31+
changeVersion(version: number) {
32+
this.viewedVersion = version;
33+
}
34+
35+
@action
36+
toggleRevisions() {
37+
if (!this.model.waterButlerRevisions) {
38+
taskFor(this.model.getRevisions).perform();
39+
}
40+
if (this.isMobile) {
41+
this.revisionsOpened = true;
42+
this.tagsOpened = false;
43+
} else {
44+
if (this.tagsOpened) {
45+
this.tagsOpened = false;
46+
}
47+
this.toggleProperty('revisionsOpened');
48+
}
49+
}
50+
51+
@action
52+
toggleTags() {
53+
if (this.isMobile) {
54+
this.tagsOpened = true;
55+
this.revisionsOpened = false;
56+
} else {
57+
if (this.revisionsOpened) {
58+
this.revisionsOpened = false;
59+
}
60+
this.toggleProperty('tagsOpened');
61+
}
62+
}
63+
64+
@action
65+
toggleFileRenderer() {
66+
if (this.isMobile) {
67+
this.tagsOpened = false;
68+
this.revisionsOpened = false;
69+
} else {
70+
if (this.rightColumnClosed) {
71+
this.revisionsOpened = true;
72+
this.tagsOpened = false;
73+
} else {
74+
this.revisionsOpened = false;
75+
this.tagsOpened = false;
76+
}
77+
}
78+
}
79+
}

app/guid-file/route.ts

Lines changed: 70 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,70 @@
1+
import { action } from '@ember/object';
2+
import Route from '@ember/routing/route';
3+
import { inject as service } from '@ember/service';
4+
import { waitFor } from '@ember/test-waiters';
5+
import HeadTagsService from 'ember-cli-meta-tags/services/head-tags';
6+
import { task } from 'ember-concurrency';
7+
import { taskFor } from 'ember-concurrency-ts';
8+
import moment from 'moment';
9+
10+
import Institution from 'ember-osf-web/models/institution';
11+
import Analytics from 'ember-osf-web/services/analytics';
12+
import MetaTags, { HeadTagDef } from 'ember-osf-web/services/meta-tags';
13+
import Ready from 'ember-osf-web/services/ready';
14+
import OsfStorageFile from 'ember-osf-web/packages/files/osf-storage-file';
15+
import CurrentUserService from 'ember-osf-web/services/current-user';
16+
import RegistrationModel from 'ember-osf-web/models/registration';
17+
18+
export default class GuidFile extends Route {
19+
@service analytics!: Analytics;
20+
@service('head-tags') headTagsService!: HeadTagsService;
21+
@service metaTags!: MetaTags;
22+
@service ready!: Ready;
23+
@service currentUser!: CurrentUserService;
24+
25+
headTags?: HeadTagDef[];
26+
27+
@task
28+
@waitFor
29+
async setHeadTags(model: any) {
30+
const blocker = this.ready.getBlocker();
31+
const dateCreated = model.dateCreated;
32+
const dateModified = model.dateModified;
33+
const institutions = await model.target.get('affiliatedInstitutions');
34+
const metaTagsData = {
35+
title: model.name,
36+
identifier: model.guid,
37+
publishedDate: dateCreated ? moment(dateCreated).format('YYYY-MM-DD') : undefined,
38+
modifiedDate: dateModified ? moment(dateModified).format('YYYY-MM-DD') : undefined,
39+
institution: institutions.map((institution: Institution) => institution.get('name')),
40+
};
41+
this.set('headTags', this.metaTags.getHeadTags(metaTagsData));
42+
this.headTagsService.collectHeadTags();
43+
blocker.done();
44+
}
45+
46+
async model(params: { guid: string }) {
47+
const { guid } = params;
48+
try {
49+
const file = await this.store.findRecord('file', guid, {include: 'target'});
50+
const target = await file.target as unknown as RegistrationModel;
51+
if (target.withdrawn === true) {
52+
this.transitionTo('guid-registration', target.id);
53+
}
54+
const osfStorageFile = new OsfStorageFile(this.currentUser, file);
55+
return osfStorageFile;
56+
} catch (error) {
57+
this.transitionTo('not-found', guid);
58+
throw error;
59+
}
60+
}
61+
62+
afterModel(model: any) {
63+
taskFor(this.setHeadTags).perform(model.fileModel);
64+
}
65+
66+
@action
67+
didTransition() {
68+
this.analytics.trackPage(true, 'files');
69+
}
70+
}

app/guid-file/styles.scss

Lines changed: 76 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,76 @@
1+
.ContentBackground {
2+
display: flex;
3+
flex-grow: 1;
4+
z-index: 1;
5+
justify-content: center;
6+
position: relative;
7+
}
8+
9+
.MainColumn {
10+
display: flex;
11+
flex-direction: column;
12+
}
13+
14+
.FlexContainerRow {
15+
display: flex;
16+
flex-direction: row;
17+
align-items: end;
18+
justify-content: space-between;
19+
padding: 0 20px 20px;
20+
}
21+
22+
.ProjectLink {
23+
margin: 20px;
24+
}
25+
26+
.FileRenderer {
27+
padding: 0 20px 20px;
28+
height: 90vh;
29+
margin-bottom: 15px;
30+
}
31+
32+
.SlideButtons {
33+
margin: 20px 20px 0;
34+
border: 0;
35+
color: $color-link-dark;
36+
background-color: $color-bg-white;
37+
38+
@media (max-width: 767px) {
39+
margin: 0;
40+
}
41+
42+
&.Active {
43+
@media (max-width: 767px) {
44+
background-color: $color-bg-white;
45+
color: $color-bg-black;
46+
}
47+
background-color: $color-bg-gray-light;
48+
}
49+
}
50+
51+
.FileDetail__revisions {
52+
max-height: 100vh;
53+
overflow-y: auto;
54+
}
55+
56+
.FileDetail__right-section-heading {
57+
margin-left: 20px;
58+
}
59+
60+
.FileDetail__revision-list {
61+
list-style-position: inside;
62+
padding-inline: 20px;
63+
}
64+
65+
.FileDetail__no-revisions {
66+
padding: 20px;
67+
text-align: center;
68+
}
69+
70+
.RightContainer {
71+
margin: 0 20px;
72+
73+
h2 {
74+
margin-bottom: 20px;
75+
}
76+
}

0 commit comments

Comments
 (0)