Merge branch 'master' of https://gitfub.space/caspervk/nightr
This commit is contained in:
commit
7147e1734b
5
client/Nightr/src/app/app.component.css
Normal file
5
client/Nightr/src/app/app.component.css
Normal file
|
@ -0,0 +1,5 @@
|
||||||
|
.float-btn-container
|
||||||
|
{
|
||||||
|
margin-top: 35%;
|
||||||
|
margin-left: 20%;
|
||||||
|
}
|
|
@ -1,3 +1,11 @@
|
||||||
<StackLayout>
|
<AbsoluteLayout>
|
||||||
<ns-locationButton></ns-locationButton>
|
<ns-side-drawer></ns-side-drawer>
|
||||||
|
|
||||||
|
<StackLayout class="float-btn-container">
|
||||||
|
<ns-my-button (tap)=onTap($event) text="Nightr"></ns-my-button>
|
||||||
</StackLayout>
|
</StackLayout>
|
||||||
|
|
||||||
|
<ns-locationButton></ns-locationButton>
|
||||||
|
|
||||||
|
</AbsoluteLayout>
|
||||||
|
|
||||||
|
|
|
@ -1,9 +1,41 @@
|
||||||
import { Component } from "@angular/core";
|
import { Component } from "@angular/core";
|
||||||
|
import * as dialogs from "tns-core-modules/ui/dialogs";
|
||||||
|
import { MyHttpPostService } from './services/my-http-post-service'
|
||||||
|
import { TouchGestureEventData, GestureEventData } from 'tns-core-modules/ui/gestures'
|
||||||
import { isEnabled, enableLocationRequest, getCurrentLocation, watchLocation, distance, clearWatch } from "nativescript-geolocation";
|
import { isEnabled, enableLocationRequest, getCurrentLocation, watchLocation, distance, clearWatch } from "nativescript-geolocation";
|
||||||
|
|
||||||
@Component({
|
@Component({
|
||||||
selector: "ns-app",
|
selector: "ns-app",
|
||||||
moduleId: module.id,
|
moduleId: module.id,
|
||||||
templateUrl: "./app.component.html"
|
templateUrl: "./app.component.html",
|
||||||
|
styleUrls: ['./app.component.css'],
|
||||||
|
providers: [MyHttpPostService]
|
||||||
})
|
})
|
||||||
export class AppComponent { }
|
export class AppComponent {
|
||||||
|
public user: string = "";
|
||||||
|
public pass: string = "";
|
||||||
|
returnMessage: string = "";
|
||||||
|
|
||||||
|
constructor(private myHttpPostSerivce: MyHttpPostService) { }
|
||||||
|
|
||||||
|
public onTap(args: GestureEventData): any {
|
||||||
|
this.submit();
|
||||||
|
dialogs.confirm("Should be result").then(result => {
|
||||||
|
console.log("Dialog result: " + result);
|
||||||
|
});
|
||||||
|
}
|
||||||
|
|
||||||
|
public submit(): void {
|
||||||
|
this.makePostRequest();
|
||||||
|
}
|
||||||
|
|
||||||
|
private makePostRequest(): void {
|
||||||
|
console.log('Reached makepostRequest');
|
||||||
|
this.myHttpPostSerivce
|
||||||
|
.postData({ username: this.user, password: this.pass })
|
||||||
|
.subscribe(res => {
|
||||||
|
console.log('This is res', res);
|
||||||
|
this.returnMessage = (<any>res).json.data.username;
|
||||||
|
});
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
|
@ -2,6 +2,8 @@ import { NgModule, NO_ERRORS_SCHEMA } from "@angular/core";
|
||||||
import { NativeScriptModule } from "nativescript-angular/nativescript.module";
|
import { NativeScriptModule } from "nativescript-angular/nativescript.module";
|
||||||
|
|
||||||
import { AppComponent } from "./app.component";
|
import { AppComponent } from "./app.component";
|
||||||
|
import { MyButtonComponent } from './component/my-button/my-button.component';
|
||||||
|
import { NativeScriptHttpClientModule } from "nativescript-angular/http-client";
|
||||||
import { MyLocationButtonComponent } from './component/locationButton/locationButton.component';
|
import { MyLocationButtonComponent } from './component/locationButton/locationButton.component';
|
||||||
|
|
||||||
// Uncomment and add to NgModule imports if you need to use two-way binding
|
// Uncomment and add to NgModule imports if you need to use two-way binding
|
||||||
|
@ -16,10 +18,12 @@ import { MyLocationButtonComponent } from './component/locationButton/locationBu
|
||||||
],
|
],
|
||||||
imports: [
|
imports: [
|
||||||
NativeScriptModule,
|
NativeScriptModule,
|
||||||
|
NativeScriptHttpClientModule,
|
||||||
],
|
],
|
||||||
declarations: [
|
declarations: [
|
||||||
AppComponent,
|
AppComponent,
|
||||||
MyLocationButtonComponent,
|
MyLocationButtonComponent,
|
||||||
|
MyButtonComponent,
|
||||||
],
|
],
|
||||||
providers: [],
|
providers: [],
|
||||||
schemas: [
|
schemas: [
|
||||||
|
|
|
@ -0,0 +1,8 @@
|
||||||
|
.myButtonComponent {
|
||||||
|
background-color: #30bcff;
|
||||||
|
border-radius: 100;
|
||||||
|
width: 200;
|
||||||
|
height: 200;
|
||||||
|
text-align: center;
|
||||||
|
vertical-align: middle;
|
||||||
|
}
|
|
@ -0,0 +1,3 @@
|
||||||
|
<StackLayout>
|
||||||
|
<Button [text]="text" class="btn btn-primary myButtonComponent" (tap)="onTap($event)"></Button>
|
||||||
|
</StackLayout>
|
|
@ -0,0 +1,23 @@
|
||||||
|
import { Component, Input, OnInit, Output, EventEmitter } from '@angular/core';
|
||||||
|
import { TouchGestureEventData, GestureEventData } from 'tns-core-modules/ui/gestures'
|
||||||
|
|
||||||
|
@Component({
|
||||||
|
selector: 'ns-my-button',
|
||||||
|
templateUrl: './my-button.component.html',
|
||||||
|
styleUrls: ['./my-button.component.css'],
|
||||||
|
moduleId: module.id,
|
||||||
|
})
|
||||||
|
export class MyButtonComponent implements OnInit {
|
||||||
|
|
||||||
|
@Output() tap: EventEmitter<GestureEventData> = new EventEmitter<GestureEventData>();
|
||||||
|
@Input() text: string;
|
||||||
|
|
||||||
|
constructor() { }
|
||||||
|
|
||||||
|
ngOnInit() {
|
||||||
|
}
|
||||||
|
|
||||||
|
public onTap(args: GestureEventData): any {
|
||||||
|
this.tap.emit(args);
|
||||||
|
}
|
||||||
|
}
|
9
client/Nightr/src/app/services/my-http-get.service.ts
Normal file
9
client/Nightr/src/app/services/my-http-get.service.ts
Normal file
|
@ -0,0 +1,9 @@
|
||||||
|
import { Injectable } from '@angular/core';
|
||||||
|
|
||||||
|
@Injectable({
|
||||||
|
providedIn: 'root'
|
||||||
|
})
|
||||||
|
export class MyHttpGetService {
|
||||||
|
|
||||||
|
constructor() { }
|
||||||
|
}
|
24
client/Nightr/src/app/services/my-http-post-service.ts
Normal file
24
client/Nightr/src/app/services/my-http-post-service.ts
Normal file
|
@ -0,0 +1,24 @@
|
||||||
|
import { Injectable } from "@angular/core";
|
||||||
|
import { HttpClient, HttpHeaders } from "@angular/common/http";
|
||||||
|
|
||||||
|
@Injectable({
|
||||||
|
providedIn: 'root'
|
||||||
|
})
|
||||||
|
export class MyHttpPostService {
|
||||||
|
private serverUrl = "https://nightr.caspervk.net";
|
||||||
|
|
||||||
|
constructor(private http: HttpClient) { }
|
||||||
|
|
||||||
|
postData(data: any) {
|
||||||
|
console.log('logged data is', data);
|
||||||
|
let options = this.createRequestOptions();
|
||||||
|
return this.http.post(this.serverUrl, { data }, { headers: options });
|
||||||
|
}
|
||||||
|
|
||||||
|
private createRequestOptions() {
|
||||||
|
let headers = new HttpHeaders({
|
||||||
|
"Content-Type": "application/json"
|
||||||
|
});
|
||||||
|
return headers;
|
||||||
|
}
|
||||||
|
}
|
|
@ -11,4 +11,4 @@ var app_module_1 = require("./app/app.module");
|
||||||
// so we provide a wrapper platform object, platformNativeScriptDynamic,
|
// so we provide a wrapper platform object, platformNativeScriptDynamic,
|
||||||
// that sets up a NativeScript application and can bootstrap the Angular framework.
|
// that sets up a NativeScript application and can bootstrap the Angular framework.
|
||||||
platform_1.platformNativeScriptDynamic().bootstrapModule(app_module_1.AppModule);
|
platform_1.platformNativeScriptDynamic().bootstrapModule(app_module_1.AppModule);
|
||||||
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoibWFpbi5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIm1haW4udHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6Ijs7QUFBQSwwR0FBMEc7QUFDMUcsMERBQTRFO0FBRTVFLCtDQUE2QztBQUU3QyxnRkFBZ0Y7QUFDaEYsMEVBQTBFO0FBQzFFLHNFQUFzRTtBQUN0RSx5REFBeUQ7QUFDekQseUVBQXlFO0FBQ3pFLHdFQUF3RTtBQUN4RSxtRkFBbUY7QUFDbkYsc0NBQTJCLEVBQUUsQ0FBQyxlQUFlLENBQUMsc0JBQVMsQ0FBQyxDQUFDIiwic291cmNlc0NvbnRlbnQiOlsiLy8gdGhpcyBpbXBvcnQgc2hvdWxkIGJlIGZpcnN0IGluIG9yZGVyIHRvIGxvYWQgc29tZSByZXF1aXJlZCBzZXR0aW5ncyAobGlrZSBnbG9iYWxzIGFuZCByZWZsZWN0LW1ldGFkYXRhKVxuaW1wb3J0IHsgcGxhdGZvcm1OYXRpdmVTY3JpcHREeW5hbWljIH0gZnJvbSBcIm5hdGl2ZXNjcmlwdC1hbmd1bGFyL3BsYXRmb3JtXCI7XG5cbmltcG9ydCB7IEFwcE1vZHVsZSB9IGZyb20gXCIuL2FwcC9hcHAubW9kdWxlXCI7XG5cbi8vIEEgdHJhZGl0aW9uYWwgTmF0aXZlU2NyaXB0IGFwcGxpY2F0aW9uIHN0YXJ0cyBieSBpbml0aWFsaXppbmcgZ2xvYmFsIG9iamVjdHMsXG4vLyBzZXR0aW5nIHVwIGdsb2JhbCBDU1MgcnVsZXMsIGNyZWF0aW5nLCBhbmQgbmF2aWdhdGluZyB0byB0aGUgbWFpbiBwYWdlLlxuLy8gQW5ndWxhciBhcHBsaWNhdGlvbnMgbmVlZCB0byB0YWtlIGNhcmUgb2YgdGhlaXIgb3duIGluaXRpYWxpemF0aW9uOlxuLy8gbW9kdWxlcywgY29tcG9uZW50cywgZGlyZWN0aXZlcywgcm91dGVzLCBESSBwcm92aWRlcnMuXG4vLyBBIE5hdGl2ZVNjcmlwdCBBbmd1bGFyIGFwcCBuZWVkcyB0byBtYWtlIGJvdGggcGFyYWRpZ21zIHdvcmsgdG9nZXRoZXIsXG4vLyBzbyB3ZSBwcm92aWRlIGEgd3JhcHBlciBwbGF0Zm9ybSBvYmplY3QsIHBsYXRmb3JtTmF0aXZlU2NyaXB0RHluYW1pYyxcbi8vIHRoYXQgc2V0cyB1cCBhIE5hdGl2ZVNjcmlwdCBhcHBsaWNhdGlvbiBhbmQgY2FuIGJvb3RzdHJhcCB0aGUgQW5ndWxhciBmcmFtZXdvcmsuXG5wbGF0Zm9ybU5hdGl2ZVNjcmlwdER5bmFtaWMoKS5ib290c3RyYXBNb2R1bGUoQXBwTW9kdWxlKTtcbiJdfQ==
|
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoibWFpbi5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIm1haW4udHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6Ijs7QUFBQSwwR0FBMEc7QUFDMUcsMERBQTRFO0FBRTVFLCtDQUE2QztBQUU3QyxnRkFBZ0Y7QUFDaEYsMEVBQTBFO0FBQzFFLHNFQUFzRTtBQUN0RSx5REFBeUQ7QUFDekQseUVBQXlFO0FBQ3pFLHdFQUF3RTtBQUN4RSxtRkFBbUY7QUFDbkYsc0NBQTJCLEVBQUUsQ0FBQyxlQUFlLENBQUMsc0JBQVMsQ0FBQyxDQUFDIiwic291cmNlc0NvbnRlbnQiOlsiLy8gdGhpcyBpbXBvcnQgc2hvdWxkIGJlIGZpcnN0IGluIG9yZGVyIHRvIGxvYWQgc29tZSByZXF1aXJlZCBzZXR0aW5ncyAobGlrZSBnbG9iYWxzIGFuZCByZWZsZWN0LW1ldGFkYXRhKVxyXG5pbXBvcnQgeyBwbGF0Zm9ybU5hdGl2ZVNjcmlwdER5bmFtaWMgfSBmcm9tIFwibmF0aXZlc2NyaXB0LWFuZ3VsYXIvcGxhdGZvcm1cIjtcclxuXHJcbmltcG9ydCB7IEFwcE1vZHVsZSB9IGZyb20gXCIuL2FwcC9hcHAubW9kdWxlXCI7XHJcblxyXG4vLyBBIHRyYWRpdGlvbmFsIE5hdGl2ZVNjcmlwdCBhcHBsaWNhdGlvbiBzdGFydHMgYnkgaW5pdGlhbGl6aW5nIGdsb2JhbCBvYmplY3RzLFxyXG4vLyBzZXR0aW5nIHVwIGdsb2JhbCBDU1MgcnVsZXMsIGNyZWF0aW5nLCBhbmQgbmF2aWdhdGluZyB0byB0aGUgbWFpbiBwYWdlLlxyXG4vLyBBbmd1bGFyIGFwcGxpY2F0aW9ucyBuZWVkIHRvIHRha2UgY2FyZSBvZiB0aGVpciBvd24gaW5pdGlhbGl6YXRpb246XHJcbi8vIG1vZHVsZXMsIGNvbXBvbmVudHMsIGRpcmVjdGl2ZXMsIHJvdXRlcywgREkgcHJvdmlkZXJzLlxyXG4vLyBBIE5hdGl2ZVNjcmlwdCBBbmd1bGFyIGFwcCBuZWVkcyB0byBtYWtlIGJvdGggcGFyYWRpZ21zIHdvcmsgdG9nZXRoZXIsXHJcbi8vIHNvIHdlIHByb3ZpZGUgYSB3cmFwcGVyIHBsYXRmb3JtIG9iamVjdCwgcGxhdGZvcm1OYXRpdmVTY3JpcHREeW5hbWljLFxyXG4vLyB0aGF0IHNldHMgdXAgYSBOYXRpdmVTY3JpcHQgYXBwbGljYXRpb24gYW5kIGNhbiBib290c3RyYXAgdGhlIEFuZ3VsYXIgZnJhbWV3b3JrLlxyXG5wbGF0Zm9ybU5hdGl2ZVNjcmlwdER5bmFtaWMoKS5ib290c3RyYXBNb2R1bGUoQXBwTW9kdWxlKTtcclxuIl19
|
|
@ -1,4 +1,5 @@
|
||||||
import inspect
|
import inspect
|
||||||
|
import json
|
||||||
import statistics
|
import statistics
|
||||||
import timeit
|
import timeit
|
||||||
from dataclasses import asdict
|
from dataclasses import asdict
|
||||||
|
@ -7,7 +8,7 @@ from logging import DEBUG
|
||||||
from typing import List
|
from typing import List
|
||||||
|
|
||||||
import requests_cache
|
import requests_cache
|
||||||
from flask import Flask, jsonify, logging
|
from flask import Flask, jsonify, logging, request
|
||||||
|
|
||||||
from .strategies import miloStrats, iss, cars_in_traffic, tide_strat, upstairs_neighbour
|
from .strategies import miloStrats, iss, cars_in_traffic, tide_strat, upstairs_neighbour
|
||||||
from .util import Context
|
from .util import Context
|
||||||
|
@ -33,8 +34,10 @@ strategies = {
|
||||||
|
|
||||||
@app.route("/", methods=["GET", "POST"])
|
@app.route("/", methods=["GET", "POST"])
|
||||||
def probabilities():
|
def probabilities():
|
||||||
phone_data = {} # TODO: get from POST request
|
phone_data = request.get_json(force=True)
|
||||||
context = Context(**phone_data)
|
context = Context(**phone_data)
|
||||||
|
logger.debug("phone_data:\n%s", json.dumps(phone_data, indent=2))
|
||||||
|
logger.debug("Context: %s", context)
|
||||||
|
|
||||||
predictions: List[dict] = []
|
predictions: List[dict] = []
|
||||||
for name, strategy in strategies.items():
|
for name, strategy in strategies.items():
|
||||||
|
|
Loading…
Reference in New Issue
Block a user