From f49e221ac7e489d10523baf8eac5a49a7398dc5d Mon Sep 17 00:00:00 2001 From: Edouard DUPIN Date: Tue, 10 Nov 2020 23:10:50 +0100 Subject: [PATCH] [DEV] update edit serie --- back/karideo.iml | 61 ------------------ back/src/org/kar/karideo/ConfigVariable.java | 4 +- .../org/kar/karideo/api/NodeInterface.java | 10 +++ .../org/kar/karideo/api/SeriesResource.java | 3 + front/.gitignore | 1 + .../app/scene/series-edit/series-edit.html | 11 ++++ .../src/app/scene/series-edit/series-edit.ts | 39 +++++++++-- front/src/environments/environment.ts | 2 + front/src/favicon.ico | Bin 5430 -> 11747 bytes 9 files changed, 63 insertions(+), 68 deletions(-) delete mode 100644 back/karideo.iml create mode 100644 front/.gitignore diff --git a/back/karideo.iml b/back/karideo.iml deleted file mode 100644 index c56ba78..0000000 --- a/back/karideo.iml +++ /dev/null @@ -1,61 +0,0 @@ - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - \ No newline at end of file diff --git a/back/src/org/kar/karideo/ConfigVariable.java b/back/src/org/kar/karideo/ConfigVariable.java index e76ccbe..e98075e 100644 --- a/back/src/org/kar/karideo/ConfigVariable.java +++ b/back/src/org/kar/karideo/ConfigVariable.java @@ -21,7 +21,7 @@ public class ConfigVariable { public static String getRestOAuthServer() { String out = System.getenv("org.kar.karideo.rest.oauth"); if (out == null) { - return "http://localhost:17080/oauth/api/"; + return "http://localhost:17080/karauth/api/"; } return out; } @@ -37,7 +37,7 @@ public class ConfigVariable { public static String getDBPort() { String out = System.getenv("org.kar.karideo.db.port"); if (out == null) { - return "3306"; + return "15306"; } return out; } diff --git a/back/src/org/kar/karideo/api/NodeInterface.java b/back/src/org/kar/karideo/api/NodeInterface.java index 301b90c..dee715c 100644 --- a/back/src/org/kar/karideo/api/NodeInterface.java +++ b/back/src/org/kar/karideo/api/NodeInterface.java @@ -413,6 +413,9 @@ public class NodeInterface { if (!root.path("description").isMissingNode()) { query += ", `description` = ? "; } + if (!root.path("parent_id").isMissingNode()) { + query += ", `parent_id` = ? "; + } query += " WHERE `id` = ?"; DBEntry entry = new DBEntry(WebLauncher.dbConfig); try { @@ -432,6 +435,13 @@ public class NodeInterface { ps.setString(iii++, root.path("description").asText()); } } + if (!root.path("parent_id").isMissingNode()) { + if (root.path("parent_id").isNull()) { + ps.setNull(iii++, Types.BIGINT); + } else { + ps.setLong(iii++, root.path("parent_id").asLong()); + } + } ps.setLong(iii++, id); System.out.println(" request : " + ps.toString()); ps.executeUpdate(); diff --git a/back/src/org/kar/karideo/api/SeriesResource.java b/back/src/org/kar/karideo/api/SeriesResource.java index 0f10254..ccf6a10 100644 --- a/back/src/org/kar/karideo/api/SeriesResource.java +++ b/back/src/org/kar/karideo/api/SeriesResource.java @@ -60,9 +60,12 @@ public class SeriesResource { ) { return NodeInterface.uploadCover(typeInNode, id, file_name, fileInputStream, fileMetaData); } + @GET @Path("{id}/rm_cover/{cover_id}") public Response removeCover(@PathParam("id") Long nodeId, @PathParam("cover_id") Long coverId) { return NodeInterface.removeCover(typeInNode, nodeId, coverId); } + } + diff --git a/front/.gitignore b/front/.gitignore new file mode 100644 index 0000000..2ccbe46 --- /dev/null +++ b/front/.gitignore @@ -0,0 +1 @@ +/node_modules/ diff --git a/front/src/app/scene/series-edit/series-edit.html b/front/src/app/scene/series-edit/series-edit.html index f754eb4..7fef973 100644 --- a/front/src/app/scene/series-edit/series-edit.html +++ b/front/src/app/scene/series-edit/series-edit.html @@ -3,6 +3,17 @@
Edit series
+
+
+ Type: +
+
+ +
+
Name: diff --git a/front/src/app/scene/series-edit/series-edit.ts b/front/src/app/scene/series-edit/series-edit.ts index f88db63..248199c 100644 --- a/front/src/app/scene/series-edit/series-edit.ts +++ b/front/src/app/scene/series-edit/series-edit.ts @@ -11,6 +11,7 @@ import { fadeInAnimation } from '../../_animations/index'; import { SeriesService } from '../../service/series'; import { DataService } from '../../service/data'; +import { TypeService } from '../../service/type'; import { ArianeService } from '../../service/ariane'; import { UploadProgress } from '../../popin/upload-progress/upload-progress'; import { PopInService } from '../../service/popin'; @@ -35,18 +36,24 @@ export class ElementList { export class SeriesEditScene implements OnInit { id_series:number = -1; - error:string = "" - - name:string = "" - description:string = "" + error:string = ""; + + type_id:number = null; + name:string = ""; + description:string = ""; coverFile:File; - upload_file_value:string = "" + upload_file_value:string = ""; selectedFiles:FileList; covers_display:Array = []; // section tha define the upload value to display in the pop-in of upload public upload:UploadProgress = new UploadProgress(); + + listType: ElementList[] = [ + {value: undefined, label: '---'}, + ]; + // --------------- confirm section ------------------ public confirmDeleteComment:string = null; public confirmDeleteImageUrl:string = null; @@ -68,6 +75,7 @@ export class SeriesEditScene implements OnInit { private router: Router, private locate: Location, private dataService: DataService, + private typeService: TypeService, private seriesService: SeriesService, private arianeService: ArianeService, private popInService: PopInService) { @@ -78,10 +86,22 @@ export class SeriesEditScene implements OnInit { this.arianeService.updateManual(this.route.snapshot.paramMap); this.id_series = this.arianeService.getSeriesId(); let self = this; + this.listType = [{value: null, label: '---'}]; + + this.typeService.getData() + .then(function(response2) { + for(let iii= 0; iii < response2.length; iii++) { + self.listType.push({value: response2[iii].id, label: response2[iii].name}); + } + }).catch(function(response2) { + console.log("get response22 : " + JSON.stringify(response2, null, 2)); + }); + this.seriesService.get(this.id_series) .then(function(response) { //console.log("get response of video : " + JSON.stringify(response, null, 2)); self.name = response.name; + self.type_id = response.parent_id; self.description = response.description; self.updateCoverList(response.covers); //console.log("covers_list : " + JSON.stringify(self.covers_display, null, 2)); @@ -114,10 +134,19 @@ export class SeriesEditScene implements OnInit { onDescription(_value:any):void { this.description = _value; } + + onChangeType(_value:any):void { + console.log("Change requested of type ... " + _value); + this.type_id = _value; + if (this.type_id == undefined) { + this.type_id = null; + } + } sendValues():void { console.log("send new values...."); let data = { + "parent_id": this.type_id, "name": this.name, "description": this.description }; diff --git a/front/src/environments/environment.ts b/front/src/environments/environment.ts index 7b93ba5..1dd16ed 100644 --- a/front/src/environments/environment.ts +++ b/front/src/environments/environment.ts @@ -8,7 +8,9 @@ export const environment = { // URL of development API //apiUrl: 'http://localhost:15080', apiUrl: 'http://localhost:18080/karideo/api', + //apiUrl: 'http://192.168.1.156/karideo/api', apiOAuthUrl: 'http://localhost:17080/oauth/api', + //apiOAuthUrl: 'http://192.168.1.156/oauth/api', frontBaseUrl: '', //apiMode: "QUERRY" apiMode: "REWRITE" diff --git a/front/src/favicon.ico b/front/src/favicon.ico index 8081c7ceaf2be08bf59010158c586170d9d2d517..b54cbd20e47b2d38a4149567da374b7924b93926 100644 GIT binary patch literal 11747 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 C&ub6> literal 5430 zcmc(je{54#6vvCoAI3i*G5%$U7!sA3wtMZ$fH6V9C`=eXGJb@R1%(I_{vnZtpD{6n z5Pl{DmxzBDbrB>}`90e12m8T*36WoeDLA&SD_hw{H^wM!cl_RWcVA!I+x87ee975; z@4kD^=bYPn&pmG@(+JZ`rqQEKxW<}RzhW}I!|ulN=fmjVi@x{p$cC`)5$a!)X&U+blKNvN5tg=uLvuLnuqRM;Yc*swiexsoh#XPNu{9F#c`G zQLe{yWA(Y6(;>y|-efAy11k<09(@Oo1B2@0`PtZSkqK&${ zgEY}`W@t{%?9u5rF?}Y7OL{338l*JY#P!%MVQY@oqnItpZ}?s z!r?*kwuR{A@jg2Chlf0^{q*>8n5Ir~YWf*wmsh7B5&EpHfd5@xVaj&gqsdui^spyL zB|kUoblGoO7G(MuKTfa9?pGH0@QP^b#!lM1yHWLh*2iq#`C1TdrnO-d#?Oh@XV2HK zKA{`eo{--^K&MW66Lgsktfvn#cCAc*(}qsfhrvOjMGLE?`dHVipu1J3Kgr%g?cNa8 z)pkmC8DGH~fG+dlrp(5^-QBeEvkOvv#q7MBVLtm2oD^$lJZx--_=K&Ttd=-krx(Bb zcEoKJda@S!%%@`P-##$>*u%T*mh+QjV@)Qa=Mk1?#zLk+M4tIt%}wagT{5J%!tXAE;r{@=bb%nNVxvI+C+$t?!VJ@0d@HIyMJTI{vEw0Ul ze(ha!e&qANbTL1ZneNl45t=#Ot??C0MHjjgY8%*mGisN|S6%g3;Hlx#fMNcL<87MW zZ>6moo1YD?P!fJ#Jb(4)_cc50X5n0KoDYfdPoL^iV`k&o{LPyaoqMqk92wVM#_O0l z09$(A-D+gVIlq4TA&{1T@BsUH`Bm=r#l$Z51J-U&F32+hfUP-iLo=jg7Xmy+WLq6_tWv&`wDlz#`&)Jp~iQf zZP)tu>}pIIJKuw+$&t}GQuqMd%Z>0?t%&BM&Wo^4P^Y z)c6h^f2R>X8*}q|bblAF?@;%?2>$y+cMQbN{X$)^R>vtNq_5AB|0N5U*d^T?X9{xQnJYeU{ zoZL#obI;~Pp95f1`%X3D$Mh*4^?O?IT~7HqlWguezmg?Ybq|7>qQ(@pPHbE9V?f|( z+0xo!#m@Np9PljsyxBY-UA*{U*la#8Wz2sO|48_-5t8%_!n?S$zlGe+NA%?vmxjS- zHE5O3ZarU=X}$7>;Okp(UWXJxI%G_J-@IH;%5#Rt$(WUX?6*Ux!IRd$dLP6+SmPn= z8zjm4jGjN772R{FGkXwcNv8GBcZI#@Y2m{RNF_w8(Z%^A*!bS*!}s6sh*NnURytky humW;*g7R+&|Ledvc-