X-Git-Url: https://git.immae.eu/?a=blobdiff_plain;f=client%2Fsrc%2Fapp%2F%2Bmy-account%2Fmy-account-video-channels%2Fmy-account-video-channels.component.ts;h=27a1576213cb853be9797a877ad6783f19a8355e;hb=747c562837e37f2fa455e8ef62165e9bb4e365f1;hp=da2c5bcd3b37531dea9ad14b085bd2281e934bd6;hpb=73471b1a52f242e86364ffb077ea6cadb3b07ae2;p=github%2FChocobozzz%2FPeerTube.git diff --git a/client/src/app/+my-account/my-account-video-channels/my-account-video-channels.component.ts b/client/src/app/+my-account/my-account-video-channels/my-account-video-channels.component.ts index da2c5bcd3..27a157621 100644 --- a/client/src/app/+my-account/my-account-video-channels/my-account-video-channels.component.ts +++ b/client/src/app/+my-account/my-account-video-channels/my-account-video-channels.component.ts @@ -4,9 +4,11 @@ import { AuthService } from '../../core/auth' import { ConfirmService } from '../../core/confirm' import { VideoChannel } from '@app/shared/video-channel/video-channel.model' import { VideoChannelService } from '@app/shared/video-channel/video-channel.service' +import { ScreenService } from '@app/shared/misc/screen.service' import { User } from '@app/shared' import { flatMap } from 'rxjs/operators' import { I18n } from '@ngx-translate/i18n-polyfill' +import { minBy, maxBy } from 'lodash-es' @Component({ selector: 'my-account-video-channels', @@ -15,6 +17,9 @@ import { I18n } from '@ngx-translate/i18n-polyfill' }) export class MyAccountVideoChannelsComponent implements OnInit { videoChannels: VideoChannel[] = [] + videoChannelsData: any[] + videoChannelsMinimumDailyViews = 0 + videoChannelsMaximumDailyViews: number private user: User @@ -23,6 +28,7 @@ export class MyAccountVideoChannelsComponent implements OnInit { private notifier: Notifier, private confirmService: ConfirmService, private videoChannelService: VideoChannelService, + private screenService: ScreenService, private i18n: I18n ) {} @@ -32,11 +38,64 @@ export class MyAccountVideoChannelsComponent implements OnInit { this.loadVideoChannels() } + get isInSmallView () { + return this.screenService.isInSmallView() + } + + get chartOptions () { + return { + legend: { + display: false + }, + scales: { + xAxes: [{ + display: false + }], + yAxes: [{ + display: false, + ticks: { + min: Math.max(0, this.videoChannelsMinimumDailyViews - (3 * this.videoChannelsMaximumDailyViews / 100)), + max: this.videoChannelsMaximumDailyViews + } + }] + }, + layout: { + padding: { + left: 15, + right: 15, + top: 10, + bottom: 0 + } + }, + elements: { + point: { + radius: 0 + } + }, + tooltips: { + mode: 'index', + intersect: false, + custom: function (tooltip: any) { + if (!tooltip) return + // disable displaying the color box + tooltip.displayColors = false + }, + callbacks: { + label: (tooltip: any, data: any) => `${tooltip.value} views` + } + }, + hover: { + mode: 'index', + intersect: false + } + } + } + async deleteVideoChannel (videoChannel: VideoChannel) { const res = await this.confirmService.confirmWithInput( this.i18n( - 'Do you really want to delete {{channelDisplayName}}? It will delete all videos uploaded in this channel, ' + - 'and you will not be able to create another channel with the same name ({{channelName}})!', + // tslint:disable + 'Do you really want to delete {{channelDisplayName}}? It will delete all videos uploaded in this channel, and you will not be able to create another channel with the same name ({{channelName}})!', { channelDisplayName: videoChannel.displayName, channelName: videoChannel.name } ), this.i18n( @@ -63,7 +122,22 @@ export class MyAccountVideoChannelsComponent implements OnInit { private loadVideoChannels () { this.authService.userInformationLoaded - .pipe(flatMap(() => this.videoChannelService.listAccountVideoChannels(this.user.account))) - .subscribe(res => this.videoChannels = res.data) + .pipe(flatMap(() => this.videoChannelService.listAccountVideoChannels(this.user.account, null, true))) + .subscribe(res => { + this.videoChannels = res.data + this.videoChannelsData = this.videoChannels.map(v => ({ + labels: v.viewsPerDay.map(day => day.date.toLocaleDateString()), + datasets: [ + { + label: this.i18n('Views for the day'), + data: v.viewsPerDay.map(day => day.views), + fill: false, + borderColor: "#c6c6c6" + } + ] + })) + this.videoChannelsMinimumDailyViews = minBy(this.videoChannels.map(v => minBy(v.viewsPerDay, day => day.views)), day => day.views).views + this.videoChannelsMaximumDailyViews = maxBy(this.videoChannels.map(v => maxBy(v.viewsPerDay, day => day.views)), day => day.views).views + }) } }