Store in GIT
This commit is contained in:
@@ -0,0 +1,43 @@
|
||||
"use strict";
|
||||
var __decorate = (this && this.__decorate) || function (decorators, target, key, desc) {
|
||||
var c = arguments.length, r = c < 3 ? target : desc === null ? desc = Object.getOwnPropertyDescriptor(target, key) : desc, d;
|
||||
if (typeof Reflect === "object" && typeof Reflect.decorate === "function") r = Reflect.decorate(decorators, target, key, desc);
|
||||
else for (var i = decorators.length - 1; i >= 0; i--) if (d = decorators[i]) r = (c < 3 ? d(r) : c > 3 ? d(target, key, r) : d(target, key)) || r;
|
||||
return c > 3 && r && Object.defineProperty(target, key, r), r;
|
||||
};
|
||||
var core_1 = require("@angular/core");
|
||||
var router_1 = require("@angular/router");
|
||||
var dashboard_component_1 = require("./pages/dashboard/dashboard.component");
|
||||
var flights_component_1 = require("./pages/flights/flights.component");
|
||||
var users_component_1 = require("./pages/users/users.component");
|
||||
var readers_component_1 = require("./pages/readers/readers.component");
|
||||
var planes_component_1 = require("./pages/planes/planes.component");
|
||||
var flight_component_1 = require("./pages/flight/flight.component");
|
||||
var user_component_1 = require("./pages/user/user.component");
|
||||
var reader_component_1 = require("./pages/reader/reader.component");
|
||||
var plane_component_1 = require("./pages/plane/plane.component");
|
||||
var routes = [
|
||||
{ path: '', redirectTo: '/dashboard', pathMatch: 'full' },
|
||||
{ path: 'dashboard', component: dashboard_component_1.DashboardComponent },
|
||||
{ path: 'flights', component: flights_component_1.FlightsComponent },
|
||||
{ path: 'users', component: users_component_1.UsersComponent },
|
||||
{ path: 'readers', component: readers_component_1.ReadersComponent },
|
||||
{ path: 'planes', component: planes_component_1.PlanesComponent },
|
||||
{ path: 'flight/:id', component: flight_component_1.FlightComponent },
|
||||
{ path: 'user/:id', component: user_component_1.UserComponent },
|
||||
{ path: 'reader/:id', component: reader_component_1.ReaderComponent },
|
||||
{ path: 'plane/:id', component: plane_component_1.PlaneComponent }
|
||||
];
|
||||
var AppRoutingModule = (function () {
|
||||
function AppRoutingModule() {
|
||||
}
|
||||
return AppRoutingModule;
|
||||
}());
|
||||
AppRoutingModule = __decorate([
|
||||
core_1.NgModule({
|
||||
imports: [router_1.RouterModule.forRoot(routes)],
|
||||
exports: [router_1.RouterModule]
|
||||
})
|
||||
], AppRoutingModule);
|
||||
exports.AppRoutingModule = AppRoutingModule;
|
||||
//# sourceMappingURL=app-routing.module.js.map
|
||||
@@ -0,0 +1 @@
|
||||
{"version":3,"file":"app-routing.module.js","sourceRoot":"","sources":["app-routing.module.ts"],"names":[],"mappings":";;;;;;;AAAA,sCAAqD;AACrD,0CAAuD;AACvD,6EAA2E;AAE3E,uEAAqE;AACrE,iEAA+D;AAC/D,uEAAqE;AACrE,oEAAkE;AAElE,oEAAkE;AAClE,8DAA4D;AAC5D,oEAAkE;AAClE,iEAA+D;AAG/D,IAAM,MAAM,GAAW;IACrB,EAAE,IAAI,EAAE,EAAE,EAAE,UAAU,EAAE,YAAY,EAAE,SAAS,EAAE,MAAM,EAAE;IACzD,EAAE,IAAI,EAAE,WAAW,EAAG,SAAS,EAAE,wCAAkB,EAAE;IACrD,EAAE,IAAI,EAAE,SAAS,EAAE,SAAS,EAAE,oCAAgB,EAAE;IAChD,EAAE,IAAI,EAAE,OAAO,EAAE,SAAS,EAAE,gCAAc,EAAC;IAC3C,EAAE,IAAI,EAAE,SAAS,EAAE,SAAS,EAAE,oCAAgB,EAAC;IAC/C,EAAE,IAAI,EAAE,QAAQ,EAAE,SAAS,EAAE,kCAAe,EAAC;IAC7C,EAAE,IAAI,EAAE,YAAY,EAAE,SAAS,EAAE,kCAAe,EAAC;IACjD,EAAE,IAAI,EAAE,UAAU,EAAE,SAAS,EAAE,8BAAa,EAAC;IAC7C,EAAE,IAAI,EAAE,YAAY,EAAE,SAAS,EAAE,kCAAe,EAAC;IACjD,EAAE,IAAI,EAAE,WAAW,EAAE,SAAS,EAAE,gCAAc,EAAC;CAChD,CAAC;AAKF,IAAa,gBAAgB;IAA7B;IAA+B,CAAC;IAAD,uBAAC;AAAD,CAAC,AAAhC,IAAgC;AAAnB,gBAAgB;IAJ5B,eAAQ,CAAC;QACR,OAAO,EAAE,CAAE,qBAAY,CAAC,OAAO,CAAC,MAAM,CAAC,CAAE;QACzC,OAAO,EAAE,CAAE,qBAAY,CAAE;KAC1B,CAAC;GACW,gBAAgB,CAAG;AAAnB,4CAAgB"}
|
||||
@@ -0,0 +1,32 @@
|
||||
import { NgModule } from '@angular/core';
|
||||
import { RouterModule, Routes } from '@angular/router';
|
||||
import { DashboardComponent } from './pages/dashboard/dashboard.component';
|
||||
|
||||
import { FlightsComponent } from './pages/flights/flights.component';
|
||||
import { UsersComponent } from './pages/users/users.component';
|
||||
import { ReadersComponent } from './pages/readers/readers.component';
|
||||
import { PlanesComponent } from './pages/planes/planes.component';
|
||||
|
||||
import { FlightComponent } from './pages/flight/flight.component';
|
||||
import { UserComponent } from './pages/user/user.component';
|
||||
import { ReaderComponent } from './pages/reader/reader.component';
|
||||
import { PlaneComponent } from './pages/plane/plane.component';
|
||||
|
||||
|
||||
const routes: Routes = [
|
||||
{ path: '', redirectTo: '/dashboard', pathMatch: 'full' },
|
||||
{ path: 'dashboard', component: DashboardComponent },
|
||||
{ path: 'flights', component: FlightsComponent },
|
||||
{ path: 'users', component: UsersComponent},
|
||||
{ path: 'readers', component: ReadersComponent},
|
||||
{ path: 'planes', component: PlanesComponent},
|
||||
{ path: 'flight/:id', component: FlightComponent},
|
||||
{ path: 'user/:id', component: UserComponent},
|
||||
{ path: 'reader/:id', component: ReaderComponent},
|
||||
{ path: 'plane/:id', component: PlaneComponent}
|
||||
];
|
||||
@NgModule({
|
||||
imports: [ RouterModule.forRoot(routes) ],
|
||||
exports: [ RouterModule ]
|
||||
})
|
||||
export class AppRoutingModule {}
|
||||
@@ -0,0 +1,28 @@
|
||||
<div class="container">
|
||||
|
||||
<nav class="navbar navbar-default">
|
||||
<div class="container-fluid">
|
||||
<div class="navbar-header">
|
||||
<button type="button" class="navbar-toggle collapsed" data-toggle="collapse" data-target="#navbar" aria-expanded="false" aria-controls="navbar">
|
||||
<span class="sr-only">Toggle navigation</span>
|
||||
<span class="icon-bar"></span>
|
||||
<span class="icon-bar"></span>
|
||||
<span class="icon-bar"></span>
|
||||
</button>
|
||||
<a class="navbar-brand" title="{{name}}">{{abbreviation}}</a>
|
||||
</div>
|
||||
<div id="navbar" class="navbar-collapse collapse">
|
||||
<ul class="nav navbar-nav">
|
||||
<li routerLink="/dashboard" routerLinkActive="active"><a routerLink="/dashboard" routerLinkActive="active">Dashboard</a></li>
|
||||
<li routerLink="/flights" routerLinkActive="active"><a routerLink="/flights" routerLinkActive="active">Flights</a></li>
|
||||
<li routerLink="/users" routerLinkActive="active"><a routerLink="/users" routerLinkActive="active">Users</a></li>
|
||||
<li routerLink="/planes" routerLinkActive="active"><a routerLink="/planes" routerLinkActive="active">Planes</a></li>
|
||||
<li routerLink="/readers" routerLinkActive="active"><a routerLink="/readers" routerLinkActive="active">Readers</a></li>
|
||||
</ul>
|
||||
</div><!--/.nav-collapse -->
|
||||
</div><!--/.container-fluid -->
|
||||
</nav>
|
||||
|
||||
<router-outlet></router-outlet>
|
||||
|
||||
</div>
|
||||
@@ -0,0 +1,24 @@
|
||||
"use strict";
|
||||
var __decorate = (this && this.__decorate) || function (decorators, target, key, desc) {
|
||||
var c = arguments.length, r = c < 3 ? target : desc === null ? desc = Object.getOwnPropertyDescriptor(target, key) : desc, d;
|
||||
if (typeof Reflect === "object" && typeof Reflect.decorate === "function") r = Reflect.decorate(decorators, target, key, desc);
|
||||
else for (var i = decorators.length - 1; i >= 0; i--) if (d = decorators[i]) r = (c < 3 ? d(r) : c > 3 ? d(target, key, r) : d(target, key)) || r;
|
||||
return c > 3 && r && Object.defineProperty(target, key, r), r;
|
||||
};
|
||||
var core_1 = require("@angular/core");
|
||||
var AppComponent = (function () {
|
||||
function AppComponent() {
|
||||
this.abbreviation = 'F.R.A.U.D.S.';
|
||||
this.name = 'Flight Registration and Automated Unit Detection System';
|
||||
}
|
||||
return AppComponent;
|
||||
}());
|
||||
AppComponent = __decorate([
|
||||
core_1.Component({
|
||||
selector: 'app-root',
|
||||
templateUrl: './app.component.html',
|
||||
styleUrls: ['./app.component.css']
|
||||
})
|
||||
], AppComponent);
|
||||
exports.AppComponent = AppComponent;
|
||||
//# sourceMappingURL=app.component.js.map
|
||||
@@ -0,0 +1 @@
|
||||
{"version":3,"file":"app.component.js","sourceRoot":"","sources":["app.component.ts"],"names":[],"mappings":";;;;;;;AAAA,sCAA0C;AAQ1C,IAAa,YAAY;IANzB;QAM6B,iBAAY,GAAG,cAAc,CAAC;QAAC,SAAI,GAAG,yDAAyD,CAAC;IAAC,CAAC;IAAD,mBAAC;AAAD,CAAC,AAA/H,IAA+H;AAAlH,YAAY;IANxB,gBAAS,CAAC;QACT,QAAQ,EAAE,UAAU;QACpB,WAAW,EAAE,sBAAsB;QACnC,SAAS,EAAE,CAAC,qBAAqB,CAAC;KACnC,CAAC;GAEW,YAAY,CAAsG;AAAlH,oCAAY"}
|
||||
@@ -0,0 +1,27 @@
|
||||
"use strict";
|
||||
var app_component_1 = require("./app.component");
|
||||
var testing_1 = require("@angular/core/testing");
|
||||
var platform_browser_1 = require("@angular/platform-browser");
|
||||
describe('AppComponent', function () {
|
||||
var de;
|
||||
var comp;
|
||||
var fixture;
|
||||
beforeEach(testing_1.async(function () {
|
||||
testing_1.TestBed.configureTestingModule({
|
||||
declarations: [app_component_1.AppComponent]
|
||||
})
|
||||
.compileComponents();
|
||||
}));
|
||||
beforeEach(function () {
|
||||
fixture = testing_1.TestBed.createComponent(app_component_1.AppComponent);
|
||||
comp = fixture.componentInstance;
|
||||
de = fixture.debugElement.query(platform_browser_1.By.css('h1'));
|
||||
});
|
||||
it('should create component', function () { return expect(comp).toBeDefined(); });
|
||||
it('should have expected <h1> text', function () {
|
||||
fixture.detectChanges();
|
||||
var h1 = de.nativeElement;
|
||||
expect(h1.innerText).toMatch(/angular/i, '<h1> should say something about "Angular"');
|
||||
});
|
||||
});
|
||||
//# sourceMappingURL=app.component.spec.js.map
|
||||
@@ -0,0 +1 @@
|
||||
{"version":3,"file":"app.component.spec.js","sourceRoot":"","sources":["app.component.spec.ts"],"names":[],"mappings":";AAAA,iDAA+C;AAE/C,iDAAyE;AACzE,8DAAyD;AAGzD,QAAQ,CAAC,cAAc,EAAE;IACvB,IAAI,EAAgB,CAAC;IACrB,IAAI,IAAkB,CAAC;IACvB,IAAI,OAAuC,CAAC;IAE5C,UAAU,CAAC,eAAK,CAAC;QACf,iBAAO,CAAC,sBAAsB,CAAC;YAC7B,YAAY,EAAE,CAAE,4BAAY,CAAE;SAC/B,CAAC;aACD,iBAAiB,EAAE,CAAC;IACvB,CAAC,CAAC,CAAC,CAAC;IAEJ,UAAU,CAAC;QACT,OAAO,GAAG,iBAAO,CAAC,eAAe,CAAC,4BAAY,CAAC,CAAC;QAChD,IAAI,GAAG,OAAO,CAAC,iBAAiB,CAAC;QACjC,EAAE,GAAG,OAAO,CAAC,YAAY,CAAC,KAAK,CAAC,qBAAE,CAAC,GAAG,CAAC,IAAI,CAAC,CAAC,CAAC;IAChD,CAAC,CAAC,CAAC;IAEH,EAAE,CAAC,yBAAyB,EAAE,cAAM,OAAA,MAAM,CAAC,IAAI,CAAC,CAAC,WAAW,EAAE,EAA1B,CAA0B,CAAE,CAAC;IAEjE,EAAE,CAAC,gCAAgC,EAAE;QACnC,OAAO,CAAC,aAAa,EAAE,CAAC;QACxB,IAAM,EAAE,GAAG,EAAE,CAAC,aAAa,CAAC;QAC5B,MAAM,CAAC,EAAE,CAAC,SAAS,CAAC,CAAC,OAAO,CAAC,UAAU,EACrC,2CAA2C,CAAC,CAAC;IACjD,CAAC,CAAC,CAAC;AACL,CAAC,CAAC,CAAC"}
|
||||
@@ -0,0 +1,33 @@
|
||||
import { AppComponent } from './app.component';
|
||||
|
||||
import { async, ComponentFixture, TestBed } from '@angular/core/testing';
|
||||
import { By } from '@angular/platform-browser';
|
||||
import { DebugElement } from '@angular/core';
|
||||
|
||||
describe('AppComponent', function () {
|
||||
let de: DebugElement;
|
||||
let comp: AppComponent;
|
||||
let fixture: ComponentFixture<AppComponent>;
|
||||
|
||||
beforeEach(async(() => {
|
||||
TestBed.configureTestingModule({
|
||||
declarations: [ AppComponent ]
|
||||
})
|
||||
.compileComponents();
|
||||
}));
|
||||
|
||||
beforeEach(() => {
|
||||
fixture = TestBed.createComponent(AppComponent);
|
||||
comp = fixture.componentInstance;
|
||||
de = fixture.debugElement.query(By.css('h1'));
|
||||
});
|
||||
|
||||
it('should create component', () => expect(comp).toBeDefined() );
|
||||
|
||||
it('should have expected <h1> text', () => {
|
||||
fixture.detectChanges();
|
||||
const h1 = de.nativeElement;
|
||||
expect(h1.innerText).toMatch(/angular/i,
|
||||
'<h1> should say something about "Angular"');
|
||||
});
|
||||
});
|
||||
Binary file not shown.
@@ -0,0 +1,9 @@
|
||||
import { Component } from '@angular/core';
|
||||
|
||||
@Component({
|
||||
selector: 'app-root',
|
||||
templateUrl: './app.component.html',
|
||||
styleUrls: ['./app.component.css']
|
||||
})
|
||||
|
||||
export class AppComponent { abbreviation = 'F.R.A.U.D.S.'; name = 'Flight Registration and Automated Unit Detection System'; }
|
||||
@@ -0,0 +1,65 @@
|
||||
"use strict";
|
||||
var __decorate = (this && this.__decorate) || function (decorators, target, key, desc) {
|
||||
var c = arguments.length, r = c < 3 ? target : desc === null ? desc = Object.getOwnPropertyDescriptor(target, key) : desc, d;
|
||||
if (typeof Reflect === "object" && typeof Reflect.decorate === "function") r = Reflect.decorate(decorators, target, key, desc);
|
||||
else for (var i = decorators.length - 1; i >= 0; i--) if (d = decorators[i]) r = (c < 3 ? d(r) : c > 3 ? d(target, key, r) : d(target, key)) || r;
|
||||
return c > 3 && r && Object.defineProperty(target, key, r), r;
|
||||
};
|
||||
var platform_browser_1 = require("@angular/platform-browser");
|
||||
var core_1 = require("@angular/core");
|
||||
var forms_1 = require("@angular/forms");
|
||||
var http_1 = require("@angular/http");
|
||||
var app_routing_module_1 = require("./app-routing.module");
|
||||
var app_component_1 = require("./app.component");
|
||||
var dashboard_component_1 = require("./pages/dashboard/dashboard.component");
|
||||
var flights_component_1 = require("./pages/flights/flights.component");
|
||||
var flight_component_1 = require("./pages/flight/flight.component");
|
||||
var users_component_1 = require("./pages/users/users.component");
|
||||
var user_component_1 = require("./pages/user/user.component");
|
||||
var user_form_component_1 = require("./pages/users/form/user-form.component");
|
||||
var edit_user_form_component_1 = require("./pages/user/form/edit-user-form.component");
|
||||
var readers_component_1 = require("./pages/readers/readers.component");
|
||||
var reader_component_1 = require("./pages/reader/reader.component");
|
||||
var edit_reader_form_component_1 = require("./pages/reader/form/edit-reader-form.component");
|
||||
var planes_component_1 = require("./pages/planes/planes.component");
|
||||
var plane_component_1 = require("./pages/plane/plane.component");
|
||||
var plane_form_component_1 = require("./pages/planes/form/plane-form.component");
|
||||
var edit_plane_form_component_1 = require("./pages/plane/form/edit-plane-form.component");
|
||||
var data_service_1 = require("./services/data.service");
|
||||
var AppModule = (function () {
|
||||
function AppModule() {
|
||||
}
|
||||
return AppModule;
|
||||
}());
|
||||
AppModule = __decorate([
|
||||
core_1.NgModule({
|
||||
declarations: [
|
||||
app_component_1.AppComponent,
|
||||
dashboard_component_1.DashboardComponent,
|
||||
flights_component_1.FlightsComponent,
|
||||
flight_component_1.FlightComponent,
|
||||
users_component_1.UsersComponent,
|
||||
user_component_1.UserComponent,
|
||||
user_form_component_1.UserFormComponent,
|
||||
edit_user_form_component_1.EditUserFormComponent,
|
||||
readers_component_1.ReadersComponent,
|
||||
reader_component_1.ReaderComponent,
|
||||
edit_reader_form_component_1.EditReaderFormComponent,
|
||||
planes_component_1.PlanesComponent,
|
||||
plane_component_1.PlaneComponent,
|
||||
plane_form_component_1.PlaneFormComponent,
|
||||
edit_plane_form_component_1.EditPlaneFormComponent
|
||||
],
|
||||
imports: [
|
||||
platform_browser_1.BrowserModule,
|
||||
forms_1.FormsModule,
|
||||
http_1.HttpModule,
|
||||
app_routing_module_1.AppRoutingModule,
|
||||
forms_1.FormsModule
|
||||
],
|
||||
providers: [data_service_1.DataService],
|
||||
bootstrap: [app_component_1.AppComponent]
|
||||
})
|
||||
], AppModule);
|
||||
exports.AppModule = AppModule;
|
||||
//# sourceMappingURL=app.module.js.map
|
||||
@@ -0,0 +1 @@
|
||||
{"version":3,"file":"app.module.js","sourceRoot":"","sources":["app.module.ts"],"names":[],"mappings":";;;;;;;AAAA,8DAA0D;AAC1D,sCAAyC;AACzC,wCAA6C;AAC7C,sCAA2C;AAE3C,2DAAwD;AAExD,iDAA+C;AAC/C,6EAA2E;AAE3E,uEAAqE;AACrE,oEAAkE;AAElE,iEAA+D;AAC/D,8DAA4D;AAC5D,8EAA2E;AAC3E,uFAAmF;AAEnF,uEAAqE;AACrE,oEAAkE;AAClE,6FAAyF;AAEzF,oEAAkE;AAClE,iEAA+D;AAC/D,iFAA8E;AAC9E,0FAAsF;AAEtF,wDAAsD;AA8BtD,IAAa,SAAS;IAAtB;IAAyB,CAAC;IAAD,gBAAC;AAAD,CAAC,AAA1B,IAA0B;AAAb,SAAS;IA5BrB,eAAQ,CAAC;QACR,YAAY,EAAE;YACZ,4BAAY;YACZ,wCAAkB;YAClB,oCAAgB;YAChB,kCAAe;YACf,gCAAc;YACd,8BAAa;YACb,uCAAiB;YACjB,gDAAqB;YACrB,oCAAgB;YAChB,kCAAe;YACf,oDAAuB;YACvB,kCAAe;YACf,gCAAc;YACd,yCAAkB;YAClB,kDAAsB;SACvB;QACD,OAAO,EAAE;YACP,gCAAa;YACb,mBAAW;YACX,iBAAU;YACV,qCAAgB;YAChB,mBAAW;SACZ;QACD,SAAS,EAAE,CAAC,0BAAW,CAAC;QACxB,SAAS,EAAE,CAAC,4BAAY,CAAC;KAC1B,CAAC;GACW,SAAS,CAAI;AAAb,8BAAS"}
|
||||
@@ -0,0 +1,58 @@
|
||||
import { BrowserModule } from '@angular/platform-browser';
|
||||
import { NgModule } from '@angular/core';
|
||||
import { FormsModule } from '@angular/forms';
|
||||
import { HttpModule } from '@angular/http';
|
||||
|
||||
import { AppRoutingModule } from './app-routing.module';
|
||||
|
||||
import { AppComponent } from './app.component';
|
||||
import { DashboardComponent } from './pages/dashboard/dashboard.component';
|
||||
|
||||
import { FlightsComponent } from './pages/flights/flights.component';
|
||||
import { FlightComponent } from './pages/flight/flight.component';
|
||||
|
||||
import { UsersComponent } from './pages/users/users.component';
|
||||
import { UserComponent } from './pages/user/user.component';
|
||||
import { UserFormComponent } from './pages/users/form/user-form.component';
|
||||
import { EditUserFormComponent } from './pages/user/form/edit-user-form.component';
|
||||
|
||||
import { ReadersComponent } from './pages/readers/readers.component';
|
||||
import { ReaderComponent } from './pages/reader/reader.component';
|
||||
import { EditReaderFormComponent } from './pages/reader/form/edit-reader-form.component';
|
||||
|
||||
import { PlanesComponent } from './pages/planes/planes.component';
|
||||
import { PlaneComponent } from './pages/plane/plane.component';
|
||||
import { PlaneFormComponent } from './pages/planes/form/plane-form.component';
|
||||
import { EditPlaneFormComponent } from './pages/plane/form/edit-plane-form.component';
|
||||
|
||||
import { DataService } from './services/data.service';
|
||||
|
||||
@NgModule({
|
||||
declarations: [
|
||||
AppComponent,
|
||||
DashboardComponent,
|
||||
FlightsComponent,
|
||||
FlightComponent,
|
||||
UsersComponent,
|
||||
UserComponent,
|
||||
UserFormComponent,
|
||||
EditUserFormComponent,
|
||||
ReadersComponent,
|
||||
ReaderComponent,
|
||||
EditReaderFormComponent,
|
||||
PlanesComponent,
|
||||
PlaneComponent,
|
||||
PlaneFormComponent,
|
||||
EditPlaneFormComponent
|
||||
],
|
||||
imports: [
|
||||
BrowserModule,
|
||||
FormsModule,
|
||||
HttpModule,
|
||||
AppRoutingModule,
|
||||
FormsModule
|
||||
],
|
||||
providers: [DataService],
|
||||
bootstrap: [AppComponent]
|
||||
})
|
||||
export class AppModule { }
|
||||
@@ -0,0 +1,43 @@
|
||||
"use strict";
|
||||
var user_class_1 = require("./user.class");
|
||||
var plane_class_1 = require("./plane.class");
|
||||
var Flight = (function () {
|
||||
function Flight(id, flightday_id, starttime, endtime, type, comment, plane, users) {
|
||||
this.id = id;
|
||||
this.flightday_id = flightday_id;
|
||||
this.plane = plane;
|
||||
this.starttime = starttime;
|
||||
this.endtime = endtime;
|
||||
this.type = type;
|
||||
this.comment = comment;
|
||||
this.users = users;
|
||||
}
|
||||
Flight.prototype.equals = function (other) {
|
||||
if (other) {
|
||||
var keySet1 = Object.keys(this);
|
||||
var keySet2 = Object.keys(other);
|
||||
var j = 0;
|
||||
var isTheSame = true;
|
||||
for (j; j < keySet1.length; j++) {
|
||||
if (this[keySet1[j]] !== other[keySet2[j]]) {
|
||||
// Shit is not the same
|
||||
isTheSame = false;
|
||||
}
|
||||
}
|
||||
return isTheSame;
|
||||
}
|
||||
return false;
|
||||
};
|
||||
Flight.toFlight = function (r) {
|
||||
var users = new Array();
|
||||
var plane = plane_class_1.Plane.toPlane(r.PLANE);
|
||||
for (var i = 0; i < r.USERS.length; i++) {
|
||||
users.push(user_class_1.User.toUser(r.USERS[i]));
|
||||
}
|
||||
var flight = new Flight(r.ID, r.FLIGHTDAY_ID, r.DATETIME_START, r.DATETIME_END, r.TYPE, r.COMMENT, plane, users);
|
||||
return flight;
|
||||
};
|
||||
return Flight;
|
||||
}());
|
||||
exports.Flight = Flight;
|
||||
//# sourceMappingURL=flight.class.js.map
|
||||
@@ -0,0 +1 @@
|
||||
{"version":3,"file":"flight.class.js","sourceRoot":"","sources":["flight.class.ts"],"names":[],"mappings":";AAAA,2CAAoC;AACpC,6CAAsC;AAEtC;IAWC,gBAAY,EAAS,EACpB,YAAmB,EACnB,SAAgB,EAChB,OAAc,EACd,IAAW,EACX,OAAc,EACd,KAAW,EACX,KAAiB;QAEjB,IAAI,CAAC,EAAE,GAAG,EAAE,CAAC;QACb,IAAI,CAAC,YAAY,GAAG,YAAY,CAAC;QACjC,IAAI,CAAC,KAAK,GAAG,KAAK,CAAC;QACnB,IAAI,CAAC,SAAS,GAAG,SAAS,CAAC;QAC3B,IAAI,CAAC,OAAO,GAAG,OAAO,CAAC;QACvB,IAAI,CAAC,IAAI,GAAG,IAAI,CAAC;QACjB,IAAI,CAAC,OAAO,GAAG,OAAO,CAAC;QACvB,IAAI,CAAC,KAAK,GAAG,KAAK,CAAC;IACpB,CAAC;IAGM,uBAAM,GAAb,UAAc,KAAY;QAEzB,EAAE,CAAA,CAAC,KAAK,CAAC,CACR,CAAC;YACA,IAAI,OAAO,GAAG,MAAM,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC;YAChC,IAAI,OAAO,GAAG,MAAM,CAAC,IAAI,CAAC,KAAK,CAAC,CAAC;YAEjC,IAAI,CAAC,GAAG,CAAC,CAAC;YACV,IAAI,SAAS,GAAG,IAAI,CAAC;YAErB,GAAG,CAAA,CAAC,CAAC,EAAE,CAAC,GAAG,OAAO,CAAC,MAAM,EAAE,CAAC,EAAE,EAAE,CAAC;gBAChC,EAAE,CAAC,CAAC,IAAI,CAAC,OAAO,CAAC,CAAC,CAAC,CAAC,KAAK,KAAK,CAAC,OAAO,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC;oBAC5C,uBAAuB;oBACvB,SAAS,GAAG,KAAK,CAAC;gBACnB,CAAC;YACF,CAAC;YAED,MAAM,CAAC,SAAS,CAAC;QACnB,CAAC;QAED,MAAM,CAAC,KAAK,CAAC;IACd,CAAC;IAEa,eAAQ,GAAtB,UAAuB,CAAK;QAE3B,IAAI,KAAK,GAAe,IAAI,KAAK,EAAQ,CAAC;QAE1C,IAAI,KAAK,GAAS,mBAAK,CAAC,OAAO,CAAC,CAAC,CAAC,KAAK,CAAC,CAAC;QAEvC,GAAG,CAAA,CAAC,IAAI,CAAC,GAAG,CAAC,EAAE,CAAC,GAAG,CAAC,CAAC,KAAK,CAAC,MAAM,EAAE,CAAC,EAAE,EACtC,CAAC;YACA,KAAK,CAAC,IAAI,CAAC,iBAAI,CAAC,MAAM,CAAC,CAAC,CAAC,KAAK,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC;QACrC,CAAC;QAED,IAAI,MAAM,GAAG,IAAI,MAAM,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC,YAAY,EAAE,CAAC,CAAC,cAAc,EAAE,CAAC,CAAC,YAAY,EAAE,CAAC,CAAC,IAAI,EAAE,CAAC,CAAC,OAAO,EAAE,KAAK,EAAE,KAAK,CAAC,CAAC;QAEjH,MAAM,CAAC,MAAM,CAAC;IACjB,CAAC;IACF,aAAC;AAAD,CAAC,AArED,IAqEC;AArEY,wBAAM"}
|
||||
@@ -0,0 +1,73 @@
|
||||
import { User } from './user.class';
|
||||
import { Plane } from './plane.class';
|
||||
|
||||
export class Flight {
|
||||
id:number;
|
||||
flightday_id:number;
|
||||
starttime:string;
|
||||
endtime:string;
|
||||
type:string;
|
||||
comment:string;
|
||||
|
||||
plane:Plane
|
||||
users:Array<User>;
|
||||
|
||||
constructor(id:number,
|
||||
flightday_id:number,
|
||||
starttime:string,
|
||||
endtime:string,
|
||||
type:string,
|
||||
comment:string,
|
||||
plane:Plane,
|
||||
users:Array<User>)
|
||||
{
|
||||
this.id = id;
|
||||
this.flightday_id = flightday_id;
|
||||
this.plane = plane;
|
||||
this.starttime = starttime;
|
||||
this.endtime = endtime;
|
||||
this.type = type;
|
||||
this.comment = comment;
|
||||
this.users = users;
|
||||
}
|
||||
|
||||
|
||||
public equals(other:Flight) : boolean
|
||||
{
|
||||
if(other)
|
||||
{
|
||||
var keySet1 = Object.keys(this);
|
||||
var keySet2 = Object.keys(other);
|
||||
|
||||
var j = 0;
|
||||
var isTheSame = true;
|
||||
|
||||
for(j; j < keySet1.length; j++) {
|
||||
if (this[keySet1[j]] !== other[keySet2[j]]) {
|
||||
// Shit is not the same
|
||||
isTheSame = false;
|
||||
}
|
||||
}
|
||||
|
||||
return isTheSame;
|
||||
}
|
||||
|
||||
return false;
|
||||
}
|
||||
|
||||
public static toFlight(r:any): Flight
|
||||
{
|
||||
let users:Array<User> = new Array<User>();
|
||||
|
||||
let plane:Plane = Plane.toPlane(r.PLANE);
|
||||
|
||||
for(let i = 0; i < r.USERS.length; i++)
|
||||
{
|
||||
users.push(User.toUser(r.USERS[i]));
|
||||
}
|
||||
|
||||
let flight = new Flight(r.ID, r.FLIGHTDAY_ID, r.DATETIME_START, r.DATETIME_END, r.TYPE, r.COMMENT, plane, users);
|
||||
|
||||
return flight;
|
||||
}
|
||||
}
|
||||
@@ -0,0 +1,34 @@
|
||||
"use strict";
|
||||
var Plane = (function () {
|
||||
function Plane(id, name, registration, model, comment) {
|
||||
this.id = id;
|
||||
this.name = name;
|
||||
this.registration = registration;
|
||||
this.model = model;
|
||||
this.comment = comment;
|
||||
}
|
||||
Plane.prototype.equals = function (other) {
|
||||
if (other) {
|
||||
var keySet1 = Object.keys(this);
|
||||
var keySet2 = Object.keys(other);
|
||||
var j = 0;
|
||||
var isTheSame = true;
|
||||
for (j; j < keySet1.length; j++) {
|
||||
if (this[keySet1[j]] !== other[keySet2[j]]) {
|
||||
// Shit is not the same
|
||||
isTheSame = false;
|
||||
}
|
||||
}
|
||||
return isTheSame;
|
||||
}
|
||||
return false;
|
||||
};
|
||||
Plane.toPlane = function (r) {
|
||||
var plane = new Plane(r.ID, r.NAME, r.REGISTRATION, r.MODEL, r.COMMENT);
|
||||
//console.log('Parsed plane:', plane);
|
||||
return plane;
|
||||
};
|
||||
return Plane;
|
||||
}());
|
||||
exports.Plane = Plane;
|
||||
//# sourceMappingURL=plane.class.js.map
|
||||
@@ -0,0 +1 @@
|
||||
{"version":3,"file":"plane.class.js","sourceRoot":"","sources":["plane.class.ts"],"names":[],"mappings":";AAAA;IAQE,eAAY,EAAU,EACV,IAAY,EACZ,YAAmB,EACnB,KAAY,EACZ,OAAc;QAEzB,IAAI,CAAC,EAAE,GAAG,EAAE,CAAC;QACZ,IAAI,CAAC,IAAI,GAAG,IAAI,CAAC;QAClB,IAAI,CAAC,YAAY,GAAG,YAAY,CAAC;QAChC,IAAI,CAAC,KAAK,GAAG,KAAK,CAAC;QACnB,IAAI,CAAC,OAAO,GAAG,OAAO,CAAC;IACzB,CAAC;IAEM,sBAAM,GAAb,UAAc,KAAW;QAEvB,EAAE,CAAA,CAAC,KAAK,CAAC,CACP,CAAC;YACC,IAAI,OAAO,GAAG,MAAM,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC;YAChC,IAAI,OAAO,GAAG,MAAM,CAAC,IAAI,CAAC,KAAK,CAAC,CAAC;YAEjC,IAAI,CAAC,GAAG,CAAC,CAAC;YACV,IAAI,SAAS,GAAG,IAAI,CAAC;YAErB,GAAG,CAAA,CAAC,CAAC,EAAE,CAAC,GAAG,OAAO,CAAC,MAAM,EAAE,CAAC,EAAE,EAAE,CAAC;gBAC/B,EAAE,CAAC,CAAC,IAAI,CAAC,OAAO,CAAC,CAAC,CAAC,CAAC,KAAK,KAAK,CAAC,OAAO,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC;oBAC3C,uBAAuB;oBACvB,SAAS,GAAG,KAAK,CAAC;gBACpB,CAAC;YACH,CAAC;YAED,MAAM,CAAC,SAAS,CAAC;QACrB,CAAC;QAED,MAAM,CAAC,KAAK,CAAC;IACf,CAAC;IAEa,aAAO,GAArB,UAAsB,CAAK;QAE3B,IAAI,KAAK,GAAG,IAAI,KAAK,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC,IAAI,EAAE,CAAC,CAAC,YAAY,EAAE,CAAC,CAAC,KAAK,EAAE,CAAC,CAAC,OAAO,CAAC,CAAC;QAExE,sCAAsC;QACtC,MAAM,CAAC,KAAK,CAAC;IACf,CAAC;IACD,YAAC;AAAD,CAAC,AAnDD,IAmDC;AAnDY,sBAAK"}
|
||||
@@ -0,0 +1,52 @@
|
||||
export class Plane {
|
||||
|
||||
id:number;
|
||||
name:string;
|
||||
registration:string;
|
||||
model:string;
|
||||
comment:string;
|
||||
|
||||
constructor(id: number,
|
||||
name: string,
|
||||
registration:string,
|
||||
model:string,
|
||||
comment:string) {
|
||||
|
||||
this.id = id;
|
||||
this.name = name;
|
||||
this.registration = registration;
|
||||
this.model = model;
|
||||
this.comment = comment;
|
||||
}
|
||||
|
||||
public equals(other:Plane): boolean
|
||||
{
|
||||
if(other)
|
||||
{
|
||||
var keySet1 = Object.keys(this);
|
||||
var keySet2 = Object.keys(other);
|
||||
|
||||
var j = 0;
|
||||
var isTheSame = true;
|
||||
|
||||
for(j; j < keySet1.length; j++) {
|
||||
if (this[keySet1[j]] !== other[keySet2[j]]) {
|
||||
// Shit is not the same
|
||||
isTheSame = false;
|
||||
}
|
||||
}
|
||||
|
||||
return isTheSame;
|
||||
}
|
||||
|
||||
return false;
|
||||
}
|
||||
|
||||
public static toPlane(r:any): Plane{
|
||||
|
||||
let plane = new Plane(r.ID, r.NAME, r.REGISTRATION, r.MODEL, r.COMMENT);
|
||||
|
||||
//console.log('Parsed plane:', plane);
|
||||
return plane;
|
||||
}
|
||||
}
|
||||
@@ -0,0 +1,36 @@
|
||||
"use strict";
|
||||
var plane_class_1 = require("./plane.class");
|
||||
var Reader = (function () {
|
||||
function Reader(id, reader_id, plane) {
|
||||
this.id = id;
|
||||
this.reader_id = reader_id;
|
||||
this.plane = plane;
|
||||
}
|
||||
Reader.prototype.equals = function (other) {
|
||||
if (other) {
|
||||
var keySet1 = Object.keys(this);
|
||||
var keySet2 = Object.keys(other);
|
||||
var j = 0;
|
||||
var isTheSame = true;
|
||||
for (j; j < keySet1.length; j++) {
|
||||
if (this[keySet1[j]] !== other[keySet2[j]]) {
|
||||
// Shit is not the same
|
||||
isTheSame = false;
|
||||
}
|
||||
}
|
||||
return isTheSame;
|
||||
}
|
||||
return false;
|
||||
};
|
||||
Reader.toReader = function (r) {
|
||||
var plane = null;
|
||||
if (r.PLANE != null)
|
||||
plane = plane_class_1.Plane.toPlane(r.PLANE);
|
||||
var reader = new Reader(r.ID, r.READER_ID, plane);
|
||||
//console.log('Parsed reader:', reader);
|
||||
return reader;
|
||||
};
|
||||
return Reader;
|
||||
}());
|
||||
exports.Reader = Reader;
|
||||
//# sourceMappingURL=reader.class.js.map
|
||||
@@ -0,0 +1 @@
|
||||
{"version":3,"file":"reader.class.js","sourceRoot":"","sources":["reader.class.ts"],"names":[],"mappings":";AAAA,6CAAsC;AAEtC;IAME,gBAAY,EAAU,EACV,SAAiB,EACjB,KAAW;QAEtB,IAAI,CAAC,EAAE,GAAG,EAAE,CAAC;QACb,IAAI,CAAC,SAAS,GAAG,SAAS,CAAC;QAC1B,IAAI,CAAC,KAAK,GAAG,KAAK,CAAC;IACrB,CAAC;IAEM,uBAAM,GAAb,UAAc,KAAY;QAExB,EAAE,CAAA,CAAC,KAAK,CAAC,CACP,CAAC;YACC,IAAI,OAAO,GAAG,MAAM,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC;YAChC,IAAI,OAAO,GAAG,MAAM,CAAC,IAAI,CAAC,KAAK,CAAC,CAAC;YAEjC,IAAI,CAAC,GAAG,CAAC,CAAC;YACV,IAAI,SAAS,GAAG,IAAI,CAAC;YAErB,GAAG,CAAA,CAAC,CAAC,EAAE,CAAC,GAAG,OAAO,CAAC,MAAM,EAAE,CAAC,EAAE,EAAE,CAAC;gBAC/B,EAAE,CAAC,CAAC,IAAI,CAAC,OAAO,CAAC,CAAC,CAAC,CAAC,KAAK,KAAK,CAAC,OAAO,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC;oBAC3C,uBAAuB;oBACvB,SAAS,GAAG,KAAK,CAAC;gBACpB,CAAC;YACH,CAAC;YAED,MAAM,CAAC,SAAS,CAAC;QACrB,CAAC;QAED,MAAM,CAAC,KAAK,CAAC;IACf,CAAC;IAEa,eAAQ,GAAtB,UAAuB,CAAK;QAE1B,IAAI,KAAK,GAAS,IAAI,CAAC;QAEvB,EAAE,CAAA,CAAC,CAAC,CAAC,KAAK,IAAI,IAAI,CAAC;YACjB,KAAK,GAAG,mBAAK,CAAC,OAAO,CAAC,CAAC,CAAC,KAAK,CAAC,CAAC;QAEjC,IAAI,MAAM,GAAG,IAAI,MAAM,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC,SAAS,EAAE,KAAK,CAAC,CAAA;QAEjD,wCAAwC;QACxC,MAAM,CAAC,MAAM,CAAC;IAChB,CAAC;IACH,aAAC;AAAD,CAAC,AAlDD,IAkDC;AAlDY,wBAAM"}
|
||||
@@ -0,0 +1,53 @@
|
||||
import { Plane } from './plane.class';
|
||||
|
||||
export class Reader {
|
||||
|
||||
id:number;
|
||||
reader_id:string;
|
||||
plane:Plane;
|
||||
|
||||
constructor(id: number,
|
||||
reader_id: string,
|
||||
plane:Plane) {
|
||||
|
||||
this.id = id;
|
||||
this.reader_id = reader_id;
|
||||
this.plane = plane;
|
||||
}
|
||||
|
||||
public equals(other:Reader): boolean
|
||||
{
|
||||
if(other)
|
||||
{
|
||||
var keySet1 = Object.keys(this);
|
||||
var keySet2 = Object.keys(other);
|
||||
|
||||
var j = 0;
|
||||
var isTheSame = true;
|
||||
|
||||
for(j; j < keySet1.length; j++) {
|
||||
if (this[keySet1[j]] !== other[keySet2[j]]) {
|
||||
// Shit is not the same
|
||||
isTheSame = false;
|
||||
}
|
||||
}
|
||||
|
||||
return isTheSame;
|
||||
}
|
||||
|
||||
return false;
|
||||
}
|
||||
|
||||
public static toReader(r:any): Reader{
|
||||
|
||||
let plane:Plane = null;
|
||||
|
||||
if(r.PLANE != null)
|
||||
plane = Plane.toPlane(r.PLANE);
|
||||
|
||||
let reader = new Reader(r.ID, r.READER_ID, plane)
|
||||
|
||||
//console.log('Parsed reader:', reader);
|
||||
return reader;
|
||||
}
|
||||
}
|
||||
@@ -0,0 +1,33 @@
|
||||
"use strict";
|
||||
var User = (function () {
|
||||
function User(id, name, cardId, role) {
|
||||
this.id = id;
|
||||
this.name = name;
|
||||
this.card = cardId;
|
||||
this.role = role;
|
||||
}
|
||||
User.prototype.equals = function (other) {
|
||||
if (other) {
|
||||
var keySet1 = Object.keys(this);
|
||||
var keySet2 = Object.keys(other);
|
||||
var j = 0;
|
||||
var isTheSame = true;
|
||||
for (j; j < keySet1.length; j++) {
|
||||
if (this[keySet1[j]] !== other[keySet2[j]]) {
|
||||
// Shit is not the same
|
||||
isTheSame = false;
|
||||
}
|
||||
}
|
||||
return isTheSame;
|
||||
}
|
||||
return false;
|
||||
};
|
||||
User.toUser = function (r) {
|
||||
var user = new User(r.ID, r.NAME, r.CARD_ID, r.ROLE);
|
||||
//console.log('Parsed user:', user);
|
||||
return user;
|
||||
};
|
||||
return User;
|
||||
}());
|
||||
exports.User = User;
|
||||
//# sourceMappingURL=user.class.js.map
|
||||
@@ -0,0 +1 @@
|
||||
{"version":3,"file":"user.class.js","sourceRoot":"","sources":["user.class.ts"],"names":[],"mappings":";AAAA;IAOE,cAAY,EAAU,EACV,IAAY,EACZ,MAAc,EACd,IAAY;QAEvB,IAAI,CAAC,EAAE,GAAG,EAAE,CAAC;QACb,IAAI,CAAC,IAAI,GAAG,IAAI,CAAC;QACjB,IAAI,CAAC,IAAI,GAAG,MAAM,CAAC;QACnB,IAAI,CAAC,IAAI,GAAG,IAAI,CAAC;IAClB,CAAC;IAEM,qBAAM,GAAb,UAAc,KAAU;QAEtB,EAAE,CAAA,CAAC,KAAK,CAAC,CACP,CAAC;YACC,IAAI,OAAO,GAAG,MAAM,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC;YAChC,IAAI,OAAO,GAAG,MAAM,CAAC,IAAI,CAAC,KAAK,CAAC,CAAC;YAEjC,IAAI,CAAC,GAAG,CAAC,CAAC;YACV,IAAI,SAAS,GAAG,IAAI,CAAC;YAErB,GAAG,CAAA,CAAC,CAAC,EAAE,CAAC,GAAG,OAAO,CAAC,MAAM,EAAE,CAAC,EAAE,EAAE,CAAC;gBAC/B,EAAE,CAAC,CAAC,IAAI,CAAC,OAAO,CAAC,CAAC,CAAC,CAAC,KAAK,KAAK,CAAC,OAAO,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC;oBAC3C,uBAAuB;oBACvB,SAAS,GAAG,KAAK,CAAC;gBACpB,CAAC;YACH,CAAC;YAED,MAAM,CAAC,SAAS,CAAC;QACrB,CAAC;QAED,MAAM,CAAC,KAAK,CAAC;IACf,CAAC;IAEa,WAAM,GAApB,UAAqB,CAAK;QAE1B,IAAI,IAAI,GAAG,IAAI,IAAI,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC,IAAI,EAAE,CAAC,CAAC,OAAO,EAAE,CAAC,CAAC,IAAI,CAAC,CAAA;QAEpD,oCAAoC;QACpC,MAAM,CAAC,IAAI,CAAC;IACd,CAAC;IACD,WAAC;AAAD,CAAC,AAhDD,IAgDC;AAhDY,oBAAI"}
|
||||
@@ -0,0 +1,49 @@
|
||||
export class User {
|
||||
|
||||
id:number;
|
||||
name:string;
|
||||
card:string;
|
||||
role:string;
|
||||
|
||||
constructor(id: number,
|
||||
name: string,
|
||||
cardId: string,
|
||||
role: string) {
|
||||
|
||||
this.id = id;
|
||||
this.name = name;
|
||||
this.card = cardId;
|
||||
this.role = role;
|
||||
}
|
||||
|
||||
public equals(other:User): boolean
|
||||
{
|
||||
if(other)
|
||||
{
|
||||
var keySet1 = Object.keys(this);
|
||||
var keySet2 = Object.keys(other);
|
||||
|
||||
var j = 0;
|
||||
var isTheSame = true;
|
||||
|
||||
for(j; j < keySet1.length; j++) {
|
||||
if (this[keySet1[j]] !== other[keySet2[j]]) {
|
||||
// Shit is not the same
|
||||
isTheSame = false;
|
||||
}
|
||||
}
|
||||
|
||||
return isTheSame;
|
||||
}
|
||||
|
||||
return false;
|
||||
}
|
||||
|
||||
public static toUser(r:any): User{
|
||||
|
||||
let user = new User(r.ID, r.NAME, r.CARD_ID, r.ROLE)
|
||||
|
||||
//console.log('Parsed user:', user);
|
||||
return user;
|
||||
}
|
||||
}
|
||||
@@ -0,0 +1,6 @@
|
||||
{
|
||||
"protocol": "http://",
|
||||
"hostname": "192.168.1.195",
|
||||
"port": "8080",
|
||||
"api": "apiv1"
|
||||
}
|
||||
@@ -0,0 +1,9 @@
|
||||
<div class="row">
|
||||
|
||||
<div class="col-md-12">
|
||||
<div class="page-header">
|
||||
<h1>F.R.A.U.D.S. <small>Dashboard</small></h1>
|
||||
</div>
|
||||
</div>
|
||||
|
||||
</div>
|
||||
@@ -0,0 +1,22 @@
|
||||
"use strict";
|
||||
var __decorate = (this && this.__decorate) || function (decorators, target, key, desc) {
|
||||
var c = arguments.length, r = c < 3 ? target : desc === null ? desc = Object.getOwnPropertyDescriptor(target, key) : desc, d;
|
||||
if (typeof Reflect === "object" && typeof Reflect.decorate === "function") r = Reflect.decorate(decorators, target, key, desc);
|
||||
else for (var i = decorators.length - 1; i >= 0; i--) if (d = decorators[i]) r = (c < 3 ? d(r) : c > 3 ? d(target, key, r) : d(target, key)) || r;
|
||||
return c > 3 && r && Object.defineProperty(target, key, r), r;
|
||||
};
|
||||
var core_1 = require("@angular/core");
|
||||
var DashboardComponent = (function () {
|
||||
function DashboardComponent() {
|
||||
}
|
||||
return DashboardComponent;
|
||||
}());
|
||||
DashboardComponent = __decorate([
|
||||
core_1.Component({
|
||||
selector: 'app-dashboard',
|
||||
templateUrl: './dashboard.component.html',
|
||||
styleUrls: ['./dashboard.component.css']
|
||||
})
|
||||
], DashboardComponent);
|
||||
exports.DashboardComponent = DashboardComponent;
|
||||
//# sourceMappingURL=dashboard.component.js.map
|
||||
@@ -0,0 +1 @@
|
||||
{"version":3,"file":"dashboard.component.js","sourceRoot":"","sources":["dashboard.component.ts"],"names":[],"mappings":";;;;;;;AAAA,sCAA0C;AAQ1C,IAAa,kBAAkB;IAA/B;IAAoC,CAAC;IAAD,yBAAC;AAAD,CAAC,AAArC,IAAqC;AAAxB,kBAAkB;IAN9B,gBAAS,CAAC;QACT,QAAQ,EAAE,eAAe;QACzB,WAAW,EAAE,4BAA4B;QACzC,SAAS,EAAE,CAAC,2BAA2B,CAAC;KACzC,CAAC;GAEW,kBAAkB,CAAM;AAAxB,gDAAkB"}
|
||||
@@ -0,0 +1,9 @@
|
||||
import { Component } from '@angular/core';
|
||||
|
||||
@Component({
|
||||
selector: 'app-dashboard',
|
||||
templateUrl: './dashboard.component.html',
|
||||
styleUrls: ['./dashboard.component.css']
|
||||
})
|
||||
|
||||
export class DashboardComponent { }
|
||||
@@ -0,0 +1,3 @@
|
||||
.user, .plane {
|
||||
cursor: pointer;
|
||||
}
|
||||
@@ -0,0 +1,52 @@
|
||||
<div class="row">
|
||||
|
||||
<div class="col-md-12">
|
||||
<div class="page-header">
|
||||
<h1>F.R.A.U.D.S. <small>{{name}}</small> <span *ngIf=!loading><span *ngIf="flight.endtime == null"><button class="btn btn-danger pull-right" (click)="endFlight()"><i class="fa fa-plane" aria-hidden="true"></i> End flight</button></span></span></h1>
|
||||
</div>
|
||||
</div>
|
||||
|
||||
<div *ngIf=loading class="col-md-12">
|
||||
<span *ngIf=!error><i class="fa fa-circle-o-notch fa-spin fa-fw"></i> Loading....</span>
|
||||
<span *ngIf=error><i class="fa fa-cross fa-fw"></i> Error....</span>
|
||||
</div>
|
||||
|
||||
<div *ngIf=!loading class="col-md-12">
|
||||
|
||||
<b>Type:</b> {{flight.type}}<br>
|
||||
<span *ngIf="flight.comment"><b>Comment:</b> {{flight.comment}}<br></span>
|
||||
|
||||
<h3><i class="fa fa-clock-o"></i> Time</h3>
|
||||
<i class="fa fa-fw fa-caret-up"></i> <b>Takeoff: </b> {{flight.starttime | date:'yyyy-MM-dd HH:mm:ss'}}<br>
|
||||
<i class="fa fa-fw fa-caret-down"></i> <b>Touchdown:</b> {{flight.endtime | date:'yyyy-MM-dd HH:mm:ss'}}<br>
|
||||
|
||||
|
||||
<h3><i class="fa fa-plane"></i> Plane</h3>
|
||||
|
||||
<div class="row">
|
||||
|
||||
<div class="col-md-4 col-sm-6 col-xs-12 plane">
|
||||
<div class="well well-sm" (click)="onClickPlane(flight.plane)">
|
||||
<h4><i class="fa fa-fw fa-plane"></i> {{flight.plane.name}}</h4>
|
||||
<i class="fa fa-fw fa-file-text"></i> {{flight.plane.registration}}<br>
|
||||
<i class="fa fa-fw fa-tag"></i> {{flight.plane.model}}
|
||||
</div>
|
||||
</div>
|
||||
|
||||
</div>
|
||||
|
||||
|
||||
<h3><i class="fa fa-user"></i> Users</h3>
|
||||
|
||||
<div class="row">
|
||||
|
||||
<div *ngFor="let user of flight.users" class="col-md-4 col-sm-6 col-xs-12 user">
|
||||
<div class="well well-sm" (click)="onClick(user)">
|
||||
<h4>{{user.name}}</h4>
|
||||
<i class="fa fa-fw fa-tag"></i> {{user.role}}<br>
|
||||
</div>
|
||||
</div>
|
||||
|
||||
</div>
|
||||
|
||||
</div>
|
||||
@@ -0,0 +1,84 @@
|
||||
"use strict";
|
||||
var __decorate = (this && this.__decorate) || function (decorators, target, key, desc) {
|
||||
var c = arguments.length, r = c < 3 ? target : desc === null ? desc = Object.getOwnPropertyDescriptor(target, key) : desc, d;
|
||||
if (typeof Reflect === "object" && typeof Reflect.decorate === "function") r = Reflect.decorate(decorators, target, key, desc);
|
||||
else for (var i = decorators.length - 1; i >= 0; i--) if (d = decorators[i]) r = (c < 3 ? d(r) : c > 3 ? d(target, key, r) : d(target, key)) || r;
|
||||
return c > 3 && r && Object.defineProperty(target, key, r), r;
|
||||
};
|
||||
var __metadata = (this && this.__metadata) || function (k, v) {
|
||||
if (typeof Reflect === "object" && typeof Reflect.metadata === "function") return Reflect.metadata(k, v);
|
||||
};
|
||||
var core_1 = require("@angular/core");
|
||||
var data_service_1 = require("./../../services/data.service");
|
||||
var router_1 = require("@angular/router");
|
||||
var IntervalObservable_1 = require("rxjs/observable/IntervalObservable");
|
||||
var flight_class_1 = require("./../../classes/flight.class");
|
||||
var FlightComponent = (function () {
|
||||
function FlightComponent(data, router, route) {
|
||||
this.data = data;
|
||||
this.router = router;
|
||||
this.route = route;
|
||||
this.loading = true;
|
||||
this.error = false;
|
||||
this.id = 0;
|
||||
this.flight = null;
|
||||
this.name = "Loading";
|
||||
}
|
||||
FlightComponent.prototype.getFlight = function (id) {
|
||||
var _this = this;
|
||||
this.data.load().then(function () {
|
||||
_this.data
|
||||
.flight(id)
|
||||
.subscribe(function (b) {
|
||||
var status = b.status_code;
|
||||
if (status != 200 && b.data.length != 1) {
|
||||
_this.loading = false;
|
||||
_this.error = true;
|
||||
}
|
||||
else {
|
||||
_this.flight = flight_class_1.Flight.toFlight(b.data[0]);
|
||||
_this.name = "Flight #" + _this.flight.id;
|
||||
_this.loading = false;
|
||||
}
|
||||
});
|
||||
});
|
||||
};
|
||||
FlightComponent.prototype.endFlight = function () {
|
||||
var _this = this;
|
||||
this.data.load().then(function () {
|
||||
_this.data.endFlight(_this.flight.id).subscribe(function (b) {
|
||||
console.log("flight ended");
|
||||
_this.flight.endtime = Date.now().toString();
|
||||
});
|
||||
});
|
||||
};
|
||||
FlightComponent.prototype.ngOnInit = function () {
|
||||
var _this = this;
|
||||
this.id = this.route.snapshot.params['id'];
|
||||
this.getFlight(this.id);
|
||||
this.subscription = IntervalObservable_1.IntervalObservable.create(5000).subscribe(function () {
|
||||
console.log("Reloading data...");
|
||||
_this.getFlight(_this.id);
|
||||
});
|
||||
};
|
||||
FlightComponent.prototype.ngOnDestroy = function () {
|
||||
this.subscription.unsubscribe();
|
||||
};
|
||||
FlightComponent.prototype.onClick = function (user) {
|
||||
this.router.navigate(['/user', user.id]);
|
||||
};
|
||||
FlightComponent.prototype.onClickPlane = function (plane) {
|
||||
this.router.navigate(['/plane', plane.id]);
|
||||
};
|
||||
return FlightComponent;
|
||||
}());
|
||||
FlightComponent = __decorate([
|
||||
core_1.Component({
|
||||
selector: 'app-flight',
|
||||
templateUrl: './flight.component.html',
|
||||
styleUrls: ['./flight.component.css']
|
||||
}),
|
||||
__metadata("design:paramtypes", [data_service_1.DataService, router_1.Router, router_1.ActivatedRoute])
|
||||
], FlightComponent);
|
||||
exports.FlightComponent = FlightComponent;
|
||||
//# sourceMappingURL=flight.component.js.map
|
||||
@@ -0,0 +1 @@
|
||||
{"version":3,"file":"flight.component.js","sourceRoot":"","sources":["flight.component.ts"],"names":[],"mappings":"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"}
|
||||
@@ -0,0 +1,86 @@
|
||||
import { Component, OnInit, OnDestroy } from '@angular/core';
|
||||
import { DataService } from './../../services/data.service';
|
||||
import { ActivatedRoute, Params, Router } from '@angular/router';
|
||||
import { IntervalObservable } from 'rxjs/observable/IntervalObservable';
|
||||
import { Subscription } from 'rxjs/Subscription';
|
||||
|
||||
import { Flight } from './../../classes/flight.class';
|
||||
import { User } from './../../classes/user.class';
|
||||
import { Plane } from './../../classes/plane.class';
|
||||
|
||||
@Component({
|
||||
selector: 'app-flight',
|
||||
templateUrl: './flight.component.html',
|
||||
styleUrls: ['./flight.component.css']
|
||||
})
|
||||
|
||||
export class FlightComponent implements OnInit, OnDestroy {
|
||||
|
||||
loading:boolean = true;
|
||||
error:boolean = false;
|
||||
|
||||
id:number = 0;
|
||||
|
||||
flight:Flight = null;
|
||||
name:string = "Loading";
|
||||
|
||||
public subscription:Subscription;
|
||||
|
||||
constructor(private data:DataService, private router: Router, private route: ActivatedRoute){}
|
||||
|
||||
getFlight(id:number): void {
|
||||
this.data.load().then(()=> {
|
||||
this.data
|
||||
.flight(id)
|
||||
.subscribe(b => {
|
||||
|
||||
var status = b.status_code;
|
||||
|
||||
if(status != 200 && b.data.length != 1)
|
||||
{
|
||||
this.loading = false;
|
||||
this.error = true;
|
||||
}
|
||||
else{
|
||||
this.flight = Flight.toFlight(b.data[0]);
|
||||
this.name = "Flight #" + this.flight.id;
|
||||
this.loading = false;
|
||||
}
|
||||
|
||||
});
|
||||
});
|
||||
}
|
||||
|
||||
endFlight():void {
|
||||
this.data.load().then(()=> {
|
||||
this.data.endFlight(this.flight.id).subscribe(b => {
|
||||
console.log("flight ended");
|
||||
this.flight.endtime = Date.now().toString();
|
||||
});
|
||||
});
|
||||
}
|
||||
|
||||
ngOnInit(): void {
|
||||
this.id = this.route.snapshot.params['id'];
|
||||
|
||||
this.getFlight(this.id);
|
||||
|
||||
this.subscription = IntervalObservable.create(5000).subscribe(() => {
|
||||
console.log("Reloading data...");
|
||||
this.getFlight(this.id);
|
||||
});
|
||||
}
|
||||
|
||||
ngOnDestroy(): void {
|
||||
this.subscription.unsubscribe();
|
||||
}
|
||||
|
||||
onClick(user: User): void {
|
||||
this.router.navigate(['/user', user.id]);
|
||||
}
|
||||
|
||||
onClickPlane(plane: Plane): void {
|
||||
this.router.navigate(['/plane', plane.id]);
|
||||
}
|
||||
|
||||
}
|
||||
@@ -0,0 +1,11 @@
|
||||
.flight {
|
||||
cursor: pointer;
|
||||
}
|
||||
|
||||
.flight .bit {
|
||||
min-height: 190px;
|
||||
}
|
||||
|
||||
.inair {
|
||||
background-color: #CCFFCC;
|
||||
}
|
||||
@@ -0,0 +1,30 @@
|
||||
<div class="row">
|
||||
|
||||
<div class="col-md-12">
|
||||
<div class="page-header">
|
||||
<h1>F.R.A.U.D.S. <small>Flights</small></h1>
|
||||
</div>
|
||||
</div>
|
||||
|
||||
<div *ngIf=loading class="col-md-12">
|
||||
<span *ngIf=!error><i class="fa fa-circle-o-notch fa-spin fa-fw"></i> Loading....</span>
|
||||
<span *ngIf=error><i class="fa fa-cross fa-fw"></i> Error....</span>
|
||||
</div>
|
||||
|
||||
<div *ngIf=!loading class="col-md-12">
|
||||
<div class="row">
|
||||
|
||||
<div *ngFor="let flight of flights" class="col-md-4 col-sm-6 col-xs-12 flight">
|
||||
<div class="well well-sm bit" [class.inair]="flight.endtime == null" (click)="onClick(flight)">
|
||||
<h4><i class="fa fa-fw fa-hashtag"></i> {{flight.id}}</h4>
|
||||
<i class="fa fa-fw fa-plane"></i> {{flight.plane.model}}, {{flight.plane.registration}} <br>
|
||||
<span *ngFor="let user of flight.users"><i class="fa fa-fw fa-user"></i> {{user.name}}<br></span><br>
|
||||
<i class="fa fa-fw fa-caret-up"></i> {{flight.starttime | date:'yyyy-MM-dd HH:mm:ss'}}<br>
|
||||
<i class="fa fa-fw fa-caret-down"></i> {{flight.endtime | date:'yyyy-MM-dd HH:mm:ss'}}<br>
|
||||
</div>
|
||||
</div>
|
||||
|
||||
</div>
|
||||
</div>
|
||||
|
||||
</div>
|
||||
@@ -0,0 +1,87 @@
|
||||
"use strict";
|
||||
var __decorate = (this && this.__decorate) || function (decorators, target, key, desc) {
|
||||
var c = arguments.length, r = c < 3 ? target : desc === null ? desc = Object.getOwnPropertyDescriptor(target, key) : desc, d;
|
||||
if (typeof Reflect === "object" && typeof Reflect.decorate === "function") r = Reflect.decorate(decorators, target, key, desc);
|
||||
else for (var i = decorators.length - 1; i >= 0; i--) if (d = decorators[i]) r = (c < 3 ? d(r) : c > 3 ? d(target, key, r) : d(target, key)) || r;
|
||||
return c > 3 && r && Object.defineProperty(target, key, r), r;
|
||||
};
|
||||
var __metadata = (this && this.__metadata) || function (k, v) {
|
||||
if (typeof Reflect === "object" && typeof Reflect.metadata === "function") return Reflect.metadata(k, v);
|
||||
};
|
||||
var core_1 = require("@angular/core");
|
||||
var data_service_1 = require("./../../services/data.service");
|
||||
var router_1 = require("@angular/router");
|
||||
var IntervalObservable_1 = require("rxjs/observable/IntervalObservable");
|
||||
var flight_class_1 = require("./../../classes/flight.class");
|
||||
var FlightsComponent = (function () {
|
||||
function FlightsComponent(router, data) {
|
||||
this.router = router;
|
||||
this.data = data;
|
||||
this.loading = true;
|
||||
this.error = false;
|
||||
this.flights = new Array();
|
||||
}
|
||||
FlightsComponent.prototype.getFlightsData = function () {
|
||||
var _this = this;
|
||||
this.data.load().then(function () {
|
||||
_this.data
|
||||
.flights()
|
||||
.subscribe(function (response) {
|
||||
var status = response.status_code;
|
||||
if (status != 200) {
|
||||
_this.loading = false;
|
||||
_this.error = true;
|
||||
}
|
||||
else {
|
||||
for (var i = 0; i < response.data.length; i++) {
|
||||
var temp = flight_class_1.Flight.toFlight(response.data[i]);
|
||||
var flight = _this.getFlightByID(temp.id);
|
||||
if (flight) {
|
||||
if (!flight.equals(temp)) {
|
||||
// push new one, delete old
|
||||
var index = _this.flights.indexOf(flight);
|
||||
_this.flights.splice(index, 1);
|
||||
_this.flights.push(temp);
|
||||
}
|
||||
}
|
||||
else {
|
||||
_this.flights.push(temp);
|
||||
}
|
||||
}
|
||||
_this.flights.sort(function (a, b) {
|
||||
return a.id < b.id ? 1 : -1;
|
||||
});
|
||||
_this.loading = false;
|
||||
}
|
||||
});
|
||||
});
|
||||
};
|
||||
FlightsComponent.prototype.getFlightByID = function (id) {
|
||||
return this.flights.find(function (f) { return f.id === id; });
|
||||
};
|
||||
FlightsComponent.prototype.ngOnInit = function () {
|
||||
var _this = this;
|
||||
this.getFlightsData();
|
||||
this.subscription = IntervalObservable_1.IntervalObservable.create(5000).subscribe(function () {
|
||||
console.log("Reloading data...");
|
||||
_this.getFlightsData();
|
||||
});
|
||||
};
|
||||
FlightsComponent.prototype.ngOnDestroy = function () {
|
||||
this.subscription.unsubscribe();
|
||||
};
|
||||
FlightsComponent.prototype.onClick = function (flight) {
|
||||
this.router.navigate(['/flight', flight.id]);
|
||||
};
|
||||
return FlightsComponent;
|
||||
}());
|
||||
FlightsComponent = __decorate([
|
||||
core_1.Component({
|
||||
selector: 'app-flights',
|
||||
templateUrl: './flights.component.html',
|
||||
styleUrls: ['./flights.component.css']
|
||||
}),
|
||||
__metadata("design:paramtypes", [router_1.Router, data_service_1.DataService])
|
||||
], FlightsComponent);
|
||||
exports.FlightsComponent = FlightsComponent;
|
||||
//# sourceMappingURL=flights.component.js.map
|
||||
@@ -0,0 +1 @@
|
||||
{"version":3,"file":"flights.component.js","sourceRoot":"","sources":["flights.component.ts"],"names":[],"mappings":"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"}
|
||||
@@ -0,0 +1,95 @@
|
||||
import { Component, OnInit, OnDestroy } from '@angular/core';
|
||||
import { DataService } from './../../services/data.service';
|
||||
import { Router } from '@angular/router';
|
||||
import { IntervalObservable } from 'rxjs/observable/IntervalObservable';
|
||||
import { Subscription } from 'rxjs/Subscription';
|
||||
|
||||
import { Flight } from './../../classes/flight.class';
|
||||
import { User } from './../../classes/user.class';
|
||||
|
||||
@Component({
|
||||
selector: 'app-flights',
|
||||
templateUrl: './flights.component.html',
|
||||
styleUrls: ['./flights.component.css']
|
||||
})
|
||||
|
||||
export class FlightsComponent implements OnInit, OnDestroy {
|
||||
|
||||
loading:boolean = true;
|
||||
error:boolean = false;
|
||||
|
||||
public subscription:Subscription;
|
||||
|
||||
flights:Array<Flight> = new Array<Flight>();
|
||||
|
||||
constructor(private router: Router, private data:DataService){}
|
||||
|
||||
getFlightsData(): void {
|
||||
|
||||
this.data.load().then(()=> {
|
||||
this.data
|
||||
.flights()
|
||||
.subscribe(response => {
|
||||
|
||||
var status = response.status_code;
|
||||
|
||||
if(status != 200)
|
||||
{
|
||||
this.loading = false;
|
||||
this.error = true;
|
||||
}
|
||||
else{
|
||||
|
||||
for(let i = 0; i < response.data.length; i++)
|
||||
{
|
||||
var temp:Flight = Flight.toFlight(response.data[i]);
|
||||
|
||||
var flight:Flight = this.getFlightByID(temp.id);
|
||||
|
||||
if(flight)
|
||||
{
|
||||
if(!flight.equals(temp))
|
||||
{
|
||||
// push new one, delete old
|
||||
var index = this.flights.indexOf(flight);
|
||||
this.flights.splice(index, 1);
|
||||
this.flights.push(temp);
|
||||
}
|
||||
} else {
|
||||
this.flights.push(temp);
|
||||
}
|
||||
|
||||
}
|
||||
this.flights.sort((a, b) => {
|
||||
return a.id < b.id ? 1 : -1;
|
||||
});
|
||||
|
||||
this.loading = false;
|
||||
}
|
||||
|
||||
});
|
||||
});
|
||||
}
|
||||
|
||||
getFlightByID(id:number): Flight {
|
||||
return this.flights.find((f) => {return f.id === id});
|
||||
}
|
||||
|
||||
ngOnInit(): void {
|
||||
this.getFlightsData();
|
||||
|
||||
this.subscription = IntervalObservable.create(5000).subscribe(() => {
|
||||
console.log("Reloading data...");
|
||||
this.getFlightsData();
|
||||
});
|
||||
}
|
||||
|
||||
ngOnDestroy(): void {
|
||||
this.subscription.unsubscribe();
|
||||
}
|
||||
|
||||
onClick(flight: Flight): void {
|
||||
this.router.navigate(['/flight', flight.id]);
|
||||
}
|
||||
|
||||
}
|
||||
@@ -0,0 +1,51 @@
|
||||
<!-- Trigger the modal with a button -->
|
||||
<button type="button" class="btn btn-info btn-lg" data-toggle="modal" data-target="#editModal"><i class="fa fa-pencil" aria-hidden="true"></i></button>
|
||||
|
||||
<!-- Modal -->
|
||||
<div id="editModal" class="modal fade" role="dialog">
|
||||
<div class="modal-dialog">
|
||||
|
||||
<!-- Modal content-->
|
||||
<div class="modal-content">
|
||||
<form id="myForm" #editForm="ngForm" (ngSubmit)="onSubmit()">
|
||||
<div class="modal-header">
|
||||
<button type="button" class="close" data-dismiss="modal">×</button>
|
||||
<h4 class="modal-title">Edit {{plmodel.name}}</h4>
|
||||
</div>
|
||||
<div class="modal-body">
|
||||
|
||||
<div class="form-group">
|
||||
<label for="name">Name</label>
|
||||
<input type="text" class="form-control" id="name" required [(ngModel)]="plane.name" name="name" #name="ngModel" ngModel>
|
||||
<div [hidden]="name.valid || name.pristine" class="alert alert-danger">
|
||||
Name is required
|
||||
</div>
|
||||
</div>
|
||||
<div class="form-group">
|
||||
<label for="registration">Registration</label>
|
||||
<input type="text" class="form-control" id="registration" required [(ngModel)]="plane.registration" name="registration" #registration="ngModel" ngModel>
|
||||
<div [hidden]="registration.valid || registration.pristine" class="alert alert-danger">
|
||||
Registration is required
|
||||
</div>
|
||||
</div>
|
||||
<div class="form-group">
|
||||
<label for="model">Model</label>
|
||||
<input type="text" class="form-control" id="model" required [(ngModel)]="plane.model" name="model" #model="ngModel" ngModel>
|
||||
<div [hidden]="model.valid || model.pristine" class="alert alert-danger">
|
||||
Model is required
|
||||
</div>
|
||||
</div>
|
||||
<div class="form-group">
|
||||
<label for="comment">Comment</label>
|
||||
<input type="text" class="form-control" id="comment" [(ngModel)]="plane.comment" name="comment" #comment="ngModel" ngModel>
|
||||
</div>
|
||||
</div>
|
||||
<div class="modal-footer">
|
||||
<button type="submit" class="btn btn-success" form="myForm" data-dismiss="modal" (click)="onSubmit()" [disabled]="!editForm.form.valid">Edit Plane</button>
|
||||
<button type="button" class="btn btn-default" data-dismiss="modal">Close</button>
|
||||
</div>
|
||||
</form>
|
||||
</div>
|
||||
|
||||
</div>
|
||||
</div>
|
||||
@@ -0,0 +1,48 @@
|
||||
"use strict";
|
||||
var __decorate = (this && this.__decorate) || function (decorators, target, key, desc) {
|
||||
var c = arguments.length, r = c < 3 ? target : desc === null ? desc = Object.getOwnPropertyDescriptor(target, key) : desc, d;
|
||||
if (typeof Reflect === "object" && typeof Reflect.decorate === "function") r = Reflect.decorate(decorators, target, key, desc);
|
||||
else for (var i = decorators.length - 1; i >= 0; i--) if (d = decorators[i]) r = (c < 3 ? d(r) : c > 3 ? d(target, key, r) : d(target, key)) || r;
|
||||
return c > 3 && r && Object.defineProperty(target, key, r), r;
|
||||
};
|
||||
var __metadata = (this && this.__metadata) || function (k, v) {
|
||||
if (typeof Reflect === "object" && typeof Reflect.metadata === "function") return Reflect.metadata(k, v);
|
||||
};
|
||||
var core_1 = require("@angular/core");
|
||||
var plane_class_1 = require("../../../classes/plane.class");
|
||||
var data_service_1 = require("./../../../services/data.service");
|
||||
var EditPlaneFormComponent = (function () {
|
||||
function EditPlaneFormComponent(data) {
|
||||
this.data = data;
|
||||
this.submitted = false;
|
||||
}
|
||||
EditPlaneFormComponent.prototype.ngOnInit = function () {
|
||||
this.plane = new plane_class_1.Plane(this.plmodel.id, this.plmodel.name, this.plmodel.registration, this.plmodel.model, this.plmodel.comment);
|
||||
};
|
||||
EditPlaneFormComponent.prototype.onSubmit = function () {
|
||||
var _this = this;
|
||||
this.plmodel.name = this.plane.name;
|
||||
this.plmodel.registration = this.plane.registration;
|
||||
this.plmodel.model = this.plane.model;
|
||||
this.plmodel.comment = this.plmodel.comment;
|
||||
this.submitted = true;
|
||||
this.data.load().then(function () {
|
||||
_this.data.editPlane(_this.plmodel).subscribe(function (b) { return _this.temp = JSON.stringify(b); });
|
||||
console.log(_this.temp);
|
||||
});
|
||||
};
|
||||
return EditPlaneFormComponent;
|
||||
}());
|
||||
__decorate([
|
||||
core_1.Input(),
|
||||
__metadata("design:type", plane_class_1.Plane)
|
||||
], EditPlaneFormComponent.prototype, "plmodel", void 0);
|
||||
EditPlaneFormComponent = __decorate([
|
||||
core_1.Component({
|
||||
selector: 'edit-plane-form',
|
||||
templateUrl: './edit-plane-form.component.html'
|
||||
}),
|
||||
__metadata("design:paramtypes", [data_service_1.DataService])
|
||||
], EditPlaneFormComponent);
|
||||
exports.EditPlaneFormComponent = EditPlaneFormComponent;
|
||||
//# sourceMappingURL=edit-plane-form.component.js.map
|
||||
@@ -0,0 +1 @@
|
||||
{"version":3,"file":"edit-plane-form.component.js","sourceRoot":"","sources":["edit-plane-form.component.ts"],"names":[],"mappings":";;;;;;;;;;AAAA,sCAAwD;AACxD,4DAAmD;AACnD,iEAA6D;AAQ7D,IAAa,sBAAsB;IAMjC,gCAAoB,IAAiB;QAAjB,SAAI,GAAJ,IAAI,CAAa;QAKrC,cAAS,GAAG,KAAK,CAAC;IAHlB,CAAC;IAKD,yCAAQ,GAAR;QACE,IAAI,CAAC,KAAK,GAAG,IAAI,mBAAK,CAAC,IAAI,CAAC,OAAO,CAAC,EAAE,EAAE,IAAI,CAAC,OAAO,CAAC,IAAI,EAAE,IAAI,CAAC,OAAO,CAAC,YAAY,EAAE,IAAI,CAAC,OAAO,CAAC,KAAK,EAAE,IAAI,CAAC,OAAO,CAAC,OAAO,CAAC,CAAC;IAClI,CAAC;IAED,yCAAQ,GAAR;QAAA,iBAWC;QAVC,IAAI,CAAC,OAAO,CAAC,IAAI,GAAG,IAAI,CAAC,KAAK,CAAC,IAAI,CAAC;QACpC,IAAI,CAAC,OAAO,CAAC,YAAY,GAAG,IAAI,CAAC,KAAK,CAAC,YAAY,CAAC;QACpD,IAAI,CAAC,OAAO,CAAC,KAAK,GAAG,IAAI,CAAC,KAAK,CAAC,KAAK,CAAC;QACtC,IAAI,CAAC,OAAO,CAAC,OAAO,GAAG,IAAI,CAAC,OAAO,CAAC,OAAO,CAAC;QAE5C,IAAI,CAAC,SAAS,GAAG,IAAI,CAAC;QACtB,IAAI,CAAC,IAAI,CAAC,IAAI,EAAE,CAAC,IAAI,CAAC;YACpB,KAAI,CAAC,IAAI,CAAC,SAAS,CAAC,KAAI,CAAC,OAAO,CAAC,CAAC,SAAS,CAAC,UAAA,CAAC,IAAI,OAAA,KAAI,CAAC,IAAI,GAAG,IAAI,CAAC,SAAS,CAAC,CAAC,CAAC,EAA7B,CAA6B,CAAC,CAAC;YAChF,OAAO,CAAC,GAAG,CAAC,KAAI,CAAC,IAAI,CAAC,CAAC;QACzB,CAAC,CAAC,CAAA;IACJ,CAAC;IACH,6BAAC;AAAD,CAAC,AA7BD,IA6BC;AA3BS;IAAP,YAAK,EAAE;8BAAQ,mBAAK;uDAAC;AAFX,sBAAsB;IALlC,gBAAS,CAAC;QACT,QAAQ,EAAE,iBAAiB;QAC3B,WAAW,EAAE,kCAAkC;KAChD,CAAC;qCAQ0B,0BAAW;GAN1B,sBAAsB,CA6BlC;AA7BY,wDAAsB"}
|
||||
@@ -0,0 +1,40 @@
|
||||
import {Component, Input, OnInit } from '@angular/core';
|
||||
import {Plane} from "../../../classes/plane.class";
|
||||
import {DataService} from './../../../services/data.service';
|
||||
import {NgForm} from '@angular/forms';
|
||||
|
||||
@Component({
|
||||
selector: 'edit-plane-form',
|
||||
templateUrl: './edit-plane-form.component.html'
|
||||
})
|
||||
|
||||
export class EditPlaneFormComponent implements OnInit{
|
||||
|
||||
@Input()plmodel:Plane;
|
||||
|
||||
plane:Plane;
|
||||
|
||||
constructor(private data: DataService) {
|
||||
|
||||
}
|
||||
|
||||
temp: string;
|
||||
submitted = false;
|
||||
|
||||
ngOnInit(){
|
||||
this.plane = new Plane(this.plmodel.id, this.plmodel.name, this.plmodel.registration, this.plmodel.model, this.plmodel.comment);
|
||||
}
|
||||
|
||||
onSubmit() {
|
||||
this.plmodel.name = this.plane.name;
|
||||
this.plmodel.registration = this.plane.registration;
|
||||
this.plmodel.model = this.plane.model;
|
||||
this.plmodel.comment = this.plmodel.comment;
|
||||
|
||||
this.submitted = true;
|
||||
this.data.load().then(() => {
|
||||
this.data.editPlane(this.plmodel).subscribe(b => this.temp = JSON.stringify(b));
|
||||
console.log(this.temp);
|
||||
})
|
||||
}
|
||||
}
|
||||
@@ -0,0 +1,21 @@
|
||||
<div class="row">
|
||||
|
||||
<div class="col-md-12">
|
||||
<div class="page-header">
|
||||
<h1>F.R.A.U.D.S. <small>{{name}}</small> <small><div *ngIf=!loading class="pull-right"><edit-plane-form [plmodel]="plane"></edit-plane-form></div></small></h1>
|
||||
</div>
|
||||
</div>
|
||||
|
||||
<div *ngIf=loading class="col-md-12">
|
||||
<span *ngIf=!error><i class="fa fa-circle-o-notch fa-spin fa-fw"></i> Loading....</span>
|
||||
<span *ngIf=error><i class="fa fa-cross fa-fw"></i> Error....</span>
|
||||
</div>
|
||||
|
||||
<div *ngIf=!loading class="col-md-12">
|
||||
<i class="fa fa-fw fa-plane"></i> <b>Name:</b> {{plane.name}}<br>
|
||||
<i class="fa fa-fw fa-file-text"></i> <b>Registration:</b> {{plane.registration}}<br>
|
||||
<i class="fa fa-fw fa-tag"></i> <b>Model:</b> {{plane.model}}<br>
|
||||
<i class="fa fa-fw fa-tag"></i> <b>Comment:</b> {{plane.comment}}<br>
|
||||
</div>
|
||||
|
||||
</div>
|
||||
@@ -0,0 +1,68 @@
|
||||
"use strict";
|
||||
var __decorate = (this && this.__decorate) || function (decorators, target, key, desc) {
|
||||
var c = arguments.length, r = c < 3 ? target : desc === null ? desc = Object.getOwnPropertyDescriptor(target, key) : desc, d;
|
||||
if (typeof Reflect === "object" && typeof Reflect.decorate === "function") r = Reflect.decorate(decorators, target, key, desc);
|
||||
else for (var i = decorators.length - 1; i >= 0; i--) if (d = decorators[i]) r = (c < 3 ? d(r) : c > 3 ? d(target, key, r) : d(target, key)) || r;
|
||||
return c > 3 && r && Object.defineProperty(target, key, r), r;
|
||||
};
|
||||
var __metadata = (this && this.__metadata) || function (k, v) {
|
||||
if (typeof Reflect === "object" && typeof Reflect.metadata === "function") return Reflect.metadata(k, v);
|
||||
};
|
||||
var core_1 = require("@angular/core");
|
||||
var data_service_1 = require("./../../services/data.service");
|
||||
var IntervalObservable_1 = require("rxjs/observable/IntervalObservable");
|
||||
var plane_class_1 = require("./../../classes/plane.class");
|
||||
var router_1 = require("@angular/router");
|
||||
var PlaneComponent = (function () {
|
||||
function PlaneComponent(route, data) {
|
||||
this.route = route;
|
||||
this.data = data;
|
||||
this.loading = true;
|
||||
this.error = false;
|
||||
this.name = "Loading";
|
||||
this.id = 0;
|
||||
this.plane = new plane_class_1.Plane(0, "Loading", "Loading", "Loading", "Loading");
|
||||
}
|
||||
PlaneComponent.prototype.getPlane = function (id) {
|
||||
var _this = this;
|
||||
this.data.load().then(function () {
|
||||
_this.data
|
||||
.plane(id)
|
||||
.subscribe(function (b) {
|
||||
var status = b.status_code;
|
||||
if (status != 200 && b.data.length != 1) {
|
||||
_this.loading = false;
|
||||
_this.error = true;
|
||||
}
|
||||
else {
|
||||
_this.plane = plane_class_1.Plane.toPlane(b.data[0]);
|
||||
_this.name = _this.plane.name;
|
||||
_this.loading = false;
|
||||
}
|
||||
});
|
||||
});
|
||||
};
|
||||
PlaneComponent.prototype.ngOnInit = function () {
|
||||
var _this = this;
|
||||
this.id = this.route.snapshot.params['id'];
|
||||
this.getPlane(this.id);
|
||||
this.subscription = IntervalObservable_1.IntervalObservable.create(5000).subscribe(function () {
|
||||
console.log("Reloading data...");
|
||||
_this.getPlane(_this.id);
|
||||
});
|
||||
};
|
||||
PlaneComponent.prototype.ngOnDestroy = function () {
|
||||
this.subscription.unsubscribe();
|
||||
};
|
||||
return PlaneComponent;
|
||||
}());
|
||||
PlaneComponent = __decorate([
|
||||
core_1.Component({
|
||||
selector: 'app-plane',
|
||||
templateUrl: './plane.component.html',
|
||||
styleUrls: ['./plane.component.css']
|
||||
}),
|
||||
__metadata("design:paramtypes", [router_1.ActivatedRoute, data_service_1.DataService])
|
||||
], PlaneComponent);
|
||||
exports.PlaneComponent = PlaneComponent;
|
||||
//# sourceMappingURL=plane.component.js.map
|
||||
@@ -0,0 +1 @@
|
||||
{"version":3,"file":"plane.component.js","sourceRoot":"","sources":["plane.component.ts"],"names":[],"mappings":";;;;;;;;;;AAAA,sCAA6D;AAC7D,8DAA4D;AAC5D,yEAAwE;AAGxE,2DAAoD;AACpD,0CAAyD;AASzD,IAAa,cAAc;IAW1B,wBAAoB,KAAqB,EAAU,IAAgB;QAA/C,UAAK,GAAL,KAAK,CAAgB;QAAU,SAAI,GAAJ,IAAI,CAAY;QATnE,YAAO,GAAW,IAAI,CAAC;QACvB,UAAK,GAAW,KAAK,CAAC;QACtB,SAAI,GAAU,SAAS,CAAC;QACxB,OAAE,GAAU,CAAC,CAAC;QAEP,UAAK,GAAS,IAAI,mBAAK,CAAC,CAAC,EAAE,SAAS,EAAE,SAAS,EAAE,SAAS,EAAE,SAAS,CAAC,CAAC;IAIT,CAAC;IAGtE,iCAAQ,GAAR,UAAS,EAAS;QAAlB,iBAsBC;QArBA,IAAI,CAAC,IAAI,CAAC,IAAI,EAAE,CAAC,IAAI,CAAC;YACrB,KAAI,CAAC,IAAI;iBACH,KAAK,CAAC,EAAE,CAAC;iBACT,SAAS,CAAC,UAAA,CAAC;gBAEX,IAAI,MAAM,GAAG,CAAC,CAAC,WAAW,CAAC;gBAE3B,EAAE,CAAA,CAAC,MAAM,IAAI,GAAG,IAAI,CAAC,CAAC,IAAI,CAAC,MAAM,IAAI,CAAC,CAAC,CACvC,CAAC;oBACA,KAAI,CAAC,OAAO,GAAG,KAAK,CAAC;oBACrB,KAAI,CAAC,KAAK,GAAG,IAAI,CAAC;gBACnB,CAAC;gBACD,IAAI,CAAA,CAAC;oBAEJ,KAAI,CAAC,KAAK,GAAG,mBAAK,CAAC,OAAO,CAAC,CAAC,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC,CAAC;oBACtC,KAAI,CAAC,IAAI,GAAG,KAAI,CAAC,KAAK,CAAC,IAAI,CAAC;oBAC5B,KAAI,CAAC,OAAO,GAAG,KAAK,CAAC;gBACtB,CAAC;YAEF,CAAC,CAAC,CAAC;QACT,CAAC,CAAC,CAAC;IACJ,CAAC;IAED,iCAAQ,GAAR;QAAA,iBASC;QARA,IAAI,CAAC,EAAE,GAAG,IAAI,CAAC,KAAK,CAAC,QAAQ,CAAC,MAAM,CAAC,IAAI,CAAC,CAAC;QAExC,IAAI,CAAC,QAAQ,CAAC,IAAI,CAAC,EAAE,CAAC,CAAC;QAEpB,IAAI,CAAC,YAAY,GAAG,uCAAkB,CAAC,MAAM,CAAC,IAAI,CAAC,CAAC,SAAS,CAAC;YAC7D,OAAO,CAAC,GAAG,CAAC,mBAAmB,CAAC,CAAC;YAC9B,KAAI,CAAC,QAAQ,CAAC,KAAI,CAAC,EAAE,CAAC,CAAC;QAC3B,CAAC,CAAC,CAAC;IACV,CAAC;IAED,oCAAW,GAAX;QACI,IAAI,CAAC,YAAY,CAAC,WAAW,EAAE,CAAC;IACpC,CAAC;IAEF,qBAAC;AAAD,CAAC,AArDD,IAqDC;AArDY,cAAc;IAN1B,gBAAS,CAAC;QACT,QAAQ,EAAE,WAAW;QACrB,WAAW,EAAE,wBAAwB;QACrC,SAAS,EAAE,CAAC,uBAAuB,CAAC;KACrC,CAAC;qCAa0B,uBAAc,EAAe,0BAAW;GAXvD,cAAc,CAqD1B;AArDY,wCAAc"}
|
||||
@@ -0,0 +1,69 @@
|
||||
import { Component, OnInit, OnDestroy } from '@angular/core';
|
||||
import { DataService } from './../../services/data.service';
|
||||
import { IntervalObservable } from 'rxjs/observable/IntervalObservable';
|
||||
import { Subscription } from 'rxjs/Subscription';
|
||||
|
||||
import { Plane } from "./../../classes/plane.class";
|
||||
import { Params, ActivatedRoute } from '@angular/router';
|
||||
|
||||
|
||||
@Component({
|
||||
selector: 'app-plane',
|
||||
templateUrl: './plane.component.html',
|
||||
styleUrls: ['./plane.component.css']
|
||||
})
|
||||
|
||||
export class PlaneComponent implements OnInit, OnDestroy {
|
||||
|
||||
loading:boolean = true;
|
||||
error:boolean = false;
|
||||
name:string = "Loading";
|
||||
id:number = 0;
|
||||
|
||||
public plane:Plane = new Plane(0, "Loading", "Loading", "Loading", "Loading");
|
||||
|
||||
public subscription:Subscription;
|
||||
|
||||
constructor(private route: ActivatedRoute, private data:DataService){}
|
||||
|
||||
|
||||
getPlane(id:number): void {
|
||||
this.data.load().then(()=> {
|
||||
this.data
|
||||
.plane(id)
|
||||
.subscribe(b => {
|
||||
|
||||
var status = b.status_code;
|
||||
|
||||
if(status != 200 && b.data.length != 1)
|
||||
{
|
||||
this.loading = false;
|
||||
this.error = true;
|
||||
}
|
||||
else{
|
||||
|
||||
this.plane = Plane.toPlane(b.data[0]);
|
||||
this.name = this.plane.name;
|
||||
this.loading = false;
|
||||
}
|
||||
|
||||
});
|
||||
});
|
||||
}
|
||||
|
||||
ngOnInit(): void {
|
||||
this.id = this.route.snapshot.params['id'];
|
||||
|
||||
this.getPlane(this.id);
|
||||
|
||||
this.subscription = IntervalObservable.create(5000).subscribe(() => {
|
||||
console.log("Reloading data...");
|
||||
this.getPlane(this.id);
|
||||
});
|
||||
}
|
||||
|
||||
ngOnDestroy(): void {
|
||||
this.subscription.unsubscribe();
|
||||
}
|
||||
|
||||
}
|
||||
@@ -0,0 +1,50 @@
|
||||
<!-- Trigger the modal with a button -->
|
||||
<button type="button" class="btn btn-info btn-lg" data-toggle="modal" data-target="#myModal"><i class="fa fa-plus" aria-hidden="true"></i></button>
|
||||
|
||||
<!-- Modal -->
|
||||
<div id="myModal" class="modal fade" role="dialog">
|
||||
<div class="modal-dialog">
|
||||
|
||||
<!-- Modal content-->
|
||||
<div class="modal-content">
|
||||
<div class="modal-header">
|
||||
<button type="button" class="close" data-dismiss="modal">×</button>
|
||||
<h4 class="modal-title">New Plane</h4>
|
||||
</div>
|
||||
<div class="modal-body">
|
||||
<form (ngSubmit)="onSubmit()" #planeForm="ngForm">
|
||||
<div class="form-group">
|
||||
<label for="name">Name</label>
|
||||
<input type="text" class="form-control" id="name" required [(ngModel)]="plane.name" name="name" #name="ngModel" ngModel>
|
||||
<div [hidden]="name.valid || name.pristine" class="alert alert-danger">
|
||||
Name is required
|
||||
</div>
|
||||
</div>
|
||||
<div class="form-group">
|
||||
<label for="registration">Registration</label>
|
||||
<input type="text" class="form-control" id="registration" required [(ngModel)]="plane.registration" name="registration" #registration="ngModel" ngModel>
|
||||
<div [hidden]="registration.valid || registration.pristine" class="alert alert-danger">
|
||||
Registration is required
|
||||
</div>
|
||||
<div class="form-group">
|
||||
<label for="model">Model</label>
|
||||
<input type="text" class="form-control" id="model" required [(ngModel)]="plane.model" name="model" #model="ngModel" ngModel>
|
||||
<div [hidden]="model.valid || model.pristine" class="alert alert-danger">
|
||||
Model is required
|
||||
</div>
|
||||
<div class="form-group">
|
||||
<label for="comment">Comment</label>
|
||||
<input type="text" class="form-control" id="comment" [(ngModel)]="plane.comment" name="comment" #comment="ngModel" ngModel>
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
</form>
|
||||
</div>
|
||||
<div class="modal-footer">
|
||||
<button type="submit" class="btn btn-success" data-dismiss="modal" (click)="onSubmit()" [disabled]="!planeForm.form.valid">Add Plane</button>
|
||||
<button type="button" class="btn btn-default" data-dismiss="modal">Close</button>
|
||||
</div>
|
||||
</div>
|
||||
|
||||
</div>
|
||||
</div>
|
||||
@@ -0,0 +1,38 @@
|
||||
"use strict";
|
||||
var __decorate = (this && this.__decorate) || function (decorators, target, key, desc) {
|
||||
var c = arguments.length, r = c < 3 ? target : desc === null ? desc = Object.getOwnPropertyDescriptor(target, key) : desc, d;
|
||||
if (typeof Reflect === "object" && typeof Reflect.decorate === "function") r = Reflect.decorate(decorators, target, key, desc);
|
||||
else for (var i = decorators.length - 1; i >= 0; i--) if (d = decorators[i]) r = (c < 3 ? d(r) : c > 3 ? d(target, key, r) : d(target, key)) || r;
|
||||
return c > 3 && r && Object.defineProperty(target, key, r), r;
|
||||
};
|
||||
var __metadata = (this && this.__metadata) || function (k, v) {
|
||||
if (typeof Reflect === "object" && typeof Reflect.metadata === "function") return Reflect.metadata(k, v);
|
||||
};
|
||||
var core_1 = require("@angular/core");
|
||||
var plane_class_1 = require("../../../classes/plane.class");
|
||||
var data_service_1 = require("./../../../services/data.service");
|
||||
var PlaneFormComponent = (function () {
|
||||
function PlaneFormComponent(data) {
|
||||
this.data = data;
|
||||
this.roles = ['Pilot', 'Student', 'Instructor'];
|
||||
this.submitted = false;
|
||||
this.plane = new plane_class_1.Plane(0, "", "", "", "");
|
||||
}
|
||||
PlaneFormComponent.prototype.onSubmit = function () {
|
||||
var _this = this;
|
||||
this.submitted = true;
|
||||
this.data.load().then(function () {
|
||||
_this.data.postPlane(_this.plane).subscribe(function (b) { return _this.temp = JSON.stringify(b); });
|
||||
});
|
||||
};
|
||||
return PlaneFormComponent;
|
||||
}());
|
||||
PlaneFormComponent = __decorate([
|
||||
core_1.Component({
|
||||
selector: 'plane-form',
|
||||
templateUrl: './plane-form.component.html'
|
||||
}),
|
||||
__metadata("design:paramtypes", [data_service_1.DataService])
|
||||
], PlaneFormComponent);
|
||||
exports.PlaneFormComponent = PlaneFormComponent;
|
||||
//# sourceMappingURL=plane-form.component.js.map
|
||||
@@ -0,0 +1 @@
|
||||
{"version":3,"file":"plane-form.component.js","sourceRoot":"","sources":["plane-form.component.ts"],"names":[],"mappings":";;;;;;;;;;AAAA,sCAAwC;AACxC,4DAAmD;AACnD,iEAA6D;AAO7D,IAAa,kBAAkB;IAE7B,4BAAoB,IAAiB;QAAjB,SAAI,GAAJ,IAAI,CAAa;QAM9B,UAAK,GAAG,CAAC,OAAO,EAAE,SAAS,EAAE,YAAY,CAAC,CAAC;QAIlD,cAAS,GAAG,KAAK,CAAC;QATf,IAAI,CAAC,KAAK,GAAG,IAAI,mBAAK,CAAC,CAAC,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,CAAC,CAAC;IAC7C,CAAC;IAUD,qCAAQ,GAAR;QAAA,iBAKC;QAJC,IAAI,CAAC,SAAS,GAAG,IAAI,CAAC;QACtB,IAAI,CAAC,IAAI,CAAC,IAAI,EAAE,CAAC,IAAI,CAAC;YACpB,KAAI,CAAC,IAAI,CAAC,SAAS,CAAC,KAAI,CAAC,KAAK,CAAC,CAAC,SAAS,CAAC,UAAA,CAAC,IAAI,OAAA,KAAI,CAAC,IAAI,GAAG,IAAI,CAAC,SAAS,CAAC,CAAC,CAAC,EAA7B,CAA6B,CAAC,CAAC;QAChF,CAAC,CAAC,CAAA;IACJ,CAAC;IACH,yBAAC;AAAD,CAAC,AApBD,IAoBC;AApBY,kBAAkB;IAL9B,gBAAS,CAAC;QACT,QAAQ,EAAE,YAAY;QACtB,WAAW,EAAE,6BAA6B;KAC3C,CAAC;qCAI0B,0BAAW;GAF1B,kBAAkB,CAoB9B;AApBY,gDAAkB"}
|
||||
@@ -0,0 +1,30 @@
|
||||
import {Component} from '@angular/core';
|
||||
import {Plane} from "../../../classes/plane.class";
|
||||
import {DataService} from './../../../services/data.service';
|
||||
|
||||
@Component({
|
||||
selector: 'plane-form',
|
||||
templateUrl: './plane-form.component.html'
|
||||
})
|
||||
|
||||
export class PlaneFormComponent {
|
||||
|
||||
constructor(private data: DataService) {
|
||||
this.plane = new Plane(0, "", "", "", "");
|
||||
}
|
||||
|
||||
temp: string;
|
||||
|
||||
public roles = ['Pilot', 'Student', 'Instructor'];
|
||||
|
||||
public plane:Plane;
|
||||
|
||||
submitted = false;
|
||||
|
||||
onSubmit() {
|
||||
this.submitted = true;
|
||||
this.data.load().then(() => {
|
||||
this.data.postPlane(this.plane).subscribe(b => this.temp = JSON.stringify(b));
|
||||
})
|
||||
}
|
||||
}
|
||||
@@ -0,0 +1,3 @@
|
||||
.plane {
|
||||
cursor: pointer;
|
||||
}
|
||||
@@ -0,0 +1,35 @@
|
||||
<div class="row">
|
||||
|
||||
<div class="col-md-12">
|
||||
<div class="page-header">
|
||||
<h1>F.R.A.U.D.S.
|
||||
<small>Planes</small> <small><div *ngIf=!loading class="pull-right"><plane-form></plane-form></div></small>
|
||||
</h1>
|
||||
</div>
|
||||
</div>
|
||||
|
||||
<div class="col-md-12">
|
||||
|
||||
</div>
|
||||
|
||||
|
||||
<div *ngIf=loading class="col-md-12">
|
||||
<span *ngIf=!error><i class="fa fa-circle-o-notch fa-spin fa-fw"></i> Loading....</span>
|
||||
<span *ngIf=error><i class="fa fa-cross fa-fw"></i> Error....</span>
|
||||
</div>
|
||||
|
||||
<div *ngIf=!loading class="col-md-12">
|
||||
<div class="row">
|
||||
|
||||
<div *ngFor="let plane of planes" class="col-md-4 col-sm-6 col-xs-12 plane">
|
||||
<div class="well well-sm" (click)="onClick(plane)">
|
||||
<h4><i class="fa fa-fw fa-plane"></i> {{plane.name}}</h4>
|
||||
<i class="fa fa-fw fa-file-text"></i> {{plane.registration}}<br>
|
||||
<i class="fa fa-fw fa-tag"></i> {{plane.model}}
|
||||
</div>
|
||||
</div>
|
||||
|
||||
</div>
|
||||
</div>
|
||||
|
||||
</div>
|
||||
@@ -0,0 +1,88 @@
|
||||
"use strict";
|
||||
var __decorate = (this && this.__decorate) || function (decorators, target, key, desc) {
|
||||
var c = arguments.length, r = c < 3 ? target : desc === null ? desc = Object.getOwnPropertyDescriptor(target, key) : desc, d;
|
||||
if (typeof Reflect === "object" && typeof Reflect.decorate === "function") r = Reflect.decorate(decorators, target, key, desc);
|
||||
else for (var i = decorators.length - 1; i >= 0; i--) if (d = decorators[i]) r = (c < 3 ? d(r) : c > 3 ? d(target, key, r) : d(target, key)) || r;
|
||||
return c > 3 && r && Object.defineProperty(target, key, r), r;
|
||||
};
|
||||
var __metadata = (this && this.__metadata) || function (k, v) {
|
||||
if (typeof Reflect === "object" && typeof Reflect.metadata === "function") return Reflect.metadata(k, v);
|
||||
};
|
||||
var core_1 = require("@angular/core");
|
||||
var data_service_1 = require("./../../services/data.service");
|
||||
var router_1 = require("@angular/router");
|
||||
var IntervalObservable_1 = require("rxjs/observable/IntervalObservable");
|
||||
var plane_class_1 = require("./../../classes/plane.class");
|
||||
var PlanesComponent = (function () {
|
||||
function PlanesComponent(router, data) {
|
||||
this.router = router;
|
||||
this.data = data;
|
||||
this.loading = true;
|
||||
this.error = false;
|
||||
this.planes = new Array();
|
||||
}
|
||||
PlanesComponent.prototype.getPlanesData = function () {
|
||||
var _this = this;
|
||||
this.data.load().then(function () {
|
||||
_this.data
|
||||
.planes()
|
||||
.subscribe(function (response) {
|
||||
var status = response.status_code;
|
||||
if (status != 200) {
|
||||
_this.loading = false;
|
||||
_this.error = true;
|
||||
}
|
||||
else {
|
||||
_this.error = false;
|
||||
for (var i = 0; i < response.data.length; i++) {
|
||||
var temp = plane_class_1.Plane.toPlane(response.data[i]);
|
||||
var plane = _this.getPlaneByID(temp.id);
|
||||
if (plane) {
|
||||
if (!temp.equals(plane)) {
|
||||
// push new one, delete old
|
||||
var index = _this.planes.indexOf(plane);
|
||||
_this.planes.splice(index, 1);
|
||||
_this.planes.push(temp);
|
||||
}
|
||||
}
|
||||
else {
|
||||
_this.planes.push(temp);
|
||||
}
|
||||
}
|
||||
_this.planes.sort(function (a, b) {
|
||||
return a.name > b.name ? 1 : -1;
|
||||
});
|
||||
_this.loading = false;
|
||||
}
|
||||
});
|
||||
});
|
||||
};
|
||||
PlanesComponent.prototype.ngOnInit = function () {
|
||||
var _this = this;
|
||||
this.getPlanesData();
|
||||
this.subscription = IntervalObservable_1.IntervalObservable.create(5000).subscribe(function () {
|
||||
console.log("Reloading data...");
|
||||
_this.getPlanesData();
|
||||
});
|
||||
};
|
||||
PlanesComponent.prototype.ngOnDestroy = function () {
|
||||
this.subscription.unsubscribe();
|
||||
};
|
||||
PlanesComponent.prototype.onClick = function (plane) {
|
||||
this.router.navigate(['/plane', plane.id]);
|
||||
};
|
||||
PlanesComponent.prototype.getPlaneByID = function (id) {
|
||||
return this.planes.find(function (f) { return f.id === id; });
|
||||
};
|
||||
return PlanesComponent;
|
||||
}());
|
||||
PlanesComponent = __decorate([
|
||||
core_1.Component({
|
||||
selector: 'app-planes',
|
||||
templateUrl: './planes.component.html',
|
||||
styleUrls: ['./planes.component.css']
|
||||
}),
|
||||
__metadata("design:paramtypes", [router_1.Router, data_service_1.DataService])
|
||||
], PlanesComponent);
|
||||
exports.PlanesComponent = PlanesComponent;
|
||||
//# sourceMappingURL=planes.component.js.map
|
||||
@@ -0,0 +1 @@
|
||||
{"version":3,"file":"planes.component.js","sourceRoot":"","sources":["planes.component.ts"],"names":[],"mappings":"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"}
|
||||
@@ -0,0 +1,96 @@
|
||||
import { Component, OnInit, OnDestroy } from '@angular/core';
|
||||
import { DataService } from './../../services/data.service';
|
||||
import { Router } from '@angular/router';
|
||||
import { IntervalObservable } from 'rxjs/observable/IntervalObservable';
|
||||
import { Subscription } from 'rxjs/Subscription';
|
||||
|
||||
import { Plane } from "./../../classes/plane.class";
|
||||
|
||||
@Component({
|
||||
selector: 'app-planes',
|
||||
templateUrl: './planes.component.html',
|
||||
styleUrls: ['./planes.component.css']
|
||||
})
|
||||
|
||||
export class PlanesComponent implements OnInit, OnDestroy {
|
||||
|
||||
loading:boolean = true;
|
||||
error:boolean = false;
|
||||
|
||||
planes:Array<Plane> = new Array<Plane>();
|
||||
|
||||
public subscription:Subscription;
|
||||
|
||||
constructor(private router: Router, private data:DataService){}
|
||||
|
||||
getPlanesData(): void {
|
||||
|
||||
this.data.load().then(()=> {
|
||||
this.data
|
||||
.planes()
|
||||
.subscribe(response => {
|
||||
|
||||
var status = response.status_code;
|
||||
|
||||
if(status != 200)
|
||||
{
|
||||
this.loading = false;
|
||||
this.error = true;
|
||||
}
|
||||
else{
|
||||
|
||||
this.error = false;
|
||||
|
||||
for(let i = 0; i < response.data.length; i++)
|
||||
{
|
||||
var temp:Plane = Plane.toPlane(response.data[i]);
|
||||
var plane:Plane = this.getPlaneByID(temp.id);
|
||||
|
||||
if(plane)
|
||||
{
|
||||
if(!temp.equals(plane))
|
||||
{
|
||||
// push new one, delete old
|
||||
var index = this.planes.indexOf(plane);
|
||||
this.planes.splice(index, 1);
|
||||
this.planes.push(temp);
|
||||
}
|
||||
} else {
|
||||
this.planes.push(temp);
|
||||
}
|
||||
|
||||
}
|
||||
|
||||
this.planes.sort((a, b) => {
|
||||
return a.name > b.name ? 1 : -1;
|
||||
});
|
||||
|
||||
this.loading = false;
|
||||
}
|
||||
|
||||
});
|
||||
});
|
||||
}
|
||||
|
||||
ngOnInit(): void {
|
||||
this.getPlanesData();
|
||||
|
||||
this.subscription = IntervalObservable.create(5000).subscribe(() => {
|
||||
console.log("Reloading data...");
|
||||
this.getPlanesData();
|
||||
});
|
||||
}
|
||||
|
||||
ngOnDestroy(): void {
|
||||
this.subscription.unsubscribe();
|
||||
}
|
||||
|
||||
onClick(plane: Plane): void {
|
||||
this.router.navigate(['/plane', plane.id]);
|
||||
}
|
||||
|
||||
getPlaneByID(id:number): Plane {
|
||||
return this.planes.find((f) => {return f.id === id});
|
||||
}
|
||||
|
||||
}
|
||||
@@ -0,0 +1,32 @@
|
||||
<!-- Trigger the modal with a button -->
|
||||
<button type="button" class="btn btn-info btn-lg" data-toggle="modal" data-target="#editModal"><i class="fa fa-pencil" aria-hidden="true"></i></button>
|
||||
|
||||
<!-- Modal -->
|
||||
<div id="editModal" class="modal fade" role="dialog">
|
||||
<div class="modal-dialog">
|
||||
|
||||
<!-- Modal content-->
|
||||
<div class="modal-content">
|
||||
<form id="myForm" #editForm="ngForm" (ngSubmit)="onSubmit()">
|
||||
<div class="modal-header">
|
||||
<button type="button" class="close" data-dismiss="modal">×</button>
|
||||
<h4 class="modal-title">Edit {{reader.reader_id}}</h4>
|
||||
</div>
|
||||
<div class="modal-body">
|
||||
|
||||
<div class="form-group">
|
||||
<label for="role">Plane</label>
|
||||
<select type="text" class="form-control" id="plane" [(ngModel)]="reader.plane" name="plane" #plane="ngModel" required ngModel>
|
||||
<option *ngFor="let plane of planes;trackBy:plane.id" [ngValue]="plane">{{plane.name}}</option>
|
||||
</select>
|
||||
</div>
|
||||
</div>
|
||||
<div class="modal-footer">
|
||||
<button type="submit" class="btn btn-success" form="myForm" data-dismiss="modal" (click)="onSubmit()" [disabled]="!editForm.form.valid">Edit Reader</button>
|
||||
<button type="button" class="btn btn-default" data-dismiss="modal">Close</button>
|
||||
</div>
|
||||
</form>
|
||||
</div>
|
||||
|
||||
</div>
|
||||
</div>
|
||||
@@ -0,0 +1,59 @@
|
||||
"use strict";
|
||||
var __decorate = (this && this.__decorate) || function (decorators, target, key, desc) {
|
||||
var c = arguments.length, r = c < 3 ? target : desc === null ? desc = Object.getOwnPropertyDescriptor(target, key) : desc, d;
|
||||
if (typeof Reflect === "object" && typeof Reflect.decorate === "function") r = Reflect.decorate(decorators, target, key, desc);
|
||||
else for (var i = decorators.length - 1; i >= 0; i--) if (d = decorators[i]) r = (c < 3 ? d(r) : c > 3 ? d(target, key, r) : d(target, key)) || r;
|
||||
return c > 3 && r && Object.defineProperty(target, key, r), r;
|
||||
};
|
||||
var __metadata = (this && this.__metadata) || function (k, v) {
|
||||
if (typeof Reflect === "object" && typeof Reflect.metadata === "function") return Reflect.metadata(k, v);
|
||||
};
|
||||
var core_1 = require("@angular/core");
|
||||
var reader_class_1 = require("../../../classes/reader.class");
|
||||
var plane_class_1 = require("../../../classes/plane.class");
|
||||
var data_service_1 = require("./../../../services/data.service");
|
||||
var EditReaderFormComponent = (function () {
|
||||
function EditReaderFormComponent(data) {
|
||||
this.data = data;
|
||||
this.submitted = false;
|
||||
this.planes = new Array();
|
||||
this.planes = new Array();
|
||||
}
|
||||
EditReaderFormComponent.prototype.ngOnInit = function () {
|
||||
var _this = this;
|
||||
this.reader = new reader_class_1.Reader(this.model.id, this.model.reader_id, this.model.plane);
|
||||
this.data.load().then(function () {
|
||||
_this.data
|
||||
.planes()
|
||||
.subscribe(function (response) {
|
||||
for (var i = 0; i < response.data.length; i++) {
|
||||
var temp = plane_class_1.Plane.toPlane(response.data[i]);
|
||||
_this.planes.push(temp);
|
||||
}
|
||||
});
|
||||
});
|
||||
};
|
||||
EditReaderFormComponent.prototype.onSubmit = function () {
|
||||
var _this = this;
|
||||
this.model.plane = this.reader.plane;
|
||||
this.submitted = true;
|
||||
this.data.load().then(function () {
|
||||
_this.data.editReader(_this.model).subscribe(function (b) { return _this.temp = JSON.stringify(b); });
|
||||
console.log(_this.temp);
|
||||
});
|
||||
};
|
||||
return EditReaderFormComponent;
|
||||
}());
|
||||
__decorate([
|
||||
core_1.Input(),
|
||||
__metadata("design:type", reader_class_1.Reader)
|
||||
], EditReaderFormComponent.prototype, "model", void 0);
|
||||
EditReaderFormComponent = __decorate([
|
||||
core_1.Component({
|
||||
selector: 'edit-reader-form',
|
||||
templateUrl: './edit-reader-form.component.html'
|
||||
}),
|
||||
__metadata("design:paramtypes", [data_service_1.DataService])
|
||||
], EditReaderFormComponent);
|
||||
exports.EditReaderFormComponent = EditReaderFormComponent;
|
||||
//# sourceMappingURL=edit-reader-form.component.js.map
|
||||
@@ -0,0 +1 @@
|
||||
{"version":3,"file":"edit-reader-form.component.js","sourceRoot":"","sources":["edit-reader-form.component.ts"],"names":[],"mappings":";;;;;;;;;;AAAA,sCAAuD;AACvD,8DAAqD;AACrD,4DAAmD;AACnD,iEAA6D;AAQ7D,IAAa,uBAAuB;IAMlC,iCAAoB,IAAiB;QAAjB,SAAI,GAAJ,IAAI,CAAa;QAOrC,cAAS,GAAG,KAAK,CAAC;QAElB,WAAM,GAAgB,IAAI,KAAK,EAAS,CAAC;QAPvC,IAAI,CAAC,MAAM,GAAG,IAAI,KAAK,EAAS,CAAC;IACnC,CAAC;IAQD,0CAAQ,GAAR;QAAA,iBAkBC;QAhBC,IAAI,CAAC,MAAM,GAAG,IAAI,qBAAM,CAAC,IAAI,CAAC,KAAK,CAAC,EAAE,EAAE,IAAI,CAAC,KAAK,CAAC,SAAS,EAAE,IAAI,CAAC,KAAK,CAAC,KAAK,CAAC,CAAC;QAEhF,IAAI,CAAC,IAAI,CAAC,IAAI,EAAE,CAAC,IAAI,CAAC;YACpB,KAAI,CAAC,IAAI;iBACJ,MAAM,EAAE;iBACR,SAAS,CAAC,UAAA,QAAQ;gBAEf,GAAG,CAAA,CAAC,IAAI,CAAC,GAAG,CAAC,EAAE,CAAC,GAAG,QAAQ,CAAC,IAAI,CAAC,MAAM,EAAE,CAAC,EAAE,EAC5C,CAAC;oBACG,IAAI,IAAI,GAAS,mBAAK,CAAC,OAAO,CAAC,QAAQ,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC,CAAC;oBACjD,KAAI,CAAC,MAAM,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC;gBAC3B,CAAC;YAEH,CAAC,CAAC,CAAC;QAEP,CAAC,CAAC,CAAC;IACT,CAAC;IAED,0CAAQ,GAAR;QAAA,iBASC;QAPC,IAAI,CAAC,KAAK,CAAC,KAAK,GAAG,IAAI,CAAC,MAAM,CAAC,KAAK,CAAC;QAErC,IAAI,CAAC,SAAS,GAAG,IAAI,CAAC;QACtB,IAAI,CAAC,IAAI,CAAC,IAAI,EAAE,CAAC,IAAI,CAAC;YACpB,KAAI,CAAC,IAAI,CAAC,UAAU,CAAC,KAAI,CAAC,KAAK,CAAC,CAAC,SAAS,CAAC,UAAA,CAAC,IAAI,OAAA,KAAI,CAAC,IAAI,GAAG,IAAI,CAAC,SAAS,CAAC,CAAC,CAAC,EAA7B,CAA6B,CAAC,CAAC;YAC/E,OAAO,CAAC,GAAG,CAAC,KAAI,CAAC,IAAI,CAAC,CAAC;QACzB,CAAC,CAAC,CAAA;IACJ,CAAC;IACH,8BAAC;AAAD,CAAC,AA/CD,IA+CC;AA7CS;IAAP,YAAK,EAAE;8BAAM,qBAAM;sDAAC;AAFV,uBAAuB;IALnC,gBAAS,CAAC;QACT,QAAQ,EAAE,kBAAkB;QAC5B,WAAW,EAAE,mCAAmC;KACjD,CAAC;qCAQ0B,0BAAW;GAN1B,uBAAuB,CA+CnC;AA/CY,0DAAuB"}
|
||||
@@ -0,0 +1,59 @@
|
||||
import {Component, Input, OnInit} from '@angular/core';
|
||||
import {Reader} from "../../../classes/reader.class";
|
||||
import {Plane} from "../../../classes/plane.class";
|
||||
import {DataService} from './../../../services/data.service';
|
||||
import {NgForm} from '@angular/forms';
|
||||
|
||||
@Component({
|
||||
selector: 'edit-reader-form',
|
||||
templateUrl: './edit-reader-form.component.html'
|
||||
})
|
||||
|
||||
export class EditReaderFormComponent implements OnInit {
|
||||
|
||||
@Input()model:Reader;
|
||||
|
||||
reader:Reader;
|
||||
|
||||
constructor(private data: DataService) {
|
||||
|
||||
this.planes = new Array<Plane>();
|
||||
}
|
||||
|
||||
temp: string;
|
||||
|
||||
submitted = false;
|
||||
|
||||
planes:Array<Plane> = new Array<Plane>();
|
||||
|
||||
ngOnInit(): void {
|
||||
|
||||
this.reader = new Reader(this.model.id, this.model.reader_id, this.model.plane);
|
||||
|
||||
this.data.load().then(()=> {
|
||||
this.data
|
||||
.planes()
|
||||
.subscribe(response => {
|
||||
|
||||
for(let i = 0; i < response.data.length; i++)
|
||||
{
|
||||
var temp:Plane = Plane.toPlane(response.data[i]);
|
||||
this.planes.push(temp);
|
||||
}
|
||||
|
||||
});
|
||||
|
||||
});
|
||||
}
|
||||
|
||||
onSubmit() {
|
||||
|
||||
this.model.plane = this.reader.plane;
|
||||
|
||||
this.submitted = true;
|
||||
this.data.load().then(() => {
|
||||
this.data.editReader(this.model).subscribe(b => this.temp = JSON.stringify(b));
|
||||
console.log(this.temp);
|
||||
})
|
||||
}
|
||||
}
|
||||
@@ -0,0 +1,3 @@
|
||||
.plane{
|
||||
cursor:pointer;
|
||||
}
|
||||
@@ -0,0 +1,36 @@
|
||||
<div class="row">
|
||||
|
||||
<div class="col-md-12">
|
||||
<div class="page-header">
|
||||
<h1>F.R.A.U.D.S. <small>{{name}}</small> <small><div *ngIf=!loading class="pull-right"><edit-reader-form [model]="reader"></edit-reader-form></div></small></h1>
|
||||
</div>
|
||||
</div>
|
||||
|
||||
<div *ngIf=loading class="col-md-12">
|
||||
<span *ngIf=!error><i class="fa fa-circle-o-notch fa-spin fa-fw"></i> Loading....</span>
|
||||
<span *ngIf=error><i class="fa fa-cross fa-fw"></i> Error....</span>
|
||||
</div>
|
||||
|
||||
<div *ngIf=!loading class="col-md-12">
|
||||
<i class="fa fa-fw fa-barcode"></i> <b>Reader:</b> {{reader.reader_id}}<br>
|
||||
|
||||
|
||||
<div *ngIf="reader.plane">
|
||||
<h3><i class="fa fa-plane"></i> Plane</h3>
|
||||
|
||||
<div class="row">
|
||||
|
||||
<div class="col-md-4 col-sm-6 col-xs-12 plane">
|
||||
<div class="well well-sm" (click)="onClick(reader.plane)">
|
||||
<h4><i class="fa fa-fw fa-plane"></i> {{reader.plane.name}}</h4>
|
||||
<i class="fa fa-fw fa-file-text"></i> {{reader.plane.registration}}<br>
|
||||
<i class="fa fa-fw fa-tag"></i> {{reader.plane.model}}
|
||||
</div>
|
||||
</div>
|
||||
|
||||
</div>
|
||||
</div>
|
||||
|
||||
</div>
|
||||
|
||||
</div>
|
||||
@@ -0,0 +1,72 @@
|
||||
"use strict";
|
||||
var __decorate = (this && this.__decorate) || function (decorators, target, key, desc) {
|
||||
var c = arguments.length, r = c < 3 ? target : desc === null ? desc = Object.getOwnPropertyDescriptor(target, key) : desc, d;
|
||||
if (typeof Reflect === "object" && typeof Reflect.decorate === "function") r = Reflect.decorate(decorators, target, key, desc);
|
||||
else for (var i = decorators.length - 1; i >= 0; i--) if (d = decorators[i]) r = (c < 3 ? d(r) : c > 3 ? d(target, key, r) : d(target, key)) || r;
|
||||
return c > 3 && r && Object.defineProperty(target, key, r), r;
|
||||
};
|
||||
var __metadata = (this && this.__metadata) || function (k, v) {
|
||||
if (typeof Reflect === "object" && typeof Reflect.metadata === "function") return Reflect.metadata(k, v);
|
||||
};
|
||||
var core_1 = require("@angular/core");
|
||||
var data_service_1 = require("./../../services/data.service");
|
||||
var IntervalObservable_1 = require("rxjs/observable/IntervalObservable");
|
||||
var reader_class_1 = require("./../../classes/reader.class");
|
||||
var router_1 = require("@angular/router");
|
||||
var ReaderComponent = (function () {
|
||||
function ReaderComponent(route, router, data) {
|
||||
this.route = route;
|
||||
this.router = router;
|
||||
this.data = data;
|
||||
this.loading = true;
|
||||
this.error = false;
|
||||
this.name = "Loading";
|
||||
this.id = 0;
|
||||
this.reader = new reader_class_1.Reader(0, "", null);
|
||||
}
|
||||
ReaderComponent.prototype.getReader = function (id) {
|
||||
var _this = this;
|
||||
this.data.load().then(function () {
|
||||
_this.data
|
||||
.reader(id)
|
||||
.subscribe(function (b) {
|
||||
var status = b.status_code;
|
||||
if (status != 200 && b.data.length != 1) {
|
||||
_this.loading = false;
|
||||
_this.error = true;
|
||||
}
|
||||
else {
|
||||
_this.reader = reader_class_1.Reader.toReader(b.data[0]);
|
||||
_this.name = _this.reader.reader_id;
|
||||
_this.loading = false;
|
||||
}
|
||||
});
|
||||
});
|
||||
};
|
||||
ReaderComponent.prototype.ngOnInit = function () {
|
||||
var _this = this;
|
||||
this.id = this.route.snapshot.params['id'];
|
||||
this.getReader(this.id);
|
||||
this.subscription = IntervalObservable_1.IntervalObservable.create(5000).subscribe(function () {
|
||||
console.log("Reloading data...");
|
||||
_this.getReader(_this.id);
|
||||
});
|
||||
};
|
||||
ReaderComponent.prototype.ngOnDestroy = function () {
|
||||
this.subscription.unsubscribe();
|
||||
};
|
||||
ReaderComponent.prototype.onClick = function (plane) {
|
||||
this.router.navigate(['/plane', plane.id]);
|
||||
};
|
||||
return ReaderComponent;
|
||||
}());
|
||||
ReaderComponent = __decorate([
|
||||
core_1.Component({
|
||||
selector: 'app-reader',
|
||||
templateUrl: './reader.component.html',
|
||||
styleUrls: ['./reader.component.css']
|
||||
}),
|
||||
__metadata("design:paramtypes", [router_1.ActivatedRoute, router_1.Router, data_service_1.DataService])
|
||||
], ReaderComponent);
|
||||
exports.ReaderComponent = ReaderComponent;
|
||||
//# sourceMappingURL=reader.component.js.map
|
||||
@@ -0,0 +1 @@
|
||||
{"version":3,"file":"reader.component.js","sourceRoot":"","sources":["reader.component.ts"],"names":[],"mappings":";;;;;;;;;;AAAA,sCAA6D;AAC7D,8DAA4D;AAC5D,yEAAwE;AAGxE,6DAAsD;AAEtD,0CAAiE;AASjE,IAAa,eAAe;IAW3B,yBAAoB,KAAqB,EAAU,MAAc,EAAU,IAAgB;QAAvE,UAAK,GAAL,KAAK,CAAgB;QAAU,WAAM,GAAN,MAAM,CAAQ;QAAU,SAAI,GAAJ,IAAI,CAAY;QAT3F,YAAO,GAAW,IAAI,CAAC;QACvB,UAAK,GAAW,KAAK,CAAC;QACtB,SAAI,GAAU,SAAS,CAAC;QACxB,OAAE,GAAU,CAAC,CAAC;QAEP,WAAM,GAAU,IAAI,qBAAM,CAAC,CAAC,EAAE,EAAE,EAAE,IAAI,CAAC,CAAC;IAI8C,CAAC;IAG9F,mCAAS,GAAT,UAAU,EAAS;QAAnB,iBAsBC;QArBA,IAAI,CAAC,IAAI,CAAC,IAAI,EAAE,CAAC,IAAI,CAAC;YACrB,KAAI,CAAC,IAAI;iBACH,MAAM,CAAC,EAAE,CAAC;iBACV,SAAS,CAAC,UAAA,CAAC;gBAEX,IAAI,MAAM,GAAG,CAAC,CAAC,WAAW,CAAC;gBAE3B,EAAE,CAAA,CAAC,MAAM,IAAI,GAAG,IAAI,CAAC,CAAC,IAAI,CAAC,MAAM,IAAI,CAAC,CAAC,CACvC,CAAC;oBACA,KAAI,CAAC,OAAO,GAAG,KAAK,CAAC;oBACrB,KAAI,CAAC,KAAK,GAAG,IAAI,CAAC;gBACnB,CAAC;gBACD,IAAI,CAAA,CAAC;oBAEJ,KAAI,CAAC,MAAM,GAAG,qBAAM,CAAC,QAAQ,CAAC,CAAC,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC,CAAC;oBACzC,KAAI,CAAC,IAAI,GAAG,KAAI,CAAC,MAAM,CAAC,SAAS,CAAC;oBAClC,KAAI,CAAC,OAAO,GAAG,KAAK,CAAC;gBACtB,CAAC;YAEF,CAAC,CAAC,CAAC;QACT,CAAC,CAAC,CAAC;IACJ,CAAC;IAED,kCAAQ,GAAR;QAAA,iBASC;QARA,IAAI,CAAC,EAAE,GAAG,IAAI,CAAC,KAAK,CAAC,QAAQ,CAAC,MAAM,CAAC,IAAI,CAAC,CAAC;QAExC,IAAI,CAAC,SAAS,CAAC,IAAI,CAAC,EAAE,CAAC,CAAC;QAErB,IAAI,CAAC,YAAY,GAAG,uCAAkB,CAAC,MAAM,CAAC,IAAI,CAAC,CAAC,SAAS,CAAC;YAC7D,OAAO,CAAC,GAAG,CAAC,mBAAmB,CAAC,CAAC;YAC9B,KAAI,CAAC,SAAS,CAAC,KAAI,CAAC,EAAE,CAAC,CAAC;QAC5B,CAAC,CAAC,CAAC;IACV,CAAC;IAED,qCAAW,GAAX;QACI,IAAI,CAAC,YAAY,CAAC,WAAW,EAAE,CAAC;IACpC,CAAC;IAED,iCAAO,GAAP,UAAQ,KAAY;QACf,IAAI,CAAC,MAAM,CAAC,QAAQ,CAAC,CAAC,QAAQ,EAAE,KAAK,CAAC,EAAE,CAAC,CAAC,CAAC;IAC7C,CAAC;IAEL,sBAAC;AAAD,CAAC,AAzDD,IAyDC;AAzDY,eAAe;IAN3B,gBAAS,CAAC;QACT,QAAQ,EAAE,YAAY;QACtB,WAAW,EAAE,yBAAyB;QACtC,SAAS,EAAE,CAAC,wBAAwB,CAAC;KACtC,CAAC;qCAa0B,uBAAc,EAAkB,eAAM,EAAe,0BAAW;GAX/E,eAAe,CAyD3B;AAzDY,0CAAe"}
|
||||
@@ -0,0 +1,74 @@
|
||||
import { Component, OnInit, OnDestroy } from '@angular/core';
|
||||
import { DataService } from './../../services/data.service';
|
||||
import { IntervalObservable } from 'rxjs/observable/IntervalObservable';
|
||||
import { Subscription } from 'rxjs/Subscription';
|
||||
|
||||
import { Reader } from "./../../classes/reader.class";
|
||||
import { Plane } from "./../../classes/plane.class";
|
||||
import { Params, ActivatedRoute, Router } from '@angular/router';
|
||||
|
||||
|
||||
@Component({
|
||||
selector: 'app-reader',
|
||||
templateUrl: './reader.component.html',
|
||||
styleUrls: ['./reader.component.css']
|
||||
})
|
||||
|
||||
export class ReaderComponent implements OnInit, OnDestroy {
|
||||
|
||||
loading:boolean = true;
|
||||
error:boolean = false;
|
||||
name:string = "Loading";
|
||||
id:number = 0;
|
||||
|
||||
public reader:Reader = new Reader(0, "", null);
|
||||
|
||||
public subscription:Subscription;
|
||||
|
||||
constructor(private route: ActivatedRoute, private router: Router, private data:DataService){}
|
||||
|
||||
|
||||
getReader(id:number): void {
|
||||
this.data.load().then(()=> {
|
||||
this.data
|
||||
.reader(id)
|
||||
.subscribe(b => {
|
||||
|
||||
var status = b.status_code;
|
||||
|
||||
if(status != 200 && b.data.length != 1)
|
||||
{
|
||||
this.loading = false;
|
||||
this.error = true;
|
||||
}
|
||||
else{
|
||||
|
||||
this.reader = Reader.toReader(b.data[0]);
|
||||
this.name = this.reader.reader_id;
|
||||
this.loading = false;
|
||||
}
|
||||
|
||||
});
|
||||
});
|
||||
}
|
||||
|
||||
ngOnInit(): void {
|
||||
this.id = this.route.snapshot.params['id'];
|
||||
|
||||
this.getReader(this.id);
|
||||
|
||||
this.subscription = IntervalObservable.create(5000).subscribe(() => {
|
||||
console.log("Reloading data...");
|
||||
this.getReader(this.id);
|
||||
});
|
||||
}
|
||||
|
||||
ngOnDestroy(): void {
|
||||
this.subscription.unsubscribe();
|
||||
}
|
||||
|
||||
onClick(plane: Plane): void {
|
||||
this.router.navigate(['/plane', plane.id]);
|
||||
}
|
||||
|
||||
}
|
||||
@@ -0,0 +1,7 @@
|
||||
.reader {
|
||||
cursor: pointer;
|
||||
}
|
||||
|
||||
.anon {
|
||||
background-color: #EEAAAA;
|
||||
}
|
||||
@@ -0,0 +1,33 @@
|
||||
<div class="row">
|
||||
|
||||
<div class="col-md-12">
|
||||
<div class="page-header">
|
||||
<h1>F.R.A.U.D.S.
|
||||
<small>Readers</small>
|
||||
</h1>
|
||||
</div>
|
||||
</div>
|
||||
|
||||
<div class="col-md-12">
|
||||
|
||||
</div>
|
||||
|
||||
|
||||
<div *ngIf=loading class="col-md-12">
|
||||
<span *ngIf=!error><i class="fa fa-circle-o-notch fa-spin fa-fw"></i> Loading....</span>
|
||||
<span *ngIf=error><i class="fa fa-cross fa-fw"></i> Error....</span>
|
||||
</div>
|
||||
|
||||
<div *ngIf=!loading class="col-md-12">
|
||||
<div class="row">
|
||||
|
||||
<div *ngFor="let reader of readers" class="col-md-4 col-sm-6 col-xs-12 reader">
|
||||
<div class="well well-sm" [class.anon]="reader.plane == null" (click)="onClick(reader)">
|
||||
<h4><i class="fa fa-fw fa-barcode"></i> {{reader.reader_id}}</h4>
|
||||
</div>
|
||||
</div>
|
||||
|
||||
</div>
|
||||
</div>
|
||||
|
||||
</div>
|
||||
@@ -0,0 +1,87 @@
|
||||
"use strict";
|
||||
var __decorate = (this && this.__decorate) || function (decorators, target, key, desc) {
|
||||
var c = arguments.length, r = c < 3 ? target : desc === null ? desc = Object.getOwnPropertyDescriptor(target, key) : desc, d;
|
||||
if (typeof Reflect === "object" && typeof Reflect.decorate === "function") r = Reflect.decorate(decorators, target, key, desc);
|
||||
else for (var i = decorators.length - 1; i >= 0; i--) if (d = decorators[i]) r = (c < 3 ? d(r) : c > 3 ? d(target, key, r) : d(target, key)) || r;
|
||||
return c > 3 && r && Object.defineProperty(target, key, r), r;
|
||||
};
|
||||
var __metadata = (this && this.__metadata) || function (k, v) {
|
||||
if (typeof Reflect === "object" && typeof Reflect.metadata === "function") return Reflect.metadata(k, v);
|
||||
};
|
||||
var core_1 = require("@angular/core");
|
||||
var data_service_1 = require("./../../services/data.service");
|
||||
var router_1 = require("@angular/router");
|
||||
var IntervalObservable_1 = require("rxjs/observable/IntervalObservable");
|
||||
var reader_class_1 = require("./../../classes/reader.class");
|
||||
var ReadersComponent = (function () {
|
||||
function ReadersComponent(router, data) {
|
||||
this.router = router;
|
||||
this.data = data;
|
||||
this.loading = true;
|
||||
this.error = false;
|
||||
this.readers = new Array();
|
||||
}
|
||||
ReadersComponent.prototype.getReadersData = function () {
|
||||
var _this = this;
|
||||
this.data.load().then(function () {
|
||||
_this.data
|
||||
.readers()
|
||||
.subscribe(function (response) {
|
||||
var status = response.status_code;
|
||||
if (status != 200) {
|
||||
_this.loading = false;
|
||||
_this.error = true;
|
||||
}
|
||||
else {
|
||||
for (var i = 0; i < response.data.length; i++) {
|
||||
var temp = reader_class_1.Reader.toReader(response.data[i]);
|
||||
var reader = _this.getReaderByID(temp.id);
|
||||
if (reader) {
|
||||
if (!temp.equals(reader)) {
|
||||
// push new one, delete old
|
||||
var index = _this.readers.indexOf(reader);
|
||||
_this.readers.splice(index, 1);
|
||||
_this.readers.push(temp);
|
||||
}
|
||||
}
|
||||
else {
|
||||
_this.readers.push(temp);
|
||||
}
|
||||
}
|
||||
_this.readers.sort(function (a, b) {
|
||||
return a.reader_id > b.reader_id ? 1 : -1;
|
||||
});
|
||||
_this.loading = false;
|
||||
}
|
||||
});
|
||||
});
|
||||
};
|
||||
ReadersComponent.prototype.ngOnInit = function () {
|
||||
var _this = this;
|
||||
this.getReadersData();
|
||||
this.subscription = IntervalObservable_1.IntervalObservable.create(5000).subscribe(function () {
|
||||
console.log("Reloading data...");
|
||||
_this.getReadersData();
|
||||
});
|
||||
};
|
||||
ReadersComponent.prototype.ngOnDestroy = function () {
|
||||
this.subscription.unsubscribe();
|
||||
};
|
||||
ReadersComponent.prototype.onClick = function (reader) {
|
||||
this.router.navigate(['/reader', reader.id]);
|
||||
};
|
||||
ReadersComponent.prototype.getReaderByID = function (id) {
|
||||
return this.readers.find(function (f) { return f.id === id; });
|
||||
};
|
||||
return ReadersComponent;
|
||||
}());
|
||||
ReadersComponent = __decorate([
|
||||
core_1.Component({
|
||||
selector: 'app-readers',
|
||||
templateUrl: './readers.component.html',
|
||||
styleUrls: ['./readers.component.css']
|
||||
}),
|
||||
__metadata("design:paramtypes", [router_1.Router, data_service_1.DataService])
|
||||
], ReadersComponent);
|
||||
exports.ReadersComponent = ReadersComponent;
|
||||
//# sourceMappingURL=readers.component.js.map
|
||||
@@ -0,0 +1 @@
|
||||
{"version":3,"file":"readers.component.js","sourceRoot":"","sources":["readers.component.ts"],"names":[],"mappings":"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"}
|
||||
@@ -0,0 +1,93 @@
|
||||
import { Component, OnInit, OnDestroy } from '@angular/core';
|
||||
import { DataService } from './../../services/data.service';
|
||||
import { Router } from '@angular/router';
|
||||
import { IntervalObservable } from 'rxjs/observable/IntervalObservable';
|
||||
import { Subscription } from 'rxjs/Subscription';
|
||||
|
||||
import { Reader } from "./../../classes/reader.class";
|
||||
|
||||
@Component({
|
||||
selector: 'app-readers',
|
||||
templateUrl: './readers.component.html',
|
||||
styleUrls: ['./readers.component.css']
|
||||
})
|
||||
|
||||
export class ReadersComponent implements OnInit, OnDestroy {
|
||||
|
||||
loading:boolean = true;
|
||||
error:boolean = false;
|
||||
|
||||
readers:Array<Reader> = new Array<Reader>();
|
||||
|
||||
public subscription:Subscription;
|
||||
|
||||
constructor(private router: Router, private data:DataService){}
|
||||
|
||||
getReadersData(): void {
|
||||
this.data.load().then(()=> {
|
||||
this.data
|
||||
.readers()
|
||||
.subscribe(response => {
|
||||
|
||||
var status = response.status_code;
|
||||
|
||||
if(status != 200)
|
||||
{
|
||||
this.loading = false;
|
||||
this.error = true;
|
||||
}
|
||||
else{
|
||||
|
||||
for(let i = 0; i < response.data.length; i++)
|
||||
{
|
||||
var temp:Reader = Reader.toReader(response.data[i]);
|
||||
var reader:Reader = this.getReaderByID(temp.id);
|
||||
|
||||
if(reader)
|
||||
{
|
||||
if(!temp.equals(reader))
|
||||
{
|
||||
// push new one, delete old
|
||||
var index = this.readers.indexOf(reader);
|
||||
this.readers.splice(index, 1);
|
||||
this.readers.push(temp);
|
||||
}
|
||||
} else {
|
||||
this.readers.push(temp);
|
||||
}
|
||||
|
||||
}
|
||||
|
||||
this.readers.sort((a, b) => {
|
||||
return a.reader_id > b.reader_id ? 1 : -1;
|
||||
});
|
||||
|
||||
this.loading = false;
|
||||
}
|
||||
|
||||
});
|
||||
});
|
||||
}
|
||||
|
||||
ngOnInit(): void {
|
||||
this.getReadersData();
|
||||
|
||||
this.subscription = IntervalObservable.create(5000).subscribe(() => {
|
||||
console.log("Reloading data...");
|
||||
this.getReadersData();
|
||||
});
|
||||
}
|
||||
|
||||
ngOnDestroy(): void {
|
||||
this.subscription.unsubscribe();
|
||||
}
|
||||
|
||||
onClick(reader: Reader): void {
|
||||
this.router.navigate(['/reader', reader.id]);
|
||||
}
|
||||
|
||||
getReaderByID(id:number): Reader {
|
||||
return this.readers.find((f) => {return f.id === id});
|
||||
}
|
||||
|
||||
}
|
||||
@@ -0,0 +1,39 @@
|
||||
<!-- Trigger the modal with a button -->
|
||||
<button type="button" class="btn btn-info btn-lg" data-toggle="modal" data-target="#editModal"><i class="fa fa-pencil" aria-hidden="true"></i></button>
|
||||
|
||||
<!-- Modal -->
|
||||
<div id="editModal" class="modal fade" role="dialog">
|
||||
<div class="modal-dialog">
|
||||
|
||||
<!-- Modal content-->
|
||||
<div class="modal-content">
|
||||
<form id="myForm" #editForm="ngForm" (ngSubmit)="onSubmit()">
|
||||
<div class="modal-header">
|
||||
<button type="button" class="close" data-dismiss="modal">×</button>
|
||||
<h4 class="modal-title">Edit {{model.name}}</h4>
|
||||
</div>
|
||||
<div class="modal-body">
|
||||
|
||||
<div class="form-group">
|
||||
<label for="name">Name</label>
|
||||
<input type="text" class="form-control" id="name" required [(ngModel)]="user.name" name="name" #name="ngModel" ngModel>
|
||||
<div [hidden]="name.valid || name.pristine" class="alert alert-danger">
|
||||
Name is required
|
||||
</div>
|
||||
</div>
|
||||
<div class="form-group">
|
||||
<label for="role">Role</label>
|
||||
<select type="text" class="form-control" id="role" [(ngModel)]="user.role" name="role" #role="ngModel" required ngModel>
|
||||
<option *ngFor="let rol of roles" [value]="rol">{{rol}}</option>
|
||||
</select>
|
||||
</div>
|
||||
</div>
|
||||
<div class="modal-footer">
|
||||
<button type="submit" class="btn btn-success" form="myForm" data-dismiss="modal" (click)="onSubmit()" [disabled]="!editForm.form.valid">Edit User</button>
|
||||
<button type="button" class="btn btn-default" data-dismiss="modal">Close</button>
|
||||
</div>
|
||||
</form>
|
||||
</div>
|
||||
|
||||
</div>
|
||||
</div>
|
||||
@@ -0,0 +1,47 @@
|
||||
"use strict";
|
||||
var __decorate = (this && this.__decorate) || function (decorators, target, key, desc) {
|
||||
var c = arguments.length, r = c < 3 ? target : desc === null ? desc = Object.getOwnPropertyDescriptor(target, key) : desc, d;
|
||||
if (typeof Reflect === "object" && typeof Reflect.decorate === "function") r = Reflect.decorate(decorators, target, key, desc);
|
||||
else for (var i = decorators.length - 1; i >= 0; i--) if (d = decorators[i]) r = (c < 3 ? d(r) : c > 3 ? d(target, key, r) : d(target, key)) || r;
|
||||
return c > 3 && r && Object.defineProperty(target, key, r), r;
|
||||
};
|
||||
var __metadata = (this && this.__metadata) || function (k, v) {
|
||||
if (typeof Reflect === "object" && typeof Reflect.metadata === "function") return Reflect.metadata(k, v);
|
||||
};
|
||||
var core_1 = require("@angular/core");
|
||||
var user_class_1 = require("../../../classes/user.class");
|
||||
var data_service_1 = require("./../../../services/data.service");
|
||||
var EditUserFormComponent = (function () {
|
||||
function EditUserFormComponent(data) {
|
||||
this.data = data;
|
||||
this.roles = ['Pilot', 'Student', 'Instructor'];
|
||||
this.submitted = false;
|
||||
}
|
||||
EditUserFormComponent.prototype.ngOnInit = function () {
|
||||
this.user = new user_class_1.User(this.model.id, this.model.name, this.model.card, this.model.role);
|
||||
};
|
||||
EditUserFormComponent.prototype.onSubmit = function () {
|
||||
var _this = this;
|
||||
this.model.name = this.user.name;
|
||||
this.model.role = this.user.role;
|
||||
this.submitted = true;
|
||||
this.data.load().then(function () {
|
||||
_this.data.editUser(_this.model).subscribe(function (b) { return _this.temp = JSON.stringify(b); });
|
||||
console.log(_this.temp);
|
||||
});
|
||||
};
|
||||
return EditUserFormComponent;
|
||||
}());
|
||||
__decorate([
|
||||
core_1.Input(),
|
||||
__metadata("design:type", user_class_1.User)
|
||||
], EditUserFormComponent.prototype, "model", void 0);
|
||||
EditUserFormComponent = __decorate([
|
||||
core_1.Component({
|
||||
selector: 'edit-user-form',
|
||||
templateUrl: './edit-user-form.component.html'
|
||||
}),
|
||||
__metadata("design:paramtypes", [data_service_1.DataService])
|
||||
], EditUserFormComponent);
|
||||
exports.EditUserFormComponent = EditUserFormComponent;
|
||||
//# sourceMappingURL=edit-user-form.component.js.map
|
||||
@@ -0,0 +1 @@
|
||||
{"version":3,"file":"edit-user-form.component.js","sourceRoot":"","sources":["edit-user-form.component.ts"],"names":[],"mappings":";;;;;;;;;;AAAA,sCAAuD;AACvD,0DAAiD;AACjD,iEAA6D;AAQ7D,IAAa,qBAAqB;IAMhC,+BAAoB,IAAiB;QAAjB,SAAI,GAAJ,IAAI,CAAa;QAKrC,UAAK,GAAG,CAAC,OAAO,EAAE,SAAS,EAAE,YAAY,CAAC,CAAC;QAE3C,cAAS,GAAG,KAAK,CAAC;IANlB,CAAC;IAQD,wCAAQ,GAAR;QAEE,IAAI,CAAC,IAAI,GAAG,IAAI,iBAAI,CAAC,IAAI,CAAC,KAAK,CAAC,EAAE,EAAE,IAAI,CAAC,KAAK,CAAC,IAAI,EAAE,IAAI,CAAC,KAAK,CAAC,IAAI,EAAE,IAAI,CAAC,KAAK,CAAC,IAAI,CAAC,CAAC;IACzF,CAAC;IAED,wCAAQ,GAAR;QAAA,iBAUC;QARC,IAAI,CAAC,KAAK,CAAC,IAAI,GAAG,IAAI,CAAC,IAAI,CAAC,IAAI,CAAC;QACjC,IAAI,CAAC,KAAK,CAAC,IAAI,GAAG,IAAI,CAAC,IAAI,CAAC,IAAI,CAAC;QAEjC,IAAI,CAAC,SAAS,GAAG,IAAI,CAAC;QACtB,IAAI,CAAC,IAAI,CAAC,IAAI,EAAE,CAAC,IAAI,CAAC;YACpB,KAAI,CAAC,IAAI,CAAC,QAAQ,CAAC,KAAI,CAAC,KAAK,CAAC,CAAC,SAAS,CAAC,UAAA,CAAC,IAAI,OAAA,KAAI,CAAC,IAAI,GAAG,IAAI,CAAC,SAAS,CAAC,CAAC,CAAC,EAA7B,CAA6B,CAAC,CAAC;YAC7E,OAAO,CAAC,GAAG,CAAC,KAAI,CAAC,IAAI,CAAC,CAAC;QACzB,CAAC,CAAC,CAAA;IACJ,CAAC;IACH,4BAAC;AAAD,CAAC,AA/BD,IA+BC;AA7BS;IAAP,YAAK,EAAE;8BAAM,iBAAI;oDAAC;AAFR,qBAAqB;IALjC,gBAAS,CAAC;QACT,QAAQ,EAAE,gBAAgB;QAC1B,WAAW,EAAE,iCAAiC;KAC/C,CAAC;qCAQ0B,0BAAW;GAN1B,qBAAqB,CA+BjC;AA/BY,sDAAqB"}
|
||||
@@ -0,0 +1,42 @@
|
||||
import {Component, Input, OnInit} from '@angular/core';
|
||||
import {User} from "../../../classes/user.class";
|
||||
import {DataService} from './../../../services/data.service';
|
||||
import {NgForm} from '@angular/forms';
|
||||
|
||||
@Component({
|
||||
selector: 'edit-user-form',
|
||||
templateUrl: './edit-user-form.component.html'
|
||||
})
|
||||
|
||||
export class EditUserFormComponent implements OnInit {
|
||||
|
||||
@Input()model:User;
|
||||
|
||||
user:User;
|
||||
|
||||
constructor(private data: DataService) {
|
||||
}
|
||||
|
||||
temp: string;
|
||||
|
||||
roles = ['Pilot', 'Student', 'Instructor'];
|
||||
|
||||
submitted = false;
|
||||
|
||||
ngOnInit()
|
||||
{
|
||||
this.user = new User(this.model.id, this.model.name, this.model.card, this.model.role);
|
||||
}
|
||||
|
||||
onSubmit() {
|
||||
|
||||
this.model.name = this.user.name;
|
||||
this.model.role = this.user.role;
|
||||
|
||||
this.submitted = true;
|
||||
this.data.load().then(() => {
|
||||
this.data.editUser(this.model).subscribe(b => this.temp = JSON.stringify(b));
|
||||
console.log(this.temp);
|
||||
})
|
||||
}
|
||||
}
|
||||
@@ -0,0 +1,21 @@
|
||||
<div class="row">
|
||||
|
||||
<div class="col-md-12">
|
||||
<div class="page-header">
|
||||
<h1>F.R.A.U.D.S. <small>{{name}}</small> <small><div *ngIf=!loading class="pull-right"><edit-user-form [model]="user"></edit-user-form></div></small></h1>
|
||||
</div>
|
||||
</div>
|
||||
|
||||
<div *ngIf=loading class="col-md-12">
|
||||
<span *ngIf=!error><i class="fa fa-circle-o-notch fa-spin fa-fw"></i> Loading....</span>
|
||||
<span *ngIf=error><i class="fa fa-cross fa-fw"></i> Error....</span>
|
||||
</div>
|
||||
|
||||
<div *ngIf=!loading class="col-md-12">
|
||||
<i class="fa fa-fw fa-user"></i> <b>Name:</b> {{user.name}}<br>
|
||||
<i class="fa fa-fw fa-id-card"></i> <b>Card:</b> {{user.card}}<br>
|
||||
<i class="fa fa-fw fa-tag"></i> <b>Role:</b> {{user.role}}<br>
|
||||
|
||||
</div>
|
||||
|
||||
</div>
|
||||
@@ -0,0 +1,68 @@
|
||||
"use strict";
|
||||
var __decorate = (this && this.__decorate) || function (decorators, target, key, desc) {
|
||||
var c = arguments.length, r = c < 3 ? target : desc === null ? desc = Object.getOwnPropertyDescriptor(target, key) : desc, d;
|
||||
if (typeof Reflect === "object" && typeof Reflect.decorate === "function") r = Reflect.decorate(decorators, target, key, desc);
|
||||
else for (var i = decorators.length - 1; i >= 0; i--) if (d = decorators[i]) r = (c < 3 ? d(r) : c > 3 ? d(target, key, r) : d(target, key)) || r;
|
||||
return c > 3 && r && Object.defineProperty(target, key, r), r;
|
||||
};
|
||||
var __metadata = (this && this.__metadata) || function (k, v) {
|
||||
if (typeof Reflect === "object" && typeof Reflect.metadata === "function") return Reflect.metadata(k, v);
|
||||
};
|
||||
var core_1 = require("@angular/core");
|
||||
var data_service_1 = require("./../../services/data.service");
|
||||
var IntervalObservable_1 = require("rxjs/observable/IntervalObservable");
|
||||
var user_class_1 = require("./../../classes/user.class");
|
||||
var router_1 = require("@angular/router");
|
||||
var UserComponent = (function () {
|
||||
function UserComponent(route, data) {
|
||||
this.route = route;
|
||||
this.data = data;
|
||||
this.loading = true;
|
||||
this.error = false;
|
||||
this.name = "Loading";
|
||||
this.id = 0;
|
||||
this.user = new user_class_1.User(0, "Loading", "Loading", "Loading");
|
||||
}
|
||||
UserComponent.prototype.getUser = function (id) {
|
||||
var _this = this;
|
||||
this.data.load().then(function () {
|
||||
_this.data
|
||||
.user(id)
|
||||
.subscribe(function (b) {
|
||||
var status = b.status_code;
|
||||
if (status != 200 && b.data.length != 1) {
|
||||
_this.loading = false;
|
||||
_this.error = true;
|
||||
}
|
||||
else {
|
||||
_this.user = user_class_1.User.toUser(b.data[0]);
|
||||
_this.name = _this.user.name;
|
||||
_this.loading = false;
|
||||
}
|
||||
});
|
||||
});
|
||||
};
|
||||
UserComponent.prototype.ngOnInit = function () {
|
||||
var _this = this;
|
||||
this.id = this.route.snapshot.params['id'];
|
||||
this.getUser(this.id);
|
||||
this.subscription = IntervalObservable_1.IntervalObservable.create(5000).subscribe(function () {
|
||||
console.log("Reloading data...");
|
||||
_this.getUser(_this.id);
|
||||
});
|
||||
};
|
||||
UserComponent.prototype.ngOnDestroy = function () {
|
||||
this.subscription.unsubscribe();
|
||||
};
|
||||
return UserComponent;
|
||||
}());
|
||||
UserComponent = __decorate([
|
||||
core_1.Component({
|
||||
selector: 'app-user',
|
||||
templateUrl: './user.component.html',
|
||||
styleUrls: ['./user.component.css']
|
||||
}),
|
||||
__metadata("design:paramtypes", [router_1.ActivatedRoute, data_service_1.DataService])
|
||||
], UserComponent);
|
||||
exports.UserComponent = UserComponent;
|
||||
//# sourceMappingURL=user.component.js.map
|
||||
@@ -0,0 +1 @@
|
||||
{"version":3,"file":"user.component.js","sourceRoot":"","sources":["user.component.ts"],"names":[],"mappings":";;;;;;;;;;AAAA,sCAA6D;AAC7D,8DAA4D;AAC5D,yEAAwE;AAIxE,yDAAkD;AAClD,0CAAyD;AASzD,IAAa,aAAa;IAWzB,uBAAoB,KAAqB,EAAU,IAAgB;QAA/C,UAAK,GAAL,KAAK,CAAgB;QAAU,SAAI,GAAJ,IAAI,CAAY;QATnE,YAAO,GAAW,IAAI,CAAC;QACvB,UAAK,GAAW,KAAK,CAAC;QACtB,SAAI,GAAU,SAAS,CAAC;QACxB,OAAE,GAAU,CAAC,CAAC;QAEP,SAAI,GAAQ,IAAI,iBAAI,CAAC,CAAC,EAAE,SAAS,EAAE,SAAS,EAAE,SAAS,CAAC,CAAC;IAIK,CAAC;IAGtE,+BAAO,GAAP,UAAQ,EAAS;QAAjB,iBAsBC;QArBA,IAAI,CAAC,IAAI,CAAC,IAAI,EAAE,CAAC,IAAI,CAAC;YACrB,KAAI,CAAC,IAAI;iBACH,IAAI,CAAC,EAAE,CAAC;iBACR,SAAS,CAAC,UAAA,CAAC;gBAEX,IAAI,MAAM,GAAG,CAAC,CAAC,WAAW,CAAC;gBAE3B,EAAE,CAAA,CAAC,MAAM,IAAI,GAAG,IAAI,CAAC,CAAC,IAAI,CAAC,MAAM,IAAI,CAAC,CAAC,CACvC,CAAC;oBACA,KAAI,CAAC,OAAO,GAAG,KAAK,CAAC;oBACrB,KAAI,CAAC,KAAK,GAAG,IAAI,CAAC;gBACnB,CAAC;gBACD,IAAI,CAAA,CAAC;oBAEJ,KAAI,CAAC,IAAI,GAAG,iBAAI,CAAC,MAAM,CAAC,CAAC,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC,CAAC;oBACnC,KAAI,CAAC,IAAI,GAAG,KAAI,CAAC,IAAI,CAAC,IAAI,CAAC;oBAC3B,KAAI,CAAC,OAAO,GAAG,KAAK,CAAC;gBACtB,CAAC;YAEF,CAAC,CAAC,CAAC;QACT,CAAC,CAAC,CAAC;IACJ,CAAC;IAED,gCAAQ,GAAR;QAAA,iBASC;QARA,IAAI,CAAC,EAAE,GAAG,IAAI,CAAC,KAAK,CAAC,QAAQ,CAAC,MAAM,CAAC,IAAI,CAAC,CAAC;QAExC,IAAI,CAAC,OAAO,CAAC,IAAI,CAAC,EAAE,CAAC,CAAC;QAEnB,IAAI,CAAC,YAAY,GAAG,uCAAkB,CAAC,MAAM,CAAC,IAAI,CAAC,CAAC,SAAS,CAAC;YAC7D,OAAO,CAAC,GAAG,CAAC,mBAAmB,CAAC,CAAC;YAC9B,KAAI,CAAC,OAAO,CAAC,KAAI,CAAC,EAAE,CAAC,CAAC;QAC1B,CAAC,CAAC,CAAC;IACV,CAAC;IAED,mCAAW,GAAX;QACI,IAAI,CAAC,YAAY,CAAC,WAAW,EAAE,CAAC;IACpC,CAAC;IAEF,oBAAC;AAAD,CAAC,AArDD,IAqDC;AArDY,aAAa;IANzB,gBAAS,CAAC;QACT,QAAQ,EAAE,UAAU;QACpB,WAAW,EAAE,uBAAuB;QACpC,SAAS,EAAE,CAAC,sBAAsB,CAAC;KACpC,CAAC;qCAa0B,uBAAc,EAAe,0BAAW;GAXvD,aAAa,CAqDzB;AArDY,sCAAa"}
|
||||
@@ -0,0 +1,70 @@
|
||||
import { Component, OnInit, OnDestroy } from '@angular/core';
|
||||
import { DataService } from './../../services/data.service';
|
||||
import { IntervalObservable } from 'rxjs/observable/IntervalObservable';
|
||||
import { Subscription } from 'rxjs/Subscription';
|
||||
|
||||
|
||||
import { User } from "./../../classes/user.class";
|
||||
import { Params, ActivatedRoute } from '@angular/router';
|
||||
|
||||
|
||||
@Component({
|
||||
selector: 'app-user',
|
||||
templateUrl: './user.component.html',
|
||||
styleUrls: ['./user.component.css']
|
||||
})
|
||||
|
||||
export class UserComponent implements OnInit, OnDestroy {
|
||||
|
||||
loading:boolean = true;
|
||||
error:boolean = false;
|
||||
name:string = "Loading";
|
||||
id:number = 0;
|
||||
|
||||
public user:User = new User(0, "Loading", "Loading", "Loading");
|
||||
|
||||
public subscription:Subscription;
|
||||
|
||||
constructor(private route: ActivatedRoute, private data:DataService){}
|
||||
|
||||
|
||||
getUser(id:number): void {
|
||||
this.data.load().then(()=> {
|
||||
this.data
|
||||
.user(id)
|
||||
.subscribe(b => {
|
||||
|
||||
var status = b.status_code;
|
||||
|
||||
if(status != 200 && b.data.length != 1)
|
||||
{
|
||||
this.loading = false;
|
||||
this.error = true;
|
||||
}
|
||||
else{
|
||||
|
||||
this.user = User.toUser(b.data[0]);
|
||||
this.name = this.user.name;
|
||||
this.loading = false;
|
||||
}
|
||||
|
||||
});
|
||||
});
|
||||
}
|
||||
|
||||
ngOnInit(): void {
|
||||
this.id = this.route.snapshot.params['id'];
|
||||
|
||||
this.getUser(this.id);
|
||||
|
||||
this.subscription = IntervalObservable.create(5000).subscribe(() => {
|
||||
console.log("Reloading data...");
|
||||
this.getUser(this.id);
|
||||
});
|
||||
}
|
||||
|
||||
ngOnDestroy(): void {
|
||||
this.subscription.unsubscribe();
|
||||
}
|
||||
|
||||
}
|
||||
@@ -0,0 +1,47 @@
|
||||
<!-- Trigger the modal with a button -->
|
||||
<button type="button" class="btn btn-info btn-lg" data-toggle="modal" data-target="#myModal"><i class="fa fa-user-plus" aria-hidden="true"></i></button>
|
||||
|
||||
<!-- Modal -->
|
||||
<div id="myModal" class="modal fade" role="dialog">
|
||||
<div class="modal-dialog">
|
||||
|
||||
<!-- Modal content-->
|
||||
<div class="modal-content">
|
||||
<div class="modal-header">
|
||||
<button type="button" class="close" data-dismiss="modal">×</button>
|
||||
<h4 class="modal-title">New User</h4>
|
||||
</div>
|
||||
<div class="modal-body">
|
||||
<form (ngSubmit)="onSubmit()" #userForm="ngForm">
|
||||
<div class="form-group">
|
||||
<label for="name">Name</label>
|
||||
<input type="text" class="form-control" id="name"
|
||||
required
|
||||
[(ngModel)]="model.name" name="name"
|
||||
#name="ngModel">
|
||||
<div [hidden]="name.valid || name.pristine"
|
||||
class="alert alert-danger">
|
||||
Name is required
|
||||
</div>
|
||||
</div>
|
||||
<div class="form-group">
|
||||
<label for="cardId">Card ID</label>
|
||||
<input type="text" class="form-control" id="cardId" [(ngModel)]="model.cardId" name="cardId" required>
|
||||
</div>
|
||||
<div class="form-group">
|
||||
<label for="role">Role</label>
|
||||
<select type="text" class="form-control" id="role" [(ngModel)]="model.role" name="role" required>
|
||||
<option *ngFor="let rol of roles" [value]="rol">{{rol}}</option>
|
||||
</select>
|
||||
</div>
|
||||
</form>
|
||||
</div>
|
||||
<div class="modal-footer">
|
||||
<button type="submit" class="btn btn-success" data-dismiss="modal" [disabled]="!userForm.form.valid">Add User
|
||||
</button>
|
||||
<button type="button" class="btn btn-default" data-dismiss="modal">Close</button>
|
||||
</div>
|
||||
</div>
|
||||
|
||||
</div>
|
||||
</div>
|
||||
@@ -0,0 +1,38 @@
|
||||
"use strict";
|
||||
var __decorate = (this && this.__decorate) || function (decorators, target, key, desc) {
|
||||
var c = arguments.length, r = c < 3 ? target : desc === null ? desc = Object.getOwnPropertyDescriptor(target, key) : desc, d;
|
||||
if (typeof Reflect === "object" && typeof Reflect.decorate === "function") r = Reflect.decorate(decorators, target, key, desc);
|
||||
else for (var i = decorators.length - 1; i >= 0; i--) if (d = decorators[i]) r = (c < 3 ? d(r) : c > 3 ? d(target, key, r) : d(target, key)) || r;
|
||||
return c > 3 && r && Object.defineProperty(target, key, r), r;
|
||||
};
|
||||
var __metadata = (this && this.__metadata) || function (k, v) {
|
||||
if (typeof Reflect === "object" && typeof Reflect.metadata === "function") return Reflect.metadata(k, v);
|
||||
};
|
||||
var core_1 = require("@angular/core");
|
||||
var user_class_1 = require("../../../classes/user.class");
|
||||
var data_service_1 = require("./../../../services/data.service");
|
||||
var UserFormComponent = (function () {
|
||||
function UserFormComponent(data) {
|
||||
this.data = data;
|
||||
this.roles = ['Pilot', 'Student', 'Instructor'];
|
||||
this.model = new user_class_1.User(0, "", "", this.roles[0]);
|
||||
this.submitted = false;
|
||||
}
|
||||
UserFormComponent.prototype.onSubmit = function () {
|
||||
var _this = this;
|
||||
this.submitted = true;
|
||||
this.data.load().then(function () {
|
||||
_this.data.postUser(_this.model).subscribe(function (b) { return _this.temp = JSON.stringify(b); });
|
||||
});
|
||||
};
|
||||
return UserFormComponent;
|
||||
}());
|
||||
UserFormComponent = __decorate([
|
||||
core_1.Component({
|
||||
selector: 'user-form',
|
||||
templateUrl: './user-form.component.html'
|
||||
}),
|
||||
__metadata("design:paramtypes", [data_service_1.DataService])
|
||||
], UserFormComponent);
|
||||
exports.UserFormComponent = UserFormComponent;
|
||||
//# sourceMappingURL=user-form.component.js.map
|
||||
@@ -0,0 +1 @@
|
||||
{"version":3,"file":"user-form.component.js","sourceRoot":"","sources":["user-form.component.ts"],"names":[],"mappings":";;;;;;;;;;AAAA,sCAAwC;AACxC,0DAAiD;AACjD,iEAA6D;AAO7D,IAAa,iBAAiB;IAE5B,2BAAoB,IAAiB;QAAjB,SAAI,GAAJ,IAAI,CAAa;QAKrC,UAAK,GAAG,CAAC,OAAO,EAAE,SAAS,EAAE,YAAY,CAAC,CAAC;QAE3C,UAAK,GAAG,IAAI,iBAAI,CAAC,CAAC,EAAE,EAAE,EAAE,EAAE,EAAE,IAAI,CAAC,KAAK,CAAC,CAAC,CAAC,CAAC,CAAC;QAE3C,cAAS,GAAG,KAAK,CAAC;IARlB,CAAC;IAUD,oCAAQ,GAAR;QAAA,iBAKC;QAJC,IAAI,CAAC,SAAS,GAAG,IAAI,CAAC;QACtB,IAAI,CAAC,IAAI,CAAC,IAAI,EAAE,CAAC,IAAI,CAAC;YACpB,KAAI,CAAC,IAAI,CAAC,QAAQ,CAAC,KAAI,CAAC,KAAK,CAAC,CAAC,SAAS,CAAC,UAAA,CAAC,IAAI,OAAA,KAAI,CAAC,IAAI,GAAG,IAAI,CAAC,SAAS,CAAC,CAAC,CAAC,EAA7B,CAA6B,CAAC,CAAC;QAC/E,CAAC,CAAC,CAAA;IACJ,CAAC;IACH,wBAAC;AAAD,CAAC,AAnBD,IAmBC;AAnBY,iBAAiB;IAL7B,gBAAS,CAAC;QACT,QAAQ,EAAE,WAAW;QACrB,WAAW,EAAE,4BAA4B;KAC1C,CAAC;qCAI0B,0BAAW;GAF1B,iBAAiB,CAmB7B;AAnBY,8CAAiB"}
|
||||
@@ -0,0 +1,29 @@
|
||||
import {Component} from '@angular/core';
|
||||
import {User} from "../../../classes/user.class";
|
||||
import {DataService} from './../../../services/data.service';
|
||||
|
||||
@Component({
|
||||
selector: 'user-form',
|
||||
templateUrl: './user-form.component.html'
|
||||
})
|
||||
|
||||
export class UserFormComponent {
|
||||
|
||||
constructor(private data: DataService) {
|
||||
}
|
||||
|
||||
temp: string;
|
||||
|
||||
roles = ['Pilot', 'Student', 'Instructor'];
|
||||
|
||||
model = new User(0, "", "", this.roles[0]);
|
||||
|
||||
submitted = false;
|
||||
|
||||
onSubmit() {
|
||||
this.submitted = true;
|
||||
this.data.load().then(() => {
|
||||
this.data.postUser(this.model).subscribe(b => this.temp = JSON.stringify(b));
|
||||
})
|
||||
}
|
||||
}
|
||||
@@ -0,0 +1,7 @@
|
||||
.user {
|
||||
cursor: pointer;
|
||||
}
|
||||
|
||||
.anon {
|
||||
background-color: #EEAAAA;
|
||||
}
|
||||
@@ -0,0 +1,35 @@
|
||||
<div class="row">
|
||||
|
||||
<div class="col-md-12">
|
||||
<div class="page-header">
|
||||
<h1>F.R.A.U.D.S.
|
||||
<small>Users</small>
|
||||
</h1>
|
||||
</div>
|
||||
</div>
|
||||
|
||||
<div class="col-md-12">
|
||||
|
||||
</div>
|
||||
|
||||
|
||||
<div *ngIf=loading class="col-md-12">
|
||||
<span *ngIf=!error><i class="fa fa-circle-o-notch fa-spin fa-fw"></i> Loading....</span>
|
||||
<span *ngIf=error><i class="fa fa-cross fa-fw"></i> Error....</span>
|
||||
</div>
|
||||
|
||||
<div *ngIf=!loading class="col-md-12">
|
||||
<div class="row">
|
||||
|
||||
<div *ngFor="let user of users" class="col-md-4 col-sm-6 col-xs-12 user">
|
||||
<div class="well well-sm" [class.anon]="user.name == 'Anonymous'" (click)="onClick(user)">
|
||||
<h4><i class="fa fa-fw fa-user"></i> {{user.name}}</h4>
|
||||
<i class="fa fa-fw fa-id-card"></i> {{user.card}}<br>
|
||||
<i class="fa fa-fw fa-tag"></i> {{user.role}}<br>
|
||||
</div>
|
||||
</div>
|
||||
|
||||
</div>
|
||||
</div>
|
||||
|
||||
</div>
|
||||
@@ -0,0 +1,87 @@
|
||||
"use strict";
|
||||
var __decorate = (this && this.__decorate) || function (decorators, target, key, desc) {
|
||||
var c = arguments.length, r = c < 3 ? target : desc === null ? desc = Object.getOwnPropertyDescriptor(target, key) : desc, d;
|
||||
if (typeof Reflect === "object" && typeof Reflect.decorate === "function") r = Reflect.decorate(decorators, target, key, desc);
|
||||
else for (var i = decorators.length - 1; i >= 0; i--) if (d = decorators[i]) r = (c < 3 ? d(r) : c > 3 ? d(target, key, r) : d(target, key)) || r;
|
||||
return c > 3 && r && Object.defineProperty(target, key, r), r;
|
||||
};
|
||||
var __metadata = (this && this.__metadata) || function (k, v) {
|
||||
if (typeof Reflect === "object" && typeof Reflect.metadata === "function") return Reflect.metadata(k, v);
|
||||
};
|
||||
var core_1 = require("@angular/core");
|
||||
var data_service_1 = require("./../../services/data.service");
|
||||
var router_1 = require("@angular/router");
|
||||
var IntervalObservable_1 = require("rxjs/observable/IntervalObservable");
|
||||
var user_class_1 = require("./../../classes/user.class");
|
||||
var UsersComponent = (function () {
|
||||
function UsersComponent(router, data) {
|
||||
this.router = router;
|
||||
this.data = data;
|
||||
this.loading = true;
|
||||
this.error = false;
|
||||
this.users = new Array();
|
||||
}
|
||||
UsersComponent.prototype.getUsersData = function () {
|
||||
var _this = this;
|
||||
this.data.load().then(function () {
|
||||
_this.data
|
||||
.users()
|
||||
.subscribe(function (response) {
|
||||
var status = response.status_code;
|
||||
if (status != 200) {
|
||||
_this.loading = false;
|
||||
_this.error = true;
|
||||
}
|
||||
else {
|
||||
for (var i = 0; i < response.data.length; i++) {
|
||||
var temp = user_class_1.User.toUser(response.data[i]);
|
||||
var user = _this.getUserByID(temp.id);
|
||||
if (user) {
|
||||
if (!temp.equals(user)) {
|
||||
// push new one, delete old
|
||||
var index = _this.users.indexOf(user);
|
||||
_this.users.splice(index, 1);
|
||||
_this.users.push(temp);
|
||||
}
|
||||
}
|
||||
else {
|
||||
_this.users.push(temp);
|
||||
}
|
||||
}
|
||||
_this.users.sort(function (a, b) {
|
||||
return a.name > b.name ? 1 : -1;
|
||||
});
|
||||
_this.loading = false;
|
||||
}
|
||||
});
|
||||
});
|
||||
};
|
||||
UsersComponent.prototype.ngOnInit = function () {
|
||||
var _this = this;
|
||||
this.getUsersData();
|
||||
this.subscription = IntervalObservable_1.IntervalObservable.create(5000).subscribe(function () {
|
||||
console.log("Reloading data...");
|
||||
_this.getUsersData();
|
||||
});
|
||||
};
|
||||
UsersComponent.prototype.ngOnDestroy = function () {
|
||||
this.subscription.unsubscribe();
|
||||
};
|
||||
UsersComponent.prototype.onClick = function (user) {
|
||||
this.router.navigate(['/user', user.id]);
|
||||
};
|
||||
UsersComponent.prototype.getUserByID = function (id) {
|
||||
return this.users.find(function (f) { return f.id === id; });
|
||||
};
|
||||
return UsersComponent;
|
||||
}());
|
||||
UsersComponent = __decorate([
|
||||
core_1.Component({
|
||||
selector: 'app-users',
|
||||
templateUrl: './users.component.html',
|
||||
styleUrls: ['./users.component.css']
|
||||
}),
|
||||
__metadata("design:paramtypes", [router_1.Router, data_service_1.DataService])
|
||||
], UsersComponent);
|
||||
exports.UsersComponent = UsersComponent;
|
||||
//# sourceMappingURL=users.component.js.map
|
||||
@@ -0,0 +1 @@
|
||||
{"version":3,"file":"users.component.js","sourceRoot":"","sources":["users.component.ts"],"names":[],"mappings":";;;;;;;;;;AAAA,sCAA6D;AAC7D,8DAA4D;AAC5D,0CAAyC;AACzC,yEAAwE;AAGxE,yDAAkD;AAQlD,IAAa,cAAc;IAS1B,wBAAoB,MAAc,EAAU,IAAgB;QAAxC,WAAM,GAAN,MAAM,CAAQ;QAAU,SAAI,GAAJ,IAAI,CAAY;QAP5D,YAAO,GAAW,IAAI,CAAC;QACvB,UAAK,GAAW,KAAK,CAAC;QAEtB,UAAK,GAAe,IAAI,KAAK,EAAQ,CAAC;IAIwB,CAAC;IAE/D,qCAAY,GAAZ;QAAA,iBA4CC;QA3CA,IAAI,CAAC,IAAI,CAAC,IAAI,EAAE,CAAC,IAAI,CAAC;YACrB,KAAI,CAAC,IAAI;iBACH,KAAK,EAAE;iBACP,SAAS,CAAC,UAAA,QAAQ;gBAElB,IAAI,MAAM,GAAG,QAAQ,CAAC,WAAW,CAAC;gBAElC,EAAE,CAAA,CAAC,MAAM,IAAI,GAAG,CAAC,CACjB,CAAC;oBACA,KAAI,CAAC,OAAO,GAAG,KAAK,CAAC;oBACrB,KAAI,CAAC,KAAK,GAAG,IAAI,CAAC;gBACnB,CAAC;gBACD,IAAI,CAAA,CAAC;oBAEJ,GAAG,CAAA,CAAC,IAAI,CAAC,GAAG,CAAC,EAAE,CAAC,GAAG,QAAQ,CAAC,IAAI,CAAC,MAAM,EAAE,CAAC,EAAE,EAC5C,CAAC;wBACA,IAAI,IAAI,GAAQ,iBAAI,CAAC,MAAM,CAAC,QAAQ,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC,CAAC;wBAC9C,IAAI,IAAI,GAAQ,KAAI,CAAC,WAAW,CAAC,IAAI,CAAC,EAAE,CAAC,CAAC;wBAE1C,EAAE,CAAA,CAAC,IAAI,CAAC,CACR,CAAC;4BACA,EAAE,CAAA,CAAC,CAAC,IAAI,CAAC,MAAM,CAAC,IAAI,CAAC,CAAC,CACtB,CAAC;gCACA,2BAA2B;gCAC3B,IAAI,KAAK,GAAG,KAAI,CAAC,KAAK,CAAC,OAAO,CAAC,IAAI,CAAC,CAAC;gCACrC,KAAI,CAAC,KAAK,CAAC,MAAM,CAAC,KAAK,EAAE,CAAC,CAAC,CAAC;gCAC5B,KAAI,CAAC,KAAK,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC;4BACvB,CAAC;wBACF,CAAC;wBAAC,IAAI,CAAC,CAAC;4BACP,KAAI,CAAC,KAAK,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC;wBACvB,CAAC;oBAEF,CAAC;oBAED,KAAI,CAAC,KAAK,CAAC,IAAI,CAAC,UAAC,CAAC,EAAE,CAAC;wBACpB,MAAM,CAAC,CAAC,CAAC,IAAI,GAAG,CAAC,CAAC,IAAI,GAAG,CAAC,GAAG,CAAC,CAAC,CAAC;oBACjC,CAAC,CAAC,CAAC;oBAEH,KAAI,CAAC,OAAO,GAAG,KAAK,CAAC;gBACtB,CAAC;YAEF,CAAC,CAAC,CAAC;QACT,CAAC,CAAC,CAAC;IACJ,CAAC;IAED,iCAAQ,GAAR;QAAA,iBAOC;QANG,IAAI,CAAC,YAAY,EAAE,CAAC;QAEjB,IAAI,CAAC,YAAY,GAAG,uCAAkB,CAAC,MAAM,CAAC,IAAI,CAAC,CAAC,SAAS,CAAC;YAC7D,OAAO,CAAC,GAAG,CAAC,mBAAmB,CAAC,CAAC;YAC9B,KAAI,CAAC,YAAY,EAAE,CAAC;QACxB,CAAC,CAAC,CAAC;IACV,CAAC;IAED,oCAAW,GAAX;QACI,IAAI,CAAC,YAAY,CAAC,WAAW,EAAE,CAAC;IACpC,CAAC;IAED,gCAAO,GAAP,UAAQ,IAAU;QACb,IAAI,CAAC,MAAM,CAAC,QAAQ,CAAC,CAAC,OAAO,EAAE,IAAI,CAAC,EAAE,CAAC,CAAC,CAAC;IAC3C,CAAC;IAED,oCAAW,GAAX,UAAY,EAAS;QACvB,MAAM,CAAC,IAAI,CAAC,KAAK,CAAC,IAAI,CAAC,UAAC,CAAC,IAAM,MAAM,CAAC,CAAC,CAAC,EAAE,KAAK,EAAE,CAAA,CAAA,CAAC,CAAC,CAAC;IACrD,CAAC;IAEF,qBAAC;AAAD,CAAC,AA9ED,IA8EC;AA9EY,cAAc;IAN1B,gBAAS,CAAC;QACT,QAAQ,EAAE,WAAW;QACrB,WAAW,EAAE,wBAAwB;QACrC,SAAS,EAAE,CAAC,uBAAuB,CAAC;KACrC,CAAC;qCAW2B,eAAM,EAAe,0BAAW;GAThD,cAAc,CA8E1B;AA9EY,wCAAc"}
|
||||
@@ -0,0 +1,93 @@
|
||||
import { Component, OnInit, OnDestroy } from '@angular/core';
|
||||
import { DataService } from './../../services/data.service';
|
||||
import { Router } from '@angular/router';
|
||||
import { IntervalObservable } from 'rxjs/observable/IntervalObservable';
|
||||
import { Subscription } from 'rxjs/Subscription';
|
||||
|
||||
import { User } from "./../../classes/user.class";
|
||||
|
||||
@Component({
|
||||
selector: 'app-users',
|
||||
templateUrl: './users.component.html',
|
||||
styleUrls: ['./users.component.css']
|
||||
})
|
||||
|
||||
export class UsersComponent implements OnInit, OnDestroy {
|
||||
|
||||
loading:boolean = true;
|
||||
error:boolean = false;
|
||||
|
||||
users:Array<User> = new Array<User>();
|
||||
|
||||
public subscription:Subscription;
|
||||
|
||||
constructor(private router: Router, private data:DataService){}
|
||||
|
||||
getUsersData(): void {
|
||||
this.data.load().then(()=> {
|
||||
this.data
|
||||
.users()
|
||||
.subscribe(response => {
|
||||
|
||||
var status = response.status_code;
|
||||
|
||||
if(status != 200)
|
||||
{
|
||||
this.loading = false;
|
||||
this.error = true;
|
||||
}
|
||||
else{
|
||||
|
||||
for(let i = 0; i < response.data.length; i++)
|
||||
{
|
||||
var temp:User = User.toUser(response.data[i]);
|
||||
var user:User = this.getUserByID(temp.id);
|
||||
|
||||
if(user)
|
||||
{
|
||||
if(!temp.equals(user))
|
||||
{
|
||||
// push new one, delete old
|
||||
var index = this.users.indexOf(user);
|
||||
this.users.splice(index, 1);
|
||||
this.users.push(temp);
|
||||
}
|
||||
} else {
|
||||
this.users.push(temp);
|
||||
}
|
||||
|
||||
}
|
||||
|
||||
this.users.sort((a, b) => {
|
||||
return a.name > b.name ? 1 : -1;
|
||||
});
|
||||
|
||||
this.loading = false;
|
||||
}
|
||||
|
||||
});
|
||||
});
|
||||
}
|
||||
|
||||
ngOnInit(): void {
|
||||
this.getUsersData();
|
||||
|
||||
this.subscription = IntervalObservable.create(5000).subscribe(() => {
|
||||
console.log("Reloading data...");
|
||||
this.getUsersData();
|
||||
});
|
||||
}
|
||||
|
||||
ngOnDestroy(): void {
|
||||
this.subscription.unsubscribe();
|
||||
}
|
||||
|
||||
onClick(user: User): void {
|
||||
this.router.navigate(['/user', user.id]);
|
||||
}
|
||||
|
||||
getUserByID(id:number): User {
|
||||
return this.users.find((f) => {return f.id === id});
|
||||
}
|
||||
|
||||
}
|
||||
@@ -0,0 +1,108 @@
|
||||
"use strict";
|
||||
var __decorate = (this && this.__decorate) || function (decorators, target, key, desc) {
|
||||
var c = arguments.length, r = c < 3 ? target : desc === null ? desc = Object.getOwnPropertyDescriptor(target, key) : desc, d;
|
||||
if (typeof Reflect === "object" && typeof Reflect.decorate === "function") r = Reflect.decorate(decorators, target, key, desc);
|
||||
else for (var i = decorators.length - 1; i >= 0; i--) if (d = decorators[i]) r = (c < 3 ? d(r) : c > 3 ? d(target, key, r) : d(target, key)) || r;
|
||||
return c > 3 && r && Object.defineProperty(target, key, r), r;
|
||||
};
|
||||
var __metadata = (this && this.__metadata) || function (k, v) {
|
||||
if (typeof Reflect === "object" && typeof Reflect.metadata === "function") return Reflect.metadata(k, v);
|
||||
};
|
||||
var core_1 = require("@angular/core");
|
||||
require("rxjs/add/operator/map");
|
||||
var http_1 = require("@angular/http");
|
||||
var DataService = (function () {
|
||||
function DataService(http) {
|
||||
this.http = http;
|
||||
this.url = "";
|
||||
}
|
||||
DataService.prototype.load = function () {
|
||||
var _this = this;
|
||||
return new Promise(function (resolve, reject) {
|
||||
if (_this.url != "") {
|
||||
resolve();
|
||||
}
|
||||
else {
|
||||
_this.http.get('/app/config/api.json').subscribe(function (res) {
|
||||
var data = res.json();
|
||||
_this.url = data.protocol + data.hostname + ":" + data.port + "/" + data.api;
|
||||
console.log(_this.url);
|
||||
resolve();
|
||||
});
|
||||
}
|
||||
});
|
||||
};
|
||||
//FLIGHTS
|
||||
DataService.prototype.flight = function (id) {
|
||||
var flightdata = this.http.get(this.url + "/flights/" + id, { headers: this.getHeaders() }).map(function (r) { return r.json(); });
|
||||
return flightdata;
|
||||
};
|
||||
DataService.prototype.flights = function () {
|
||||
var flightdata = this.http.get(this.url + "/flights", { headers: this.getHeaders() }).map(function (r) { return r.json(); });
|
||||
return flightdata;
|
||||
};
|
||||
DataService.prototype.endFlight = function (id) {
|
||||
var flight = this.http.put(this.url + "/flights/" + id + "/stop", { headers: this.getHeaders() }).map(function (r) { return r.json(); });
|
||||
return flight;
|
||||
};
|
||||
//USERS
|
||||
DataService.prototype.user = function (id) {
|
||||
var usersdata = this.http.get(this.url + "/users/" + id, { headers: this.getHeaders() }).map(function (r) { return r.json(); });
|
||||
return usersdata;
|
||||
};
|
||||
DataService.prototype.users = function () {
|
||||
var usersdata = this.http.get(this.url + "/users", { headers: this.getHeaders() }).map(function (r) { return r.json(); });
|
||||
return usersdata;
|
||||
};
|
||||
DataService.prototype.postUser = function (user) {
|
||||
var userData = this.http.post(this.url + "/users", { name: user.name, cardId: user.card, role: user.role }, { headers: this.getHeaders() }).map(function (r) { return r.json(); });
|
||||
return userData;
|
||||
};
|
||||
DataService.prototype.editUser = function (user) {
|
||||
var userData = this.http.put(this.url + "/users/" + user.id, { name: user.name, cardId: user.card, role: user.role }, { headers: this.getHeaders() }).map(function (r) { return r.json(); });
|
||||
return userData;
|
||||
};
|
||||
//READERS
|
||||
DataService.prototype.reader = function (id) {
|
||||
var readerData = this.http.get(this.url + "/readers/" + id, { headers: this.getHeaders() }).map(function (r) { return r.json(); });
|
||||
return readerData;
|
||||
};
|
||||
DataService.prototype.readers = function () {
|
||||
var readersData = this.http.get(this.url + "/readers", { headers: this.getHeaders() }).map(function (r) { return r.json(); });
|
||||
return readersData;
|
||||
};
|
||||
DataService.prototype.editReader = function (reader) {
|
||||
var readerData = this.http.put(this.url + "/readers/" + reader.id, { readerId: reader.reader_id, planeId: reader.plane.id }, { headers: this.getHeaders() }).map(function (r) { return r.json(); });
|
||||
return readerData;
|
||||
};
|
||||
//PLANES
|
||||
DataService.prototype.plane = function (id) {
|
||||
var planeData = this.http.get(this.url + "/planes/" + id, { headers: this.getHeaders() }).map(function (r) { return r.json(); });
|
||||
return planeData;
|
||||
};
|
||||
DataService.prototype.planes = function () {
|
||||
var planesData = this.http.get(this.url + "/planes", { headers: this.getHeaders() }).map(function (r) { return r.json(); });
|
||||
return planesData;
|
||||
};
|
||||
DataService.prototype.postPlane = function (plane) {
|
||||
var userData = this.http.post(this.url + "/planes", { name: plane.name, registration: plane.registration, model: plane.model, comment: plane.comment }, { headers: this.getHeaders() }).map(function (r) { return r.json(); });
|
||||
return userData;
|
||||
};
|
||||
DataService.prototype.editPlane = function (plane) {
|
||||
var planeData = this.http.put(this.url + "/planes/" + plane.id, { name: plane.name, registration: plane.registration, model: plane.model, comment: plane.comment }, { headers: this.getHeaders() }).map(function (r) { return r.json(); });
|
||||
return planeData;
|
||||
};
|
||||
//OTHER
|
||||
DataService.prototype.getHeaders = function () {
|
||||
var headers = new http_1.Headers();
|
||||
headers.append('Accept', 'application/json');
|
||||
return headers;
|
||||
};
|
||||
return DataService;
|
||||
}());
|
||||
DataService = __decorate([
|
||||
core_1.Injectable(),
|
||||
__metadata("design:paramtypes", [http_1.Http])
|
||||
], DataService);
|
||||
exports.DataService = DataService;
|
||||
//# sourceMappingURL=data.service.js.map
|
||||
File diff suppressed because one or more lines are too long
@@ -0,0 +1,131 @@
|
||||
import { Injectable } from '@angular/core';
|
||||
import { Observable } from 'rxjs/Rx';
|
||||
import 'rxjs/add/operator/map'
|
||||
import { Http, Response, Headers } from '@angular/http';
|
||||
|
||||
import { Flight } from './../classes/flight.class';
|
||||
import { User } from './../classes/user.class';
|
||||
import { Reader } from './../classes/reader.class';
|
||||
import { Plane } from './../classes/plane.class';
|
||||
|
||||
@Injectable()
|
||||
export class DataService {
|
||||
|
||||
url:string = "";
|
||||
|
||||
constructor(private http : Http){
|
||||
}
|
||||
|
||||
load() : Promise<Object>
|
||||
{
|
||||
return new Promise((resolve, reject) => {
|
||||
|
||||
if(this.url != "")
|
||||
{
|
||||
resolve();
|
||||
}
|
||||
else
|
||||
{
|
||||
this.http.get('/app/config/api.json').subscribe((res)=>{
|
||||
var data = res.json();
|
||||
this.url = data.protocol + data.hostname + ":" + data.port + "/" + data.api;
|
||||
console.log(this.url);
|
||||
resolve();
|
||||
});
|
||||
}
|
||||
|
||||
});
|
||||
|
||||
}
|
||||
|
||||
|
||||
//FLIGHTS
|
||||
|
||||
flight(id:number): Observable<any> {
|
||||
let flightdata = this.http.get(`${this.url}/flights/${id}`, {headers: this.getHeaders()}).map(r => r.json());
|
||||
return flightdata;
|
||||
}
|
||||
|
||||
flights(): Observable<any> {
|
||||
let flightdata = this.http.get(`${this.url}/flights`, {headers: this.getHeaders()}).map(r => r.json());
|
||||
return flightdata;
|
||||
}
|
||||
|
||||
endFlight(id:number): Observable<any> {
|
||||
let flight = this.http.put(`${this.url}/flights/${id}/stop`, {headers: this.getHeaders()}).map(r => r.json());
|
||||
return flight
|
||||
}
|
||||
|
||||
|
||||
//USERS
|
||||
|
||||
user(id:number): Observable<any> {
|
||||
let usersdata = this.http.get(`${this.url}/users/${id}`, {headers: this.getHeaders()}).map(r => r.json());
|
||||
return usersdata;
|
||||
}
|
||||
|
||||
users(): Observable<any> {
|
||||
let usersdata = this.http.get(`${this.url}/users`, {headers: this.getHeaders()}).map(r => r.json());
|
||||
return usersdata;
|
||||
}
|
||||
|
||||
postUser(user:User): Observable<User>{
|
||||
let userData = this.http.post(`${this.url}/users`, {name:user.name, cardId: user.card, role:user.role}, {headers: this.getHeaders()}).map(r => r.json());
|
||||
return userData;
|
||||
}
|
||||
|
||||
editUser(user:User): Observable<User>{
|
||||
let userData = this.http.put(`${this.url}/users/${user.id}`, {name:user.name, cardId: user.card, role:user.role}, {headers: this.getHeaders()}).map(r => r.json());
|
||||
return userData;
|
||||
}
|
||||
|
||||
|
||||
//READERS
|
||||
|
||||
reader(id:number): Observable<any> {
|
||||
let readerData = this.http.get(`${this.url}/readers/${id}`, {headers: this.getHeaders()}).map(r => r.json());
|
||||
return readerData;
|
||||
}
|
||||
|
||||
readers(): Observable<any> {
|
||||
let readersData = this.http.get(`${this.url}/readers`, {headers: this.getHeaders()}).map(r => r.json());
|
||||
return readersData;
|
||||
}
|
||||
|
||||
editReader(reader:Reader): Observable<Reader>{
|
||||
let readerData = this.http.put(`${this.url}/readers/${reader.id}`, {readerId:reader.reader_id, planeId:reader.plane.id}, {headers: this.getHeaders()}).map(r => r.json());
|
||||
return readerData;
|
||||
}
|
||||
|
||||
|
||||
//PLANES
|
||||
|
||||
plane(id:number): Observable<any> {
|
||||
let planeData = this.http.get(`${this.url}/planes/${id}`, {headers: this.getHeaders()}).map(r => r.json());
|
||||
return planeData;
|
||||
}
|
||||
|
||||
planes(): Observable<any> {
|
||||
let planesData = this.http.get(`${this.url}/planes`, {headers: this.getHeaders()}).map(r => r.json());
|
||||
return planesData;
|
||||
}
|
||||
|
||||
postPlane(plane:Plane): Observable<Plane>{
|
||||
let userData = this.http.post(`${this.url}/planes`, {name:plane.name, registration: plane.registration, model:plane.model, comment:plane.comment}, {headers: this.getHeaders()}).map(r => r.json());
|
||||
return userData;
|
||||
}
|
||||
|
||||
editPlane(plane:Plane): Observable<Plane>{
|
||||
let planeData = this.http.put(`${this.url}/planes/${plane.id}`, {name:plane.name, registration: plane.registration, model:plane.model, comment:plane.comment}, {headers: this.getHeaders()}).map(r => r.json());
|
||||
return planeData;
|
||||
}
|
||||
|
||||
|
||||
//OTHER
|
||||
|
||||
private getHeaders(){
|
||||
let headers = new Headers();
|
||||
headers.append('Accept', 'application/json');
|
||||
return headers;
|
||||
}
|
||||
}
|
||||
BIN
Binary file not shown.
|
After Width: | Height: | Size: 5.3 KiB |
Binary file not shown.
@@ -0,0 +1,6 @@
|
||||
.ng-valid[required], .ng-valid.required {
|
||||
border-left: 5px solid #42A948; /* green */
|
||||
}
|
||||
.ng-invalid:not(form) {
|
||||
border-left: 5px solid #a94442; /* red */
|
||||
}
|
||||
+59
@@ -0,0 +1,59 @@
|
||||
<!DOCTYPE html>
|
||||
<html>
|
||||
<head>
|
||||
<title>F.R.A.U.D.S.</title>
|
||||
|
||||
<style>
|
||||
.loader {
|
||||
position: absolute;
|
||||
border: 16px solid #f3f3f3; /* Light grey */
|
||||
border-top: 16px solid #3498db; /* Blue */
|
||||
border-radius: 50%;
|
||||
width: 120px;
|
||||
height: 120px;
|
||||
top:50%;
|
||||
left:50%;
|
||||
margin-top: -60px;
|
||||
margin-left: -60px;
|
||||
animation: spin 2s linear infinite;
|
||||
transition: opacity .8s ease-in-out;
|
||||
}
|
||||
@keyframes spin {
|
||||
0% { transform: rotate(0deg); }
|
||||
100% { transform: rotate(360deg); }
|
||||
}
|
||||
</style>
|
||||
|
||||
<base href="/">
|
||||
<meta charset="UTF-8">
|
||||
<meta name="viewport" content="width=device-width, initial-scale=1">
|
||||
<link rel="stylesheet" href="styles.css">
|
||||
<link rel="stylesheet" href="forms.css">
|
||||
|
||||
<!-- Polyfill(s) for older browsers -->
|
||||
<script src="node_modules/core-js/client/shim.min.js"></script>
|
||||
|
||||
<script src="node_modules/zone.js/dist/zone.js"></script>
|
||||
<script src="node_modules/systemjs/dist/system.src.js"></script>
|
||||
|
||||
<script src="systemjs.config.js"></script>
|
||||
|
||||
<script>
|
||||
System.import('main.js').catch(function(err){ console.error(err); });
|
||||
</script>
|
||||
|
||||
<link rel="stylesheet" type="text/css" href="https://maxcdn.bootstrapcdn.com/bootstrap/3.3.7/css/bootstrap.min.css">
|
||||
<link rel="stylesheet" type="text/css" href="https://maxcdn.bootstrapcdn.com/font-awesome/4.7.0/css/font-awesome.min.css">
|
||||
|
||||
<script
|
||||
src="https://code.jquery.com/jquery-3.2.1.min.js"
|
||||
integrity="sha256-hwg4gsxgFZhOsEEamdOYGBf13FyQuiTwlAQgxVSNgt4="
|
||||
crossorigin="anonymous"></script>
|
||||
<script type="text/javascript" src="https://maxcdn.bootstrapcdn.com/bootstrap/3.3.7/js/bootstrap.min.js"></script>
|
||||
|
||||
</head>
|
||||
|
||||
<body>
|
||||
<app-root><div class="loader"></div></app-root>
|
||||
</body>
|
||||
</html>
|
||||
Some files were not shown because too many files have changed in this diff Show More
Reference in New Issue
Block a user