From 370d70cd31014f701593c8470bdb0aab87b66a5c Mon Sep 17 00:00:00 2001
From: Alexandre Vanini <vanini.alexandre@gmail.com>
Date: Thu, 9 May 2019 10:10:09 +0200
Subject: [PATCH] Branche pour le design improvment

---
 client/package-lock.json                      |   6 +-
 client/package.json                           |   4 +-
 client/src/app/app-routing.module.ts          |   1 +
 client/src/app/app.module.ts                  |  25 +++++++--
 .../kata-create/kata-create.component.html    |  53 ++++++++++++++++++
 .../program-create.component.html             |   4 +-
 .../program-create.component.scss             |   1 +
 client/src/styles.scss                        |   5 +-
 server_rest/.idea/workspace.xml               |  41 +++++---------
 server_rest/target/classes/app.class          | Bin 5853 -> 5777 bytes
 10 files changed, 100 insertions(+), 40 deletions(-)

diff --git a/client/package-lock.json b/client/package-lock.json
index c5f81e8..d490f65 100644
--- a/client/package-lock.json
+++ b/client/package-lock.json
@@ -122,9 +122,9 @@
       }
     },
     "@angular/animations": {
-      "version": "7.2.14",
-      "resolved": "https://registry.npmjs.org/@angular/animations/-/animations-7.2.14.tgz",
-      "integrity": "sha512-K+wdq7TslmvDhrbwy65x7owE8wezI0fDdO+8SO9RU4m/w6R6vo4QS3uSdc5I2pxwm4QSXSc5eKhoWJkq0muTbQ==",
+      "version": "7.2.15",
+      "resolved": "https://registry.npmjs.org/@angular/animations/-/animations-7.2.15.tgz",
+      "integrity": "sha512-8oBt3HLgd2+kyJHUgsd7OzKCCss67t2sch15XNoIWlOLfxclqU+EfFE6t/vCzpT8/+lpZS6LU9ZrTnb+UBj5jg==",
       "requires": {
         "tslib": "^1.9.0"
       }
diff --git a/client/package.json b/client/package.json
index a2bc891..867e63a 100644
--- a/client/package.json
+++ b/client/package.json
@@ -11,8 +11,8 @@
   },
   "private": true,
   "dependencies": {
-    "@angular/animations": "~7.2.0",
-    "@angular/cdk": "~7.3.7",
+    "@angular/animations": "^7.2.15",
+    "@angular/cdk": "^7.3.7",
     "@angular/common": "~7.2.0",
     "@angular/compiler": "~7.2.0",
     "@angular/core": "~7.2.0",
diff --git a/client/src/app/app-routing.module.ts b/client/src/app/app-routing.module.ts
index 278de4a..5754c12 100644
--- a/client/src/app/app-routing.module.ts
+++ b/client/src/app/app-routing.module.ts
@@ -6,6 +6,7 @@ import {KataComponent} from './kata/kata.component';
 import {ProgramCreateComponent} from './program-create/program-create.component';
 import {KataCreateComponent} from './kata-create/kata-create.component';
 
+
 const routerOptions: ExtraOptions = {
   useHash: false,
   anchorScrolling: 'enabled'
diff --git a/client/src/app/app.module.ts b/client/src/app/app.module.ts
index 32ab379..1f38cdf 100644
--- a/client/src/app/app.module.ts
+++ b/client/src/app/app.module.ts
@@ -7,7 +7,15 @@ import {TerminalAssertComponent} from './terminal-assert/terminal-assert.compone
 import {BrowserAnimationsModule} from '@angular/platform-browser/animations';
 import {MainLeftSideNavComponent} from './main-left-side-nav/main-left-side-nav.component';
 import {LayoutModule} from '@angular/cdk/layout';
-import {MatToolbarModule, MatButtonModule, MatSidenavModule, MatIconModule, MatListModule} from '@angular/material';
+import {
+  MatToolbarModule,
+  MatButtonModule,
+  MatSidenavModule,
+  MatIconModule,
+  MatListModule,
+  MatStepperModule,
+  MatOptionModule, MatSelectModule
+} from '@angular/material';
 import {AppRoutingModule} from './app-routing.module';
 import {RouterModule} from '@angular/router';
 import {KataDisplayerComponent} from './kata-displayer/kata-displayer.component';
@@ -16,11 +24,13 @@ import {KataComponent} from './kata/kata.component';
 import {AceEditorModule} from 'ng2-ace-editor';
 import {KataCreateComponent} from './kata-create/kata-create.component';
 import {ProgramCreateComponent} from './program-create/program-create.component';
-import {FormsModule} from '@angular/forms';
+import {FormsModule, ReactiveFormsModule} from '@angular/forms';
 import {HttpClientModule} from '@angular/common/http';
 import {RNotFoundComponent} from './rnot-found/rnot-found.component';
 import {NgxUiLoaderModule} from 'ngx-ui-loader';
-import { AlertModule } from 'ngx-alerts';
+import {AlertModule} from 'ngx-alerts';
+import {MatInputModule} from '@angular/material';
+import {MatFormFieldModule} from '@angular/material/form-field';
 
 
 @NgModule({
@@ -34,7 +44,7 @@ import { AlertModule } from 'ngx-alerts';
     KataComponent,
     KataCreateComponent,
     ProgramCreateComponent,
-    RNotFoundComponent
+    RNotFoundComponent,
   ],
   imports: [
 
@@ -46,6 +56,13 @@ import { AlertModule } from 'ngx-alerts';
     MatSidenavModule,
     MatIconModule,
     MatListModule,
+    MatStepperModule,
+    FormsModule,
+    ReactiveFormsModule,
+    MatFormFieldModule,
+    MatInputModule,
+    MatOptionModule,
+    MatSelectModule,
     AppRoutingModule,
     RouterModule,
     AceEditorModule,
diff --git a/client/src/app/kata-create/kata-create.component.html b/client/src/app/kata-create/kata-create.component.html
index 1837926..1a7bbaa 100644
--- a/client/src/app/kata-create/kata-create.component.html
+++ b/client/src/app/kata-create/kata-create.component.html
@@ -40,6 +40,59 @@
     </div>
 
   </div>
+ <!-- <mat-horizontal-stepper [linear]="false" #stepper>
+    <mat-step [stepControl]="firstFormGroup">
+      <form [formGroup]="firstFormGroup">
+        <ng-template matStepLabel>Kata's options</ng-template>
+        <mat-form-field>
+          <mat-label>Display assert box</mat-label>
+          <mat-select (change)="UpdateChoice($event)" matNativeControl required>
+            <mat-option value="true">yes</mat-option>
+            <mat-option value="false">no</mat-option>
+          </mat-select>
+        </mat-form-field><br/>
+        <mat-form-field>
+          <input matInput autocomplete="off"  placeholder="Kata's title" [(ngModel)]="title" required>
+        </mat-form-field><br/>
+        <mat-form-field>
+          <input matInput type="number" [(ngModel)]="numberOfAttempt" placeholder="Unlock solution at (n) attempt" required>
+        </mat-form-field>
+
+        <div>
+          <button mat-button matStepperNext>Next</button>
+        </div>
+      </form>
+    </mat-step>
+    <mat-step [stepControl]="secondFormGroup">
+      <form [formGroup]="secondFormGroup">
+        <ng-template matStepLabel>Kata's instructions</ng-template>
+
+          <textarea [(ngModel)]="rules" formControlName="secondCtrl" required></textarea>
+
+        <br/>
+        <div>
+          <button mat-button matStepperPrevious>Back</button>
+          <button mat-button matStepperNext>Next</button>
+        </div>
+      </form>
+    </mat-step>
+    <mat-step [stepControl]="thirdFormGroup">
+      <form [formGroup]="thirdFormGroup">
+        <ng-template matStepLabel>Kata</ng-template>
+        <app-terminal-code [code]="solution" [type]="language" (new)="OnNewEventSolution($event)"></app-terminal-code>
+        <app-terminal-code style="margin-left: 20px;" [code]="assert" [type]="language" (new)="OnNewEventAssert($event)"></app-terminal-code><br/>
+        <app-terminal-code [code]="canva" [type]="language" (new)="OnNewEventCanva($event)"></app-terminal-code>
+        <textarea [ngClass]="{'success':status === 0,'error':status === 1,'':status === 2}"
+                  style="white-space: pre-wrap" disabled>{{result}}</textarea><br/>
+        <div>
+          <button mat-button (click)="try()"  type="button">Try my solution</button>
+          <button mat-button (click)="publish()"  type="button">Create kata</button>
+          <button mat-button matStepperPrevious>Back</button>
+          <button mat-button (click)="stepper.reset()">Reset</button>
+        </div>
+      </form>
+    </mat-step>
+  </mat-horizontal-stepper>-->
 </div>
 
 
diff --git a/client/src/app/program-create/program-create.component.html b/client/src/app/program-create/program-create.component.html
index 31faa13..63c9287 100644
--- a/client/src/app/program-create/program-create.component.html
+++ b/client/src/app/program-create/program-create.component.html
@@ -2,7 +2,7 @@
   <div class="d-flex flex-column">
     <fieldset>
       <legend>New program</legend>
-      <div class="p-2"><label>Title</label><input placeholder="Some title.." type="text" [(ngModel)]="programTitle"/>
+      <div class="p-2"><label>Title</label><input matInput placeholder="Some title.." type="text" [(ngModel)]="programTitle"/>
       </div>
       <div class="p-2"><label>Targeted language</label><select (change)="update($event)">
         <option value="python">python</option>
@@ -10,7 +10,7 @@
       </select></div>
       <div class="p-2"><label>Program description</label><textarea [(ngModel)]="programDescr"
                                                                    placeholder="Some text.."></textarea></div>
-      <div class="p-2"><label>Tags</label><input type="text" [(ngModel)]="programTags"
+      <div class="p-2"><label>Tags (_,_)</label><input type="text" [(ngModel)]="programTags"
                                                  placeholder=" arrays,writeable,.."/></div>
       <div class="p-2">
 
diff --git a/client/src/app/program-create/program-create.component.scss b/client/src/app/program-create/program-create.component.scss
index 1f3449f..e7c857d 100644
--- a/client/src/app/program-create/program-create.component.scss
+++ b/client/src/app/program-create/program-create.component.scss
@@ -1,3 +1,4 @@
+
 input[type=text]{
   width: 100%;
   background-color: rgba(43, 47, 57, 1);
diff --git a/client/src/styles.scss b/client/src/styles.scss
index e7d6f82..4959ba1 100644
--- a/client/src/styles.scss
+++ b/client/src/styles.scss
@@ -1,5 +1,4 @@
 /* You can add global styles to this file, and also import other style files */
-
 html, body {
   height: 100%;
   --color-cloud: rgba(236, 240, 241, 1);
@@ -37,6 +36,10 @@ body {
 
 }
 
+button:focus{
+outline: none;
+}
+
 .button:hover {
   background-color: var(--color-button-hover);
 }
diff --git a/server_rest/.idea/workspace.xml b/server_rest/.idea/workspace.xml
index ee65090..e01421b 100644
--- a/server_rest/.idea/workspace.xml
+++ b/server_rest/.idea/workspace.xml
@@ -2,26 +2,9 @@
 <project version="4">
   <component name="ChangeListManager">
     <list default="true" id="e6a1f2e5-4f60-4227-82bb-83eb10fa94a5" name="Default Changelist" comment="">
-      <change beforePath="$PROJECT_DIR$/../client/package-lock.json" beforeDir="false" afterPath="$PROJECT_DIR$/../client/package-lock.json" afterDir="false" />
-      <change beforePath="$PROJECT_DIR$/../client/package.json" beforeDir="false" afterPath="$PROJECT_DIR$/../client/package.json" afterDir="false" />
-      <change beforePath="$PROJECT_DIR$/../client/src/app/app.module.ts" beforeDir="false" afterPath="$PROJECT_DIR$/../client/src/app/app.module.ts" afterDir="false" />
-      <change beforePath="$PROJECT_DIR$/../client/src/app/kata-create/kata-create.component.html" beforeDir="false" afterPath="$PROJECT_DIR$/../client/src/app/kata-create/kata-create.component.html" afterDir="false" />
-      <change beforePath="$PROJECT_DIR$/../client/src/app/kata-create/kata-create.component.scss" beforeDir="false" afterPath="$PROJECT_DIR$/../client/src/app/kata-create/kata-create.component.scss" afterDir="false" />
-      <change beforePath="$PROJECT_DIR$/../client/src/app/kata-create/kata-create.component.ts" beforeDir="false" afterPath="$PROJECT_DIR$/../client/src/app/kata-create/kata-create.component.ts" afterDir="false" />
-      <change beforePath="$PROJECT_DIR$/../client/src/app/kata-displayer/kata-displayer.component.html" beforeDir="false" afterPath="$PROJECT_DIR$/../client/src/app/kata-displayer/kata-displayer.component.html" afterDir="false" />
-      <change beforePath="$PROJECT_DIR$/../client/src/app/kata-displayer/kata-displayer.component.scss" beforeDir="false" afterPath="$PROJECT_DIR$/../client/src/app/kata-displayer/kata-displayer.component.scss" afterDir="false" />
-      <change beforePath="$PROJECT_DIR$/../client/src/app/kata/kata.component.html" beforeDir="false" afterPath="$PROJECT_DIR$/../client/src/app/kata/kata.component.html" afterDir="false" />
-      <change beforePath="$PROJECT_DIR$/../client/src/app/kata/kata.component.scss" beforeDir="false" afterPath="$PROJECT_DIR$/../client/src/app/kata/kata.component.scss" afterDir="false" />
-      <change beforePath="$PROJECT_DIR$/../client/src/app/kata/kata.component.ts" beforeDir="false" afterPath="$PROJECT_DIR$/../client/src/app/kata/kata.component.ts" afterDir="false" />
-      <change beforePath="$PROJECT_DIR$/../client/src/app/languages_canvas.ts" beforeDir="false" afterPath="$PROJECT_DIR$/../client/src/app/languages_canvas.ts" afterDir="false" />
-      <change beforePath="$PROJECT_DIR$/../client/src/app/main-left-side-nav/main-left-side-nav.component.html" beforeDir="false" afterPath="$PROJECT_DIR$/../client/src/app/main-left-side-nav/main-left-side-nav.component.html" afterDir="false" />
-      <change beforePath="$PROJECT_DIR$/../client/src/app/main-left-side-nav/main-left-side-nav.component.scss" beforeDir="false" afterPath="$PROJECT_DIR$/../client/src/app/main-left-side-nav/main-left-side-nav.component.scss" afterDir="false" />
       <change beforePath="$PROJECT_DIR$/../client/src/app/program-create/program-create.component.html" beforeDir="false" afterPath="$PROJECT_DIR$/../client/src/app/program-create/program-create.component.html" afterDir="false" />
-      <change beforePath="$PROJECT_DIR$/../client/src/app/program-create/program-create.component.scss" beforeDir="false" afterPath="$PROJECT_DIR$/../client/src/app/program-create/program-create.component.scss" afterDir="false" />
-      <change beforePath="$PROJECT_DIR$/../client/src/app/program-create/program-create.component.ts" beforeDir="false" afterPath="$PROJECT_DIR$/../client/src/app/program-create/program-create.component.ts" afterDir="false" />
-      <change beforePath="$PROJECT_DIR$/../client/src/app/program-displayer/program-displayer.component.html" beforeDir="false" afterPath="$PROJECT_DIR$/../client/src/app/program-displayer/program-displayer.component.html" afterDir="false" />
-      <change beforePath="$PROJECT_DIR$/../client/src/app/program-displayer/program-displayer.component.scss" beforeDir="false" afterPath="$PROJECT_DIR$/../client/src/app/program-displayer/program-displayer.component.scss" afterDir="false" />
-      <change beforePath="$PROJECT_DIR$/../client/src/styles.scss" beforeDir="false" afterPath="$PROJECT_DIR$/../client/src/styles.scss" afterDir="false" />
+      <change beforePath="$PROJECT_DIR$/.idea/workspace.xml" beforeDir="false" afterPath="$PROJECT_DIR$/.idea/workspace.xml" afterDir="false" />
+      <change beforePath="$PROJECT_DIR$/target/classes/app.class" beforeDir="false" afterPath="$PROJECT_DIR$/target/classes/app.class" afterDir="false" />
     </list>
     <ignored path="$PROJECT_DIR$/out/" />
     <ignored path="$PROJECT_DIR$/target/" />
@@ -48,8 +31,8 @@
       <file pinned="false" current-in-tab="true">
         <entry file="file://$PROJECT_DIR$/src/main/java/app.java">
           <provider selected="true" editor-type-id="text-editor">
-            <state relative-caret-position="243">
-              <caret line="52" lean-forward="true" selection-start-line="52" selection-end-line="52" />
+            <state relative-caret-position="153">
+              <caret line="46" column="13" lean-forward="true" selection-start-line="46" selection-start-column="13" selection-end-line="46" selection-end-column="13" />
               <folding>
                 <element signature="imports" expanded="true" />
               </folding>
@@ -157,8 +140,8 @@
       <foldersAlwaysOnTop value="true" />
     </navigator>
     <panes>
-      <pane id="ProjectPane" />
       <pane id="Scope" />
+      <pane id="ProjectPane" />
       <pane id="PackagesPane" />
     </panes>
   </component>
@@ -229,11 +212,13 @@
       <workItem from="1557298032818" duration="4720000" />
       <workItem from="1557322451462" duration="202000" />
       <workItem from="1557327228313" duration="707000" />
+      <workItem from="1557340241267" duration="154000" />
+      <workItem from="1557383112195" duration="510000" />
     </task>
     <servers />
   </component>
   <component name="TimeTrackingManager">
-    <option name="totallyTimeSpent" value="48450000" />
+    <option name="totallyTimeSpent" value="49114000" />
   </component>
   <component name="TodoView">
     <todo-panel id="selected-file">
@@ -245,10 +230,10 @@
     </todo-panel>
   </component>
   <component name="ToolWindowManager">
-    <frame x="0" y="23" width="1920" height="1121" extended-state="0" />
+    <frame x="0" y="23" width="1920" height="1121" extended-state="6" />
     <editor active="true" />
     <layout>
-      <window_info content_ui="combo" id="Project" order="0" visible="true" weight="0.2736954" />
+      <window_info content_ui="combo" id="Project" order="0" visible="true" weight="0.1970181" />
       <window_info id="Structure" order="1" side_tool="true" weight="0.25" />
       <window_info id="Image Layers" order="2" />
       <window_info id="Designer" order="3" />
@@ -257,7 +242,7 @@
       <window_info id="Favorites" order="6" side_tool="true" />
       <window_info anchor="bottom" id="Message" order="0" />
       <window_info anchor="bottom" id="Find" order="1" />
-      <window_info anchor="bottom" id="Run" order="2" weight="0.3595724" />
+      <window_info anchor="bottom" id="Run" order="2" weight="0.35939643" />
       <window_info anchor="bottom" id="Debug" order="3" weight="0.39941692" />
       <window_info anchor="bottom" id="Cvs" order="4" weight="0.25" />
       <window_info anchor="bottom" id="Inspection" order="5" weight="0.4" />
@@ -490,8 +475,8 @@
     </entry>
     <entry file="file://$PROJECT_DIR$/src/main/java/app.java">
       <provider selected="true" editor-type-id="text-editor">
-        <state relative-caret-position="243">
-          <caret line="52" lean-forward="true" selection-start-line="52" selection-end-line="52" />
+        <state relative-caret-position="153">
+          <caret line="46" column="13" lean-forward="true" selection-start-line="46" selection-start-column="13" selection-end-line="46" selection-end-column="13" />
           <folding>
             <element signature="imports" expanded="true" />
           </folding>
diff --git a/server_rest/target/classes/app.class b/server_rest/target/classes/app.class
index 4330328ec39ca3c488dd2ea4f9dae24083eb77d9..1c9802a0ba2547a05908d5756ebce45a16bfac3e 100644
GIT binary patch
delta 2418
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

delta 2524
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
G!*l?^^uu2O

-- 
GitLab