aboutsummaryrefslogtreecommitdiffhomepage
path: root/client/src/app/shared
diff options
context:
space:
mode:
Diffstat (limited to 'client/src/app/shared')
-rw-r--r--client/src/app/shared/shared-forms/preview-upload.component.ts4
-rw-r--r--client/src/app/shared/shared-main/account/actor-avatar-info.component.ts3
-rw-r--r--client/src/app/shared/shared-main/angular/bytes.pipe.ts34
-rw-r--r--client/src/app/shared/shared-main/angular/index.ts1
-rw-r--r--client/src/app/shared/shared-main/angular/number-formatter.pipe.ts2
-rw-r--r--client/src/app/shared/shared-main/shared-main.module.ts13
-rw-r--r--client/src/app/shared/shared-main/users/user-quota.component.ts2
-rw-r--r--client/src/app/shared/shared-video-miniature/video-download.component.ts3
8 files changed, 47 insertions, 15 deletions
diff --git a/client/src/app/shared/shared-forms/preview-upload.component.ts b/client/src/app/shared/shared-forms/preview-upload.component.ts
index 7519734ba..7afff0b31 100644
--- a/client/src/app/shared/shared-forms/preview-upload.component.ts
+++ b/client/src/app/shared/shared-forms/preview-upload.component.ts
@@ -2,9 +2,9 @@ import { Component, forwardRef, Input, OnInit } from '@angular/core'
2import { ControlValueAccessor, NG_VALUE_ACCESSOR } from '@angular/forms' 2import { ControlValueAccessor, NG_VALUE_ACCESSOR } from '@angular/forms'
3import { DomSanitizer, SafeResourceUrl } from '@angular/platform-browser' 3import { DomSanitizer, SafeResourceUrl } from '@angular/platform-browser'
4import { ServerService } from '@app/core' 4import { ServerService } from '@app/core'
5import { ServerConfig } from '@shared/models'
6import { BytesPipe } from 'ngx-pipes'
7import { I18n } from '@ngx-translate/i18n-polyfill' 5import { I18n } from '@ngx-translate/i18n-polyfill'
6import { ServerConfig } from '@shared/models'
7import { BytesPipe } from '../shared-main'
8 8
9@Component({ 9@Component({
10 selector: 'my-preview-upload', 10 selector: 'my-preview-upload',
diff --git a/client/src/app/shared/shared-main/account/actor-avatar-info.component.ts b/client/src/app/shared/shared-main/account/actor-avatar-info.component.ts
index 0c04ae4a6..1389218cc 100644
--- a/client/src/app/shared/shared-main/account/actor-avatar-info.component.ts
+++ b/client/src/app/shared/shared-main/account/actor-avatar-info.component.ts
@@ -1,7 +1,6 @@
1import { BytesPipe } from 'ngx-pipes'
2import { Component, ElementRef, EventEmitter, Input, OnInit, Output, ViewChild } from '@angular/core' 1import { Component, ElementRef, EventEmitter, Input, OnInit, Output, ViewChild } from '@angular/core'
3import { Notifier, ServerService } from '@app/core' 2import { Notifier, ServerService } from '@app/core'
4import { Account, VideoChannel } from '@app/shared/shared-main' 3import { Account, BytesPipe, VideoChannel } from '@app/shared/shared-main'
5import { I18n } from '@ngx-translate/i18n-polyfill' 4import { I18n } from '@ngx-translate/i18n-polyfill'
6import { ServerConfig } from '@shared/models' 5import { ServerConfig } from '@shared/models'
7 6
diff --git a/client/src/app/shared/shared-main/angular/bytes.pipe.ts b/client/src/app/shared/shared-main/angular/bytes.pipe.ts
new file mode 100644
index 000000000..f4f473568
--- /dev/null
+++ b/client/src/app/shared/shared-main/angular/bytes.pipe.ts
@@ -0,0 +1,34 @@
1import { Pipe, PipeTransform } from '@angular/core'
2
3// Thanks: https://github.com/danrevah/ngx-pipes/blob/master/src/ng-pipes/pipes/math/bytes.ts
4
5@Pipe({ name: 'bytes' })
6export class BytesPipe implements PipeTransform {
7 private dictionary: Array<{ max: number; type: string }> = [
8 { max: 1024, type: 'B' },
9 { max: 1048576, type: 'KB' },
10 { max: 1073741824, type: 'MB' },
11 { max: 1.0995116e12, type: 'GB' }
12 ]
13
14 transform (value: number, precision?: number | undefined): string | number {
15 const format = this.dictionary.find(d => value < d.max) || this.dictionary[this.dictionary.length - 1]
16 const calc = value / (format.max / 1024)
17
18 const num = precision === undefined
19 ? calc
20 : applyPrecision(calc, precision)
21
22 return `${num} ${format.type}`
23 }
24}
25
26function applyPrecision (num: number, precision: number) {
27 if (precision <= 0) {
28 return Math.round(num)
29 }
30
31 const tho = 10 ** precision
32
33 return Math.round(num * tho) / tho
34}
diff --git a/client/src/app/shared/shared-main/angular/index.ts b/client/src/app/shared/shared-main/angular/index.ts
index 3b072fb84..9ba815136 100644
--- a/client/src/app/shared/shared-main/angular/index.ts
+++ b/client/src/app/shared/shared-main/angular/index.ts
@@ -1,3 +1,4 @@
1export * from './bytes.pipe'
1export * from './from-now.pipe' 2export * from './from-now.pipe'
2export * from './infinite-scroller.directive' 3export * from './infinite-scroller.directive'
3export * from './number-formatter.pipe' 4export * from './number-formatter.pipe'
diff --git a/client/src/app/shared/shared-main/angular/number-formatter.pipe.ts b/client/src/app/shared/shared-main/angular/number-formatter.pipe.ts
index 8a0756a36..e2eba3a60 100644
--- a/client/src/app/shared/shared-main/angular/number-formatter.pipe.ts
+++ b/client/src/app/shared/shared-main/angular/number-formatter.pipe.ts
@@ -1,6 +1,6 @@
1import { Pipe, PipeTransform } from '@angular/core' 1import { Pipe, PipeTransform } from '@angular/core'
2 2
3// Thanks: https://github.com/danrevah/ngx-pipes/blob/master/src/pipes/math/bytes.ts 3// Thanks: https://github.com/danrevah/ngx-pipes/blob/master/src/ng-pipes/pipes/math/bytes.ts
4 4
5@Pipe({ name: 'myNumberFormatter' }) 5@Pipe({ name: 'myNumberFormatter' })
6export class NumberFormatterPipe implements PipeTransform { 6export class NumberFormatterPipe implements PipeTransform {
diff --git a/client/src/app/shared/shared-main/shared-main.module.ts b/client/src/app/shared/shared-main/shared-main.module.ts
index c6192f6f8..6186db4d6 100644
--- a/client/src/app/shared/shared-main/shared-main.module.ts
+++ b/client/src/app/shared/shared-main/shared-main.module.ts
@@ -1,4 +1,3 @@
1import { BytesPipe, KeysPipe, NgPipesModule } from 'ngx-pipes'
2import { SharedModule as PrimeSharedModule } from 'primeng/api' 1import { SharedModule as PrimeSharedModule } from 'primeng/api'
3import { ClipboardModule } from '@angular/cdk/clipboard' 2import { ClipboardModule } from '@angular/cdk/clipboard'
4import { CommonModule, DatePipe } from '@angular/common' 3import { CommonModule, DatePipe } from '@angular/common'
@@ -17,7 +16,7 @@ import {
17import { I18n } from '@ngx-translate/i18n-polyfill' 16import { I18n } from '@ngx-translate/i18n-polyfill'
18import { SharedGlobalIconModule } from '../shared-icons' 17import { SharedGlobalIconModule } from '../shared-icons'
19import { AccountService, ActorAvatarInfoComponent, AvatarComponent } from './account' 18import { AccountService, ActorAvatarInfoComponent, AvatarComponent } from './account'
20import { FromNowPipe, InfiniteScrollerDirective, NumberFormatterPipe, PeerTubeTemplateDirective } from './angular' 19import { FromNowPipe, InfiniteScrollerDirective, NumberFormatterPipe, PeerTubeTemplateDirective, BytesPipe } from './angular'
21import { AUTH_INTERCEPTOR_PROVIDER } from './auth' 20import { AUTH_INTERCEPTOR_PROVIDER } from './auth'
22import { ActionDropdownComponent, ButtonComponent, DeleteButtonComponent, EditButtonComponent } from './buttons' 21import { ActionDropdownComponent, ButtonComponent, DeleteButtonComponent, EditButtonComponent } from './buttons'
23import { DateToggleComponent } from './date' 22import { DateToggleComponent } from './date'
@@ -47,7 +46,6 @@ import { VideoChannelService } from './video-channel'
47 ClipboardModule, 46 ClipboardModule,
48 47
49 PrimeSharedModule, 48 PrimeSharedModule,
50 NgPipesModule,
51 49
52 SharedGlobalIconModule 50 SharedGlobalIconModule
53 ], 51 ],
@@ -57,8 +55,9 @@ import { VideoChannelService } from './video-channel'
57 ActorAvatarInfoComponent, 55 ActorAvatarInfoComponent,
58 56
59 FromNowPipe, 57 FromNowPipe,
60 InfiniteScrollerDirective,
61 NumberFormatterPipe, 58 NumberFormatterPipe,
59 BytesPipe,
60 InfiniteScrollerDirective,
62 PeerTubeTemplateDirective, 61 PeerTubeTemplateDirective,
63 62
64 ActionDropdownComponent, 63 ActionDropdownComponent,
@@ -98,15 +97,15 @@ import { VideoChannelService } from './video-channel'
98 ClipboardModule, 97 ClipboardModule,
99 98
100 PrimeSharedModule, 99 PrimeSharedModule,
101 BytesPipe,
102 KeysPipe,
103 100
104 AvatarComponent, 101 AvatarComponent,
105 ActorAvatarInfoComponent, 102 ActorAvatarInfoComponent,
106 103
107 FromNowPipe, 104 FromNowPipe,
108 InfiniteScrollerDirective, 105 BytesPipe,
109 NumberFormatterPipe, 106 NumberFormatterPipe,
107
108 InfiniteScrollerDirective,
110 PeerTubeTemplateDirective, 109 PeerTubeTemplateDirective,
111 110
112 ActionDropdownComponent, 111 ActionDropdownComponent,
diff --git a/client/src/app/shared/shared-main/users/user-quota.component.ts b/client/src/app/shared/shared-main/users/user-quota.component.ts
index a8f56e4d6..6830ad8fe 100644
--- a/client/src/app/shared/shared-main/users/user-quota.component.ts
+++ b/client/src/app/shared/shared-main/users/user-quota.component.ts
@@ -1,8 +1,8 @@
1import { Subject } from 'rxjs' 1import { Subject } from 'rxjs'
2import { BytesPipe } from 'ngx-pipes'
3import { Component, Input, OnInit } from '@angular/core' 2import { Component, Input, OnInit } from '@angular/core'
4import { User, UserService } from '@app/core' 3import { User, UserService } from '@app/core'
5import { I18n } from '@ngx-translate/i18n-polyfill' 4import { I18n } from '@ngx-translate/i18n-polyfill'
5import { BytesPipe } from '../angular'
6 6
7@Component({ 7@Component({
8 selector: 'my-user-quota', 8 selector: 'my-user-quota',
diff --git a/client/src/app/shared/shared-video-miniature/video-download.component.ts b/client/src/app/shared/shared-video-miniature/video-download.component.ts
index 4fd06eacf..e3d6a1969 100644
--- a/client/src/app/shared/shared-video-miniature/video-download.component.ts
+++ b/client/src/app/shared/shared-video-miniature/video-download.component.ts
@@ -1,11 +1,10 @@
1import { mapValues, pick } from 'lodash-es' 1import { mapValues, pick } from 'lodash-es'
2import { BytesPipe } from 'ngx-pipes'
3import { Component, ElementRef, ViewChild } from '@angular/core' 2import { Component, ElementRef, ViewChild } from '@angular/core'
4import { AuthService, Notifier } from '@app/core' 3import { AuthService, Notifier } from '@app/core'
5import { NgbActiveModal, NgbModal } from '@ng-bootstrap/ng-bootstrap' 4import { NgbActiveModal, NgbModal } from '@ng-bootstrap/ng-bootstrap'
6import { I18n } from '@ngx-translate/i18n-polyfill' 5import { I18n } from '@ngx-translate/i18n-polyfill'
7import { VideoCaption, VideoFile, VideoPrivacy } from '@shared/models' 6import { VideoCaption, VideoFile, VideoPrivacy } from '@shared/models'
8import { NumberFormatterPipe, VideoDetails, VideoService } from '../shared-main' 7import { BytesPipe, NumberFormatterPipe, VideoDetails, VideoService } from '../shared-main'
9 8
10type DownloadType = 'video' | 'subtitles' 9type DownloadType = 'video' | 'subtitles'
11type FileMetadata = { [key: string]: { label: string, value: string }} 10type FileMetadata = { [key: string]: { label: string, value: string }}