diff --git a/angular.json b/angular.json index 197fb70..ddeeb36 100644 --- a/angular.json +++ b/angular.json @@ -1,5 +1,8 @@ { "$schema": "./node_modules/@angular/cli/lib/config/schema.json", + "cli": { + "analytics": false + }, "version": 1, "newProjectRoot": "projects", "projects": { diff --git a/package-lock.json b/package-lock.json index ba5289e..2687562 100644 --- a/package-lock.json +++ b/package-lock.json @@ -1,7 +1,7 @@ { "name": "space-x", "version": "0.0.0", - "lockfileVersion": 2, + "lockfileVersion": 1, "requires": true, "packages": { "": { @@ -17411,8 +17411,7 @@ "version": "12.2.17", "resolved": "https://registry.npmjs.org/@ngtools/webpack/-/webpack-12.2.17.tgz", "integrity": "sha512-uaS+2YZgPDW3VmUuwh4/yfIFV1KRVGWefc6xLWIqKRKs6mlRYs65m3ib9dX7CTS4kQMCbhxkxMbpBO2yXlzfvA==", - "dev": true, - "requires": {} + "dev": true }, "@nodelib/fs.scandir": { "version": "2.1.5", @@ -17842,8 +17841,7 @@ "version": "1.8.0", "resolved": "https://registry.npmjs.org/acorn-import-assertions/-/acorn-import-assertions-1.8.0.tgz", "integrity": "sha512-m7VZ3jwz4eK6A4Vtt8Ew1/mNbP24u0FhdyfA7fSvnJR6LMdfOYnmuIrrJAgrYfYJ10F/otaHTtrtrtmHdMNzEw==", - "dev": true, - "requires": {} + "dev": true }, "adjust-sourcemap-loader": { "version": "4.0.0", @@ -17909,8 +17907,7 @@ "version": "1.0.1", "resolved": "https://registry.npmjs.org/ajv-errors/-/ajv-errors-1.0.1.tgz", "integrity": "sha512-DCRfO/4nQ+89p/RK43i8Ezd41EqdGIU4ld7nGF8OQ14oc/we5rEntLCUa7+jrn3nn83BosfwZA0wb4pon2o8iQ==", - "dev": true, - "requires": {} + "dev": true }, "ajv-formats": { "version": "2.1.0", @@ -18521,8 +18518,7 @@ "version": "5.2.2", "resolved": "https://registry.npmjs.org/circular-dependency-plugin/-/circular-dependency-plugin-5.2.2.tgz", "integrity": "sha512-g38K9Cm5WRwlaH6g03B9OEz/0qRizI+2I7n+Gz+L5DxXJAPAiWQvwlYNm1V1jkdpUv95bOe/ASm2vfi/G560jQ==", - "dev": true, - "requires": {} + "dev": true }, "class-utils": { "version": "0.3.6", @@ -18904,8 +18900,7 @@ "version": "3.5.2", "resolved": "https://registry.npmjs.org/ajv-keywords/-/ajv-keywords-3.5.2.tgz", "integrity": "sha512-5p6WTN0DdTGVQk6VjcEju19IgaHudalcfabD7yhDGeA6bcQnmL+CpveLJq/3hvfwd1aof6L386Ougkx6RfyMIQ==", - "dev": true, - "requires": {} + "dev": true }, "glob-parent": { "version": "6.0.2", @@ -19148,8 +19143,7 @@ "version": "6.2.2", "resolved": "https://registry.npmjs.org/css-declaration-sorter/-/css-declaration-sorter-6.2.2.tgz", "integrity": "sha512-Ufadglr88ZLsrvS11gjeu/40Lw74D9Am/Jpr3LlYm5Q4ZP5KdlUhG+6u2EjyXeZcxmZ2h1ebCKngDjolpeLHpg==", - "dev": true, - "requires": {} + "dev": true }, "css-has-pseudo": { "version": "0.10.0", @@ -19249,8 +19243,7 @@ "version": "3.5.2", "resolved": "https://registry.npmjs.org/ajv-keywords/-/ajv-keywords-3.5.2.tgz", "integrity": "sha512-5p6WTN0DdTGVQk6VjcEju19IgaHudalcfabD7yhDGeA6bcQnmL+CpveLJq/3hvfwd1aof6L386Ougkx6RfyMIQ==", - "dev": true, - "requires": {} + "dev": true }, "json-schema-traverse": { "version": "0.4.1", @@ -19420,8 +19413,7 @@ "version": "3.1.0", "resolved": "https://registry.npmjs.org/cssnano-utils/-/cssnano-utils-3.1.0.tgz", "integrity": "sha512-JQNR19/YZhz4psLX/rQ9M83e3z2Wf/HdJbryzte4a3NSuafyp9w/I4U+hx5C2S9g41qlstH7DEWnZaaj83OuEA==", - "dev": true, - "requires": {} + "dev": true }, "csso": { "version": "4.2.0", @@ -21117,8 +21109,7 @@ "version": "5.1.0", "resolved": "https://registry.npmjs.org/icss-utils/-/icss-utils-5.1.0.tgz", "integrity": "sha512-soFhflCVWLfRNOPU3iv5Z9VUdT44xFRbzjLsEzSr5AQmgqPMTHdU3PMT1Cf1ssx8fLNJDA1juftYl+PUcv3MqA==", - "dev": true, - "requires": {} + "dev": true }, "ieee754": { "version": "1.2.1", @@ -21906,8 +21897,7 @@ "version": "1.7.0", "resolved": "https://registry.npmjs.org/karma-jasmine-html-reporter/-/karma-jasmine-html-reporter-1.7.0.tgz", "integrity": "sha512-pzum1TL7j90DTE86eFt48/s12hqwQuiD+e5aXx2Dc9wDEn2LfGq6RoAxEZZjFiN0RDSCOnosEKRZWxbQ+iMpQQ==", - "dev": true, - "requires": {} + "dev": true }, "karma-source-map-support": { "version": "1.4.0", @@ -22434,8 +22424,7 @@ "version": "3.5.2", "resolved": "https://registry.npmjs.org/ajv-keywords/-/ajv-keywords-3.5.2.tgz", "integrity": "sha512-5p6WTN0DdTGVQk6VjcEju19IgaHudalcfabD7yhDGeA6bcQnmL+CpveLJq/3hvfwd1aof6L386Ougkx6RfyMIQ==", - "dev": true, - "requires": {} + "dev": true }, "json-schema-traverse": { "version": "0.4.1", @@ -23881,29 +23870,25 @@ "version": "5.1.1", "resolved": "https://registry.npmjs.org/postcss-discard-comments/-/postcss-discard-comments-5.1.1.tgz", "integrity": "sha512-5JscyFmvkUxz/5/+TB3QTTT9Gi9jHkcn8dcmmuN68JQcv3aQg4y88yEHHhwFB52l/NkaJ43O0dbksGMAo49nfQ==", - "dev": true, - "requires": {} + "dev": true }, "postcss-discard-duplicates": { "version": "5.1.0", "resolved": "https://registry.npmjs.org/postcss-discard-duplicates/-/postcss-discard-duplicates-5.1.0.tgz", "integrity": "sha512-zmX3IoSI2aoenxHV6C7plngHWWhUOV3sP1T8y2ifzxzbtnuhk1EdPwm0S1bIUNaJ2eNbWeGLEwzw8huPD67aQw==", - "dev": true, - "requires": {} + "dev": true }, "postcss-discard-empty": { "version": "5.1.1", "resolved": "https://registry.npmjs.org/postcss-discard-empty/-/postcss-discard-empty-5.1.1.tgz", "integrity": "sha512-zPz4WljiSuLWsI0ir4Mcnr4qQQ5e1Ukc3i7UfE2XcrwKK2LIPIqE5jxMRxO6GbI3cv//ztXDsXwEWT3BHOGh3A==", - "dev": true, - "requires": {} + "dev": true }, "postcss-discard-overridden": { "version": "5.1.0", "resolved": "https://registry.npmjs.org/postcss-discard-overridden/-/postcss-discard-overridden-5.1.0.tgz", "integrity": "sha512-21nOL7RqWR1kasIVdKs8HNqQJhFxLsyRfAnUDm4Fe4t4mCWL9OJiHvlHPjcd8zc5Myu89b/7wZDnOSjFgeWRtw==", - "dev": true, - "requires": {} + "dev": true }, "postcss-double-position-gradients": { "version": "1.0.0", @@ -24361,8 +24346,7 @@ "version": "3.0.0", "resolved": "https://registry.npmjs.org/postcss-modules-extract-imports/-/postcss-modules-extract-imports-3.0.0.tgz", "integrity": "sha512-bdHleFnP3kZ4NYDhuGlVK+CMrQ/pqUm8bx/oGL93K6gVwiclvX5x0n76fYMKuIGKzlABOy13zsvqjb0f92TEXw==", - "dev": true, - "requires": {} + "dev": true }, "postcss-modules-local-by-default": { "version": "4.0.0", @@ -24430,8 +24414,7 @@ "version": "5.1.0", "resolved": "https://registry.npmjs.org/postcss-normalize-charset/-/postcss-normalize-charset-5.1.0.tgz", "integrity": "sha512-mSgUJ+pd/ldRGVx26p2wz9dNZ7ji6Pn8VWBajMXFf8jk7vUoSrZ2lt/wZR7DtlZYKesmZI680qjr2CeFF2fbUg==", - "dev": true, - "requires": {} + "dev": true }, "postcss-normalize-display-values": { "version": "5.1.0", @@ -25426,8 +25409,7 @@ "version": "3.5.2", "resolved": "https://registry.npmjs.org/ajv-keywords/-/ajv-keywords-3.5.2.tgz", "integrity": "sha512-5p6WTN0DdTGVQk6VjcEju19IgaHudalcfabD7yhDGeA6bcQnmL+CpveLJq/3hvfwd1aof6L386Ougkx6RfyMIQ==", - "dev": true, - "requires": {} + "dev": true }, "json-schema-traverse": { "version": "0.4.1", @@ -26196,6 +26178,17 @@ } } }, + "string-width": { + "version": "4.2.3", + "resolved": "https://registry.npmjs.org/string-width/-/string-width-4.2.3.tgz", + "integrity": "sha512-wKyQRQpjJ0sIp62ErSZdGsjMJWsap5oRNihHhu6G7JVO/9jIB6UyevL+tXuOqrng8j/cxKTWyWUwvSTriiZz/g==", + "dev": true, + "requires": { + "emoji-regex": "^8.0.0", + "is-fullwidth-code-point": "^3.0.0", + "strip-ansi": "^6.0.1" + } + }, "string_decoder": { "version": "1.3.0", "resolved": "https://registry.npmjs.org/string_decoder/-/string_decoder-1.3.0.tgz", @@ -26213,17 +26206,6 @@ } } }, - "string-width": { - "version": "4.2.3", - "resolved": "https://registry.npmjs.org/string-width/-/string-width-4.2.3.tgz", - "integrity": "sha512-wKyQRQpjJ0sIp62ErSZdGsjMJWsap5oRNihHhu6G7JVO/9jIB6UyevL+tXuOqrng8j/cxKTWyWUwvSTriiZz/g==", - "dev": true, - "requires": { - "emoji-regex": "^8.0.0", - "is-fullwidth-code-point": "^3.0.0", - "strip-ansi": "^6.0.1" - } - }, "strip-ansi": { "version": "6.0.1", "resolved": "https://registry.npmjs.org/strip-ansi/-/strip-ansi-6.0.1.tgz", @@ -26243,8 +26225,7 @@ "version": "3.2.1", "resolved": "https://registry.npmjs.org/style-loader/-/style-loader-3.2.1.tgz", "integrity": "sha512-1k9ZosJCRFaRbY6hH49JFlRB0fVSbmnyq1iTPjNxUmGVjBNEmwrrHPenhlp+Lgo51BojHSf6pl2FcqYaN3PfVg==", - "dev": true, - "requires": {} + "dev": true }, "stylehacks": { "version": "5.1.0", @@ -26405,8 +26386,7 @@ "version": "3.5.2", "resolved": "https://registry.npmjs.org/ajv-keywords/-/ajv-keywords-3.5.2.tgz", "integrity": "sha512-5p6WTN0DdTGVQk6VjcEju19IgaHudalcfabD7yhDGeA6bcQnmL+CpveLJq/3hvfwd1aof6L386Ougkx6RfyMIQ==", - "dev": true, - "requires": {} + "dev": true }, "json-schema-traverse": { "version": "0.4.1", @@ -26846,8 +26826,7 @@ "version": "3.5.2", "resolved": "https://registry.npmjs.org/ajv-keywords/-/ajv-keywords-3.5.2.tgz", "integrity": "sha512-5p6WTN0DdTGVQk6VjcEju19IgaHudalcfabD7yhDGeA6bcQnmL+CpveLJq/3hvfwd1aof6L386Ougkx6RfyMIQ==", - "dev": true, - "requires": {} + "dev": true }, "json-schema-traverse": { "version": "0.4.1", @@ -26904,8 +26883,7 @@ "version": "3.5.2", "resolved": "https://registry.npmjs.org/ajv-keywords/-/ajv-keywords-3.5.2.tgz", "integrity": "sha512-5p6WTN0DdTGVQk6VjcEju19IgaHudalcfabD7yhDGeA6bcQnmL+CpveLJq/3hvfwd1aof6L386Ougkx6RfyMIQ==", - "dev": true, - "requires": {} + "dev": true }, "json-schema-traverse": { "version": "0.4.1", @@ -26983,8 +26961,7 @@ "version": "3.5.2", "resolved": "https://registry.npmjs.org/ajv-keywords/-/ajv-keywords-3.5.2.tgz", "integrity": "sha512-5p6WTN0DdTGVQk6VjcEju19IgaHudalcfabD7yhDGeA6bcQnmL+CpveLJq/3hvfwd1aof6L386Ougkx6RfyMIQ==", - "dev": true, - "requires": {} + "dev": true }, "ansi-regex": { "version": "2.1.1", @@ -27320,15 +27297,6 @@ "integrity": "sha512-b39TBaTSfV6yBrapU89p5fKekE2m/NwnDocOVruQFS1/veMgdzuPcnOM34M6CwxW8jH/lxEa5rBoDeUwu5HHTw==", "dev": true }, - "string_decoder": { - "version": "1.1.1", - "resolved": "https://registry.npmjs.org/string_decoder/-/string_decoder-1.1.1.tgz", - "integrity": "sha512-n/ShnvDi6FHbbVfviro+WojiFzv+s8MPMHBczVePfUpDJLwoLT0ht1l4YwBCbi8pJAveEEdnkHyPyTP/mzRfwg==", - "dev": true, - "requires": { - "safe-buffer": "~5.1.0" - } - }, "string-width": { "version": "3.1.0", "resolved": "https://registry.npmjs.org/string-width/-/string-width-3.1.0.tgz", @@ -27357,6 +27325,15 @@ } } }, + "string_decoder": { + "version": "1.1.1", + "resolved": "https://registry.npmjs.org/string_decoder/-/string_decoder-1.1.1.tgz", + "integrity": "sha512-n/ShnvDi6FHbbVfviro+WojiFzv+s8MPMHBczVePfUpDJLwoLT0ht1l4YwBCbi8pJAveEEdnkHyPyTP/mzRfwg==", + "dev": true, + "requires": { + "safe-buffer": "~5.1.0" + } + }, "strip-ansi": { "version": "3.0.1", "resolved": "https://registry.npmjs.org/strip-ansi/-/strip-ansi-3.0.1.tgz", @@ -27626,8 +27603,7 @@ "version": "8.2.3", "resolved": "https://registry.npmjs.org/ws/-/ws-8.2.3.tgz", "integrity": "sha512-wBuoj1BDpC6ZQ1B7DWQBYVLphPWkm8i9Y0/3YdHjHKHiohOJ1ws+3OccDWtH+PoC9DZD5WOTrJvNbWvjS6JWaA==", - "dev": true, - "requires": {} + "dev": true }, "y18n": { "version": "5.0.8", diff --git a/src/app/app.component.html b/src/app/app.component.html index 90c6b64..a5174ee 100644 --- a/src/app/app.component.html +++ b/src/app/app.component.html @@ -1 +1 @@ - \ No newline at end of file + \ No newline at end of file diff --git a/src/app/app.module.ts b/src/app/app.module.ts index be3ac67..a769492 100644 --- a/src/app/app.module.ts +++ b/src/app/app.module.ts @@ -4,20 +4,24 @@ import { BrowserModule } from '@angular/platform-browser'; import { AppRoutingModule } from './app-routing.module'; import { AppComponent } from './app.component'; +import { LaunchDetailComponent } from './components/launch-detail/alunch-detail.component'; +import { LunchProgramsComponent } from './components/launch-programs/launch-programs.component'; import { ListCapsuleComponent } from './components/list-capsule/list-capsule.component'; import { CapsuleComponent } from './components/capsule/capsule.component'; @NgModule({ declarations: [ AppComponent, + LaunchDetailComponent, + LunchProgramsComponent, ListCapsuleComponent, CapsuleComponent ], imports: [ AppRoutingModule, BrowserModule, - HttpClientModule, - AppRoutingModule + AppRoutingModule, + HttpClientModule ], providers: [], bootstrap: [AppComponent] diff --git a/src/app/components/launch-detail/alunch-detail.component.ts b/src/app/components/launch-detail/alunch-detail.component.ts new file mode 100644 index 0000000..c0841db --- /dev/null +++ b/src/app/components/launch-detail/alunch-detail.component.ts @@ -0,0 +1,26 @@ +import { Component, Input, OnInit } from '@angular/core'; + +@Component({ + selector: 'app-launch-detail', + templateUrl: './launch-detail.component.html', + styleUrls: ['./launch-detail.component.css'] +}) +export class LaunchDetailComponent implements OnInit { + + showMe:boolean=false + + toggleTag(){ + this.showMe=!this.showMe + } + + @Input() data: any; + + constructor() { } + + ngOnInit(): void { + } + + ngOnChanges() { + console.log(this.data); + } +} diff --git a/src/app/components/launch-detail/launch-detail.component.css b/src/app/components/launch-detail/launch-detail.component.css new file mode 100644 index 0000000..42375d3 --- /dev/null +++ b/src/app/components/launch-detail/launch-detail.component.css @@ -0,0 +1,124 @@ +button { + background-color: #1d314b; + border: none; + color: white; + padding: 5px 20px; + text-align: center; + text-decoration: none; + display: inline-block; + font-size: 13px; + transition: 0.5s; +} +button:hover { + background-color: #696d74; + transition: 0.5s; +} +.menu-content { + position: relative; + top: 0px; + transition: all 0.7s ease; + } +.hide { + top: 10vw; + transition: 0.7s; +} +img { + max-width: 100%; +} +ul { + list-style-type: none; + padding-left: 0; + margin-top: 20px; +} +p { + font-size: small; + text-align: justify; +} +.filter-header-wrap { + display: flex; + justify-content: space-between; +} + +.filter-header-wrap a { + cursor: pointer; + color: #000; + margin-top: 22px; + margin-right: 20px; +} +.filter-header-wrap h3 { + margin: 20px; +} + +.card-body { + position: relative; + background-color: #fff; + border-radius: 5px; + padding-top: 0.5em; + padding-left: 20px; + padding-right: 20px; + padding-bottom: 2em; +} + +.filter-section-wrapper h4 { + text-align: center; + margin-top: 35px; + margin-bottom: 20px; +} + +.filter-sub-title { + position: relative; +} + +.filter-sub-title h4::after { + position: absolute; + content: ""; + height: 2px; + bottom: -8px; + margin: 0 auto; + left: 0; + right: 0; + width: 72%; + background: #bdb7b9; +} + +.filter-buttons { + list-style: none outside; + margin: 0; + padding: 0 15px; + display: flex; + justify-content: space-between; + flex-wrap: wrap; +} + +.filter-buttons li { + margin-top: 10px; + flex-basis: 35%; + background: #007bff; + color: #fff; + padding: 10px; + border-radius: 5px; + width: 36%; + display: inline-block; + margin-bottom: 10px; + text-align: center; + cursor: pointer; + transition: all ease 0.2s; + font-weight: 500; + letter-spacing: 0; +} + +.filter-buttons li:hover { + color: #fff; + background-color: #0b5ed7; + border-color: #0a58ca; +} + +.filter-buttons li.active { + background-color: #0b5ed7; + border-color: #0a58ca; +} + +.loading-text { + color: #fff; + font-size: 20px; +} \ No newline at end of file diff --git a/src/app/components/launch-detail/launch-detail.component.html b/src/app/components/launch-detail/launch-detail.component.html new file mode 100644 index 0000000..528aff5 --- /dev/null +++ b/src/app/components/launch-detail/launch-detail.component.html @@ -0,0 +1,27 @@ +
+
+
+
+
+ +

{{data.mission_name}}

+ + + + +
+
+
\ No newline at end of file diff --git a/src/app/components/launch-programs/launch-programs.component.css b/src/app/components/launch-programs/launch-programs.component.css new file mode 100644 index 0000000..86bb97f --- /dev/null +++ b/src/app/components/launch-programs/launch-programs.component.css @@ -0,0 +1,91 @@ +h1 { + color: #000; + background-color: #fff; + border-radius: 5px; + text-align: center; + padding: 10px; +} +.filter-header-wrap { + display: flex; + justify-content: space-between; +} + +.filter-header-wrap a { + cursor: pointer; + color: #000; + margin-top: 22px; + margin-right: 20px; +} +.filter-header-wrap h3 { + margin: 20px; +} + +.card-body { + position: relative; + background-color: #fff; + border-radius: 5px; +} + +.filter-section-wrapper h4 { + text-align: center; + margin-top: 35px; + margin-bottom: 20px; +} + +.filter-sub-title { + position: relative; +} + +.filter-sub-title h4::after { + position: absolute; + content: ""; + height: 2px; + bottom: -8px; + margin: 0 auto; + left: 0; + right: 0; + width: 72%; + background: #bdb7b9; +} + +.filter-buttons { + list-style: none outside; + margin: 0; + padding: 0 15px; + display: flex; + justify-content: space-between; + flex-wrap: wrap; +} + +.filter-buttons li { + margin-top: 10px; + flex-basis: 35%; + background: #007bff; + color: #fff; + padding: 10px; + border-radius: 5px; + width: 36%; + display: inline-block; + margin-bottom: 10px; + text-align: center; + cursor: pointer; + transition: all ease 0.2s; + font-weight: 500; + letter-spacing: 0; +} + +.filter-buttons li:hover { + color: #fff; + background-color: #0b5ed7; + border-color: #0a58ca; +} + +.filter-buttons li.active { + background-color: #0b5ed7; + border-color: #0a58ca; +} + +.loading-text { + color: #fff; + font-size: 20px; +} \ No newline at end of file diff --git a/src/app/components/launch-programs/launch-programs.component.html b/src/app/components/launch-programs/launch-programs.component.html new file mode 100644 index 0000000..c63b3d3 --- /dev/null +++ b/src/app/components/launch-programs/launch-programs.component.html @@ -0,0 +1,19 @@ +
+
+
+ +

SpaceX Programmes de lancement

+
+
+
+ +
+

Veuillez patienter pendant le chargement des données...

+
+
+ +
+
+
+
+
\ No newline at end of file diff --git a/src/app/components/launch-programs/launch-programs.component.ts b/src/app/components/launch-programs/launch-programs.component.ts new file mode 100644 index 0000000..5204766 --- /dev/null +++ b/src/app/components/launch-programs/launch-programs.component.ts @@ -0,0 +1,31 @@ +import { Component, OnInit } from '@angular/core'; +import { LaunchesService } from '../../services/launches.service'; + +@Component({ + selector: 'app-launch-programs', + templateUrl: './launch-programs.component.html', + styleUrls: ['./launch-programs.component.css'] +}) +export class LunchProgramsComponent implements OnInit { + + launchDataArray = []; + isLoading = false; + + constructor(private launchesService: LaunchesService) { } + + ngOnInit(): void { + this.getAllLaunches(); + } + + getAllLaunches(): any{ + this.isLoading = true; + this.launchesService.getLaunches() + .subscribe((response: any) => { + console.log(response); + this.launchDataArray = response; + this.isLoading = false; + }, err => { + console.log(err); + }) + } +}