mirror of https://github.com/Chocobozzz/PeerTube
Put channel stats behind withStats flag
parent
8165d00ac6
commit
747c562837
|
@ -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 => ({
|
||||
|
|
|
@ -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) {
|
||||
|
|
|
@ -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 })
|
||||
|
|
|
@ -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)
|
||||
|
|
|
@ -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
|
||||
}
|
||||
|
||||
// ---------------------------------------------------------------------------
|
||||
|
|
|
@ -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 ]
|
||||
|
|
Loading…
Reference in New Issue