From 9b0085730bfb3fe10c626865a0dc0cd6e1064c12 Mon Sep 17 00:00:00 2001
From: ncastejon <castejon.nicolas@gmail.com>
Date: Tue, 30 Oct 2018 14:58:28 +0100
Subject: [PATCH] Add active link router - Fix edit link remove

---
 src/app/app.component.html                    |  2 +-
 src/app/app.component.scss                    | 16 --------
 src/app/components/menu/menu.component.html   |  4 +-
 src/app/components/menu/menu.component.scss   |  8 ++++
 .../detail/organization-detail.component.html |  2 +-
 .../detail/organization-detail.component.ts   |  1 -
 .../edit/organization-form.component.html     | 37 ++++++++++++-------
 .../edit/organization-form.component.scss     | 11 ++----
 .../edit/organization-form.component.ts       |  7 +++-
 .../list/organizations.component.html         | 16 ++++----
 .../list/organizations.component.scss         | 24 +++++++++---
 src/app/services/organization.service.ts      |  2 -
 12 files changed, 71 insertions(+), 59 deletions(-)

diff --git a/src/app/app.component.html b/src/app/app.component.html
index e13b1c3..f0cfafd 100644
--- a/src/app/app.component.html
+++ b/src/app/app.component.html
@@ -4,7 +4,7 @@
       <div class="js-navigation hamburger" aria-haspopup="true" aria-owns="main-nav" aria-expanded="false">
 
       </div>
-      <h4>Plateforme Data Backoffice</h4>
+      <h4>Plateforme Data Admin</h4>
       <div class="logo">
           <img src="assets/img/logo.svg" alt="Le Grand Lyon, la métropole">
 
diff --git a/src/app/app.component.scss b/src/app/app.component.scss
index 2a80e4f..763ab39 100644
--- a/src/app/app.component.scss
+++ b/src/app/app.component.scss
@@ -69,22 +69,6 @@
 .main-content {
   transition: all 200ms cubic-bezier(0.7, 0, 0.3, 1);
 }
-
-@media screen and (min-width: 45em){
-  .grid{
-      grid-template-columns:50px auto;
-    }
-  }
-  
-  @media screen and (min-width: 118em){
-    .main-content{
-      grid-column: 2 / -1;
-    }
-    
-    .main-nav{
-      transform: translateX(0);
-    }
-  }
   
   
   /* Stuff not needed for the demo */
diff --git a/src/app/components/menu/menu.component.html b/src/app/components/menu/menu.component.html
index 5f7d4be..113a6e1 100644
--- a/src/app/components/menu/menu.component.html
+++ b/src/app/components/menu/menu.component.html
@@ -1,14 +1,14 @@
 
 <aside class="menu">
   <ul class="menu-list">
-    <li><a [routerLink]="['/']">
+    <li><a [routerLink]="['/']" routerLinkActive="active-link" [routerLinkActiveOptions]="{ exact: true }">
       <span class="icon">
           <i class="fas fa-home"></i>
         </span>
       <span class="label-menu">Dashboard</span> 
       </a>
     </li>
-    <li><a [routerLink]="['/', 'organizations']">
+    <li><a [routerLink]="['/', 'organizations']" routerLinkActive="active-link">
       <span class="icon">
           <i class="fas fa-city"></i>
         </span>
diff --git a/src/app/components/menu/menu.component.scss b/src/app/components/menu/menu.component.scss
index 9b9967f..c00f4be 100644
--- a/src/app/components/menu/menu.component.scss
+++ b/src/app/components/menu/menu.component.scss
@@ -37,3 +37,11 @@
 
   }
 }
+
+li a {
+  border-left: 3px solid #333745;
+  &.active-link {
+    border-color:#d5232a;
+  }
+}
+
diff --git a/src/app/components/organizations/detail/organization-detail.component.html b/src/app/components/organizations/detail/organization-detail.component.html
index e046c7a..1d59843 100644
--- a/src/app/components/organizations/detail/organization-detail.component.html
+++ b/src/app/components/organizations/detail/organization-detail.component.html
@@ -1,7 +1,7 @@
 <ng-container *ngIf="organization">
 
   <div class="back-button">
-    <a routerLink="/organizations">
+    <a routerLink="/organizations" title="Retourner à la liste des organisations">
       <span class="icon is-medium">
         <i class="fas fa-arrow-left fa-lg"></i>
       </span>
diff --git a/src/app/components/organizations/detail/organization-detail.component.ts b/src/app/components/organizations/detail/organization-detail.component.ts
index 5c92ea2..165ed8d 100644
--- a/src/app/components/organizations/detail/organization-detail.component.ts
+++ b/src/app/components/organizations/detail/organization-detail.component.ts
@@ -20,7 +20,6 @@ export class OrganizationDetailComponent implements OnInit {
   }
 
   ngOnInit(): void {
-    console.log('init detail');
     this.route.paramMap
       .switchMap((params: ParamMap) => this.organizationService.findById(params.get('id')))
       .subscribe((organization: Organization) => this.organization = organization);
diff --git a/src/app/components/organizations/edit/organization-form.component.html b/src/app/components/organizations/edit/organization-form.component.html
index e5eb2ea..bfa9e96 100644
--- a/src/app/components/organizations/edit/organization-form.component.html
+++ b/src/app/components/organizations/edit/organization-form.component.html
@@ -1,7 +1,7 @@
 <ng-container *ngIf="organization">
 
   <div class="back-button">
-    <a routerLink="/organizations">
+    <a routerLink="/organizations" title="Retourner à la liste des organisations"> 
       <span class="icon is-medium">
         <i class="fas fa-arrow-left fa-lg"></i>
       </span>
@@ -9,10 +9,10 @@
     </a>
   </div>
 
-  <h1>Edit</h1>
+  <h1>Modifier l'organisation</h1>
 
   <form [formGroup]="form" (ngSubmit)="onSubmit()" class="columns is-centered is-marginless">
-    <div class="column is-5">
+    <div class="column is-7">
       <input type="hidden" formControlName="id" value="{{organization.id}}">
 
 
@@ -40,23 +40,34 @@
       </div>
 
       <div class="field links">
-        <label class="label">Liens</label>
-        <span class="icon" (click)="addLink()">
-          <i class="fas fa-plus"></i>
-        </span>
-        <div formArrayName="links">
-          <div *ngFor="let link of form.get('links').controls; let i = index;" [formGroupName]="i">
-            <input class="input" type="text" formControlName="url">
-            <span class="icon" (click)="removeLink(i)">
-              <i class="fas fa-trash"></i>
+        <div class="columns">
+          <div class="column is-11">
+            <label class="label">Liens</label>
+          </div>
+          <div class="column is-1">
+            <span class="icon" (click)="addLink()" title="Ajouter un lien">
+              <i class="fas fa-plus"></i>
             </span>
           </div>
         </div>
+
+        <div formArrayName="links">
+          <div *ngFor="let link of formLinks.controls; let i = index;" [formGroupName]="i" class="columns">
+            <div class="column is-11">
+              <input class="input" type="text" formControlName="url">
+            </div>
+            <div class="column is-1">
+              <span class="icon" (click)="removeLink(i)" title="Supprimer le lien">
+                <i class="fas fa-trash"></i>
+              </span>
+            </div>
+          </div>
+        </div>
       </div>
 
       <div class="field">
         <div class="control">
-          <button class="button is-info">Valider</button>
+          <button class="button validate">Valider</button>
         </div>
       </div>
 
diff --git a/src/app/components/organizations/edit/organization-form.component.scss b/src/app/components/organizations/edit/organization-form.component.scss
index 304ea56..8423b64 100644
--- a/src/app/components/organizations/edit/organization-form.component.scss
+++ b/src/app/components/organizations/edit/organization-form.component.scss
@@ -13,17 +13,14 @@ h1 {
       color: lightblue;
     }
     .fa-trash {
-      color: lightcoral;
+      color: #d5232a;
     }
   }
 }
 
-.links input {
-  width: 80%;
-}
-.links .label {
-  display: inline-block;
-  width: 80%;
+.validate {
+  background-color: #168f48;
+  color: white;
 }
 
 .back-button {
diff --git a/src/app/components/organizations/edit/organization-form.component.ts b/src/app/components/organizations/edit/organization-form.component.ts
index d10f967..9ea62cf 100644
--- a/src/app/components/organizations/edit/organization-form.component.ts
+++ b/src/app/components/organizations/edit/organization-form.component.ts
@@ -67,11 +67,14 @@ export class OrganizationFormComponent implements OnInit {
       this.organization.links = [];
     }
     (this.form.controls.links as FormArray).push(this._fb.group({ id: null, name: '', url: '', organizationId: this.organization.id }));
-    console.log(this.form.controls['links']);
   }
 
   removeLink(index) {
-    (this.form.controls.links as FormArray).removeAt(1);
+    (this.form.controls.links as FormArray).removeAt(index);
+  }
+
+  get formLinks() {
+    return this.form.controls.links as FormArray;
   }
 
   onSubmit() {
diff --git a/src/app/components/organizations/list/organizations.component.html b/src/app/components/organizations/list/organizations.component.html
index 2cd0c7a..76bae61 100644
--- a/src/app/components/organizations/list/organizations.component.html
+++ b/src/app/components/organizations/list/organizations.component.html
@@ -9,7 +9,7 @@
       <div class="table">
           <div class="header columns is-marginless">
               <div class="column is-1 has-text-centered">
-                <span (click)="sortBy('id')">
+                <span (click)="sortBy('id')" class="is-sortable">
                   <span class="column-title" [ngClass]="{'active': sortOptions.value === 'id'}">Id</span>
                   <span *ngIf="sortOptions.value === 'id'" class="has-text-danger">
                     <i class="fas sort-order-icon" [ngClass]="{'fa-arrow-up': sortOptions.order === 'asc', 'fa-arrow-down': sortOptions.order === 'desc'}"></i>
@@ -17,7 +17,7 @@
                 </span>
               </div>
               <div class="column is-2 has-text-centered">
-                <span (click)="sortBy('name')">
+                <span (click)="sortBy('name')" class="is-sortable">
                   <span class="column-title" [ngClass]="{'active': sortOptions.value === name}">Name</span>
                   <span *ngIf="sortOptions.value  === 'name'"  class="has-text-danger">
                     <i class="fas sort-order-icon" [ngClass]="{'fa-arrow-up': sortOptions.order === 'asc', 'fa-arrow-down': sortOptions.order === 'desc'}"></i>
@@ -55,18 +55,18 @@
                 </div>
                 <div class="column is-2 has-text-centered">
                   <p *ngFor="let link of organization.links">
-                    <a href="link.url">{{link.url}}</a>
+                    <a href="link.url" target="_blank">{{link.url}}</a>
                   </p>
                 </div>
-                <div class="column is-1 has-text-centered actions">
-                  <div class="columns is-marginless">
-                    <span class="icon column">
+                <div class="column is-1 has-text-centered actions"> 
+                  <div class="columns is-marginless is-centered">
+                    <span class="icon column is-narrow">
                       <a [routerLink]="[organization.id]"><i class="fas fa-eye"></i></a>
                     </span>
-                    <span class="icon column">
+                    <span class="icon column is-narrow">
                       <a [routerLink]="[organization.id, 'edit']"> <i class="fas fa-edit"></i></a>
                     </span>
-                    <span class="icon has-text-danger column" (click)="displayDeletePopup(organization.id)">
+                    <span class="icon has-text-danger column is-narrow" (click)="displayDeletePopup(organization.id)">
                       <a> <i class="fas fa-trash"></i></a>
                     </span>
                   </div>
diff --git a/src/app/components/organizations/list/organizations.component.scss b/src/app/components/organizations/list/organizations.component.scss
index d077603..a10df3d 100644
--- a/src/app/components/organizations/list/organizations.component.scss
+++ b/src/app/components/organizations/list/organizations.component.scss
@@ -1,6 +1,9 @@
 section {
   padding: 20px;
 }
+.section {
+  padding-top: 0;
+}
 
 .table {
   background-color: white;
@@ -16,24 +19,33 @@ img {
 }
 
 .header {
-  border-bottom: 1px solid lightgray;;
+  border-bottom: 1px solid lightgray;
+  background-color: #fafafa;
+  span {
+    color: #999;
+
+  }
 }
 
-.column-title {
+.is-sortable .column-title {
   cursor: pointer;
 }
 
-.columns.odd {
-  background-color: white;
+.table .columns {
+  border-bottom: 1px solid lightgray
 }
 
-.columns.even {
-  background-color: #F5F5F5;
+.actions .columns {
+  border: none;
 }
 
 .actions {
   vertical-align: middle;
 
+  .icon.column {
+    padding: 0;
+  }
+
   span {
     display: inline-block;
   }
diff --git a/src/app/services/organization.service.ts b/src/app/services/organization.service.ts
index 2981c0b..2ea35b2 100644
--- a/src/app/services/organization.service.ts
+++ b/src/app/services/organization.service.ts
@@ -51,8 +51,6 @@ export class OrganizationService {
   }
 
   delete(id) {
-    console.log('delete');
-    console.log(id);
     return this._httpClient.delete(environment.backend.url + '/organizations/' + id);
   }
 
-- 
GitLab