USER_PASSWORD,
USER_VIDEO_QUOTA
} from '../../../shared'
+import { ServerService } from '../../../core'
import { UserCreate } from '../../../../../../shared'
import { UserEdit } from './user-edit'
@Component({
selector: 'my-user-add',
- templateUrl: './user-edit.component.html'
+ templateUrl: './user-edit.component.html',
+ styleUrls: [ './user-edit.component.scss' ]
})
export class UserAddComponent extends UserEdit implements OnInit {
error: string
}
constructor (
+ protected serverService: ServerService,
private formBuilder: FormBuilder,
private router: Router,
private notificationsService: NotificationsService,
{{ videoQuotaOption.label }}
</option>
</select>
+
+ <div class="transcoding-information" *ngIf="isTranscodingInformationDisplayed()">
+ Transcoding is enabled on server. The video quota only take in account <strong>original</strong> video. <br />
+ In maximum, this user could use ~ {{ computeQuotaWithTranscoding() | bytes }}.
+ </div>
</div>
<input type="submit" value="{{ getFormButtonTitle() }}" class="btn btn-default" [disabled]="!form.valid">
--- /dev/null
+.transcoding-information {
+ margin-top: 5px;
+ font-size: 11px;
+}
+import { ServerService } from '../../../core'
import { FormReactive } from '../../../shared'
+import { VideoResolution } from '../../../../../../shared/models/videos/video-resolution.enum'
export abstract class UserEdit extends FormReactive {
videoQuotaOptions = [
{ value: -1, label: 'Unlimited' },
{ value: 0, label: '0'},
{ value: 100 * 1024 * 1024, label: '100MB' },
- { value: 5 * 1024 * 1024, label: '500MB' },
+ { value: 500 * 1024 * 1024, label: '500MB' },
{ value: 1024 * 1024 * 1024, label: '1GB' },
{ value: 5 * 1024 * 1024 * 1024, label: '5GB' },
{ value: 20 * 1024 * 1024 * 1024, label: '20GB' },
{ value: 50 * 1024 * 1024 * 1024, label: '50GB' }
]
+ protected abstract serverService: ServerService
abstract isCreation (): boolean
abstract getFormButtonTitle (): string
+
+ isTranscodingInformationDisplayed () {
+ const formVideoQuota = parseInt(this.form.value['videoQuota'], 10)
+
+ return this.serverService.getConfig().transcoding.enabledResolutions.length !== 0 &&
+ formVideoQuota > 0
+ }
+
+ computeQuotaWithTranscoding () {
+ const resolutions = this.serverService.getConfig().transcoding.enabledResolutions
+ const higherResolution = VideoResolution.H_1080P
+ let multiplier = 0
+
+ for (const resolution of resolutions) {
+ multiplier += resolution / higherResolution
+ }
+
+ return multiplier * parseInt(this.form.value['videoQuota'], 10)
+ }
}
import { UserService } from '../shared'
import { USER_EMAIL, USER_VIDEO_QUOTA } from '../../../shared'
+import { ServerService } from '../../../core'
import { UserUpdate } from '../../../../../../shared/models/users/user-update.model'
import { User } from '../../../shared/users/user.model'
import { UserEdit } from './user-edit'
@Component({
selector: 'my-user-update',
- templateUrl: './user-edit.component.html'
+ templateUrl: './user-edit.component.html',
+ styleUrls: [ './user-edit.component.scss' ]
})
export class UserUpdateComponent extends UserEdit implements OnInit, OnDestroy {
error: string
private paramsSub: Subscription
constructor (
- private formBuilder: FormBuilder,
+ protected serverService: ServerService,
private route: ActivatedRoute,
private router: Router,
private notificationsService: NotificationsService,
+ private formBuilder: FormBuilder,
private userService: UserService
) {
super()
private config: ServerConfig = {
signup: {
allowed: false
+ },
+ transcoding: {
+ enabledResolutions: []
}
}
private videoCategories: Array<{ id: number, label: string }> = []
import * as express from 'express'
import { isSignupAllowed } from '../../helpers'
+import { CONFIG } from '../../initializers'
import { ServerConfig } from '../../../shared'
const configRouter = express.Router()
configRouter.get('/', getConfig)
-// Get the client credentials for the PeerTube front end
function getConfig (req: express.Request, res: express.Response, next: express.NextFunction) {
isSignupAllowed().then(allowed => {
+ const enabledResolutions = Object.keys(CONFIG.TRANSCODING.RESOLUTIONS)
+ .filter(key => CONFIG.TRANSCODING.RESOLUTIONS[key] === true)
+ .map(r => parseInt(r, 10))
+
const json: ServerConfig = {
signup: {
allowed
+ },
+ transcoding: {
+ enabledResolutions
}
}
+
res.json(json)
})
}
signup: {
allowed: boolean
}
+ transcoding: {
+ enabledResolutions: number[]
+ }
}