diff --git a/readme.md b/readme.md index bb01c20699d93da2dc5490af31528777e9bc4070..c161f3112545776004deccbcdfd46805117db7c2 100644 --- a/readme.md +++ b/readme.md @@ -65,4 +65,6 @@ Clean what you don't need: keep bootstrap-grid.scss with the files & folders imp @import "utilities/display"; @import "utilities/flex"; -Import the bootrap-grid.scss in your style.scss +Import the bootrap-grid.scss in your style.scss as following: + +`@import '~scss/bootstrap-grid.scss';` diff --git a/webapp/src/app/app.module.ts b/webapp/src/app/app.module.ts index 2d9e72fbd4c9f4672bcaa7c9a0c8be27abbd72a3..fe0fb589839779c492157c34382ca44f3306f4b4 100644 --- a/webapp/src/app/app.module.ts +++ b/webapp/src/app/app.module.ts @@ -1,12 +1,14 @@ import { BrowserModule } from '@angular/platform-browser'; import { BrowserAnimationsModule } from '@angular/platform-browser/animations'; import { NgModule } from '@angular/core'; +import { HttpClientModule } from '@angular/common/http'; import { AppMaterialModule } from './app.material.module'; import { AppComponent } from './app.component'; import { AppRoutingModule } from './app-routing.module'; import { CoreModule } from './core/core.module'; +import { GeosourceModule } from './geosource/geosource.module'; @NgModule({ @@ -16,8 +18,10 @@ import { CoreModule } from './core/core.module'; imports: [ BrowserModule, BrowserAnimationsModule, + HttpClientModule, AppMaterialModule, CoreModule, + GeosourceModule, AppRoutingModule ], providers: [], diff --git a/webapp/src/app/core/components/footer/footer.component.html b/webapp/src/app/core/components/footer/footer.component.html index 6800e0eb1bdd02470a1e7a55dab3a9ed7d615d50..797c90ef00d15392ad050b8111424c1c85048b4c 100644 --- a/webapp/src/app/core/components/footer/footer.component.html +++ b/webapp/src/app/core/components/footer/footer.component.html @@ -1,3 +1,14 @@ -<p> - footer works! -</p> +<div class="container"> + <div class="row"> + <div class="col-sm-10"> + <a routerLink="/app">CONDITIONS GÉNÉRALES D’UTILISATION</a> + <a class="left-border" routerLink="/app">MENTIONS LÉGALES</a> + <a class="left-border" routerLink="/app">CONTACT</a> + <a class="left-border" routerLink="/app">PLAN DU SITE</a> + </div> + + <div class="col-sm-2 footer-logo" > + <img src="./assets/img/logo.svg" height="25px" alt="" > + </div> + </div> +</div> \ No newline at end of file diff --git a/webapp/src/app/core/components/footer/footer.component.scss b/webapp/src/app/core/components/footer/footer.component.scss index e69de29bb2d1d6434b8b29ae775ad8c2e48c5391..24d90af5cb3bbcbd63e736ee484b085903e9238a 100644 --- a/webapp/src/app/core/components/footer/footer.component.scss +++ b/webapp/src/app/core/components/footer/footer.component.scss @@ -0,0 +1,12 @@ +@import '~@angular/material/theming'; + +.footer-logo { + text-align: right; +} + +.left-border { + border-left: 2px solid black; + padding-left: 10px; + margin-left: 5px; +} + diff --git a/webapp/src/app/core/components/main/main.component.html b/webapp/src/app/core/components/main/main.component.html index bfa5088f191e9dc19dae414a23c66f29c10a30fa..068953fb09a0d944b2af7d0b9515aa5f125e815b 100644 --- a/webapp/src/app/core/components/main/main.component.html +++ b/webapp/src/app/core/components/main/main.component.html @@ -1,9 +1,7 @@ <app-header></app-header> -<div class="container-fluid"> - <p> - main works! - </p> +<div class="container"> + <router-outlet></router-outlet> </div> -<app-footer></app-footer> +<app-footer></app-footer> \ No newline at end of file diff --git a/webapp/src/app/core/core-routing.module.ts b/webapp/src/app/core/core-routing.module.ts index 90928dee8fee6426218ddb728ebd039c707db39e..92b0fd24aee71ac0d10b49a2e54c9f32683840ee 100644 --- a/webapp/src/app/core/core-routing.module.ts +++ b/webapp/src/app/core/core-routing.module.ts @@ -1,9 +1,23 @@ import { NgModule } from '@angular/core'; import { Routes, RouterModule } from '@angular/router'; import { MainComponent } from './components/main/main.component'; +import { DatasetsComponent } from '../geosource/components/datasets/datasets.component'; const routes: Routes = [ - { path: 'app', component: MainComponent } + { + path: 'app', + component: MainComponent, + children: [ + { + path: '', + redirectTo: 'geosource', + pathMatch: 'full' + }, + { + path: 'geosource', + component: DatasetsComponent + } + ]} ]; @NgModule({ diff --git a/webapp/src/app/geosource/components/datasets/datasets.component.html b/webapp/src/app/geosource/components/datasets/datasets.component.html new file mode 100644 index 0000000000000000000000000000000000000000..153e25d5e3cf9c61591a2e42c0440958372d3d79 --- /dev/null +++ b/webapp/src/app/geosource/components/datasets/datasets.component.html @@ -0,0 +1,5 @@ +<div class="row"> + <mat-card *ngFor="let dataset of datasets" class="col-md-6"> + {{ dataset.title }} + </mat-card> +</div> \ No newline at end of file diff --git a/webapp/src/app/geosource/components/datasets/datasets.component.scss b/webapp/src/app/geosource/components/datasets/datasets.component.scss new file mode 100644 index 0000000000000000000000000000000000000000..e69de29bb2d1d6434b8b29ae775ad8c2e48c5391 diff --git a/webapp/src/app/geosource/components/datasets/datasets.component.spec.ts b/webapp/src/app/geosource/components/datasets/datasets.component.spec.ts new file mode 100644 index 0000000000000000000000000000000000000000..8fdfa87224e29c777b99133abc10bedd1439fd2d --- /dev/null +++ b/webapp/src/app/geosource/components/datasets/datasets.component.spec.ts @@ -0,0 +1,25 @@ +import { async, ComponentFixture, TestBed } from '@angular/core/testing'; + +import { DatasetsComponent } from './datasets.component'; + +describe('DatasetsComponent', () => { + let component: DatasetsComponent; + let fixture: ComponentFixture<DatasetsComponent>; + + beforeEach(async(() => { + TestBed.configureTestingModule({ + declarations: [ DatasetsComponent ] + }) + .compileComponents(); + })); + + beforeEach(() => { + fixture = TestBed.createComponent(DatasetsComponent); + component = fixture.componentInstance; + fixture.detectChanges(); + }); + + it('should create', () => { + expect(component).toBeTruthy(); + }); +}); diff --git a/webapp/src/app/geosource/components/datasets/datasets.component.ts b/webapp/src/app/geosource/components/datasets/datasets.component.ts new file mode 100644 index 0000000000000000000000000000000000000000..594e5f72ec02c61b060e37f748df0934df612500 --- /dev/null +++ b/webapp/src/app/geosource/components/datasets/datasets.component.ts @@ -0,0 +1,27 @@ +import { Component, OnInit } from '@angular/core'; +import { DatasetService } from '../../services/dataset.service'; +import { Dataset } from '../../models'; + +@Component({ + selector: 'app-datasets', + templateUrl: './datasets.component.html', + styleUrls: ['./datasets.component.scss'] +}) +export class DatasetsComponent implements OnInit { + + datasets: Array<Dataset>; + + constructor( + private datasetService: DatasetService + ) { } + + ngOnInit() { + this.datasetService.getDatasets().subscribe( + (res) => { + this.datasets = res; + }, (err) => { + + }); + } + +} diff --git a/webapp/src/app/geosource/geosource-routing.module.ts b/webapp/src/app/geosource/geosource-routing.module.ts new file mode 100644 index 0000000000000000000000000000000000000000..07772e3fde93bd52e57689cf141c066bb16ad1d8 --- /dev/null +++ b/webapp/src/app/geosource/geosource-routing.module.ts @@ -0,0 +1,11 @@ +import { NgModule } from '@angular/core'; +import { Routes, RouterModule } from '@angular/router'; +import { DatasetsComponent } from './components/datasets/datasets.component'; + +const routes: Routes = []; + +@NgModule({ + imports: [RouterModule.forChild(routes)], + exports: [RouterModule] +}) +export class GeosourceRoutingModule { } diff --git a/webapp/src/app/geosource/geosource.module.ts b/webapp/src/app/geosource/geosource.module.ts new file mode 100644 index 0000000000000000000000000000000000000000..ee7201abc31cffde510ebed94a4c096b5641816c --- /dev/null +++ b/webapp/src/app/geosource/geosource.module.ts @@ -0,0 +1,20 @@ +import { NgModule } from '@angular/core'; +import { CommonModule } from '@angular/common'; + +import { GeosourceRoutingModule } from './geosource-routing.module'; +import { DatasetsComponent } from './components/datasets/datasets.component'; +import { GeosourceServices } from './services'; +import { AppMaterialModule } from '../app.material.module'; + +@NgModule({ + imports: [ + CommonModule, + GeosourceRoutingModule, + AppMaterialModule + ], + declarations: [DatasetsComponent], + providers: [ + ...GeosourceServices + ] +}) +export class GeosourceModule { } diff --git a/webapp/src/app/geosource/models/dataset.model.ts b/webapp/src/app/geosource/models/dataset.model.ts new file mode 100644 index 0000000000000000000000000000000000000000..ed65e8c7f880d9ce34ff017dd36cf088f2e5978c --- /dev/null +++ b/webapp/src/app/geosource/models/dataset.model.ts @@ -0,0 +1,11 @@ +export interface DatasetInterface { + 'title': string; +} + +export class Dataset { + 'title': string; + + constructor(data?: DatasetInterface) { + Object.assign(this, data); + } +} diff --git a/webapp/src/app/geosource/models/index.ts b/webapp/src/app/geosource/models/index.ts new file mode 100644 index 0000000000000000000000000000000000000000..60c330768c71f2a4244aa7912296dda0f0f961ee --- /dev/null +++ b/webapp/src/app/geosource/models/index.ts @@ -0,0 +1 @@ +export * from './dataset.model'; diff --git a/webapp/src/app/geosource/services/dataset.service.spec.ts b/webapp/src/app/geosource/services/dataset.service.spec.ts new file mode 100644 index 0000000000000000000000000000000000000000..64c3f06307e172dc5db9e00b1297ccdbfe1fabdc --- /dev/null +++ b/webapp/src/app/geosource/services/dataset.service.spec.ts @@ -0,0 +1,15 @@ +import { TestBed, inject } from '@angular/core/testing'; + +import { DatasetService } from './dataset.service'; + +describe('DatasetService', () => { + beforeEach(() => { + TestBed.configureTestingModule({ + providers: [DatasetService] + }); + }); + + it('should be created', inject([DatasetService], (service: DatasetService) => { + expect(service).toBeTruthy(); + })); +}); diff --git a/webapp/src/app/geosource/services/dataset.service.ts b/webapp/src/app/geosource/services/dataset.service.ts new file mode 100644 index 0000000000000000000000000000000000000000..c2726b083897dc4148e68cc5dcb81e6c9a92a33f --- /dev/null +++ b/webapp/src/app/geosource/services/dataset.service.ts @@ -0,0 +1,29 @@ +import { Injectable } from '@angular/core'; +import { HttpClient } from '@angular/common/http'; +import { Dataset } from '../models'; +import { Observable } from 'rxjs/Observable'; + +// To be removed when using real api +import 'rxjs/add/observable/of'; + +@Injectable() +export class DatasetService { + + constructor( + private http: HttpClient + ) { } + + getDatasets(): Observable<Array<Dataset>> { + // return this.http.request<Dataset>('GET', 'https://elastic2.recette.data.grandlyon.com/elastic/*.meta/_search?pretty', { + // body: { + // 'query': { + // 'query_string': { 'query': '*', 'fuzziness': 0 } + // } + // } + // }); + let a = new Array<Dataset>(); + a = [{'title': 'Velov'}, {'title': 'Velov'}]; + return Observable.of(a); + } + +} diff --git a/webapp/src/app/geosource/services/index.ts b/webapp/src/app/geosource/services/index.ts new file mode 100644 index 0000000000000000000000000000000000000000..9e482ccb5a65ef56691a3785faa87bbcc45aeb64 --- /dev/null +++ b/webapp/src/app/geosource/services/index.ts @@ -0,0 +1,7 @@ +import { DatasetService } from './dataset.service'; + +export * from './dataset.service'; + +export const GeosourceServices = [ + DatasetService +]; \ No newline at end of file diff --git a/webapp/src/favicon.ico b/webapp/src/favicon.ico index 8081c7ceaf2be08bf59010158c586170d9d2d517..5619a8f1cf3db720725e00d80636e23de406e8de 100644 Binary files a/webapp/src/favicon.ico and b/webapp/src/favicon.ico differ diff --git a/webapp/src/index.html b/webapp/src/index.html index 7f7cdaad218c56a1538acb7013c1c0e9c1eac4e6..19bf6b53a8f01ed953e9cbe1d89ffdff55d3f5fb 100644 --- a/webapp/src/index.html +++ b/webapp/src/index.html @@ -1,5 +1,6 @@ <!doctype html> <html lang="en"> + <head> <meta charset="utf-8"> <title>Webapp</title> @@ -8,7 +9,14 @@ <meta name="viewport" content="width=device-width, initial-scale=1"> <link rel="icon" type="image/x-icon" href="favicon.ico"> </head> + <body> - <app-root></app-root> + <app-root> + <section class="AppLoader"> + <img src="assets/img/logo.svg" alt="Grand Lyon, la métropole"> + + </section> + </app-root> </body> -</html> + +</html> \ No newline at end of file diff --git a/webapp/src/styles.scss b/webapp/src/styles.scss index df64f3c452e1de8a5b7dad7bfe21e7db81cc51c6..049daecb441b79e4f5024056279f82e40eb1a1c5 100644 --- a/webapp/src/styles.scss +++ b/webapp/src/styles.scss @@ -10,6 +10,8 @@ body { height: 100%; } +@import "~theming/shared/loader"; + h1, h2, h3 { font-size: 2em; font-weight: 700; diff --git a/webapp/src/theming/_all-theme.scss b/webapp/src/theming/_all-theme.scss index 50310d0330dc28b2fbba8590f60ac6e6e5396e86..d7f8f19200f01d5f29747ee7705c397a8a7c48f7 100644 --- a/webapp/src/theming/_all-theme.scss +++ b/webapp/src/theming/_all-theme.scss @@ -6,14 +6,14 @@ // Theming des éléments transverses // @import "shared/form-theme"; -// @import "shared/loader-theme"; +@import "shared/loader-theme"; // @import "shared/table-theme"; -// @mixin app-shared-theme($theme) { +@mixin app-shared-theme($theme) { // @include app-shared-form-theme($theme); -// @include app-shared-loader-theme($theme); + @include app-shared-loader-theme($theme); // @include app-shared-table-theme($theme); -// } +} // // Theming des composants Angular diff --git a/webapp/src/theming/shared/_loader-theme.scss b/webapp/src/theming/shared/_loader-theme.scss new file mode 100644 index 0000000000000000000000000000000000000000..51e5fa01628bb7f46206e990d1d5bc76be165740 --- /dev/null +++ b/webapp/src/theming/shared/_loader-theme.scss @@ -0,0 +1,10 @@ +@import '~@angular/material/theming'; + +@mixin app-shared-loader-theme($theme) { + $background: map-get($theme, background); + + .AppLoader { + background: mat-color($background, background); + } +} + diff --git a/webapp/src/theming/shared/_loader.scss b/webapp/src/theming/shared/_loader.scss new file mode 100644 index 0000000000000000000000000000000000000000..f0256fc74891949eb590fae68f9bc81567344f3d --- /dev/null +++ b/webapp/src/theming/shared/_loader.scss @@ -0,0 +1,12 @@ +.AppLoader { + display:flex; + align-items: center; + justify-content: center; + height:100vh; + img { + margin-left: 0px; + width: 70%; + text-align: center; + } +} + diff --git a/webapp/tslint.json b/webapp/tslint.json index 9963d6c3954caaaced81c9015113cb579316c32a..3dc3ff9ef2067ce2c93dff7964b091c237001f68 100644 --- a/webapp/tslint.json +++ b/webapp/tslint.json @@ -29,7 +29,7 @@ "interface-over-type-literal": true, "label-position": true, "max-line-length": [ - true, + false, 140 ], "member-access": false,