Browse Source

implement planning page

tripeur 4 years ago
parent
commit
75a936fbd8
29 changed files with 83 additions and 8 deletions
  1. 1 1
      pom.xml
  2. 1 1
      src/main/java/fr/jaquin/bdlg/planner/controller/ApiController.java
  3. 5 0
      src/main/java/fr/jaquin/bdlg/planner/controller/PageController.java
  4. 1 3
      src/main/java/fr/jaquin/bdlg/planner/controller/SolverController.java
  5. 69 0
      src/main/java/fr/jaquin/bdlg/planner/controller/UserController.java
  6. 1 1
      src/main/java/fr/jaquin/bdlg/planner/security/WebSecurityConfig.java
  7. 0 0
      src/main/resources/static/css/chunk-common.ea467b4f.css
  8. 1 0
      src/main/resources/static/css/display.6b9fa674.css
  9. 0 0
      src/main/resources/static/css/index.3d383433.css
  10. 0 0
      src/main/resources/static/css/index.8553a36a.css
  11. 0 0
      src/main/resources/static/css/login.a752cf82.css
  12. 1 0
      src/main/resources/static/css/login.b7936a60.css
  13. 0 0
      src/main/resources/static/js/chunk-common.5dc62835.js
  14. 0 0
      src/main/resources/static/js/chunk-common.5dc62835.js.map
  15. 0 0
      src/main/resources/static/js/chunk-vendors.4f8f083e.js
  16. 0 0
      src/main/resources/static/js/chunk-vendors.4f8f083e.js.map
  17. 0 0
      src/main/resources/static/js/display.d9f0b370.js
  18. 0 0
      src/main/resources/static/js/display.d9f0b370.js.map
  19. 0 0
      src/main/resources/static/js/index.4625807f.js
  20. 0 0
      src/main/resources/static/js/index.4625807f.js.map
  21. 0 0
      src/main/resources/static/js/index.6ba939e0.js
  22. 0 0
      src/main/resources/static/js/index.6ba939e0.js.map
  23. 0 0
      src/main/resources/static/js/login.1fcb48c0.js
  24. 0 0
      src/main/resources/static/js/login.1fcb48c0.js.map
  25. 0 0
      src/main/resources/static/js/login.a7426825.js
  26. 0 0
      src/main/resources/static/js/login.a7426825.js.map
  27. 1 1
      src/main/resources/static/login.html
  28. 1 1
      src/main/resources/static/planner/index.html
  29. 1 0
      src/main/resources/static/planning/display/index.html

+ 1 - 1
pom.xml

@@ -14,7 +14,7 @@
   <description>Plannification automatique des créneaux bénévoles pour </description>
 
   <properties>
-    <java.version>8</java.version>
+    <java.version>14</java.version>
   </properties>
 
   <dependencies>

+ 1 - 1
src/main/java/fr/jaquin/bdlg/planner/controller/ApiController.java

@@ -114,7 +114,7 @@ public class ApiController {
   }
 
   @DeleteMapping("/evenements/{uuid}")
-  boolean deleteEvenement(Principal principal, @PathVariable String uuid) {
+  boolean deleteEvenement(@PathVariable String uuid) {
     List<Evenement> list = repository.findByUuid(uuid);
     for (Evenement evenement : list) {
       repositoryLob.deleteById(evenement.getId());

+ 5 - 0
src/main/java/fr/jaquin/bdlg/planner/controller/PageController.java

@@ -11,6 +11,11 @@ class PageController {
     return "forward:/planner/index.html";
   }
 
+  @GetMapping(value = {"/planning/display", "/planning/display/{path:[a-f0-9-]*}"})
+  public String redirectDisplay() {
+    return "forward:/planning/display/index.html";
+  }
+
   @GetMapping(value = "/")
   public String redirectHome() {
     return "redirect:/planner/";

+ 1 - 3
src/main/java/fr/jaquin/bdlg/planner/controller/SolverController.java

@@ -19,11 +19,9 @@ import org.optaplanner.core.api.solver.SolverManager;
 import org.springframework.beans.factory.annotation.Autowired;
 import org.springframework.web.bind.annotation.PostMapping;
 import org.springframework.web.bind.annotation.RequestBody;
-import org.springframework.web.bind.annotation.RequestMapping;
 import org.springframework.web.bind.annotation.RestController;
 
 @RestController
-@RequestMapping("/planning")
 public class SolverController {
 
   @Autowired
@@ -32,7 +30,7 @@ public class SolverController {
   private ScoreManager<Planning, HardMediumSoftScore> scoreManager;
   private Collector<CharSequence, ?, String> listCollector = Collectors.joining(",", "[", "]");
 
-  @PostMapping("/solve")
+  @PostMapping("/planning/solve")
   public PlanningSolution solve(@RequestBody PlanningInput inputs) {
     Planning problem = inputs.generatePlanningProblem();
 

+ 69 - 0
src/main/java/fr/jaquin/bdlg/planner/controller/UserController.java

@@ -0,0 +1,69 @@
+package fr.jaquin.bdlg.planner.controller;
+
+import java.security.Principal;
+import java.util.List;
+import org.springframework.http.HttpStatus;
+import org.springframework.web.bind.annotation.DeleteMapping;
+import org.springframework.web.bind.annotation.GetMapping;
+import org.springframework.web.bind.annotation.PathVariable;
+import org.springframework.web.bind.annotation.PostMapping;
+import org.springframework.web.bind.annotation.PutMapping;
+import org.springframework.web.bind.annotation.RequestBody;
+import org.springframework.web.bind.annotation.RestController;
+import org.springframework.web.server.ResponseStatusException;
+import fr.jaquin.bdlg.planner.persistence.CustomUser;
+import fr.jaquin.bdlg.planner.persistence.CustomUserRepository;
+
+@RestController
+public class UserController {
+
+
+  private final CustomUserRepository repositoryUser;
+
+  public UserController(CustomUserRepository repositoryUser) {
+    this.repositoryUser = repositoryUser;
+  }
+
+  @GetMapping("/users")
+  List<CustomUser> getUsers() {
+    return (List<CustomUser>) repositoryUser.findAll();
+  }
+
+  @PostMapping("/users")
+  CustomUser getUsers(@RequestBody CustomUser user) {
+    if (repositoryUser.findByUsername(user.getUsername()) == null) {
+      return repositoryUser.save(user);
+    } else {
+      throw new ResponseStatusException(HttpStatus.CONFLICT, "");
+    }
+  }
+
+  @PutMapping("/users/{username}")
+  void updateUsers(Principal principal, @RequestBody CustomUser user,
+      @PathVariable String username) {
+    if ((principal.getName() == username)) {
+      CustomUser u = repositoryUser.findByUsername(username);
+      if (u == null) {
+        throw new ResponseStatusException(HttpStatus.NOT_FOUND, "");
+      } else {
+        u.setEmail(user.getEmail());
+        System.out.println("Update pwd: " + user.getPassword());
+        u.setPassword(user.getPassword());
+        repositoryUser.save(u);
+      }
+    } else {
+      throw new ResponseStatusException(HttpStatus.FORBIDDEN,
+          "You are not authorised to modify this user");
+    }
+  }
+
+  @DeleteMapping("/users/{username}")
+  void deleteUsers(@PathVariable String username) {
+    CustomUser u = repositoryUser.findByUsername(username);
+    if (u == null) {
+      throw new ResponseStatusException(HttpStatus.NO_CONTENT, "The user doesn't exist.");
+    } else {
+      repositoryUser.delete(u);
+    }
+  }
+}

+ 1 - 1
src/main/java/fr/jaquin/bdlg/planner/security/WebSecurityConfig.java

@@ -40,7 +40,7 @@ public class WebSecurityConfig extends WebSecurityConfigurerAdapter {
       http
         .csrf().disable()
         .authorizeRequests()  
-          .antMatchers(HttpMethod.GET,"/planning/display").permitAll()    
+          .antMatchers(HttpMethod.GET,"/planning/display/**").permitAll()    
           .antMatchers(HttpMethod.GET, "/api/evenements/history/**").hasRole("USER") 
           .antMatchers(HttpMethod.GET, "/api/evenements/**").permitAll()   
           .antMatchers(HttpMethod.PUT, "/api/evenements/**").hasRole("USER")  

File diff suppressed because it is too large
+ 0 - 0
src/main/resources/static/css/chunk-common.ea467b4f.css


+ 1 - 0
src/main/resources/static/css/display.6b9fa674.css

@@ -0,0 +1 @@
+@-webkit-keyframes dots-jump-8187dd8a{0%,60%,to{top:50%}30%{top:0}}@keyframes dots-jump-8187dd8a{0%,60%,to{top:50%}30%{top:0}}.dot[data-v-8187dd8a]{all:initial;position:absolute;display:inline-block;font-size:inherit;width:.6em;height:.6em;left:.2em;background-color:var(--color-primary-400);border-radius:50%;-webkit-animation-name:dots-jump-8187dd8a;animation-name:dots-jump-8187dd8a;-webkit-animation-duration:1.4s;animation-duration:1.4s;-webkit-animation-iteration-count:infinite;animation-iteration-count:infinite;-webkit-animation-fill-mode:both;animation-fill-mode:both}.dot[data-v-8187dd8a]:nth-child(2){-webkit-animation-delay:.2s;animation-delay:.2s;left:1.2em}.dot[data-v-8187dd8a]:nth-child(3){-webkit-animation-delay:.4s;animation-delay:.4s;left:2.2em}.dots[data-v-8187dd8a]{all:initial;display:inline-block;position:relative;font-size:inherit;width:3em;margin:1em;height:1em}.container[data-v-2dde9ed0]{display:flex;justify-content:center;flex-direction:column;margin:8px}.no-info[data-v-2dde9ed0]{display:flex;flex-direction:column;font-size:1.5em;margin:16px}.no-info>.material-icons[data-v-2dde9ed0]{font-size:9em;line-height:1.1em;text-align:center;color:var(--color-neutral-800)}.no-info>div[data-v-2dde9ed0]{text-align:center;line-height:1.5em;color:var(--color-neutral-200)}.loading[data-v-2dde9ed0]{text-align:center;font-size:30px;margin:40px 8px}@media (min-width:600px){.no-info[data-v-2dde9ed0]{font-size:2em}.loading[data-v-2dde9ed0]{margin-top:60px;font-size:40px}}

File diff suppressed because it is too large
+ 0 - 0
src/main/resources/static/css/index.3d383433.css


File diff suppressed because it is too large
+ 0 - 0
src/main/resources/static/css/index.8553a36a.css


File diff suppressed because it is too large
+ 0 - 0
src/main/resources/static/css/login.a752cf82.css


+ 1 - 0
src/main/resources/static/css/login.b7936a60.css

@@ -0,0 +1 @@
+.container{margin-top:80px;width:100%;display:flex;justify-content:center}.login-box{box-shadow:0 2px 8px rgba(0,0,0,.2);padding:8px 32px 16px;min-width:420px}

File diff suppressed because it is too large
+ 0 - 0
src/main/resources/static/js/chunk-common.5dc62835.js


File diff suppressed because it is too large
+ 0 - 0
src/main/resources/static/js/chunk-common.5dc62835.js.map


File diff suppressed because it is too large
+ 0 - 0
src/main/resources/static/js/chunk-vendors.4f8f083e.js


File diff suppressed because it is too large
+ 0 - 0
src/main/resources/static/js/chunk-vendors.4f8f083e.js.map


File diff suppressed because it is too large
+ 0 - 0
src/main/resources/static/js/display.d9f0b370.js


File diff suppressed because it is too large
+ 0 - 0
src/main/resources/static/js/display.d9f0b370.js.map


File diff suppressed because it is too large
+ 0 - 0
src/main/resources/static/js/index.4625807f.js


File diff suppressed because it is too large
+ 0 - 0
src/main/resources/static/js/index.4625807f.js.map


File diff suppressed because it is too large
+ 0 - 0
src/main/resources/static/js/index.6ba939e0.js


File diff suppressed because it is too large
+ 0 - 0
src/main/resources/static/js/index.6ba939e0.js.map


File diff suppressed because it is too large
+ 0 - 0
src/main/resources/static/js/login.1fcb48c0.js


File diff suppressed because it is too large
+ 0 - 0
src/main/resources/static/js/login.1fcb48c0.js.map


File diff suppressed because it is too large
+ 0 - 0
src/main/resources/static/js/login.a7426825.js


File diff suppressed because it is too large
+ 0 - 0
src/main/resources/static/js/login.a7426825.js.map


+ 1 - 1
src/main/resources/static/login.html

@@ -1 +1 @@
-<!DOCTYPE html><html lang=""><head><meta charset="utf-8"><meta http-equiv="X-UA-Compatible" content="IE=edge"><meta name="viewport" content="width=device-width,initial-scale=1"><link rel="icon" href="/favicon.ico"><title>BDLG planner Connexion</title><link href="/css/login.a752cf82.css" rel="preload" as="style"><link href="/js/chunk-vendors.121bdf9d.js" rel="preload" as="script"><link href="/js/login.1fcb48c0.js" rel="preload" as="script"><link href="/css/login.a752cf82.css" rel="stylesheet"></head><body><noscript><strong>We're sorry but BDLG planner Connexion doesn't work properly without JavaScript enabled. Please enable it to continue.</strong></noscript><div id="app"></div><script src="/js/chunk-vendors.121bdf9d.js"></script><script src="/js/login.1fcb48c0.js"></script></body></html>
+<!DOCTYPE html><html lang=""><head><meta charset="utf-8"><meta http-equiv="X-UA-Compatible" content="IE=edge"><meta name="viewport" content="width=device-width,initial-scale=1"><link rel="icon" href="/favicon.ico"><title>BDLG planner - Connexion</title><link href="/css/chunk-common.ea467b4f.css" rel="preload" as="style"><link href="/css/login.b7936a60.css" rel="preload" as="style"><link href="/js/chunk-common.5dc62835.js" rel="preload" as="script"><link href="/js/chunk-vendors.4f8f083e.js" rel="preload" as="script"><link href="/js/login.a7426825.js" rel="preload" as="script"><link href="/css/chunk-common.ea467b4f.css" rel="stylesheet"><link href="/css/login.b7936a60.css" rel="stylesheet"></head><body><noscript><strong>We're sorry but BDLG planner - Connexion doesn't work properly without JavaScript enabled. Please enable it to continue.</strong></noscript><div id="app"></div><script src="/js/chunk-vendors.4f8f083e.js"></script><script src="/js/chunk-common.5dc62835.js"></script><script src="/js/login.a7426825.js"></script></body></html>

+ 1 - 1
src/main/resources/static/planner/index.html

@@ -1 +1 @@
-<!DOCTYPE html><html lang=""><head><meta charset="utf-8"><meta http-equiv="X-UA-Compatible" content="IE=edge"><meta name="viewport" content="width=device-width,initial-scale=1"><link rel="icon" href="/favicon.ico"><title>BDLG planner</title><link href="/css/index.3d383433.css" rel="preload" as="style"><link href="/js/chunk-vendors.121bdf9d.js" rel="preload" as="script"><link href="/js/index.4625807f.js" rel="preload" as="script"><link href="/css/index.3d383433.css" rel="stylesheet"></head><body><noscript><strong>We're sorry but BDLG planner doesn't work properly without JavaScript enabled. Please enable it to continue.</strong></noscript><div id="app"></div><script src="/js/chunk-vendors.121bdf9d.js"></script><script src="/js/index.4625807f.js"></script></body></html>
+<!DOCTYPE html><html lang=""><head><meta charset="utf-8"><meta http-equiv="X-UA-Compatible" content="IE=edge"><meta name="viewport" content="width=device-width,initial-scale=1"><link rel="icon" href="/favicon.ico"><title>BDLG planner</title><link href="/css/chunk-common.ea467b4f.css" rel="preload" as="style"><link href="/css/index.8553a36a.css" rel="preload" as="style"><link href="/js/chunk-common.5dc62835.js" rel="preload" as="script"><link href="/js/chunk-vendors.4f8f083e.js" rel="preload" as="script"><link href="/js/index.6ba939e0.js" rel="preload" as="script"><link href="/css/chunk-common.ea467b4f.css" rel="stylesheet"><link href="/css/index.8553a36a.css" rel="stylesheet"></head><body><noscript><strong>We're sorry but BDLG planner doesn't work properly without JavaScript enabled. Please enable it to continue.</strong></noscript><div id="app"></div><script src="/js/chunk-vendors.4f8f083e.js"></script><script src="/js/chunk-common.5dc62835.js"></script><script src="/js/index.6ba939e0.js"></script></body></html>

+ 1 - 0
src/main/resources/static/planning/display/index.html

@@ -0,0 +1 @@
+<!DOCTYPE html><html lang=""><head><meta charset="utf-8"><meta http-equiv="X-UA-Compatible" content="IE=edge"><meta name="viewport" content="width=device-width,initial-scale=1"><link rel="icon" href="/favicon.ico"><title>BDLG planner - Visualisation</title><link href="/css/chunk-common.ea467b4f.css" rel="preload" as="style"><link href="/css/display.6b9fa674.css" rel="preload" as="style"><link href="/js/chunk-common.5dc62835.js" rel="preload" as="script"><link href="/js/chunk-vendors.4f8f083e.js" rel="preload" as="script"><link href="/js/display.d9f0b370.js" rel="preload" as="script"><link href="/css/chunk-common.ea467b4f.css" rel="stylesheet"><link href="/css/display.6b9fa674.css" rel="stylesheet"></head><body><noscript><strong>We're sorry but BDLG planner - Visualisation doesn't work properly without JavaScript enabled. Please enable it to continue.</strong></noscript><div id="app"></div><script src="/js/chunk-vendors.4f8f083e.js"></script><script src="/js/chunk-common.5dc62835.js"></script><script src="/js/display.d9f0b370.js"></script></body></html>

Some files were not shown because too many files changed in this diff