import { Component } from '@angular/core';
@Component({
- template: '<router-outlet></router-outlet>'
+ template: '<router-outlet></router-outlet>'
})
export class FriendsComponent {
@Injectable()
export class UserService {
- // TODO: merge this constant with account
private static BASE_USERS_URL = '/api/v1/users/';
constructor(
-.glyphicon-remove {
- cursor: pointer;
-}
-
.add-user {
margin-top: 10px;
}
import { Component } from '@angular/core';
@Component({
- template: '<router-outlet></router-outlet>'
+ template: '<router-outlet></router-outlet>'
})
export class UsersComponent {
export const UsersRoutes: Routes = [
{
- path: 'users',
- component: UsersComponent,
- children: [
- {
- path: '',
- redirectTo: 'list',
- pathMatch: 'full'
- },
- {
- path: 'list',
- component: UserListComponent,
- data: {
- meta: {
- title: 'Users list'
- }
+ path: 'users',
+ component: UsersComponent,
+ children: [
+ {
+ path: '',
+ redirectTo: 'list',
+ pathMatch: 'full'
+ },
+ {
+ path: 'list',
+ component: UserListComponent,
+ data: {
+ meta: {
+ title: 'Users list'
}
- },
- {
- path: 'add',
- component: UserAddComponent,
- data: {
- meta: {
- title: 'Add a user'
- }
+ }
+ },
+ {
+ path: 'add',
+ component: UserAddComponent,
+ data: {
+ meta: {
+ title: 'Add a user'
}
}
- ]
- }
+ }
+ ]
+ }
];
+++ /dev/null
-.cell-id {
- width: 40px;
-}
-
-.cell-reason {
- width: 200px;
-}
@Component({
selector: 'my-video-abuse-list',
- templateUrl: './video-abuse-list.component.html',
- styleUrls: [ './video-abuse-list.component.scss' ]
+ templateUrl: './video-abuse-list.component.html'
})
export class VideoAbuseListComponent {
videoAbusesSource = null;
export const VideoAbusesRoutes: Routes = [
{
- path: 'video-abuses',
- component: VideoAbusesComponent
- ,
- children: [
- {
- path: '',
- redirectTo: 'list',
- pathMatch: 'full'
- },
- {
- path: 'list',
- component: VideoAbuseListComponent,
- data: {
- meta: {
- title: 'Video abuses list'
- }
+ path: 'video-abuses',
+ component: VideoAbusesComponent
+ ,
+ children: [
+ {
+ path: '',
+ redirectTo: 'list',
+ pathMatch: 'full'
+ },
+ {
+ path: 'list',
+ component: VideoAbuseListComponent,
+ data: {
+ meta: {
+ title: 'Video abuses list'
}
}
- ]
- }
+ }
+ ]
+ }
];
<menu>
-
<div class="panel-block">
<a routerLink="/admin/users/list" routerLinkActive="active">
<span class="hidden-xs glyphicon glyphicon-user"></span>
-export * from './loader';
export * from './sort-field.type';
export * from './rate-type.type';
export * from './video.model';
+++ /dev/null
-export * from './loader.component';
+++ /dev/null
-<div id="video-loading" *ngIf="loading">
- <div class="glyphicon glyphicon-refresh glyphicon-refresh-animate"></div>
-</div>
+++ /dev/null
-// Thanks https://gist.github.com/alexandrevicenzi/680147013e902a4eaa5d
-.glyphicon-refresh-animate {
- -animation: spin .7s infinite linear;
- -ms-animation: spin .7s infinite linear;
- -webkit-animation: spinw .7s infinite linear;
- -moz-animation: spinm .7s infinite linear;
-}
-
-@keyframes spin {
- from { transform: scale(1) rotate(0deg);}
- to { transform: scale(1) rotate(360deg);}
-}
-
-@-webkit-keyframes spinw {
- from { -webkit-transform: rotate(0deg);}
- to { -webkit-transform: rotate(360deg);}
-}
-
-@-moz-keyframes spinm {
- from { -moz-transform: rotate(0deg);}
- to { -moz-transform: rotate(360deg);}
-}
+++ /dev/null
-import { Component, Input } from '@angular/core';
-
-@Component({
- selector: 'my-loader',
- styleUrls: [ './loader.component.scss' ],
- templateUrl: './loader.component.html'
-})
-
-export class LoaderComponent {
- @Input() loading: boolean;
-}
+export * from './loader.component';
export * from './video-list.component';
export * from './video-miniature.component';
export * from './video-sort.component';
--- /dev/null
+<div id="video-loading" *ngIf="loading">
+ <div class="glyphicon glyphicon-refresh glyphicon-refresh-animate"></div>
+</div>
--- /dev/null
+// Thanks https://gist.github.com/alexandrevicenzi/680147013e902a4eaa5d
+.glyphicon-refresh-animate {
+ -animation: spin .7s infinite linear;
+ -ms-animation: spin .7s infinite linear;
+ -webkit-animation: spinw .7s infinite linear;
+ -moz-animation: spinm .7s infinite linear;
+}
+
+@keyframes spin {
+ from { transform: scale(1) rotate(0deg);}
+ to { transform: scale(1) rotate(360deg);}
+}
+
+@-webkit-keyframes spinw {
+ from { -webkit-transform: rotate(0deg);}
+ to { -webkit-transform: rotate(360deg);}
+}
+
+@-moz-keyframes spinm {
+ from { -moz-transform: rotate(0deg);}
+ to { -moz-transform: rotate(360deg);}
+}
--- /dev/null
+import { Component, Input } from '@angular/core';
+
+@Component({
+ selector: 'my-loader',
+ styleUrls: [ './loader.component.scss' ],
+ templateUrl: './loader.component.html'
+})
+
+export class LoaderComponent {
+ @Input() loading: boolean;
+}
my-video-miniature {
text-align: left;
- transition: all 0.5s ease;
-
- &.ng-enter {
- opacity: 0;
- }
-
- &.ng-enter-active {
- opacity: 1;
- }
-
- &.ng-leave {
- opacity: 0;
- }
}
.no-video {
this.loading.next(true);
this.videos = [];
- this.changeDetector.detectChanges();
-
let observable = null;
-
if (this.search.value) {
observable = this.videoService.searchVideos(this.search, this.pagination, this.sort);
} else {
} else {
this.pagination.currentPage = 1;
}
-
- this.changeDetector.detectChanges();
}
private navigateToNewParams() {
-<div class="video-miniature" (mouseenter)="onHover()" (mouseleave)="onBlur()">
+<div class="video-miniature">
<a
[routerLink]="['/videos/watch', video.id]" [attr.title]="video.description"
class="video-miniature-thumbnail"
-@import "../../../sass/pre-customizations.scss";
-
.video-miniature {
margin-top: 30px;
display: inline-block;
}
.video-miniature-tags {
- // Fix for chrome when tags a long
+ // Fix for chrome when tags are long
width: 201px;
.video-miniature-tag {
top: -2px;
.label {
- line-height: $line-height-base;
transition: background-color 0.2s;
}
}
@Input() user: User;
@Input() video: Video;
- hovering = false;
-
constructor(
private notificationsService: NotificationsService,
private confirmService: ConfirmService,
return this.video.name;
}
- onBlur() {
- this.hovering = false;
- }
-
- onHover() {
- this.hovering = true;
- }
-
isVideoNSFWForThisUser() {
return this.video.isVideoNSFWForUser(this.user);
}
<div *ngIf="videoNotFound" id="video-not-found">Video not found :'(</div>
</div>
+<!-- P2P informations -->
<div id="torrent-info" class="row">
<div id="torrent-info-download" class="col-md-4 col-sm-4 col-xs-4">Download: {{ downloadSpeed | bytes }}/s</div>
<div id="torrent-info-upload" class="col-md-4 col-sm-4 col-xs-4">Upload: {{ uploadSpeed | bytes }}/s</div>
<div id="torrent-info-peers" class="col-md-4 col-sm-4 col-xs-4">Number of peers: {{ numPeers }}</div>
</div>
+<!-- Video informations -->
<div *ngIf="video !== null" id="video-info">
<div class="row video-name-views">
<div class="col-xs-8 col-md-8 video-name">
.embed-responsive {
height: 500px;
+
+ @media screen and (max-width: 600px) {
+ height: 300px;
+ }
}
#torrent-info {
}
}
-.embed-responsive {
- @media screen and (max-width: 600px) {
- height: 300px;
- }
-}
-
#video-info {
.video-name-views {
font-weight: bold;
import { VideosRoutingModule } from './videos-routing.module';
import { VideosComponent } from './videos.component';
import { VideoAddComponent, VideoUpdateComponent } from './video-edit';
-import { VideoListComponent, VideoMiniatureComponent, VideoSortComponent } from './video-list';
+import { LoaderComponent, VideoListComponent, VideoMiniatureComponent, VideoSortComponent } from './video-list';
import {
VideoWatchComponent,
VideoMagnetComponent,
VideoShareComponent,
WebTorrentService
} from './video-watch';
-import { LoaderComponent, VideoService } from './shared';
+import { VideoService } from './shared';
import { SharedModule } from '../shared';
@NgModule({