diff options
Diffstat (limited to 'client/src/app/shared')
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' | |||
2 | import { ControlValueAccessor, NG_VALUE_ACCESSOR } from '@angular/forms' | 2 | import { ControlValueAccessor, NG_VALUE_ACCESSOR } from '@angular/forms' |
3 | import { DomSanitizer, SafeResourceUrl } from '@angular/platform-browser' | 3 | import { DomSanitizer, SafeResourceUrl } from '@angular/platform-browser' |
4 | import { ServerService } from '@app/core' | 4 | import { ServerService } from '@app/core' |
5 | import { ServerConfig } from '@shared/models' | ||
6 | import { BytesPipe } from 'ngx-pipes' | ||
7 | import { I18n } from '@ngx-translate/i18n-polyfill' | 5 | import { I18n } from '@ngx-translate/i18n-polyfill' |
6 | import { ServerConfig } from '@shared/models' | ||
7 | import { 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 @@ | |||
1 | import { BytesPipe } from 'ngx-pipes' | ||
2 | import { Component, ElementRef, EventEmitter, Input, OnInit, Output, ViewChild } from '@angular/core' | 1 | import { Component, ElementRef, EventEmitter, Input, OnInit, Output, ViewChild } from '@angular/core' |
3 | import { Notifier, ServerService } from '@app/core' | 2 | import { Notifier, ServerService } from '@app/core' |
4 | import { Account, VideoChannel } from '@app/shared/shared-main' | 3 | import { Account, BytesPipe, VideoChannel } from '@app/shared/shared-main' |
5 | import { I18n } from '@ngx-translate/i18n-polyfill' | 4 | import { I18n } from '@ngx-translate/i18n-polyfill' |
6 | import { ServerConfig } from '@shared/models' | 5 | import { 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 @@ | |||
1 | import { 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' }) | ||
6 | export 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 | |||
26 | function 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 @@ | |||
1 | export * from './bytes.pipe' | ||
1 | export * from './from-now.pipe' | 2 | export * from './from-now.pipe' |
2 | export * from './infinite-scroller.directive' | 3 | export * from './infinite-scroller.directive' |
3 | export * from './number-formatter.pipe' | 4 | export * 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 @@ | |||
1 | import { Pipe, PipeTransform } from '@angular/core' | 1 | import { 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' }) |
6 | export class NumberFormatterPipe implements PipeTransform { | 6 | export 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 @@ | |||
1 | import { BytesPipe, KeysPipe, NgPipesModule } from 'ngx-pipes' | ||
2 | import { SharedModule as PrimeSharedModule } from 'primeng/api' | 1 | import { SharedModule as PrimeSharedModule } from 'primeng/api' |
3 | import { ClipboardModule } from '@angular/cdk/clipboard' | 2 | import { ClipboardModule } from '@angular/cdk/clipboard' |
4 | import { CommonModule, DatePipe } from '@angular/common' | 3 | import { CommonModule, DatePipe } from '@angular/common' |
@@ -17,7 +16,7 @@ import { | |||
17 | import { I18n } from '@ngx-translate/i18n-polyfill' | 16 | import { I18n } from '@ngx-translate/i18n-polyfill' |
18 | import { SharedGlobalIconModule } from '../shared-icons' | 17 | import { SharedGlobalIconModule } from '../shared-icons' |
19 | import { AccountService, ActorAvatarInfoComponent, AvatarComponent } from './account' | 18 | import { AccountService, ActorAvatarInfoComponent, AvatarComponent } from './account' |
20 | import { FromNowPipe, InfiniteScrollerDirective, NumberFormatterPipe, PeerTubeTemplateDirective } from './angular' | 19 | import { FromNowPipe, InfiniteScrollerDirective, NumberFormatterPipe, PeerTubeTemplateDirective, BytesPipe } from './angular' |
21 | import { AUTH_INTERCEPTOR_PROVIDER } from './auth' | 20 | import { AUTH_INTERCEPTOR_PROVIDER } from './auth' |
22 | import { ActionDropdownComponent, ButtonComponent, DeleteButtonComponent, EditButtonComponent } from './buttons' | 21 | import { ActionDropdownComponent, ButtonComponent, DeleteButtonComponent, EditButtonComponent } from './buttons' |
23 | import { DateToggleComponent } from './date' | 22 | import { 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 @@ | |||
1 | import { Subject } from 'rxjs' | 1 | import { Subject } from 'rxjs' |
2 | import { BytesPipe } from 'ngx-pipes' | ||
3 | import { Component, Input, OnInit } from '@angular/core' | 2 | import { Component, Input, OnInit } from '@angular/core' |
4 | import { User, UserService } from '@app/core' | 3 | import { User, UserService } from '@app/core' |
5 | import { I18n } from '@ngx-translate/i18n-polyfill' | 4 | import { I18n } from '@ngx-translate/i18n-polyfill' |
5 | import { 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 @@ | |||
1 | import { mapValues, pick } from 'lodash-es' | 1 | import { mapValues, pick } from 'lodash-es' |
2 | import { BytesPipe } from 'ngx-pipes' | ||
3 | import { Component, ElementRef, ViewChild } from '@angular/core' | 2 | import { Component, ElementRef, ViewChild } from '@angular/core' |
4 | import { AuthService, Notifier } from '@app/core' | 3 | import { AuthService, Notifier } from '@app/core' |
5 | import { NgbActiveModal, NgbModal } from '@ng-bootstrap/ng-bootstrap' | 4 | import { NgbActiveModal, NgbModal } from '@ng-bootstrap/ng-bootstrap' |
6 | import { I18n } from '@ngx-translate/i18n-polyfill' | 5 | import { I18n } from '@ngx-translate/i18n-polyfill' |
7 | import { VideoCaption, VideoFile, VideoPrivacy } from '@shared/models' | 6 | import { VideoCaption, VideoFile, VideoPrivacy } from '@shared/models' |
8 | import { NumberFormatterPipe, VideoDetails, VideoService } from '../shared-main' | 7 | import { BytesPipe, NumberFormatterPipe, VideoDetails, VideoService } from '../shared-main' |
9 | 8 | ||
10 | type DownloadType = 'video' | 'subtitles' | 9 | type DownloadType = 'video' | 'subtitles' |
11 | type FileMetadata = { [key: string]: { label: string, value: string }} | 10 | type FileMetadata = { [key: string]: { label: string, value: string }} |