Put channel stats behind withStats flag

pull/2594/head
Rigel Kent 2020-03-24 01:12:30 +01:00 committed by Chocobozzz
parent 8165d00ac6
commit 747c562837
6 changed files with 31 additions and 16 deletions

View File

@ -57,7 +57,7 @@ export class MyAccountVideoChannelsComponent implements OnInit {
min: Math.max(0, this.videoChannelsMinimumDailyViews - (3 * this.videoChannelsMaximumDailyViews / 100)),
max: this.videoChannelsMaximumDailyViews
}
}],
}]
},
layout: {
padding: {
@ -68,7 +68,7 @@ export class MyAccountVideoChannelsComponent implements OnInit {
}
},
elements: {
point:{
point: {
radius: 0
}
},
@ -76,14 +76,12 @@ export class MyAccountVideoChannelsComponent implements OnInit {
mode: 'index',
intersect: false,
custom: function (tooltip: any) {
if (!tooltip) return;
// disable displaying the color box;
tooltip.displayColors = false;
if (!tooltip) return
// disable displaying the color box
tooltip.displayColors = false
},
callbacks: {
label: function (tooltip: any, data: any) {
return `${tooltip.value} views`;
}
label: (tooltip: any, data: any) => `${tooltip.value} views`
}
},
hover: {
@ -124,7 +122,7 @@ export class MyAccountVideoChannelsComponent implements OnInit {
private loadVideoChannels () {
this.authService.userInformationLoaded
.pipe(flatMap(() => this.videoChannelService.listAccountVideoChannels(this.user.account)))
.pipe(flatMap(() => this.videoChannelService.listAccountVideoChannels(this.user.account, null, true)))
.subscribe(res => {
this.videoChannels = res.data
this.videoChannelsData = this.videoChannels.map(v => ({

View File

@ -25,7 +25,7 @@ export class VideoChannel extends Actor implements ServerVideoChannel {
this.nameWithHostForced = Actor.CREATE_BY_STRING(this.name, this.host, true)
if (hash.viewsPerDay) {
this.viewsPerDay = hash.viewsPerDay.map(v => ({ ...v, date: new Date(v.date)}))
this.viewsPerDay = hash.viewsPerDay.map(v => ({ ...v, date: new Date(v.date) }))
}
if (hash.ownerAccount) {

View File

@ -44,13 +44,18 @@ export class VideoChannelService {
)
}
listAccountVideoChannels (account: Account, componentPagination?: ComponentPaginationLight): Observable<ResultList<VideoChannel>> {
listAccountVideoChannels (
account: Account,
componentPagination?: ComponentPaginationLight,
withStats = false
): Observable<ResultList<VideoChannel>> {
const pagination = componentPagination
? this.restService.componentPaginationToRestPagination(componentPagination)
: { start: 0, count: 20 }
let params = new HttpParams()
params = this.restService.addRestGetParams(params, pagination)
params = params.set('withStats', withStats + '')
const url = AccountService.BASE_ACCOUNT_URL + account.nameWithHost + '/video-channels'
return this.authHttp.get<ResultList<VideoChannelServer>>(url, { params })

View File

@ -17,7 +17,8 @@ import {
accountsSortValidator,
ensureAuthUserOwnsAccountValidator,
videoChannelsSortValidator,
videosSortValidator
videosSortValidator,
videoChannelStatsValidator
} from '../../middlewares/validators'
import { AccountModel } from '../../models/account/account'
import { AccountVideoRateModel } from '../../models/account/account-video-rate'
@ -56,6 +57,7 @@ accountsRouter.get('/:accountName/videos',
accountsRouter.get('/:accountName/video-channels',
asyncMiddleware(accountNameWithHostGetValidator),
videoChannelStatsValidator,
paginationValidator,
videoChannelsSortValidator,
setDefaultSort,
@ -116,7 +118,8 @@ async function listAccountChannels (req: express.Request, res: express.Response)
accountId: res.locals.account.id,
start: req.query.start,
count: req.query.count,
sort: req.query.sort
sort: req.query.sort,
withStats: req.query.withStats
}
const resultList = await VideoChannelModel.listByAccount(options)

View File

@ -1,5 +1,5 @@
import * as express from 'express'
import { body, param } from 'express-validator'
import { body, param, query } from 'express-validator'
import { UserRight } from '../../../../shared'
import {
isVideoChannelDescriptionValid,
@ -128,6 +128,15 @@ const localVideoChannelValidator = [
}
]
const videoChannelStatsValidator = [
query('withStats').optional().isBoolean().withMessage('Should have a valid stats flag'),
(req: express.Request, res: express.Response, next: express.NextFunction) => {
if (areValidationErrors(req, res)) return
return next()
}
]
// ---------------------------------------------------------------------------
export {
@ -135,7 +144,8 @@ export {
videoChannelsUpdateValidator,
videoChannelsRemoveValidator,
videoChannelsNameWithHostValidator,
localVideoChannelValidator
localVideoChannelValidator,
videoChannelStatsValidator
}
// ---------------------------------------------------------------------------

View File

@ -412,7 +412,6 @@ export class VideoChannelModel extends Model<VideoChannelModel> {
const scopes: string | ScopeOptions | (string | ScopeOptions)[] = [ ScopeNames.WITH_ACTOR ]
options.withStats = true // TODO: remove beyond after initial tests
if (options.withStats) {
scopes.push({
method: [ ScopeNames.WITH_STATS, { daysPrior: 30 } as AvailableWithStatsOptions ]