Fix public folder api path; Add Army Overview
							parent
							
								
									e7c6379bf1
								
							
						
					
					
						commit
						efd9dde6aa
					
				|  | @ -0,0 +1,11 @@ | |||
| 
 | ||||
| #Operation Pandora Trigger Commandcenter | ||||
| 
 | ||||
| _RESTful API using express.js and mongoose with mongodb + Angular4 Frontend_ | ||||
| 
 | ||||
| 
 | ||||
| ##Installation | ||||
| 
 | ||||
| ##Development | ||||
| 
 | ||||
| ##License Information | ||||
|  | @ -1,8 +0,0 @@ | |||
| 
 | ||||
| #Operation Pandora Trigger Commandcenter RESTful API | ||||
| 
 | ||||
| _node.js project using express.js and mongoose with mongodb_ | ||||
| 
 | ||||
| 
 | ||||
| ##Installation | ||||
| 
 | ||||
|  | @ -35,8 +35,8 @@ mongoose.Promise = global.Promise; | |||
| const app = express(); | ||||
| 
 | ||||
| // Middlewares *************************************************
 | ||||
| app.use(favicon(path.join(__dirname, 'public', 'favicon.ico'))); | ||||
| app.use(express.static(path.join(__dirname, 'public'))); | ||||
| app.use(favicon(path.join(__dirname + '/..', 'public', 'favicon.ico'))); | ||||
| app.use(express.static(path.join(__dirname + '/..', 'public'))); | ||||
| app.use(bodyParser.json()); | ||||
| 
 | ||||
| // logging
 | ||||
|  | @ -63,7 +63,7 @@ app.use(urls.command, apiAuthenticationMiddleware, commandRouter); | |||
| 
 | ||||
| // send index.html on all different paths
 | ||||
| app.use(function (req, res) { | ||||
|   res.sendFile("public/index.html", {root: __dirname}); | ||||
|   res.sendFile("public/index.html", {root: __dirname + '/..'}); | ||||
| }); | ||||
| 
 | ||||
| 
 | ||||
|  |  | |||
|  | @ -1,34 +1,34 @@ | |||
|   | ||||
| 
 | ||||
| server { | ||||
|     listen 80;                                                                                                                                                                                                                                                                             | ||||
|     server_name cc.noarch.de;                                                                                                                                                                                                                                                              | ||||
|     return 302 https://$server_name$request_uri;                                                                                                                                                                                                                                           | ||||
| }                                                                                                                                                                                                                                                                                          | ||||
|                                                                                                                                                                                                                                                                                            | ||||
| server {                                                                                                                                                                                                                                                                                   | ||||
|     listen 443 ssl;                                                                                                                                                                                                                                                                        | ||||
|     server_name cc.noarch.de;                                                                                                                                                                                                                                                              | ||||
|                                                                                                                                                                                                                                                                                            | ||||
|     ssl on;                                                                                                                                                                                                                                                                                | ||||
|     ssl_certificate /etc/letsencrypt/live/noarch.de/fullchain.pem;                                                                                                                                                                                                                         | ||||
|     ssl_certificate_key /etc/letsencrypt/live/noarch.de/privkey.pem;                                                                                                                                                                                                                       | ||||
|     ssl_session_timeout 5m;                                                                                                                                                                                                                                                                | ||||
|     ssl_protocols TLSv1 TLSv1.1 TLSv1.2;                                                                                                                                                                                                                                                   | ||||
|     ssl_ciphers 'EECDH+AESGCM:EDH+AESGCM:AES256+EECDH:AES256+EDH';                                                                                                                                                                                                                         | ||||
|     ssl_prefer_server_ciphers on;                                                                                                                                                                                                                                                          | ||||
|     ssl_session_cache shared:SSL:10m;                                                                                                                                                                                                                                                      | ||||
|                                                                                                                                                                                                                                                                                            | ||||
|     location / {                                                                                                                                                                                                                                                                           | ||||
|         gzip off;                                                                                                                                                                                                                                                                          | ||||
|         proxy_set_header X-Forwarded-Ssl on;                                                                                                                                                                                                                                               | ||||
|         client_max_body_size 5M;                                                                                                                                                                                                                                                          | ||||
|         proxy_set_header Upgrade $http_upgrade;                                                                                                                                                                                                                                            | ||||
|         proxy_set_header Connection "upgrade";                                                                                                                                                                                                                                             | ||||
|         proxy_set_header Host $http_host;                                                                                                                                                                                                                                                  | ||||
|         proxy_set_header X-Real-IP $remote_addr;                                                                                                                                                                                                                                           | ||||
|         proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;                                                                                                                                                                                                                       | ||||
|         proxy_set_header X-Forwarded-Proto $scheme;                                                                                                                                                                                                                                        | ||||
|         proxy_set_header X-Frame-Options SAMEORIGIN;                                                                                                                                                                                                                                       | ||||
|         proxy_pass http://localhost:8091;                                                                                                                                                                                                                                                  | ||||
|     }                                                                                                                                                                                                                                                                                      | ||||
| }  | ||||
|     listen 80; | ||||
|     server_name cc.noarch.de; | ||||
|     return 302 https://$server_name$request_uri; | ||||
| } | ||||
| 
 | ||||
| server { | ||||
|     listen 443 ssl; | ||||
|     server_name cc.noarch.de; | ||||
| 
 | ||||
|     ssl on; | ||||
|     ssl_certificate /etc/letsencrypt/live/noarch.de/fullchain.pem; | ||||
|     ssl_certificate_key /etc/letsencrypt/live/noarch.de/privkey.pem; | ||||
|     ssl_session_timeout 5m; | ||||
|     ssl_protocols TLSv1 TLSv1.1 TLSv1.2; | ||||
|     ssl_ciphers 'EECDH+AESGCM:EDH+AESGCM:AES256+EECDH:AES256+EDH'; | ||||
|     ssl_prefer_server_ciphers on; | ||||
|     ssl_session_cache shared:SSL:10m; | ||||
| 
 | ||||
|     location / { | ||||
|         gzip off; | ||||
|         proxy_set_header X-Forwarded-Ssl on; | ||||
|         client_max_body_size 5M; | ||||
|         proxy_set_header Upgrade $http_upgrade; | ||||
|         proxy_set_header Connection "upgrade"; | ||||
|         proxy_set_header Host $http_host; | ||||
|         proxy_set_header X-Real-IP $remote_addr; | ||||
|         proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for; | ||||
|         proxy_set_header X-Forwarded-Proto $scheme; | ||||
|         proxy_set_header X-Frame-Options SAMEORIGIN; | ||||
|         proxy_pass http://localhost:8091; | ||||
|     } | ||||
| } | ||||
|  |  | |||
|  | @ -15,6 +15,9 @@ | |||
|       <div class="collapse navbar-collapse" id="mynavbar"> | ||||
| 
 | ||||
|         <ul class="nav navbar-nav"> | ||||
|           <li *ngIf="loginService.isLoggedIn()" routerLinkActive="active"> | ||||
|             <a routerLink='/cc-overview' class="link">Armeeübersicht</a> | ||||
|           </li> | ||||
|           <li *ngIf="loginService.isLoggedIn()" routerLinkActive="active"> | ||||
|             <a routerLink='/cc-users' class="link">Teilnehmer</a> | ||||
|           </li> | ||||
|  | @ -27,9 +30,6 @@ | |||
|           <li *ngIf="loginService.isLoggedIn()" routerLinkActive="active"> | ||||
|             <a routerLink='/cc-ranks' class="link">Ränge</a> | ||||
|           </li> | ||||
|           <!--<li routerLinkActive="active">--> | ||||
|           <!--<a routerLink='/settings' class="link">Einstellungen</a>--> | ||||
|           <!--</li>--> | ||||
|         </ul> | ||||
| 
 | ||||
|         <ul class="nav navbar-nav" style="float: right"> | ||||
|  |  | |||
|  | @ -10,6 +10,7 @@ export class AppConfig { | |||
|   public readonly apiRankPath           = '/ranks/'; | ||||
|   public readonly apiSquadPath          = '/squads/'; | ||||
|   public readonly apiUserPath           = '/users/'; | ||||
|   public readonly apiOverviewPath       = '/overview'; | ||||
| 
 | ||||
|   public getAuthenticationHeader() :Headers { | ||||
|     let currentUser = JSON.parse(localStorage.getItem('currentUser')); | ||||
|  |  | |||
|  | @ -25,6 +25,7 @@ import {AppConfig} from "./app.config"; | |||
| import {LoginGuard} from "./login/login.guard"; | ||||
| import {AwardingService} from "./services/awarding-service/awarding.service"; | ||||
| import {HttpClient} from "./services/http-client"; | ||||
| import {ArmyService} from "./services/army-service/army.service"; | ||||
| 
 | ||||
| @NgModule({ | ||||
|   imports: [BrowserModule, FormsModule, ReactiveFormsModule, appRouting, HttpModule], | ||||
|  | @ -32,6 +33,7 @@ import {HttpClient} from "./services/http-client"; | |||
|     HttpClient, | ||||
|     LoginService, | ||||
|     LoginGuard, | ||||
|     ArmyService, | ||||
|     UserService, | ||||
|     UserStore, | ||||
|     SquadService, | ||||
|  |  | |||
|  | @ -6,10 +6,13 @@ import {usersRoutes, usersRoutingComponents} from "./users/users.routing"; | |||
| import {squadsRoutes, squadsRoutingComponents} from "./squads/squads.routing"; | ||||
| import {decorationsRoutes, decorationsRoutingComponents} from "./decorations/decoration.routing"; | ||||
| import {ranksRoutes, ranksRoutingComponents} from "./ranks/ranks.routing"; | ||||
| import {ArmyComponent} from "./army/army.component"; | ||||
| 
 | ||||
| 
 | ||||
| export const appRoutes: Routes = [ | ||||
| 
 | ||||
|   {path: 'cc-overview', component: ArmyComponent}, | ||||
| 
 | ||||
|   {path: 'login', component: LoginComponent}, | ||||
|   {path: 'cc-users', children: usersRoutes, canActivate: [LoginGuard]}, | ||||
|   {path: '', redirectTo: '/cc-users', pathMatch: 'full'}, | ||||
|  | @ -18,18 +21,14 @@ export const appRoutes: Routes = [ | |||
|   {path: 'cc-decorations', children: decorationsRoutes, canActivate: [LoginGuard]}, | ||||
|   {path: 'cc-ranks', children: ranksRoutes, canActivate: [LoginGuard]}, | ||||
| 
 | ||||
| 
 | ||||
|   /** Redirect Konfigurationen **/ | ||||
| 
 | ||||
| 
 | ||||
|   {path: '404', component: NotFoundComponent}, | ||||
| 
 | ||||
|   {path: '**', redirectTo: '/404'}, // immer als letztes konfigurieren - erste Route die matched wird angesteuert
 | ||||
| ]; | ||||
| 
 | ||||
| export const appRouting = RouterModule.forRoot(appRoutes); | ||||
| 
 | ||||
| export const routingComponents = [LoginComponent, NotFoundComponent, ...usersRoutingComponents, | ||||
| export const routingComponents = [LoginComponent, ArmyComponent, NotFoundComponent, ...usersRoutingComponents, | ||||
|   ...squadsRoutingComponents, ...decorationsRoutingComponents, ...ranksRoutingComponents]; | ||||
| 
 | ||||
| export const routingProviders = [LoginGuard]; | ||||
|  |  | |||
|  | @ -0,0 +1,32 @@ | |||
| h1 { | ||||
|   width: 920px; | ||||
|   float: left; | ||||
|   margin-bottom: 50px; | ||||
| } | ||||
| 
 | ||||
| img{ | ||||
|   margin-top: 10px; | ||||
|   padding-right: 30px; | ||||
| } | ||||
| 
 | ||||
| 
 | ||||
| .div-table { | ||||
|   display: table; | ||||
|   border-radius: 10px; | ||||
|   margin-left: 1%; | ||||
|   width: auto; | ||||
|   background-color: rgba(240, 248, 255, 0.29); | ||||
|   border-spacing: 5px; /* cellspacing:poor IE support for  this */ | ||||
| } | ||||
| 
 | ||||
| .div-table-row { | ||||
|   display: table-row; | ||||
|   width: auto; | ||||
|   clear: both; | ||||
| } | ||||
| 
 | ||||
| .div-table-col { | ||||
|   float: left; /* fix for  buggy browsers */ | ||||
|   display: table-column; | ||||
|   padding: 5px 15px 5px 15px; | ||||
| } | ||||
|  | @ -0,0 +1,61 @@ | |||
| <h1>Übersicht über alle Spieler, Squads und Armeen</h1> | ||||
| 
 | ||||
| <div style="width: 1000px;"> | ||||
| 
 | ||||
|   <div class="div-table" style="width: 490px; float:left"> | ||||
|     <h3 style="color: darkslateblue; font-weight: bolder; text-align: center;">NATO</h3> | ||||
|     <div *ngFor="let squad of army.NATO.squads"> | ||||
|       <div class="div-table-row"> | ||||
| 
 | ||||
|         <div class="div-table-col"> | ||||
|           <img src="resource/squad/{{squad._id}}.png"> | ||||
|         </div> | ||||
|         <div class="div-table-col"> | ||||
|           <div class=" div-table-row"> | ||||
|             <h4>{{squad.name}}</h4> | ||||
|           </div> | ||||
|           <div class=" div-table-row"> | ||||
|             <div *ngFor="let member of squad.members"> | ||||
|               <div>{{member.rank}} {{member.username}}</div> | ||||
|             </div> | ||||
|             <br> | ||||
|             <br> | ||||
|             Mitglieder: {{squad.memberCount}} | ||||
|           </div> | ||||
|         </div> | ||||
|       </div> | ||||
|     </div> | ||||
|     <br> | ||||
|     <br> | ||||
|     <div style="padding-left: 80px">Armeemitglieder: {{army.NATO.memberCount}}</div> | ||||
|   </div> | ||||
| 
 | ||||
|   <div class="div-table" style="width: 490px; float:right"> | ||||
|     <h3 style="color: firebrick; font-weight: bolder; text-align: center">CSAT</h3> | ||||
|     <div *ngFor="let squad of army.CSAT.squads"> | ||||
|       <div class="div-table-row"> | ||||
| 
 | ||||
|         <div class="div-table-col"> | ||||
|           <img src="resource/squad/{{squad._id}}.png"> | ||||
|         </div> | ||||
|         <div class="div-table-col"> | ||||
|           <div class=" div-table-row"> | ||||
|             <h4>{{squad.name}}</h4> | ||||
|           </div> | ||||
|           <div class=" div-table-row"> | ||||
|             <div *ngFor="let member of squad.members"> | ||||
|               <div>{{member.rank}} {{member.username}}</div> | ||||
|             </div> | ||||
|             <br> | ||||
|             <br> | ||||
|             Mitglieder: {{squad.memberCount}} | ||||
|           </div> | ||||
|         </div> | ||||
|       </div> | ||||
|     </div> | ||||
|     <br> | ||||
|     <br> | ||||
|     <div style="padding-left: 80px">Armeemitglieder: {{army.CSAT.memberCount}}</div> | ||||
|   </div> | ||||
| 
 | ||||
| </div> | ||||
|  | @ -0,0 +1,26 @@ | |||
| import {Component} from "@angular/core"; | ||||
| import {Army} from "../models/model-interfaces"; | ||||
| import {ArmyService} from "../services/army-service/army.service"; | ||||
| 
 | ||||
| 
 | ||||
| @Component({ | ||||
|   selector: 'army', | ||||
|   templateUrl: './army.component.html', | ||||
|   styleUrls: ['./army.component.css'] | ||||
| }) | ||||
| export class ArmyComponent { | ||||
| 
 | ||||
|   army: Army = {NATO: {squads: [], memberCount: 0}, CSAT: {squads: [], memberCount:0}}; | ||||
| 
 | ||||
|   constructor(private armyService: ArmyService) { | ||||
|   } | ||||
| 
 | ||||
| 
 | ||||
|   ngOnInit() { | ||||
|     this.armyService.getArmy() | ||||
|       .subscribe(army => { | ||||
|         this.army = army; | ||||
|         console.log(army) | ||||
|       }); | ||||
|   }; | ||||
| } | ||||
|  | @ -39,6 +39,35 @@ export interface Decoration { | |||
|   isMedal?: boolean; | ||||
| } | ||||
| 
 | ||||
| export interface Army { | ||||
|   NATO: { | ||||
|     squads: { | ||||
|       _id, | ||||
|       name, | ||||
|       memberCount, | ||||
|       members: { | ||||
|         _id, | ||||
|         username, | ||||
|         rank | ||||
|       }[], | ||||
|     }[], | ||||
|     memberCount | ||||
|   }, | ||||
|   CSAT: { | ||||
|     squads: { | ||||
|       _id, | ||||
|       name, | ||||
|       memberCount, | ||||
|       members: { | ||||
|         _id, | ||||
|         username, | ||||
|         rank | ||||
|       }[], | ||||
|     }[], | ||||
|     memberCount | ||||
|   }, | ||||
| } | ||||
| 
 | ||||
| export interface Tag { | ||||
|   label: string; | ||||
| } | ||||
|  |  | |||
|  | @ -0,0 +1,19 @@ | |||
| import {Injectable} from "@angular/core"; | ||||
| import {AppConfig} from "../../app.config"; | ||||
| import {Http} from "@angular/http"; | ||||
| 
 | ||||
| 
 | ||||
| @Injectable() | ||||
| export class ArmyService { | ||||
| 
 | ||||
|   constructor(private http: Http, | ||||
|               private config: AppConfig) { | ||||
|   } | ||||
| 
 | ||||
|   getArmy() { | ||||
|     return this.http.get(this.config.apiUrl + this.config.apiOverviewPath) | ||||
|       .map(res => res.json()); | ||||
|   } | ||||
| 
 | ||||
| } | ||||
| 
 | ||||
		Loading…
	
		Reference in New Issue