Allow to toggle video publication date to display absolute date
This commit is contained in:
parent
18c9772876
commit
e805020896
6 changed files with 64 additions and 3 deletions
6
client/src/app/shared/date/date-toggle.component.html
Normal file
6
client/src/app/shared/date/date-toggle.component.html
Normal file
|
@ -0,0 +1,6 @@
|
|||
<span
|
||||
class="date-toggle"
|
||||
[title]="getTitle()"
|
||||
[innerHtml]="getContent()"
|
||||
(click)="toggle()"
|
||||
></span>
|
5
client/src/app/shared/date/date-toggle.component.scss
Normal file
5
client/src/app/shared/date/date-toggle.component.scss
Normal file
|
@ -0,0 +1,5 @@
|
|||
.date-toggle {
|
||||
&:hover {
|
||||
cursor: default
|
||||
}
|
||||
}
|
47
client/src/app/shared/date/date-toggle.component.ts
Normal file
47
client/src/app/shared/date/date-toggle.component.ts
Normal 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')
|
||||
}
|
||||
}
|
|
@ -73,6 +73,7 @@ import { UserNotificationsComponent } from '@app/shared/users/user-notifications
|
|||
import { InstanceService } from '@app/shared/instance/instance.service'
|
||||
import { HtmlRendererService, LinkifierService, MarkdownService } from '@app/shared/renderer'
|
||||
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 { VideoPlaylistService } from '@app/shared/video-playlist/video-playlist.service'
|
||||
import { PreviewUploadComponent } from '@app/shared/images/preview-upload.component'
|
||||
|
@ -165,6 +166,7 @@ import { FeatureBooleanComponent } from '@app/shared/instance/feature-boolean.co
|
|||
TopMenuDropdownComponent,
|
||||
UserNotificationsComponent,
|
||||
ConfirmComponent,
|
||||
DateToggleComponent,
|
||||
|
||||
GlobalIconComponent,
|
||||
PreviewUploadComponent
|
||||
|
@ -232,6 +234,7 @@ import { FeatureBooleanComponent } from '@app/shared/instance/feature-boolean.co
|
|||
TopMenuDropdownComponent,
|
||||
UserNotificationsComponent,
|
||||
ConfirmComponent,
|
||||
DateToggleComponent,
|
||||
|
||||
GlobalIconComponent,
|
||||
PreviewUploadComponent,
|
||||
|
|
|
@ -17,7 +17,7 @@
|
|||
</a>
|
||||
|
||||
<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 i18n *ngIf="displayOptions.views">{{ video.views | myNumberFormatter }} views</ng-container>
|
||||
</span>
|
||||
|
|
|
@ -42,7 +42,7 @@
|
|||
<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>
|
||||
<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>
|
||||
|
||||
|
@ -51,7 +51,7 @@
|
|||
<h1 class="video-info-name">{{ video.name }}</h1>
|
||||
|
||||
<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>
|
||||
|
||||
|
|
Loading…
Reference in a new issue