Allow to toggle video publication date to display absolute date

pull/2154/head
Julien Maulny 2019-10-05 18:10:49 +02:00 committed by Chocobozzz
parent 18c9772876
commit e805020896
6 changed files with 64 additions and 3 deletions

View File

@ -0,0 +1,6 @@
<span
class="date-toggle"
[title]="getTitle()"
[innerHtml]="getContent()"
(click)="toggle()"
></span>

View File

@ -0,0 +1,5 @@
.date-toggle {
&:hover {
cursor: default
}
}

View File

@ -0,0 +1,47 @@
import { Component, Input, OnInit, OnChanges } from '@angular/core'
import { DatePipe } from '@angular/common'
import { FromNowPipe } from '../angular/from-now.pipe'
@Component({
selector: 'my-date-toggle',
templateUrl: './date-toggle.component.html',
styleUrls: [ './date-toggle.component.scss' ],
providers: [ DatePipe, FromNowPipe ]
})
export class DateToggleComponent implements OnInit, OnChanges {
@Input() date: Date
@Input() toggled = false
dateRelative: string
dateAbsolute: string
constructor (
private datePipe: DatePipe,
private fromNowPipe: FromNowPipe
) { }
ngOnInit () {
this.updateDates()
}
ngOnChanges () {
this.updateDates()
}
toggle () {
this.toggled = !this.toggled
}
getTitle () {
return this.toggled ? this.dateRelative : this.dateAbsolute
}
getContent () {
return this.toggled ? this.dateAbsolute : this.dateRelative
}
private updateDates () {
this.dateRelative = this.fromNowPipe.transform(this.date)
this.dateAbsolute = this.datePipe.transform(this.date, 'long')
}
}

View File

@ -73,6 +73,7 @@ import { UserNotificationsComponent } from '@app/shared/users/user-notifications
import { InstanceService } from '@app/shared/instance/instance.service' import { InstanceService } from '@app/shared/instance/instance.service'
import { HtmlRendererService, LinkifierService, MarkdownService } from '@app/shared/renderer' import { HtmlRendererService, LinkifierService, MarkdownService } from '@app/shared/renderer'
import { ConfirmComponent } from '@app/shared/confirm/confirm.component' import { ConfirmComponent } from '@app/shared/confirm/confirm.component'
import { DateToggleComponent } from '@app/shared/date/date-toggle.component'
import { SmallLoaderComponent } from '@app/shared/misc/small-loader.component' import { SmallLoaderComponent } from '@app/shared/misc/small-loader.component'
import { VideoPlaylistService } from '@app/shared/video-playlist/video-playlist.service' import { VideoPlaylistService } from '@app/shared/video-playlist/video-playlist.service'
import { PreviewUploadComponent } from '@app/shared/images/preview-upload.component' import { PreviewUploadComponent } from '@app/shared/images/preview-upload.component'
@ -165,6 +166,7 @@ import { FeatureBooleanComponent } from '@app/shared/instance/feature-boolean.co
TopMenuDropdownComponent, TopMenuDropdownComponent,
UserNotificationsComponent, UserNotificationsComponent,
ConfirmComponent, ConfirmComponent,
DateToggleComponent,
GlobalIconComponent, GlobalIconComponent,
PreviewUploadComponent PreviewUploadComponent
@ -232,6 +234,7 @@ import { FeatureBooleanComponent } from '@app/shared/instance/feature-boolean.co
TopMenuDropdownComponent, TopMenuDropdownComponent,
UserNotificationsComponent, UserNotificationsComponent,
ConfirmComponent, ConfirmComponent,
DateToggleComponent,
GlobalIconComponent, GlobalIconComponent,
PreviewUploadComponent, PreviewUploadComponent,

View File

@ -17,7 +17,7 @@
</a> </a>
<span class="video-miniature-created-at-views"> <span class="video-miniature-created-at-views">
<ng-container *ngIf="displayOptions.date">{{ video.publishedAt | myFromNow }}</ng-container> <my-date-toggle *ngIf="displayOptions.date" [date]="video.publishedAt"></my-date-toggle>
<ng-container *ngIf="displayOptions.date && displayOptions.views"> - </ng-container> <ng-container *ngIf="displayOptions.date && displayOptions.views"> - </ng-container>
<ng-container i18n *ngIf="displayOptions.views">{{ video.views | myNumberFormatter }} views</ng-container> <ng-container i18n *ngIf="displayOptions.views">{{ video.views | myNumberFormatter }} views</ng-container>
</span> </span>

View File

@ -42,7 +42,7 @@
<div class="d-block d-md-none"> <!-- only shown on medium devices, has its conterpart for larger viewports below --> <div class="d-block d-md-none"> <!-- only shown on medium devices, has its conterpart for larger viewports below -->
<h1 class="video-info-name">{{ video.name }}</h1> <h1 class="video-info-name">{{ video.name }}</h1>
<div i18n class="video-info-date-views"> <div i18n class="video-info-date-views">
Published {{ video.publishedAt | myFromNow }} - {{ video.views | myNumberFormatter }} views Published <my-date-toggle [date]="video.publishedAt"></my-date-toggle> - {{ video.views | myNumberFormatter }} views
</div> </div>
</div> </div>
@ -51,7 +51,7 @@
<h1 class="video-info-name">{{ video.name }}</h1> <h1 class="video-info-name">{{ video.name }}</h1>
<div i18n class="video-info-date-views"> <div i18n class="video-info-date-views">
Published {{ video.publishedAt | myFromNow }} - {{ video.views | myNumberFormatter }} views Published <my-date-toggle [date]="video.publishedAt"></my-date-toggle> - {{ video.views | myNumberFormatter }} views
</div> </div>
</div> </div>