From 6b2d14c4fde02f0e58b30e4a2f092fa936646e19 Mon Sep 17 00:00:00 2001 From: Brian Pilati Date: Tue, 5 Dec 2023 16:09:33 -0700 Subject: [PATCH 1/9] Updates to see the file version --- app/models/file-version.ts | 9 ++ .../preprint-file-render/component.ts | 78 +++++++++++++++++ .../preprint-file-render/styles.scss | 85 +++++++++++++++++++ .../preprint-file-render/template.hbs | 50 +++++++++++ app/preprints/detail/route.ts | 2 + app/preprints/detail/template.hbs | 9 +- .../addon/application/template.hbs | 1 + mirage/config.ts | 4 + mirage/factories/file-version.ts | 30 +++++++ mirage/factories/file.ts | 8 ++ mirage/serializers/file-version.ts | 34 ++++++++ translations/en-us.yml | 3 + 12 files changed, 309 insertions(+), 4 deletions(-) create mode 100644 app/preprints/-components/preprint-file-render/component.ts create mode 100644 app/preprints/-components/preprint-file-render/styles.scss create mode 100644 app/preprints/-components/preprint-file-render/template.hbs create mode 100644 mirage/factories/file-version.ts create mode 100644 mirage/serializers/file-version.ts diff --git a/app/models/file-version.ts b/app/models/file-version.ts index f598e6e944f..aa2df5a3507 100644 --- a/app/models/file-version.ts +++ b/app/models/file-version.ts @@ -1,11 +1,20 @@ import { attr } from '@ember-data/model'; +import { Link } from 'jsonapi-typescript'; +import { NormalLinks } from 'osf-api'; import OsfModel from './osf-model'; +export interface FileVersionLinks extends NormalLinks { + download?: Link; + render?: Link; +} + export default class FileVersionModel extends OsfModel { @attr('number') size!: number; @attr('date') dateCreated!: Date; @attr('fixstring') contentType!: string; + @attr('fixstring') name!: string; + @attr() links!: FileVersionLinks; } declare module 'ember-data/types/registries/model' { diff --git a/app/preprints/-components/preprint-file-render/component.ts b/app/preprints/-components/preprint-file-render/component.ts new file mode 100644 index 00000000000..3148cd1353f --- /dev/null +++ b/app/preprints/-components/preprint-file-render/component.ts @@ -0,0 +1,78 @@ +import Component from '@glimmer/component'; +import { inject as service } from '@ember/service'; +import FileModel from 'ember-osf-web/models/file'; +import PreprintProviderModel from 'ember-osf-web/models/preprint-provider'; +import PreprintModel from 'ember-osf-web/models/preprint'; +import Theme from 'ember-osf-web/services/theme'; +import { tracked } from '@glimmer/tracking'; +import { task } from 'ember-concurrency'; +import { waitFor } from '@ember/test-waiters'; +import { taskFor } from 'ember-concurrency-ts'; +import FileVersionModel from 'ember-osf-web/models/file-version'; + + +interface InputArgs { + preprint: PreprintModel; + provider: PreprintProviderModel; + primaryFile: FileModel; +} + +export interface VersionModel extends FileVersionModel { + downloadUrl?: string; +} + +export default class PreprintFileRender extends Component { + @service theme!: Theme; + + @tracked allowCommenting = false; + @tracked primaryFileHasVersions = false; + @tracked fileVersions: VersionModel[] = []; + + primaryFile = this.args.primaryFile; + provider = this.args.provider; + preprint = this.args.preprint; + + constructor(owner: unknown, args: InputArgs) { + super(owner, args); + + taskFor(this.loadPrimaryFileVersions).perform(); + } + + @task + @waitFor + private async loadPrimaryFileVersions() { + const primaryFileVersions = (await this.primaryFile.versions).toArray(); + this.serializeVersions(primaryFileVersions); + this.primaryFileHasVersions = primaryFileVersions.length > 0; + } + + didReceiveAttrs(): void { + const publishedAndPublic = this.preprint.isPublished && this.preprint.public; + this.allowCommenting = this.provider.allowCommenting && publishedAndPublic; + } + + private serializeVersions(versions: FileVersionModel[]) { + const downloadUrl = this.primaryFile.links.download as string || ''; + const primaryFileGuid = this.primaryFile.guid; + + const directDownloadUrl = downloadUrl.replace( + `download/${primaryFileGuid}`, + `${primaryFileGuid}/download`, + ); + + versions.map((version: VersionModel) => { + const dateFormatted = encodeURIComponent(version.dateCreated.toISOString()); + const displayName = version.name.replace(/(\.\w+)?$/, ext => `-${dateFormatted}${ext}`); + + this.fileVersions.push( + { + name: version.name, + id: version.id, + dateCreated: version.dateCreated, + downloadUrl: `${directDownloadUrl}?version=${version.id}&displayName=${displayName}`, + } as VersionModel, + ); + return version; + }); + } +} diff --git a/app/preprints/-components/preprint-file-render/styles.scss b/app/preprints/-components/preprint-file-render/styles.scss new file mode 100644 index 00000000000..59ff959bfdb --- /dev/null +++ b/app/preprints/-components/preprint-file-render/styles.scss @@ -0,0 +1,85 @@ +// stylelint-disable max-nesting-depth, selector-max-compound-selectors + +.file-renderer-container { + width: 100%; + height: 1150px; + display: flex; + flex-direction: column; + align-items: flex-start; + justify-content: flex-start; + + .file-container { + width: 100%; + height: 1100px; + display: flex; + flex-direction: column; + align-items: flex-start; + justify-content: flex-start; + } + + .details-container { + width: 100%; + height: 50px; + display: flex; + flex-direction: row; + align-items: center; + justify-content: flex-start; + + .name { + width: 60%; + overflow: hidden; + } + + .version-container { + width: 40%; + display: flex; + flex-direction: row; + align-items: center; + justify-content: flex-end; + + .version-menu { + background-color: $color-bg-white; + border: 1px solid rgba(0, 0, 0, 0.15); + border-radius: 4px; + box-shadow: 0 6px 12px rgba(0, 0, 0, 0.175); + padding: 5px; + margin: 2px 0 0; + + ul { + list-style: none; + padding-inline-start: 0; + } + + .li-container { + margin-top: 10px; + margin-bottom: 10px; + + .btn { + display: inline-block; + margin-bottom: 0; + font-weight: 400; + text-align: center; + white-space: nowrap; + touch-action: manipulation; + cursor: pointer; + background-image: none; + border: 1px solid transparent; + border-radius: 2px; + padding: 6px 12px; + font-size: 14px; + line-height: 1.42857; + user-select: none; + vertical-align: middle; + color: $color-text-white; + } + + .btn-primary { + color: $color-text-white; + background-color: $color-bg-blue-dark; + border-color: #2e6da4; + } + } + } + } + } +} diff --git a/app/preprints/-components/preprint-file-render/template.hbs b/app/preprints/-components/preprint-file-render/template.hbs new file mode 100644 index 00000000000..0c0b618b72b --- /dev/null +++ b/app/preprints/-components/preprint-file-render/template.hbs @@ -0,0 +1,50 @@ +
+
+ +
+ +
+
+ + {{this.primaryFile.name}} + + + {{t 'preprints.detail.file_renderer.version'}}: {{this.primaryFile.currentVersion}} + +
+
+ {{#if this.primaryFileHasVersions}} + + + {{t 'preprints.detail.file_renderer.download_previous_versions'}} + + + +
    + {{#each this.fileVersions as |version|}} +
  • + + {{t 'preprints.detail.file_renderer.version'}} {{version.id}}, {{moment-format version.dateCreated 'MM/DD/YYYY HH:mm:SS'}} + +
  • + {{/each}} +
+
+
+ {{/if}} +
+
+
\ No newline at end of file diff --git a/app/preprints/detail/route.ts b/app/preprints/detail/route.ts index c2d43906eba..250115bd6a3 100644 --- a/app/preprints/detail/route.ts +++ b/app/preprints/detail/route.ts @@ -60,6 +60,8 @@ export default class PreprintsDetail extends Route { const primaryFile = await preprint?.get('primaryFile'); + primaryFile.versions = await primaryFile?.versions; + this.theme.set('providerType', 'preprint'); this.theme.set('id', provider.id); diff --git a/app/preprints/detail/template.hbs b/app/preprints/detail/template.hbs index bbfb7b4e112..22530e878a7 100644 --- a/app/preprints/detail/template.hbs +++ b/app/preprints/detail/template.hbs @@ -61,10 +61,11 @@ {{else}} {{#if this.model.preprint.public}} - +
{{t this.dateLabel}}: {{moment-format this.model.dateCreated 'MMMM DD, YYYY'}}
diff --git a/lib/analytics-page/addon/application/template.hbs b/lib/analytics-page/addon/application/template.hbs index 5995ab5cbf1..3c2b9bcb143 100644 --- a/lib/analytics-page/addon/application/template.hbs +++ b/lib/analytics-page/addon/application/template.hbs @@ -110,6 +110,7 @@ {{t (get this.timespanIntlKeys this.timespan)}} + ({ + id: guid('file - version'), + afterCreate: (fileVersion/* , server: Server */) => { + fileVersion.update({ + size: faker.random.number(1000), + contentType: 'application/octet-stream', + dateCreated: faker.date.past(2, new Date(2018, 0, 0)), + name: faker.system.commonFileName(faker.system.commonFileExt()), + }); + }, +}); + +declare module 'ember-cli-mirage/types/registries/model' { + export default interface MirageModelRegistry { + 'file-version': FileVersionModel; + } // eslint-disable-line semi +} + +declare module 'ember-cli-mirage/types/registries/schema' { + export default interface MirageSchemaRegistry { + 'file-version': FileVersionModel; + } // eslint-disable-line semi +} diff --git a/mirage/factories/file.ts b/mirage/factories/file.ts index 3af6082d4e5..c67e9544478 100644 --- a/mirage/factories/file.ts +++ b/mirage/factories/file.ts @@ -27,8 +27,16 @@ export default Factory.extend({ id: newObj.id, referentType: newObj.modelName, }); + + const versions = [ + server.create('file-version'), + server.create('file-version'), + server.create('file-version'), + ]; + newObj.update({ guid: newObj.id, + versions, }); }, diff --git a/mirage/serializers/file-version.ts b/mirage/serializers/file-version.ts new file mode 100644 index 00000000000..20d05add045 --- /dev/null +++ b/mirage/serializers/file-version.ts @@ -0,0 +1,34 @@ +import { ModelInstance } from 'ember-cli-mirage'; +import config from 'ember-osf-web/config/environment'; +import FileVersionModel from 'ember-osf-web/models/file-version'; + +import ApplicationSerializer, { SerializedRelationships } from './application'; + +const { OSF: { apiUrl} } = config; + +export default class FileVersionSerializer extends ApplicationSerializer { + // eslint-disable-next-line + buildRelationships(model: ModelInstance) { + const relationships: SerializedRelationships = {}; + return relationships; + } + + buildNormalLinks(model: ModelInstance) { + const { id } = model; + if (model.links) { + return { + ...super.buildNormalLinks(model), + download: model.links.download, + html: model.links.html, + render: model.links.render, + }; + } else { + return { + ...super.buildNormalLinks(model), + html: `${apiUrl}/wb/files/${id}?version=${model.id}`, + download: `${apiUrl}/wb/files/${id}/download/?version=${model.id}`, + render: `${apiUrl}/wb/files/${id}/render/?version=${model.id}`, + }; + } + } +} diff --git a/translations/en-us.yml b/translations/en-us.yml index e02a124104c..0d08efa3e29 100644 --- a/translations/en-us.yml +++ b/translations/en-us.yml @@ -1156,6 +1156,9 @@ preprints: supplemental_materials: 'Supplemental Materials' tags: 'Tags' reason_for_withdrawal: 'Reason for withdrawal' + file_renderer: + download_previous_versions: 'Download previous versions' + version: 'Version' author-assertions: header_label: 'Author Assertions' describe: 'Describe' From 317eb91ab2c31db48086b398086e9d986009edd0 Mon Sep 17 00:00:00 2001 From: Brian Pilati Date: Wed, 6 Dec 2023 10:12:03 -0700 Subject: [PATCH 2/9] Added mobile formatting, a trait for different images --- .../preprint-file-render/component.ts | 6 +++ .../preprint-file-render/styles.scss | 39 ++++++++++++++++++- .../preprint-file-render/template.hbs | 12 +++--- app/preprints/detail/styles.scss | 2 +- mirage/factories/preprint.ts | 19 ++++++++- mirage/scenarios/preprints.ts | 2 +- 6 files changed, 70 insertions(+), 10 deletions(-) diff --git a/app/preprints/-components/preprint-file-render/component.ts b/app/preprints/-components/preprint-file-render/component.ts index 3148cd1353f..e43c4f7ca57 100644 --- a/app/preprints/-components/preprint-file-render/component.ts +++ b/app/preprints/-components/preprint-file-render/component.ts @@ -9,6 +9,7 @@ import { task } from 'ember-concurrency'; import { waitFor } from '@ember/test-waiters'; import { taskFor } from 'ember-concurrency-ts'; import FileVersionModel from 'ember-osf-web/models/file-version'; +import Media from 'ember-responsive'; interface InputArgs { @@ -23,6 +24,7 @@ export interface VersionModel extends FileVersionModel { export default class PreprintFileRender extends Component { @service theme!: Theme; + @service media!: Media; @tracked allowCommenting = false; @tracked primaryFileHasVersions = false; @@ -75,4 +77,8 @@ export default class PreprintFileRender extends Component { return version; }); } + + get isMobile() { + return this.media.isMobile; + } } diff --git a/app/preprints/-components/preprint-file-render/styles.scss b/app/preprints/-components/preprint-file-render/styles.scss index 59ff959bfdb..7b03c399330 100644 --- a/app/preprints/-components/preprint-file-render/styles.scss +++ b/app/preprints/-components/preprint-file-render/styles.scss @@ -25,13 +25,28 @@ align-items: center; justify-content: flex-start; - .name { + .name-container { width: 60%; + height: 50px; overflow: hidden; + display: flex; + flex-direction: row; + align-items: center; + justify-content: space-between; + + .name, + .version { + display: flex; + flex-direction: row; + align-items: center; + justify-content: flex-start; + height: 25px; + } } .version-container { width: 40%; + height: 50px; display: flex; flex-direction: row; align-items: center; @@ -82,4 +97,26 @@ } } } + + &.mobile { + height: 500px; + + .file-container { + height: 400px; + } + + .details-container { + height: 100px; + flex-direction: column; + + .version-container, + .name-container { + height: 50px; + width: 100%; + justify-content: center; + align-items: flex-start; + flex-direction: column; + } + } + } } diff --git a/app/preprints/-components/preprint-file-render/template.hbs b/app/preprints/-components/preprint-file-render/template.hbs index 0c0b618b72b..e953f318336 100644 --- a/app/preprints/-components/preprint-file-render/template.hbs +++ b/app/preprints/-components/preprint-file-render/template.hbs @@ -1,4 +1,4 @@ -
+
-
- +
+
{{this.primaryFile.name}} - - +
+
{{t 'preprints.detail.file_renderer.version'}}: {{this.primaryFile.currentVersion}} - +
{{#if this.primaryFileHasVersions}} diff --git a/app/preprints/detail/styles.scss b/app/preprints/detail/styles.scss index cf86e1a40dc..9193fea10e7 100644 --- a/app/preprints/detail/styles.scss +++ b/app/preprints/detail/styles.scss @@ -204,7 +204,7 @@ } .data-container-left { - height: 481px; + height: 500px; .file-description-container { flex-direction: column; diff --git a/mirage/factories/preprint.ts b/mirage/factories/preprint.ts index 6d2b199a69a..c50f2c33f7a 100644 --- a/mirage/factories/preprint.ts +++ b/mirage/factories/preprint.ts @@ -28,6 +28,7 @@ export interface PreprintTraits { acceptedWithdrawalComment: Trait; rejectedWithdrawalNoComment: Trait; reviewAction: Trait; + pngImage: Trait; } export default Factory.extend({ @@ -86,7 +87,8 @@ export default Factory.extend({ delete: 'http://localhost:4200/assets/osf-assets/mfr-test.pdf', html: 'http://localhost:4200/assets/osf-assets/mfr-test.pdf', upload: 'http://localhost:4200/assets/osf-assets/mfr-test.pdf', - download: 'http://localhost:4200/assets/osf-assets/mfr-test.pdf', + // download: 'http://localhost:4200/assets/osf-assets/mfr-test.pdf', + download: 'http://localhost:4200/assets/osf-assets/amazon.png', }, }); @@ -198,6 +200,21 @@ export default Factory.extend({ }, }), + pngImage: trait({ + afterCreate(preprint) { + preprint.update({ + links: { + info: 'http://localhost:4200/assets/osf-assets/amazon.png', + move: 'http://localhost:4200/assets/osf-assets/amazon.png', + delete: 'http://localhost:4200/assets/osf-assets/amazon.png', + html: 'http://localhost:4200/assets/osf-assets/amazon.png', + upload: 'http://localhost:4200/assets/osf-assets/amazon.png', + download: 'http://localhost:4200/assets/osf-assets/amazon.png', + }, + }); + }, + }), + }); declare module 'ember-cli-mirage/types/registries/model' { diff --git a/mirage/scenarios/preprints.ts b/mirage/scenarios/preprints.ts index 6a1cfce7b90..13121ef60a1 100644 --- a/mirage/scenarios/preprints.ts +++ b/mirage/scenarios/preprints.ts @@ -134,7 +134,7 @@ function buildOSF( hasCoi: false, isPreprintDoi: false, isPublished: false, - }), 'isContributor'); + }), 'isContributor', 'pngImage'); const notPublishedPreprint = server.create('preprint', { provider: osf, From 24c59df669eef0cddb4fdce886a95eb35ac84723 Mon Sep 17 00:00:00 2001 From: Brian Pilati Date: Wed, 6 Dec 2023 11:55:11 -0700 Subject: [PATCH 3/9] Fixed the sorting and versioning on the file versions --- app/preprints/-components/preprint-file-render/component.ts | 4 +++- mirage/factories/file-version.ts | 1 + mirage/factories/preprint.ts | 3 +-- 3 files changed, 5 insertions(+), 3 deletions(-) diff --git a/app/preprints/-components/preprint-file-render/component.ts b/app/preprints/-components/preprint-file-render/component.ts index e43c4f7ca57..c49212af460 100644 --- a/app/preprints/-components/preprint-file-render/component.ts +++ b/app/preprints/-components/preprint-file-render/component.ts @@ -43,7 +43,9 @@ export default class PreprintFileRender extends Component { @task @waitFor private async loadPrimaryFileVersions() { - const primaryFileVersions = (await this.primaryFile.versions).toArray(); + const primaryFileVersions = (await this.primaryFile.queryHasMany('versions', { + sort: '-id', 'page[size]': 50, + })).toArray(); this.serializeVersions(primaryFileVersions); this.primaryFileHasVersions = primaryFileVersions.length > 0; } diff --git a/mirage/factories/file-version.ts b/mirage/factories/file-version.ts index afd0ee213f0..2c31390b520 100644 --- a/mirage/factories/file-version.ts +++ b/mirage/factories/file-version.ts @@ -9,6 +9,7 @@ export default Factory.extend({ id: guid('file - version'), afterCreate: (fileVersion/* , server: Server */) => { fileVersion.update({ + id : faker.random.number(1000), size: faker.random.number(1000), contentType: 'application/octet-stream', dateCreated: faker.date.past(2, new Date(2018, 0, 0)), diff --git a/mirage/factories/preprint.ts b/mirage/factories/preprint.ts index c50f2c33f7a..0bee1ebcd34 100644 --- a/mirage/factories/preprint.ts +++ b/mirage/factories/preprint.ts @@ -87,8 +87,7 @@ export default Factory.extend({ delete: 'http://localhost:4200/assets/osf-assets/mfr-test.pdf', html: 'http://localhost:4200/assets/osf-assets/mfr-test.pdf', upload: 'http://localhost:4200/assets/osf-assets/mfr-test.pdf', - // download: 'http://localhost:4200/assets/osf-assets/mfr-test.pdf', - download: 'http://localhost:4200/assets/osf-assets/amazon.png', + download: 'http://localhost:4200/assets/osf-assets/mfr-test.pdf', }, }); From 5f88afbd1fbad5e9ed49ad9dc379d2869b31e798 Mon Sep 17 00:00:00 2001 From: Brian Pilati Date: Wed, 6 Dec 2023 13:33:58 -0700 Subject: [PATCH 4/9] Updates per the PR --- app/preprints/-components/preprint-file-render/template.hbs | 1 - mirage/factories/file.ts | 6 +----- 2 files changed, 1 insertion(+), 6 deletions(-) diff --git a/app/preprints/-components/preprint-file-render/template.hbs b/app/preprints/-components/preprint-file-render/template.hbs index e953f318336..619b96b0aad 100644 --- a/app/preprints/-components/preprint-file-render/template.hbs +++ b/app/preprints/-components/preprint-file-render/template.hbs @@ -3,7 +3,6 @@
diff --git a/mirage/factories/file.ts b/mirage/factories/file.ts index c67e9544478..05938d733d0 100644 --- a/mirage/factories/file.ts +++ b/mirage/factories/file.ts @@ -28,11 +28,7 @@ export default Factory.extend({ referentType: newObj.modelName, }); - const versions = [ - server.create('file-version'), - server.create('file-version'), - server.create('file-version'), - ]; + const versions = server.createList('file-version', 3); newObj.update({ guid: newObj.id, From 3b274d898613b6e28d6fecc30ca22f20df3ccfff Mon Sep 17 00:00:00 2001 From: Brian Pilati Date: Wed, 6 Dec 2023 14:11:54 -0700 Subject: [PATCH 5/9] Updated the file-renderer to use "allowCommenting". Updated the tests --- .../addon/components/file-renderer/component.ts | 8 +++++--- .../components/file-renderer/component-test.ts | 8 +++++--- 2 files changed, 10 insertions(+), 6 deletions(-) diff --git a/lib/osf-components/addon/components/file-renderer/component.ts b/lib/osf-components/addon/components/file-renderer/component.ts index 178d41d781c..38fad59de51 100644 --- a/lib/osf-components/addon/components/file-renderer/component.ts +++ b/lib/osf-components/addon/components/file-renderer/component.ts @@ -29,7 +29,7 @@ interface Params { * ```handlebars * {{file-renderer * download=model.links.download - * width="800" height="1000" allowfullscreen=true}} + * width="800" height="1000" allowfullscreen=true allowCommenting=true}} * ``` * @class FileRenderer */ @@ -45,18 +45,20 @@ export default class FileRenderer extends Component { width = '100%'; height = '100%'; allowfullscreen = true; + allowCommenting = false; version?: number; @tracked isLoading = true; - @computed('download', 'params', 'version') + @computed('download', 'params', 'version', 'allowCommenting') get downloadUrl(): string { - const { download, params, version } = this; + const { download, params, version, allowCommenting } = this; if (!download) { return ''; } const downloadLink = new URL(download); downloadLink.searchParams.set('direct', params.direct || ''); downloadLink.searchParams.set('mode', params.mode); + downloadLink.searchParams.set('allowCommenting', allowCommenting.toString()); if (version) { downloadLink.searchParams.set('version', version.toString()); } diff --git a/tests/integration/components/file-renderer/component-test.ts b/tests/integration/components/file-renderer/component-test.ts index 4b6416fe49e..24bd321fda6 100644 --- a/tests/integration/components/file-renderer/component-test.ts +++ b/tests/integration/components/file-renderer/component-test.ts @@ -28,7 +28,7 @@ module('Integration | Component | file-renderer', hooks => { assert.equal(iframe.getAttribute('width'), '100%'); assert.equal( iframe.getAttribute('src'), - `${renderUrl}?url=${encodeURIComponent(`${download}?direct=&mode=render`)}`, + `${renderUrl}?url=${encodeURIComponent(`${download}?direct=&mode=render&allowCommenting=false`)}`, ); }); @@ -37,10 +37,12 @@ module('Integration | Component | file-renderer', hooks => { download: 'http://cos.io/', height: 500, width: 500, + allowCommenting: true, }); await render(hbs` - {{file-renderer download=this.download height=this.height width=this.width}} + {{file-renderer download=this.download height=this.height width=this.width + allowCommenting=this.allowCommenting}} `); const iframe = this.element.querySelector('iframe') as HTMLIFrameElement; @@ -53,7 +55,7 @@ module('Integration | Component | file-renderer', hooks => { assert.equal(iframe.getAttribute('width'), '500'); assert.equal( iframe.getAttribute('src'), - `${renderUrl}?url=${encodeURIComponent('http://cos.io/?direct=&mode=render')}`, + `${renderUrl}?url=${encodeURIComponent('http://cos.io/?direct=&mode=render&allowCommenting=true')}`, ); }); }); From e34d0d425562030dd740a68a90331f5698e78a8a Mon Sep 17 00:00:00 2001 From: Brian Pilati Date: Thu, 7 Dec 2023 13:31:40 -0700 Subject: [PATCH 6/9] Revert "Updated the file-renderer to use "allowCommenting". Updated the tests" This reverts commit 3b274d898613b6e28d6fecc30ca22f20df3ccfff. --- .../addon/components/file-renderer/component.ts | 8 +++----- .../components/file-renderer/component-test.ts | 8 +++----- 2 files changed, 6 insertions(+), 10 deletions(-) diff --git a/lib/osf-components/addon/components/file-renderer/component.ts b/lib/osf-components/addon/components/file-renderer/component.ts index 38fad59de51..178d41d781c 100644 --- a/lib/osf-components/addon/components/file-renderer/component.ts +++ b/lib/osf-components/addon/components/file-renderer/component.ts @@ -29,7 +29,7 @@ interface Params { * ```handlebars * {{file-renderer * download=model.links.download - * width="800" height="1000" allowfullscreen=true allowCommenting=true}} + * width="800" height="1000" allowfullscreen=true}} * ``` * @class FileRenderer */ @@ -45,20 +45,18 @@ export default class FileRenderer extends Component { width = '100%'; height = '100%'; allowfullscreen = true; - allowCommenting = false; version?: number; @tracked isLoading = true; - @computed('download', 'params', 'version', 'allowCommenting') + @computed('download', 'params', 'version') get downloadUrl(): string { - const { download, params, version, allowCommenting } = this; + const { download, params, version } = this; if (!download) { return ''; } const downloadLink = new URL(download); downloadLink.searchParams.set('direct', params.direct || ''); downloadLink.searchParams.set('mode', params.mode); - downloadLink.searchParams.set('allowCommenting', allowCommenting.toString()); if (version) { downloadLink.searchParams.set('version', version.toString()); } diff --git a/tests/integration/components/file-renderer/component-test.ts b/tests/integration/components/file-renderer/component-test.ts index 24bd321fda6..4b6416fe49e 100644 --- a/tests/integration/components/file-renderer/component-test.ts +++ b/tests/integration/components/file-renderer/component-test.ts @@ -28,7 +28,7 @@ module('Integration | Component | file-renderer', hooks => { assert.equal(iframe.getAttribute('width'), '100%'); assert.equal( iframe.getAttribute('src'), - `${renderUrl}?url=${encodeURIComponent(`${download}?direct=&mode=render&allowCommenting=false`)}`, + `${renderUrl}?url=${encodeURIComponent(`${download}?direct=&mode=render`)}`, ); }); @@ -37,12 +37,10 @@ module('Integration | Component | file-renderer', hooks => { download: 'http://cos.io/', height: 500, width: 500, - allowCommenting: true, }); await render(hbs` - {{file-renderer download=this.download height=this.height width=this.width - allowCommenting=this.allowCommenting}} + {{file-renderer download=this.download height=this.height width=this.width}} `); const iframe = this.element.querySelector('iframe') as HTMLIFrameElement; @@ -55,7 +53,7 @@ module('Integration | Component | file-renderer', hooks => { assert.equal(iframe.getAttribute('width'), '500'); assert.equal( iframe.getAttribute('src'), - `${renderUrl}?url=${encodeURIComponent('http://cos.io/?direct=&mode=render&allowCommenting=true')}`, + `${renderUrl}?url=${encodeURIComponent('http://cos.io/?direct=&mode=render')}`, ); }); }); From 5a468edfd84ce42f1e95ff5aec1d762b478186b7 Mon Sep 17 00:00:00 2001 From: Brian Pilati Date: Thu, 7 Dec 2023 13:34:48 -0700 Subject: [PATCH 7/9] Fixed all the issues from the PR --- mirage/factories/file-version.ts | 23 ++++++++++++----------- mirage/factories/preprint.ts | 17 ----------------- mirage/scenarios/preprints.ts | 2 +- mirage/serializers/file-version.ts | 22 ++++++---------------- 4 files changed, 19 insertions(+), 45 deletions(-) diff --git a/mirage/factories/file-version.ts b/mirage/factories/file-version.ts index 2c31390b520..ef273374f1c 100644 --- a/mirage/factories/file-version.ts +++ b/mirage/factories/file-version.ts @@ -3,18 +3,19 @@ import faker from 'faker'; import FileVersionModel from 'ember-osf-web/models/file-version'; -import { guid } from './utils'; - export default Factory.extend({ - id: guid('file - version'), - afterCreate: (fileVersion/* , server: Server */) => { - fileVersion.update({ - id : faker.random.number(1000), - size: faker.random.number(1000), - contentType: 'application/octet-stream', - dateCreated: faker.date.past(2, new Date(2018, 0, 0)), - name: faker.system.commonFileName(faker.system.commonFileExt()), - }); + id() { + return faker.random.number(1000); + }, + size() { + return faker.random.number(1000); + }, + contentType: 'application/octet-stream', + dateCreated() { + return faker.date.past(2, new Date(2018, 0, 0)); + }, + name() { + return faker.system.commonFileName(faker.system.commonFileExt()); }, }); diff --git a/mirage/factories/preprint.ts b/mirage/factories/preprint.ts index 0bee1ebcd34..e984d08193d 100644 --- a/mirage/factories/preprint.ts +++ b/mirage/factories/preprint.ts @@ -28,7 +28,6 @@ export interface PreprintTraits { acceptedWithdrawalComment: Trait; rejectedWithdrawalNoComment: Trait; reviewAction: Trait; - pngImage: Trait; } export default Factory.extend({ @@ -198,22 +197,6 @@ export default Factory.extend({ preprint.update({ reviewActions: [preprintReviewAction]}); }, }), - - pngImage: trait({ - afterCreate(preprint) { - preprint.update({ - links: { - info: 'http://localhost:4200/assets/osf-assets/amazon.png', - move: 'http://localhost:4200/assets/osf-assets/amazon.png', - delete: 'http://localhost:4200/assets/osf-assets/amazon.png', - html: 'http://localhost:4200/assets/osf-assets/amazon.png', - upload: 'http://localhost:4200/assets/osf-assets/amazon.png', - download: 'http://localhost:4200/assets/osf-assets/amazon.png', - }, - }); - }, - }), - }); declare module 'ember-cli-mirage/types/registries/model' { diff --git a/mirage/scenarios/preprints.ts b/mirage/scenarios/preprints.ts index 13121ef60a1..6a1cfce7b90 100644 --- a/mirage/scenarios/preprints.ts +++ b/mirage/scenarios/preprints.ts @@ -134,7 +134,7 @@ function buildOSF( hasCoi: false, isPreprintDoi: false, isPublished: false, - }), 'isContributor', 'pngImage'); + }), 'isContributor'); const notPublishedPreprint = server.create('preprint', { provider: osf, diff --git a/mirage/serializers/file-version.ts b/mirage/serializers/file-version.ts index 20d05add045..aa4a7dd7a9e 100644 --- a/mirage/serializers/file-version.ts +++ b/mirage/serializers/file-version.ts @@ -14,21 +14,11 @@ export default class FileVersionSerializer extends ApplicationSerializer) { - const { id } = model; - if (model.links) { - return { - ...super.buildNormalLinks(model), - download: model.links.download, - html: model.links.html, - render: model.links.render, - }; - } else { - return { - ...super.buildNormalLinks(model), - html: `${apiUrl}/wb/files/${id}?version=${model.id}`, - download: `${apiUrl}/wb/files/${id}/download/?version=${model.id}`, - render: `${apiUrl}/wb/files/${id}/render/?version=${model.id}`, - }; - } + return { + ...super.buildNormalLinks(model), + html: `${apiUrl}/wb/files/${model.id}?version=${model.id}`, + download: `${apiUrl}/wb/files/${model.id}/download/?version=${model.id}`, + render: `${apiUrl}/wb/files/${model.id}/render/?version=${model.id}`, + }; } } From 3934dbc8505c76e5a490cc6196a87cb3539a9ade Mon Sep 17 00:00:00 2001 From: Brian Pilati Date: Thu, 7 Dec 2023 14:50:57 -0700 Subject: [PATCH 8/9] Fixed the date created issue --- app/preprints/detail/template.hbs | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/app/preprints/detail/template.hbs b/app/preprints/detail/template.hbs index 22530e878a7..cb89a234e4d 100644 --- a/app/preprints/detail/template.hbs +++ b/app/preprints/detail/template.hbs @@ -68,7 +68,7 @@ >
-
{{t this.dateLabel}}: {{moment-format this.model.dateCreated 'MMMM DD, YYYY'}}
+
{{t this.dateLabel}}: {{moment-format this.model.preprint.dateCreated 'MMMM DD, YYYY'}}
{{#unless this.isMobile}}
|
{{/unless}} From faf045cd129110273c0f632409f31bbbab6bc278 Mon Sep 17 00:00:00 2001 From: Brian Pilati Date: Thu, 7 Dec 2023 15:10:40 -0700 Subject: [PATCH 9/9] A few minor fixes --- .../-components/preprint-file-render/component.ts | 7 ++----- .../-components/preprint-file-render/template.hbs | 2 +- 2 files changed, 3 insertions(+), 6 deletions(-) diff --git a/app/preprints/-components/preprint-file-render/component.ts b/app/preprints/-components/preprint-file-render/component.ts index c49212af460..a7cd225fc2a 100644 --- a/app/preprints/-components/preprint-file-render/component.ts +++ b/app/preprints/-components/preprint-file-render/component.ts @@ -38,6 +38,8 @@ export default class PreprintFileRender extends Component { super(owner, args); taskFor(this.loadPrimaryFileVersions).perform(); + + this.allowCommenting = this.provider.allowCommenting && this.preprint.isPublished && this.preprint.public; } @task @@ -50,11 +52,6 @@ export default class PreprintFileRender extends Component { this.primaryFileHasVersions = primaryFileVersions.length > 0; } - didReceiveAttrs(): void { - const publishedAndPublic = this.preprint.isPublished && this.preprint.public; - this.allowCommenting = this.provider.allowCommenting && publishedAndPublic; - } - private serializeVersions(versions: FileVersionModel[]) { const downloadUrl = this.primaryFile.links.download as string || ''; const primaryFileGuid = this.primaryFile.guid; diff --git a/app/preprints/-components/preprint-file-render/template.hbs b/app/preprints/-components/preprint-file-render/template.hbs index 619b96b0aad..badebe2a5c8 100644 --- a/app/preprints/-components/preprint-file-render/template.hbs +++ b/app/preprints/-components/preprint-file-render/template.hbs @@ -22,7 +22,7 @@ @buttonStyling={{true}} as |dd| > - + {{t 'preprints.detail.file_renderer.download_previous_versions'}}