[DEV] add edit on saison and group (cover adder too) corect edit button on top bar
This commit is contained in:
parent
d13174661a
commit
8e09273f45
@ -18,6 +18,8 @@ import { LoginComponent } from './scene/login/login.component';
|
|||||||
import { SignUpComponent } from './scene/sign-up/sign-up.component';
|
import { SignUpComponent } from './scene/sign-up/sign-up.component';
|
||||||
import { SettingsComponent } from './scene/settings/settings.component';
|
import { SettingsComponent } from './scene/settings/settings.component';
|
||||||
import { VideoEditComponent } from './scene/video-edit/video-edit';
|
import { VideoEditComponent } from './scene/video-edit/video-edit';
|
||||||
|
import { GroupEditComponent } from './scene/group-edit/group-edit';
|
||||||
|
import { SaisonEditComponent } from './scene/saison-edit/saison-edit';
|
||||||
//import { HelpComponent } from './help/help.component';
|
//import { HelpComponent } from './help/help.component';
|
||||||
|
|
||||||
|
|
||||||
@ -25,13 +27,17 @@ const routes: Routes = [
|
|||||||
{ path: '', redirectTo: '/home', pathMatch: 'full'},
|
{ path: '', redirectTo: '/home', pathMatch: 'full'},
|
||||||
{ path: 'home', component: HomeComponent },
|
{ path: 'home', component: HomeComponent },
|
||||||
{ path: 'type/:type_id', component: TypeComponent },
|
{ path: 'type/:type_id', component: TypeComponent },
|
||||||
|
|
||||||
{ path: 'univers/:univers_id', component: UniversComponent },
|
{ path: 'univers/:univers_id', component: UniversComponent },
|
||||||
|
|
||||||
//{ path: 'type/:type_id/univers/:univers_id', component: UniversComponent },
|
//{ path: 'type/:type_id/univers/:univers_id', component: UniversComponent },
|
||||||
{ path: 'group/:group_id', component: GroupComponent },
|
{ path: 'group/:group_id', component: GroupComponent },
|
||||||
|
{ path: 'group-edit/:group_id', component: GroupEditComponent },
|
||||||
//{ path: 'type/:type_id/group/:group_id', component: GroupComponent },
|
//{ path: 'type/:type_id/group/:group_id', component: GroupComponent },
|
||||||
//{ path: 'type/:type_id/univers/:univers_id/group/:group_id', component: GroupComponent },
|
//{ path: 'type/:type_id/univers/:univers_id/group/:group_id', component: GroupComponent },
|
||||||
//{ path: 'univers/:univers_id/group/:group_id', component: GroupComponent },
|
//{ path: 'univers/:univers_id/group/:group_id', component: GroupComponent },
|
||||||
{ path: 'saison/:saison_id', component: SaisonComponent },
|
{ path: 'saison/:saison_id', component: SaisonComponent },
|
||||||
|
{ path: 'saison-edit/:saison_id', component: SaisonEditComponent },
|
||||||
//{ path: 'type/:type_id/univers/:univers_id/group/:group_id/saison/:saison_id', component: SaisonComponent },
|
//{ path: 'type/:type_id/univers/:univers_id/group/:group_id/saison/:saison_id', component: SaisonComponent },
|
||||||
{ path: 'video/:video_id', component: VideoComponent },
|
{ path: 'video/:video_id', component: VideoComponent },
|
||||||
//{ path: 'type/:type_id/univers/:univers_id/group/:group_id/saison/:saison_id/video/:video_id', component: VideoComponent },
|
//{ path: 'type/:type_id/univers/:univers_id/group/:group_id/saison/:saison_id/video/:video_id', component: VideoComponent },
|
||||||
|
@ -35,6 +35,8 @@ import { SettingsComponent } from './scene/settings/settings.component';
|
|||||||
import { ErrorViewerComponent } from './scene/error-viewer/error-viewer.component';
|
import { ErrorViewerComponent } from './scene/error-viewer/error-viewer.component';
|
||||||
import { ErrorComponent } from './error/error.component';
|
import { ErrorComponent } from './error/error.component';
|
||||||
import { VideoEditComponent } from './scene/video-edit/video-edit';
|
import { VideoEditComponent } from './scene/video-edit/video-edit';
|
||||||
|
import { SaisonEditComponent } from './scene/saison-edit/saison-edit';
|
||||||
|
import { GroupEditComponent } from './scene/group-edit/group-edit';
|
||||||
|
|
||||||
import { AuthService } from './service/auth.service';
|
import { AuthService } from './service/auth.service';
|
||||||
import { ArianeService } from './service/ariane.service';
|
import { ArianeService } from './service/ariane.service';
|
||||||
@ -75,7 +77,9 @@ import { AppComponent } from './app.component';
|
|||||||
SettingsComponent,
|
SettingsComponent,
|
||||||
ErrorViewerComponent,
|
ErrorViewerComponent,
|
||||||
ErrorComponent,
|
ErrorComponent,
|
||||||
VideoEditComponent
|
VideoEditComponent,
|
||||||
|
SaisonEditComponent,
|
||||||
|
GroupEditComponent
|
||||||
],
|
],
|
||||||
imports: [
|
imports: [
|
||||||
BrowserModule,
|
BrowserModule,
|
||||||
|
@ -15,7 +15,7 @@
|
|||||||
{{ariane_type_name}}
|
{{ariane_type_name}}
|
||||||
</div>
|
</div>
|
||||||
<div class="xmobile">
|
<div class="xmobile">
|
||||||
U
|
T
|
||||||
</div>
|
</div>
|
||||||
</button>
|
</button>
|
||||||
<div class="item_ariane_separator" *ngIf="ariane_univers_id != null && ariane_type_id != null" >/</div>
|
<div class="item_ariane_separator" *ngIf="ariane_univers_id != null && ariane_type_id != null" >/</div>
|
||||||
@ -75,11 +75,11 @@
|
|||||||
<img class="avatar" src="{{avatar}}"/>
|
<img class="avatar" src="{{avatar}}"/>
|
||||||
</button>
|
</button>
|
||||||
<button class="item"
|
<button class="item"
|
||||||
*ngIf="editable == true"
|
*ngIf="edit != null"
|
||||||
style="float:right; height:56px;"
|
style="float:right; height:56px;"
|
||||||
(click)="onEdit()">
|
(click)="onEdit()">
|
||||||
<div class="xdesktop">
|
<div class="xdesktop">
|
||||||
<i class="material-icons">edit</i> Edit
|
<i class="material-icons">edit</i> Edit {{edit}}
|
||||||
</div>
|
</div>
|
||||||
<div class="xmobile">
|
<div class="xmobile">
|
||||||
<i class="material-icons">edit</i>
|
<i class="material-icons">edit</i>
|
||||||
|
@ -35,7 +35,7 @@ export class TopMenuComponent implements OnInit {
|
|||||||
public ariane_saison_id: number = null;
|
public ariane_saison_id: number = null;
|
||||||
public ariane_saison_name: string = null;
|
public ariane_saison_name: string = null;
|
||||||
|
|
||||||
public editable:boolean = false;
|
public edit: string = "";
|
||||||
|
|
||||||
constructor(private router: Router,
|
constructor(private router: Router,
|
||||||
private sessionService: SessionService,
|
private sessionService: SessionService,
|
||||||
@ -43,13 +43,6 @@ export class TopMenuComponent implements OnInit {
|
|||||||
|
|
||||||
}
|
}
|
||||||
|
|
||||||
updateEditable() {
|
|
||||||
if (this.arianeService.getVideoId() != null) {
|
|
||||||
this.editable = true;
|
|
||||||
} else {
|
|
||||||
this.editable = false;
|
|
||||||
}
|
|
||||||
}
|
|
||||||
ngOnInit() {
|
ngOnInit() {
|
||||||
this.sessionService.change.subscribe(isConnected => {
|
this.sessionService.change.subscribe(isConnected => {
|
||||||
console.log("receive event from session ..." + isConnected);
|
console.log("receive event from session ..." + isConnected);
|
||||||
@ -94,11 +87,54 @@ export class TopMenuComponent implements OnInit {
|
|||||||
this.displayUserMenu = !this.displayUserMenu;
|
this.displayUserMenu = !this.displayUserMenu;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
updateEditable() {
|
||||||
|
if (this.arianeService.getVideoId() != null) {
|
||||||
|
this.edit = "video";
|
||||||
|
return;
|
||||||
|
}
|
||||||
|
if (this.arianeService.getSaisonId() != null) {
|
||||||
|
this.edit = "saison";
|
||||||
|
return;
|
||||||
|
}
|
||||||
|
if (this.arianeService.getGroupId() != null) {
|
||||||
|
this.edit = "group";
|
||||||
|
return;
|
||||||
|
}
|
||||||
|
/*
|
||||||
|
if (this.arianeService.getUniversId() != null) {
|
||||||
|
this.edit = "univers";
|
||||||
|
return;
|
||||||
|
}
|
||||||
|
if (this.arianeService.getTypeId() != null) {
|
||||||
|
this.edit = "type";
|
||||||
|
return;
|
||||||
|
}
|
||||||
|
*/
|
||||||
|
this.edit = null;
|
||||||
|
}
|
||||||
onEdit(): void {
|
onEdit(): void {
|
||||||
console.log("onEdit()");
|
console.log("onEdit()");
|
||||||
if (this.arianeService.getVideoId() != null) {
|
if (this.arianeService.getVideoId() != null) {
|
||||||
this.router.navigate(['video-edit/' + this.arianeService.getVideoId()]);
|
this.router.navigate(['video-edit/' + this.arianeService.getVideoId()]);
|
||||||
|
return;
|
||||||
}
|
}
|
||||||
|
if (this.arianeService.getSaisonId() != null) {
|
||||||
|
this.router.navigate(['saison-edit/' + this.arianeService.getSaisonId()]);
|
||||||
|
return;
|
||||||
|
}
|
||||||
|
if (this.arianeService.getGroupId() != null) {
|
||||||
|
this.router.navigate(['group-edit/' + this.arianeService.getGroupId()]);
|
||||||
|
return;
|
||||||
|
}
|
||||||
|
if (this.arianeService.getUniversId() != null) {
|
||||||
|
this.router.navigate(['univers-edit/' + this.arianeService.getUniversId()]);
|
||||||
|
return;
|
||||||
|
}
|
||||||
|
if (this.arianeService.getTypeId() != null) {
|
||||||
|
this.router.navigate(['type-edit/' + this.arianeService.getTypeId()]);
|
||||||
|
return;
|
||||||
|
}
|
||||||
|
this.edit = null;
|
||||||
}
|
}
|
||||||
|
|
||||||
onHome(): void {
|
onHome(): void {
|
||||||
@ -146,33 +182,35 @@ export class TopMenuComponent implements OnInit {
|
|||||||
onArianeType(): void {
|
onArianeType(): void {
|
||||||
console.log("onArianeType(" + this.ariane_type_id + ")");
|
console.log("onArianeType(" + this.ariane_type_id + ")");
|
||||||
this.router.navigate(['type/' + this.ariane_type_id ]);
|
this.router.navigate(['type/' + this.ariane_type_id ]);
|
||||||
this.ariane_univers_id = null;
|
this.arianeService.setVideo(null);
|
||||||
this.ariane_univers_name = null;
|
this.arianeService.setSaison(null);
|
||||||
this.ariane_group_id = null;
|
this.arianeService.setGroup(null);
|
||||||
this.ariane_group_name = null;
|
this.arianeService.setUnivers(null);
|
||||||
this.ariane_saison_id = null;
|
this.updateEditable();
|
||||||
this.ariane_saison_name = null;
|
|
||||||
}
|
}
|
||||||
|
|
||||||
onArianeUnivers(): void {
|
onArianeUnivers(): void {
|
||||||
console.log("onArianeUnivers(" + this.ariane_univers_id + ")");
|
console.log("onArianeUnivers(" + this.ariane_univers_id + ")");
|
||||||
this.router.navigate(['univers/' + this.ariane_univers_id ]);
|
this.router.navigate(['univers/' + this.ariane_univers_id ]);
|
||||||
this.ariane_group_id = null;
|
this.arianeService.setVideo(null);
|
||||||
this.ariane_group_name = null;
|
this.arianeService.setSaison(null);
|
||||||
this.ariane_saison_id = null;
|
this.arianeService.setGroup(null);
|
||||||
this.ariane_saison_name = null;
|
this.updateEditable();
|
||||||
}
|
}
|
||||||
|
|
||||||
onArianeGroup(): void {
|
onArianeGroup(): void {
|
||||||
console.log("onArianeGroup(" + this.ariane_group_id + ")");
|
console.log("onArianeGroup(" + this.ariane_group_id + ")");
|
||||||
this.router.navigate(['group/' + this.ariane_group_id ]);
|
this.router.navigate(['group/' + this.ariane_group_id ]);
|
||||||
this.ariane_saison_id = null;
|
this.arianeService.setVideo(null);
|
||||||
this.ariane_saison_name = null;
|
this.arianeService.setSaison(null);
|
||||||
|
this.updateEditable();
|
||||||
}
|
}
|
||||||
|
|
||||||
onArianeSaison(): void {
|
onArianeSaison(): void {
|
||||||
console.log("onArianeSaison(" + this.ariane_saison_id + ")");
|
console.log("onArianeSaison(" + this.ariane_saison_id + ")");
|
||||||
this.router.navigate(['saison/' + this.ariane_saison_id ]);
|
this.router.navigate(['saison/' + this.ariane_saison_id ]);
|
||||||
|
this.arianeService.setVideo(null);
|
||||||
|
this.updateEditable();
|
||||||
}
|
}
|
||||||
|
|
||||||
}
|
}
|
||||||
|
49
front/src/app/scene/group-edit/group-edit.html
Normal file
49
front/src/app/scene/group-edit/group-edit.html
Normal file
@ -0,0 +1,49 @@
|
|||||||
|
<div class="main-reduce">
|
||||||
|
<div class="fill-all">
|
||||||
|
<div class="request_raw">
|
||||||
|
<div class="label">
|
||||||
|
Name:
|
||||||
|
</div>
|
||||||
|
<div class="input">
|
||||||
|
<input type="text"
|
||||||
|
placeholder="Name of the Group"
|
||||||
|
[value]="name"
|
||||||
|
(input)="onName($event.target.value)"
|
||||||
|
/>
|
||||||
|
</div>
|
||||||
|
</div>
|
||||||
|
<div class="request_raw">
|
||||||
|
<div class="label">
|
||||||
|
Description:
|
||||||
|
</div>
|
||||||
|
<div class="input">
|
||||||
|
<input type="text"
|
||||||
|
placeholder="Description of the Media"
|
||||||
|
[value]="description"
|
||||||
|
(input)="onDescription($event.target.value)"/>
|
||||||
|
</div>
|
||||||
|
</div>
|
||||||
|
<div class="request_raw">
|
||||||
|
<div class="label">
|
||||||
|
Covers:
|
||||||
|
</div>
|
||||||
|
<div class="input">
|
||||||
|
<div *ngFor="let element of covers_display" class="cover_div"><img src="{{element}}" class="cover"/></div>
|
||||||
|
</div>
|
||||||
|
</div>
|
||||||
|
<div class="send_value">
|
||||||
|
<button class="button fill-x color-button-validate color-shadow-black" (click)="sendValues()" type="submit"><i class="material-icons">save_alt</i> Save</button>
|
||||||
|
</div>
|
||||||
|
<div class="request_raw">
|
||||||
|
<div class="label">
|
||||||
|
Covers:
|
||||||
|
</div>
|
||||||
|
<div class="input">
|
||||||
|
<input type="file"
|
||||||
|
(change)="onChangeCover($event.target)"
|
||||||
|
placeholder="Select a cover file"
|
||||||
|
accept=".png,.jpg"/>{{upload_file_value}}
|
||||||
|
</div>
|
||||||
|
</div>
|
||||||
|
</div>
|
||||||
|
</div>
|
103
front/src/app/scene/group-edit/group-edit.less
Normal file
103
front/src/app/scene/group-edit/group-edit.less
Normal file
@ -0,0 +1,103 @@
|
|||||||
|
.fill-all{
|
||||||
|
//width:100%;
|
||||||
|
max-width:80%;
|
||||||
|
height:100%;
|
||||||
|
margin: 20px auto;
|
||||||
|
padding: 20px;
|
||||||
|
border:0;
|
||||||
|
background-color: rgba(200, 200, 200, 0.5);
|
||||||
|
box-shadow: 0px 2px 4px 0 rgba(0, 0, 0, 0.6);
|
||||||
|
}
|
||||||
|
|
||||||
|
.request_raw {
|
||||||
|
width: 90%;
|
||||||
|
margin: 0 auto;
|
||||||
|
height: 45px;
|
||||||
|
.label {
|
||||||
|
width: 20%;
|
||||||
|
margin-right: 10px;
|
||||||
|
text-align: right;
|
||||||
|
float: left;
|
||||||
|
display: block;
|
||||||
|
}
|
||||||
|
.input {
|
||||||
|
width: 75%;
|
||||||
|
float: left;
|
||||||
|
display: block;
|
||||||
|
input {
|
||||||
|
width: 100%;
|
||||||
|
font-size: 20px;
|
||||||
|
}
|
||||||
|
select {
|
||||||
|
width: 100%;
|
||||||
|
font-size: 20px;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
.cover_div {
|
||||||
|
//float: left;
|
||||||
|
display: block;
|
||||||
|
}
|
||||||
|
.cover {
|
||||||
|
max-width: 30%;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
.send_value {
|
||||||
|
width: 300px;
|
||||||
|
margin: 0 auto;
|
||||||
|
padding: 10px;
|
||||||
|
display: block;
|
||||||
|
}
|
||||||
|
|
||||||
|
.item {
|
||||||
|
font-size: 20px;
|
||||||
|
height: 21%;
|
||||||
|
width: 23%;
|
||||||
|
margin: 1%;
|
||||||
|
padding: 0;
|
||||||
|
overflow: hidden;
|
||||||
|
//box-shadow: 0 1px 1.5px 0 rgba(0,0,0,.12),0 1px 1px 0 rgba(0,0,0,.24);
|
||||||
|
box-shadow: 0px 2px 4px 0 rgba(0, 0, 0, 0.6);
|
||||||
|
line-height: normal;
|
||||||
|
border: none;
|
||||||
|
font-family: "Roboto","Helvetica","Arial",sans-serif;
|
||||||
|
font-weight: 500;
|
||||||
|
text-transform: uppercase;
|
||||||
|
letter-spacing: 0;
|
||||||
|
will-change: box-shadow;
|
||||||
|
outline: none;
|
||||||
|
cursor: pointer;
|
||||||
|
text-decoration: none;
|
||||||
|
text-align: center;
|
||||||
|
vertical-align: middle;
|
||||||
|
transition-duration: 0.4s;
|
||||||
|
float:left;
|
||||||
|
display:block;
|
||||||
|
|
||||||
|
h1 {
|
||||||
|
font-size: 24px;
|
||||||
|
}
|
||||||
|
|
||||||
|
&:hover {
|
||||||
|
background-color: #F00;
|
||||||
|
}
|
||||||
|
|
||||||
|
.material-icons {
|
||||||
|
vertical-align: middle;
|
||||||
|
}
|
||||||
|
|
||||||
|
.material-icons {
|
||||||
|
position: absolute;
|
||||||
|
top: 50%;
|
||||||
|
left: 50%;
|
||||||
|
transform: ~"translate(-12px,-12px)";
|
||||||
|
line-height: 24px;
|
||||||
|
width: 24px;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
.item-video {
|
||||||
|
&:hover {
|
||||||
|
background-color: #0F0;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
142
front/src/app/scene/group-edit/group-edit.ts
Normal file
142
front/src/app/scene/group-edit/group-edit.ts
Normal file
@ -0,0 +1,142 @@
|
|||||||
|
/** @file
|
||||||
|
* @author Edouard DUPIN
|
||||||
|
* @copyright 2018, Edouard DUPIN, all right reserved
|
||||||
|
* @license PROPRIETARY (see license file)
|
||||||
|
*/
|
||||||
|
|
||||||
|
import { Component, OnInit } from '@angular/core';
|
||||||
|
import { Router, ActivatedRoute, ParamMap } from '@angular/router';
|
||||||
|
import { Location } from '@angular/common';
|
||||||
|
import { NgForm } from '@angular/forms';
|
||||||
|
import { FormGroup, FormControl } from "@angular/forms";
|
||||||
|
import { fadeInAnimation } from '../../_animations/index';
|
||||||
|
|
||||||
|
import { GroupService } from '../../service/group.service';
|
||||||
|
import { DataService } from '../../service/data.service';
|
||||||
|
|
||||||
|
export class ElementList {
|
||||||
|
value: number;
|
||||||
|
label: string;
|
||||||
|
constructor(_value: number, _label: string) {
|
||||||
|
this.value = _value;
|
||||||
|
this.label = _label;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
@Component({
|
||||||
|
selector: 'app-group-edit',
|
||||||
|
templateUrl: './group-edit.html',
|
||||||
|
styleUrls: ['./group-edit.less'],
|
||||||
|
animations: [fadeInAnimation],
|
||||||
|
host: { '[@fadeInAnimation]': '' }
|
||||||
|
})
|
||||||
|
// https://www.sitepoint.com/angular-forms/
|
||||||
|
export class GroupEditComponent implements OnInit {
|
||||||
|
id_group:number = -1;
|
||||||
|
|
||||||
|
error:string = ""
|
||||||
|
|
||||||
|
name:string = ""
|
||||||
|
description:string = ""
|
||||||
|
coverFile:File;
|
||||||
|
upload_file_value:string = ""
|
||||||
|
selectedFiles:FileList;
|
||||||
|
|
||||||
|
covers_display:Array<string> = [];
|
||||||
|
|
||||||
|
constructor(private route: ActivatedRoute,
|
||||||
|
private router: Router,
|
||||||
|
private locate: Location,
|
||||||
|
private dataService: DataService,
|
||||||
|
private groupService: GroupService) {
|
||||||
|
|
||||||
|
}
|
||||||
|
|
||||||
|
ngOnInit() {
|
||||||
|
this.id_group = parseInt(this.route.snapshot.paramMap.get('group_id'));
|
||||||
|
let self = this;
|
||||||
|
this.groupService.get(this.id_group)
|
||||||
|
.then(function(response) {
|
||||||
|
console.log("get response of video : " + JSON.stringify(response, null, 2));
|
||||||
|
self.name = response.name;
|
||||||
|
self.description = response.description;
|
||||||
|
if (response.covers !== undefined && response.covers !== null) {
|
||||||
|
for (let iii=0; iii<response.covers.length; iii++) {
|
||||||
|
self.covers_display.push(self.groupService.getCoverUrl(response.covers[iii]));
|
||||||
|
}
|
||||||
|
} else {
|
||||||
|
self.covers_display = []
|
||||||
|
}
|
||||||
|
console.log("covers_list : " + JSON.stringify(self.covers_display, null, 2));
|
||||||
|
}).catch(function(response) {
|
||||||
|
self.error = "Can not get the data";
|
||||||
|
self.name = "";
|
||||||
|
self.description = "";
|
||||||
|
self.covers_display = [];
|
||||||
|
});
|
||||||
|
}
|
||||||
|
|
||||||
|
onName(_value:any):void {
|
||||||
|
this.name = _value;
|
||||||
|
}
|
||||||
|
|
||||||
|
onDescription(_value:any):void {
|
||||||
|
this.description = _value;
|
||||||
|
}
|
||||||
|
|
||||||
|
sendValues():void {
|
||||||
|
console.log("send new values....");
|
||||||
|
let data = {
|
||||||
|
"name": this.name,
|
||||||
|
"description": this.description
|
||||||
|
};
|
||||||
|
this.groupService.put(this.id_group, data);
|
||||||
|
}
|
||||||
|
|
||||||
|
// At the drag drop area
|
||||||
|
// (drop)="onDropFile($event)"
|
||||||
|
onDropFile(_event: DragEvent) {
|
||||||
|
_event.preventDefault();
|
||||||
|
this.uploadFile(_event.dataTransfer.files[0]);
|
||||||
|
}
|
||||||
|
|
||||||
|
// At the drag drop area
|
||||||
|
// (dragover)="onDragOverFile($event)"
|
||||||
|
onDragOverFile(_event) {
|
||||||
|
_event.stopPropagation();
|
||||||
|
_event.preventDefault();
|
||||||
|
}
|
||||||
|
|
||||||
|
// At the file input element
|
||||||
|
// (change)="selectFile($event)"
|
||||||
|
onChangeCover(_value:any):void {
|
||||||
|
this.selectedFiles = _value.files
|
||||||
|
this.coverFile = this.selectedFiles[0];
|
||||||
|
console.log("select file " + this.coverFile.name);
|
||||||
|
this.uploadFile(this.coverFile);
|
||||||
|
}
|
||||||
|
|
||||||
|
uploadFile(_file:File) {
|
||||||
|
if (_file == undefined) {
|
||||||
|
console.log("No file selected!");
|
||||||
|
return;
|
||||||
|
}
|
||||||
|
let self = this;
|
||||||
|
this.dataService.sendFile(_file)
|
||||||
|
.then(function(response) {
|
||||||
|
console.log("get response of video : " + JSON.stringify(response, null, 2));
|
||||||
|
let id_of_image = response.id;
|
||||||
|
self.groupService.addCover(self.id_group, id_of_image)
|
||||||
|
.then(function(response) {
|
||||||
|
console.log("cover added");
|
||||||
|
self.covers_display.push(self.groupService.getCoverUrl(id_of_image));
|
||||||
|
}).catch(function(response) {
|
||||||
|
console.log("Can not cover in the cover_list...");
|
||||||
|
});
|
||||||
|
}).catch(function(response) {
|
||||||
|
//self.error = "Can not get the data";
|
||||||
|
console.log("Can not add the data in the system...");
|
||||||
|
});
|
||||||
|
}
|
||||||
|
|
||||||
|
}
|
49
front/src/app/scene/saison-edit/saison-edit.html
Normal file
49
front/src/app/scene/saison-edit/saison-edit.html
Normal file
@ -0,0 +1,49 @@
|
|||||||
|
<div class="main-reduce">
|
||||||
|
<div class="fill-all">
|
||||||
|
<div class="request_raw">
|
||||||
|
<div class="label">
|
||||||
|
Number:
|
||||||
|
</div>
|
||||||
|
<div class="input">
|
||||||
|
<input type="number"
|
||||||
|
placeholder="Id of the saison"
|
||||||
|
[value]="numberVal"
|
||||||
|
(input)="onName($event.target.value)"
|
||||||
|
/>
|
||||||
|
</div>
|
||||||
|
</div>
|
||||||
|
<div class="request_raw">
|
||||||
|
<div class="label">
|
||||||
|
Description:
|
||||||
|
</div>
|
||||||
|
<div class="input">
|
||||||
|
<input type="text"
|
||||||
|
placeholder="Description of the Media"
|
||||||
|
[value]="description"
|
||||||
|
(input)="onDescription($event.target.value)"/>
|
||||||
|
</div>
|
||||||
|
</div>
|
||||||
|
<div class="request_raw">
|
||||||
|
<div class="label">
|
||||||
|
Covers:
|
||||||
|
</div>
|
||||||
|
<div class="input">
|
||||||
|
<div *ngFor="let element of covers_display" class="cover_div"><img src="{{element}}" class="cover"/></div>
|
||||||
|
</div>
|
||||||
|
</div>
|
||||||
|
<div class="send_value">
|
||||||
|
<button class="button fill-x color-button-validate color-shadow-black" (click)="sendValues()" type="submit"><i class="material-icons">save_alt</i> Save</button>
|
||||||
|
</div>
|
||||||
|
<div class="request_raw">
|
||||||
|
<div class="label">
|
||||||
|
Covers:
|
||||||
|
</div>
|
||||||
|
<div class="input">
|
||||||
|
<input type="file"
|
||||||
|
(change)="onChangeCover($event.target)"
|
||||||
|
placeholder="Select a cover file"
|
||||||
|
accept=".png,.jpg"/>{{upload_file_value}}
|
||||||
|
</div>
|
||||||
|
</div>
|
||||||
|
</div>
|
||||||
|
</div>
|
103
front/src/app/scene/saison-edit/saison-edit.less
Normal file
103
front/src/app/scene/saison-edit/saison-edit.less
Normal file
@ -0,0 +1,103 @@
|
|||||||
|
.fill-all{
|
||||||
|
//width:100%;
|
||||||
|
max-width:80%;
|
||||||
|
height:100%;
|
||||||
|
margin: 20px auto;
|
||||||
|
padding: 20px;
|
||||||
|
border:0;
|
||||||
|
background-color: rgba(200, 200, 200, 0.5);
|
||||||
|
box-shadow: 0px 2px 4px 0 rgba(0, 0, 0, 0.6);
|
||||||
|
}
|
||||||
|
|
||||||
|
.request_raw {
|
||||||
|
width: 90%;
|
||||||
|
margin: 0 auto;
|
||||||
|
height: 45px;
|
||||||
|
.label {
|
||||||
|
width: 20%;
|
||||||
|
margin-right: 10px;
|
||||||
|
text-align: right;
|
||||||
|
float: left;
|
||||||
|
display: block;
|
||||||
|
}
|
||||||
|
.input {
|
||||||
|
width: 75%;
|
||||||
|
float: left;
|
||||||
|
display: block;
|
||||||
|
input {
|
||||||
|
width: 100%;
|
||||||
|
font-size: 20px;
|
||||||
|
}
|
||||||
|
select {
|
||||||
|
width: 100%;
|
||||||
|
font-size: 20px;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
.cover_div {
|
||||||
|
//float: left;
|
||||||
|
display: block;
|
||||||
|
}
|
||||||
|
.cover {
|
||||||
|
max-width: 30%;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
.send_value {
|
||||||
|
width: 300px;
|
||||||
|
margin: 0 auto;
|
||||||
|
padding: 10px;
|
||||||
|
display: block;
|
||||||
|
}
|
||||||
|
|
||||||
|
.item {
|
||||||
|
font-size: 20px;
|
||||||
|
height: 21%;
|
||||||
|
width: 23%;
|
||||||
|
margin: 1%;
|
||||||
|
padding: 0;
|
||||||
|
overflow: hidden;
|
||||||
|
//box-shadow: 0 1px 1.5px 0 rgba(0,0,0,.12),0 1px 1px 0 rgba(0,0,0,.24);
|
||||||
|
box-shadow: 0px 2px 4px 0 rgba(0, 0, 0, 0.6);
|
||||||
|
line-height: normal;
|
||||||
|
border: none;
|
||||||
|
font-family: "Roboto","Helvetica","Arial",sans-serif;
|
||||||
|
font-weight: 500;
|
||||||
|
text-transform: uppercase;
|
||||||
|
letter-spacing: 0;
|
||||||
|
will-change: box-shadow;
|
||||||
|
outline: none;
|
||||||
|
cursor: pointer;
|
||||||
|
text-decoration: none;
|
||||||
|
text-align: center;
|
||||||
|
vertical-align: middle;
|
||||||
|
transition-duration: 0.4s;
|
||||||
|
float:left;
|
||||||
|
display:block;
|
||||||
|
|
||||||
|
h1 {
|
||||||
|
font-size: 24px;
|
||||||
|
}
|
||||||
|
|
||||||
|
&:hover {
|
||||||
|
background-color: #F00;
|
||||||
|
}
|
||||||
|
|
||||||
|
.material-icons {
|
||||||
|
vertical-align: middle;
|
||||||
|
}
|
||||||
|
|
||||||
|
.material-icons {
|
||||||
|
position: absolute;
|
||||||
|
top: 50%;
|
||||||
|
left: 50%;
|
||||||
|
transform: ~"translate(-12px,-12px)";
|
||||||
|
line-height: 24px;
|
||||||
|
width: 24px;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
.item-video {
|
||||||
|
&:hover {
|
||||||
|
background-color: #0F0;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
142
front/src/app/scene/saison-edit/saison-edit.ts
Normal file
142
front/src/app/scene/saison-edit/saison-edit.ts
Normal file
@ -0,0 +1,142 @@
|
|||||||
|
/** @file
|
||||||
|
* @author Edouard DUPIN
|
||||||
|
* @copyright 2018, Edouard DUPIN, all right reserved
|
||||||
|
* @license PROPRIETARY (see license file)
|
||||||
|
*/
|
||||||
|
|
||||||
|
import { Component, OnInit } from '@angular/core';
|
||||||
|
import { Router, ActivatedRoute, ParamMap } from '@angular/router';
|
||||||
|
import { Location } from '@angular/common';
|
||||||
|
import { NgForm } from '@angular/forms';
|
||||||
|
import { FormGroup, FormControl } from "@angular/forms";
|
||||||
|
import { fadeInAnimation } from '../../_animations/index';
|
||||||
|
|
||||||
|
import { SaisonService } from '../../service/saison.service';
|
||||||
|
import { DataService } from '../../service/data.service';
|
||||||
|
|
||||||
|
export class ElementList {
|
||||||
|
value: number;
|
||||||
|
label: string;
|
||||||
|
constructor(_value: number, _label: string) {
|
||||||
|
this.value = _value;
|
||||||
|
this.label = _label;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
@Component({
|
||||||
|
selector: 'app-saison-edit',
|
||||||
|
templateUrl: './saison-edit.html',
|
||||||
|
styleUrls: ['./saison-edit.less'],
|
||||||
|
animations: [fadeInAnimation],
|
||||||
|
host: { '[@fadeInAnimation]': '' }
|
||||||
|
})
|
||||||
|
// https://www.sitepoint.com/angular-forms/
|
||||||
|
export class SaisonEditComponent implements OnInit {
|
||||||
|
id_saison:number = -1;
|
||||||
|
|
||||||
|
error:string = "";
|
||||||
|
|
||||||
|
numberVal:number = null;
|
||||||
|
description:string = "";
|
||||||
|
coverFile:File;
|
||||||
|
upload_file_value:string = ""
|
||||||
|
selectedFiles:FileList;
|
||||||
|
|
||||||
|
covers_display:Array<string> = [];
|
||||||
|
|
||||||
|
constructor(private route: ActivatedRoute,
|
||||||
|
private router: Router,
|
||||||
|
private locate: Location,
|
||||||
|
private dataService: DataService,
|
||||||
|
private saisonService: SaisonService) {
|
||||||
|
|
||||||
|
}
|
||||||
|
|
||||||
|
ngOnInit() {
|
||||||
|
this.id_saison = parseInt(this.route.snapshot.paramMap.get('saison_id'));
|
||||||
|
let self = this;
|
||||||
|
this.saisonService.get(this.id_saison)
|
||||||
|
.then(function(response) {
|
||||||
|
console.log("get response of saison : " + JSON.stringify(response, null, 2));
|
||||||
|
self.numberVal = response.number;
|
||||||
|
self.description = response.description;
|
||||||
|
if (response.covers !== undefined && response.covers !== null) {
|
||||||
|
for (let iii=0; iii<response.covers.length; iii++) {
|
||||||
|
self.covers_display.push(self.saisonService.getCoverUrl(response.covers[iii]));
|
||||||
|
}
|
||||||
|
} else {
|
||||||
|
self.covers_display = []
|
||||||
|
}
|
||||||
|
console.log("covers_list : " + JSON.stringify(self.covers_display, null, 2));
|
||||||
|
}).catch(function(response) {
|
||||||
|
self.error = "Can not get the data";
|
||||||
|
self.numberVal = null;
|
||||||
|
self.description = "";
|
||||||
|
self.covers_display = [];
|
||||||
|
});
|
||||||
|
}
|
||||||
|
|
||||||
|
onNumber(_value:any):void {
|
||||||
|
this.numberVal = _value;
|
||||||
|
}
|
||||||
|
|
||||||
|
onDescription(_value:any):void {
|
||||||
|
this.description = _value;
|
||||||
|
}
|
||||||
|
|
||||||
|
sendValues():void {
|
||||||
|
console.log("send new values....");
|
||||||
|
let data = {
|
||||||
|
"number": this.numberVal,
|
||||||
|
"description": this.description
|
||||||
|
};
|
||||||
|
this.saisonService.put(this.id_saison, data);
|
||||||
|
}
|
||||||
|
|
||||||
|
// At the drag drop area
|
||||||
|
// (drop)="onDropFile($event)"
|
||||||
|
onDropFile(_event: DragEvent) {
|
||||||
|
_event.preventDefault();
|
||||||
|
this.uploadFile(_event.dataTransfer.files[0]);
|
||||||
|
}
|
||||||
|
|
||||||
|
// At the drag drop area
|
||||||
|
// (dragover)="onDragOverFile($event)"
|
||||||
|
onDragOverFile(_event) {
|
||||||
|
_event.stopPropagation();
|
||||||
|
_event.preventDefault();
|
||||||
|
}
|
||||||
|
|
||||||
|
// At the file input element
|
||||||
|
// (change)="selectFile($event)"
|
||||||
|
onChangeCover(_value:any):void {
|
||||||
|
this.selectedFiles = _value.files
|
||||||
|
this.coverFile = this.selectedFiles[0];
|
||||||
|
console.log("select file " + this.coverFile.name);
|
||||||
|
this.uploadFile(this.coverFile);
|
||||||
|
}
|
||||||
|
|
||||||
|
uploadFile(_file:File) {
|
||||||
|
if (_file == undefined) {
|
||||||
|
console.log("No file selected!");
|
||||||
|
return;
|
||||||
|
}
|
||||||
|
let self = this;
|
||||||
|
this.dataService.sendFile(_file)
|
||||||
|
.then(function(response) {
|
||||||
|
console.log("get response of saison : " + JSON.stringify(response, null, 2));
|
||||||
|
let id_of_image = response.id;
|
||||||
|
self.saisonService.addCover(self.id_saison, id_of_image)
|
||||||
|
.then(function(response) {
|
||||||
|
console.log("cover added");
|
||||||
|
self.covers_display.push(self.saisonService.getCoverUrl(id_of_image));
|
||||||
|
}).catch(function(response) {
|
||||||
|
console.log("Can not cover in the cover_list...");
|
||||||
|
});
|
||||||
|
}).catch(function(response) {
|
||||||
|
//self.error = "Can not get the data";
|
||||||
|
console.log("Can not add the data in the system...");
|
||||||
|
});
|
||||||
|
}
|
||||||
|
|
||||||
|
}
|
@ -102,8 +102,15 @@ export class ArianeService {
|
|||||||
*/
|
*/
|
||||||
|
|
||||||
setType(id:number):void {
|
setType(id:number):void {
|
||||||
|
if (this.type_id == id) {
|
||||||
|
return;
|
||||||
|
}
|
||||||
this.type_id = id;
|
this.type_id = id;
|
||||||
this.type_name = "??--??";
|
this.type_name = "??--??";
|
||||||
|
if (this.type_id == null) {
|
||||||
|
this.type_change.emit(this.type_id);
|
||||||
|
return;
|
||||||
|
}
|
||||||
let self = this;
|
let self = this;
|
||||||
this.typeService.get(id)
|
this.typeService.get(id)
|
||||||
.then(function(response) {
|
.then(function(response) {
|
||||||
@ -121,8 +128,15 @@ export class ArianeService {
|
|||||||
}
|
}
|
||||||
|
|
||||||
setUnivers(id:number) {
|
setUnivers(id:number) {
|
||||||
|
if (this.univers_id == id) {
|
||||||
|
return;
|
||||||
|
}
|
||||||
this.univers_id = id;
|
this.univers_id = id;
|
||||||
this.univers_name = "??--??";
|
this.univers_name = "??--??";
|
||||||
|
if (this.univers_id == null) {
|
||||||
|
this.univers_change.emit(this.univers_id);
|
||||||
|
return;
|
||||||
|
}
|
||||||
let self = this;
|
let self = this;
|
||||||
this.universService.get(id)
|
this.universService.get(id)
|
||||||
.then(function(response) {
|
.then(function(response) {
|
||||||
@ -140,8 +154,15 @@ export class ArianeService {
|
|||||||
}
|
}
|
||||||
|
|
||||||
setGroup(id:number):void {
|
setGroup(id:number):void {
|
||||||
|
if (this.group_id == id) {
|
||||||
|
return;
|
||||||
|
}
|
||||||
this.group_id = id;
|
this.group_id = id;
|
||||||
this.group_name = "??--??";
|
this.group_name = "??--??";
|
||||||
|
if (this.group_id == null) {
|
||||||
|
this.group_change.emit(this.group_id);
|
||||||
|
return;
|
||||||
|
}
|
||||||
let self = this;
|
let self = this;
|
||||||
this.groupService.get(id)
|
this.groupService.get(id)
|
||||||
.then(function(response) {
|
.then(function(response) {
|
||||||
@ -159,8 +180,15 @@ export class ArianeService {
|
|||||||
}
|
}
|
||||||
|
|
||||||
setSaison(id:number):void {
|
setSaison(id:number):void {
|
||||||
|
if (this.saison_id == id) {
|
||||||
|
return;
|
||||||
|
}
|
||||||
this.saison_id = id;
|
this.saison_id = id;
|
||||||
this.saison_name = "??--??";
|
this.saison_name = "??--??";
|
||||||
|
if (this.saison_id == null) {
|
||||||
|
this.saison_change.emit(this.saison_id);
|
||||||
|
return;
|
||||||
|
}
|
||||||
let self = this;
|
let self = this;
|
||||||
this.saisonService.get(id)
|
this.saisonService.get(id)
|
||||||
.then(function(response) {
|
.then(function(response) {
|
||||||
@ -178,6 +206,9 @@ export class ArianeService {
|
|||||||
}
|
}
|
||||||
|
|
||||||
setVideo(id:number):void {
|
setVideo(id:number):void {
|
||||||
|
if (this.video_id == id) {
|
||||||
|
return;
|
||||||
|
}
|
||||||
this.video_id = id;
|
this.video_id = id;
|
||||||
this.video_change.emit(this.video_id);
|
this.video_change.emit(this.video_id);
|
||||||
}
|
}
|
||||||
|
@ -26,6 +26,12 @@ export class GroupService {
|
|||||||
return this.http.get_specific("group", _id, "saison", _select);
|
return this.http.get_specific("group", _id, "saison", _select);
|
||||||
};
|
};
|
||||||
|
|
||||||
|
put(_id:number, _data:any):any {
|
||||||
|
return this.http.put_specific("group", _id, _data);
|
||||||
|
};
|
||||||
|
addCover(_id:number, _coverId:number):any {
|
||||||
|
return this.http.post_specific("group", _id, {"data_id":_coverId}, "add_cover");
|
||||||
|
};
|
||||||
getCoverUrl(_coverId:number):any {
|
getCoverUrl(_coverId:number):any {
|
||||||
return this.http.createRESTCall("data/" + _coverId);
|
return this.http.createRESTCall("data/" + _coverId);
|
||||||
};
|
};
|
||||||
|
@ -13,11 +13,15 @@ export class SaisonService {
|
|||||||
get(_id:number):any {
|
get(_id:number):any {
|
||||||
return this.http.get_specific("saison", _id);
|
return this.http.get_specific("saison", _id);
|
||||||
};
|
};
|
||||||
|
|
||||||
getVideo(_id:number):any {
|
getVideo(_id:number):any {
|
||||||
return this.http.get_specific("saison", _id, "video");
|
return this.http.get_specific("saison", _id, "video");
|
||||||
};
|
};
|
||||||
|
put(_id:number, _data:any):any {
|
||||||
|
return this.http.put_specific("saison", _id, _data);
|
||||||
|
};
|
||||||
|
addCover(_id:number, _coverId:number):any {
|
||||||
|
return this.http.post_specific("saison", _id, {"data_id":_coverId}, "add_cover");
|
||||||
|
};
|
||||||
getCoverUrl(_coverId:number):any {
|
getCoverUrl(_coverId:number):any {
|
||||||
return this.http.createRESTCall("data/" + _coverId);
|
return this.http.createRESTCall("data/" + _coverId);
|
||||||
};
|
};
|
||||||
|
@ -26,5 +26,14 @@ export class UniversService {
|
|||||||
return this.http.get_specific("univers", _id, "video", _select);
|
return this.http.get_specific("univers", _id, "video", _select);
|
||||||
};
|
};
|
||||||
|
|
||||||
|
put(_id:number, _data:any):any {
|
||||||
|
return this.http.put_specific("univers", _id, _data);
|
||||||
|
};
|
||||||
|
addCover(_id:number, _coverId:number):any {
|
||||||
|
return this.http.post_specific("univers", _id, {"data_id":_coverId}, "add_cover");
|
||||||
|
};
|
||||||
|
getCoverUrl(_coverId:number):any {
|
||||||
|
return this.http.createRESTCall("data/" + _coverId);
|
||||||
|
};
|
||||||
}
|
}
|
||||||
|
|
||||||
|
Loading…
Reference in New Issue
Block a user