Put channel stats behind withStats flag
This commit is contained in:
parent
8165d00ac6
commit
747c562837
|
@ -57,7 +57,7 @@ export class MyAccountVideoChannelsComponent implements OnInit {
|
||||||
min: Math.max(0, this.videoChannelsMinimumDailyViews - (3 * this.videoChannelsMaximumDailyViews / 100)),
|
min: Math.max(0, this.videoChannelsMinimumDailyViews - (3 * this.videoChannelsMaximumDailyViews / 100)),
|
||||||
max: this.videoChannelsMaximumDailyViews
|
max: this.videoChannelsMaximumDailyViews
|
||||||
}
|
}
|
||||||
}],
|
}]
|
||||||
},
|
},
|
||||||
layout: {
|
layout: {
|
||||||
padding: {
|
padding: {
|
||||||
|
@ -68,7 +68,7 @@ export class MyAccountVideoChannelsComponent implements OnInit {
|
||||||
}
|
}
|
||||||
},
|
},
|
||||||
elements: {
|
elements: {
|
||||||
point:{
|
point: {
|
||||||
radius: 0
|
radius: 0
|
||||||
}
|
}
|
||||||
},
|
},
|
||||||
|
@ -76,14 +76,12 @@ export class MyAccountVideoChannelsComponent implements OnInit {
|
||||||
mode: 'index',
|
mode: 'index',
|
||||||
intersect: false,
|
intersect: false,
|
||||||
custom: function (tooltip: any) {
|
custom: function (tooltip: any) {
|
||||||
if (!tooltip) return;
|
if (!tooltip) return
|
||||||
// disable displaying the color box;
|
// disable displaying the color box
|
||||||
tooltip.displayColors = false;
|
tooltip.displayColors = false
|
||||||
},
|
},
|
||||||
callbacks: {
|
callbacks: {
|
||||||
label: function (tooltip: any, data: any) {
|
label: (tooltip: any, data: any) => `${tooltip.value} views`
|
||||||
return `${tooltip.value} views`;
|
|
||||||
}
|
|
||||||
}
|
}
|
||||||
},
|
},
|
||||||
hover: {
|
hover: {
|
||||||
|
@ -124,7 +122,7 @@ export class MyAccountVideoChannelsComponent implements OnInit {
|
||||||
|
|
||||||
private loadVideoChannels () {
|
private loadVideoChannels () {
|
||||||
this.authService.userInformationLoaded
|
this.authService.userInformationLoaded
|
||||||
.pipe(flatMap(() => this.videoChannelService.listAccountVideoChannels(this.user.account)))
|
.pipe(flatMap(() => this.videoChannelService.listAccountVideoChannels(this.user.account, null, true)))
|
||||||
.subscribe(res => {
|
.subscribe(res => {
|
||||||
this.videoChannels = res.data
|
this.videoChannels = res.data
|
||||||
this.videoChannelsData = this.videoChannels.map(v => ({
|
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)
|
this.nameWithHostForced = Actor.CREATE_BY_STRING(this.name, this.host, true)
|
||||||
|
|
||||||
if (hash.viewsPerDay) {
|
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) {
|
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
|
const pagination = componentPagination
|
||||||
? this.restService.componentPaginationToRestPagination(componentPagination)
|
? this.restService.componentPaginationToRestPagination(componentPagination)
|
||||||
: { start: 0, count: 20 }
|
: { start: 0, count: 20 }
|
||||||
|
|
||||||
let params = new HttpParams()
|
let params = new HttpParams()
|
||||||
params = this.restService.addRestGetParams(params, pagination)
|
params = this.restService.addRestGetParams(params, pagination)
|
||||||
|
params = params.set('withStats', withStats + '')
|
||||||
|
|
||||||
const url = AccountService.BASE_ACCOUNT_URL + account.nameWithHost + '/video-channels'
|
const url = AccountService.BASE_ACCOUNT_URL + account.nameWithHost + '/video-channels'
|
||||||
return this.authHttp.get<ResultList<VideoChannelServer>>(url, { params })
|
return this.authHttp.get<ResultList<VideoChannelServer>>(url, { params })
|
||||||
|
|
|
@ -17,7 +17,8 @@ import {
|
||||||
accountsSortValidator,
|
accountsSortValidator,
|
||||||
ensureAuthUserOwnsAccountValidator,
|
ensureAuthUserOwnsAccountValidator,
|
||||||
videoChannelsSortValidator,
|
videoChannelsSortValidator,
|
||||||
videosSortValidator
|
videosSortValidator,
|
||||||
|
videoChannelStatsValidator
|
||||||
} from '../../middlewares/validators'
|
} from '../../middlewares/validators'
|
||||||
import { AccountModel } from '../../models/account/account'
|
import { AccountModel } from '../../models/account/account'
|
||||||
import { AccountVideoRateModel } from '../../models/account/account-video-rate'
|
import { AccountVideoRateModel } from '../../models/account/account-video-rate'
|
||||||
|
@ -56,6 +57,7 @@ accountsRouter.get('/:accountName/videos',
|
||||||
|
|
||||||
accountsRouter.get('/:accountName/video-channels',
|
accountsRouter.get('/:accountName/video-channels',
|
||||||
asyncMiddleware(accountNameWithHostGetValidator),
|
asyncMiddleware(accountNameWithHostGetValidator),
|
||||||
|
videoChannelStatsValidator,
|
||||||
paginationValidator,
|
paginationValidator,
|
||||||
videoChannelsSortValidator,
|
videoChannelsSortValidator,
|
||||||
setDefaultSort,
|
setDefaultSort,
|
||||||
|
@ -116,7 +118,8 @@ async function listAccountChannels (req: express.Request, res: express.Response)
|
||||||
accountId: res.locals.account.id,
|
accountId: res.locals.account.id,
|
||||||
start: req.query.start,
|
start: req.query.start,
|
||||||
count: req.query.count,
|
count: req.query.count,
|
||||||
sort: req.query.sort
|
sort: req.query.sort,
|
||||||
|
withStats: req.query.withStats
|
||||||
}
|
}
|
||||||
|
|
||||||
const resultList = await VideoChannelModel.listByAccount(options)
|
const resultList = await VideoChannelModel.listByAccount(options)
|
||||||
|
|
|
@ -1,5 +1,5 @@
|
||||||
import * as express from 'express'
|
import * as express from 'express'
|
||||||
import { body, param } from 'express-validator'
|
import { body, param, query } from 'express-validator'
|
||||||
import { UserRight } from '../../../../shared'
|
import { UserRight } from '../../../../shared'
|
||||||
import {
|
import {
|
||||||
isVideoChannelDescriptionValid,
|
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 {
|
export {
|
||||||
|
@ -135,7 +144,8 @@ export {
|
||||||
videoChannelsUpdateValidator,
|
videoChannelsUpdateValidator,
|
||||||
videoChannelsRemoveValidator,
|
videoChannelsRemoveValidator,
|
||||||
videoChannelsNameWithHostValidator,
|
videoChannelsNameWithHostValidator,
|
||||||
localVideoChannelValidator
|
localVideoChannelValidator,
|
||||||
|
videoChannelStatsValidator
|
||||||
}
|
}
|
||||||
|
|
||||||
// ---------------------------------------------------------------------------
|
// ---------------------------------------------------------------------------
|
||||||
|
|
|
@ -412,7 +412,6 @@ export class VideoChannelModel extends Model<VideoChannelModel> {
|
||||||
|
|
||||||
const scopes: string | ScopeOptions | (string | ScopeOptions)[] = [ ScopeNames.WITH_ACTOR ]
|
const scopes: string | ScopeOptions | (string | ScopeOptions)[] = [ ScopeNames.WITH_ACTOR ]
|
||||||
|
|
||||||
options.withStats = true // TODO: remove beyond after initial tests
|
|
||||||
if (options.withStats) {
|
if (options.withStats) {
|
||||||
scopes.push({
|
scopes.push({
|
||||||
method: [ ScopeNames.WITH_STATS, { daysPrior: 30 } as AvailableWithStatsOptions ]
|
method: [ ScopeNames.WITH_STATS, { daysPrior: 30 } as AvailableWithStatsOptions ]
|
||||||
|
|
Loading…
Reference in New Issue