diff --git a/client/Nightr/src/app/app.component.css b/client/Nightr/src/app/app.component.css new file mode 100644 index 0000000..18496f5 --- /dev/null +++ b/client/Nightr/src/app/app.component.css @@ -0,0 +1,5 @@ +.float-btn-container + { + margin-top: 35%; + margin-left: 20%; + } diff --git a/client/Nightr/src/app/app.component.html b/client/Nightr/src/app/app.component.html index 7bf993d..97b4fff 100644 --- a/client/Nightr/src/app/app.component.html +++ b/client/Nightr/src/app/app.component.html @@ -1,3 +1,11 @@ - - + + + + + + + + + + diff --git a/client/Nightr/src/app/app.component.ts b/client/Nightr/src/app/app.component.ts index 0bb10d0..0758a86 100644 --- a/client/Nightr/src/app/app.component.ts +++ b/client/Nightr/src/app/app.component.ts @@ -1,9 +1,41 @@ 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"; @Component({ selector: "ns-app", 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 = (res).json.data.username; + }); + } +} diff --git a/client/Nightr/src/app/app.module.ts b/client/Nightr/src/app/app.module.ts index 132e264..aefc8e2 100644 --- a/client/Nightr/src/app/app.module.ts +++ b/client/Nightr/src/app/app.module.ts @@ -2,6 +2,8 @@ import { NgModule, NO_ERRORS_SCHEMA } from "@angular/core"; import { NativeScriptModule } from "nativescript-angular/nativescript.module"; 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'; // 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: [ NativeScriptModule, + NativeScriptHttpClientModule, ], declarations: [ AppComponent, MyLocationButtonComponent, + MyButtonComponent, ], providers: [], schemas: [ diff --git a/client/Nightr/src/app/component/my-button/my-button.component.css b/client/Nightr/src/app/component/my-button/my-button.component.css new file mode 100644 index 0000000..7e60ba7 --- /dev/null +++ b/client/Nightr/src/app/component/my-button/my-button.component.css @@ -0,0 +1,8 @@ +.myButtonComponent { + background-color: #30bcff; + border-radius: 100; + width: 200; + height: 200; + text-align: center; + vertical-align: middle; +} diff --git a/client/Nightr/src/app/component/my-button/my-button.component.html b/client/Nightr/src/app/component/my-button/my-button.component.html new file mode 100644 index 0000000..a0bcea7 --- /dev/null +++ b/client/Nightr/src/app/component/my-button/my-button.component.html @@ -0,0 +1,3 @@ + + + diff --git a/client/Nightr/src/app/component/my-button/my-button.component.ts b/client/Nightr/src/app/component/my-button/my-button.component.ts new file mode 100644 index 0000000..01fb236 --- /dev/null +++ b/client/Nightr/src/app/component/my-button/my-button.component.ts @@ -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 = new EventEmitter(); + @Input() text: string; + + constructor() { } + + ngOnInit() { + } + + public onTap(args: GestureEventData): any { + this.tap.emit(args); + } +} diff --git a/client/Nightr/src/app/services/my-http-get.service.ts b/client/Nightr/src/app/services/my-http-get.service.ts new file mode 100644 index 0000000..e26ecc4 --- /dev/null +++ b/client/Nightr/src/app/services/my-http-get.service.ts @@ -0,0 +1,9 @@ +import { Injectable } from '@angular/core'; + +@Injectable({ + providedIn: 'root' +}) +export class MyHttpGetService { + + constructor() { } +} diff --git a/client/Nightr/src/app/services/my-http-post-service.ts b/client/Nightr/src/app/services/my-http-post-service.ts new file mode 100644 index 0000000..8dca261 --- /dev/null +++ b/client/Nightr/src/app/services/my-http-post-service.ts @@ -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; + } +} diff --git a/client/Nightr/src/main.js b/client/Nightr/src/main.js index d07591d..faf70ce 100644 --- a/client/Nightr/src/main.js +++ b/client/Nightr/src/main.js @@ -11,4 +11,4 @@ var app_module_1 = require("./app/app.module"); // so we provide a wrapper platform object, platformNativeScriptDynamic, // that sets up a NativeScript application and can bootstrap the Angular framework. platform_1.platformNativeScriptDynamic().bootstrapModule(app_module_1.AppModule); -//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoibWFpbi5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIm1haW4udHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6Ijs7QUFBQSwwR0FBMEc7QUFDMUcsMERBQTRFO0FBRTVFLCtDQUE2QztBQUU3QyxnRkFBZ0Y7QUFDaEYsMEVBQTBFO0FBQzFFLHNFQUFzRTtBQUN0RSx5REFBeUQ7QUFDekQseUVBQXlFO0FBQ3pFLHdFQUF3RTtBQUN4RSxtRkFBbUY7QUFDbkYsc0NBQTJCLEVBQUUsQ0FBQyxlQUFlLENBQUMsc0JBQVMsQ0FBQyxDQUFDIiwic291cmNlc0NvbnRlbnQiOlsiLy8gdGhpcyBpbXBvcnQgc2hvdWxkIGJlIGZpcnN0IGluIG9yZGVyIHRvIGxvYWQgc29tZSByZXF1aXJlZCBzZXR0aW5ncyAobGlrZSBnbG9iYWxzIGFuZCByZWZsZWN0LW1ldGFkYXRhKVxuaW1wb3J0IHsgcGxhdGZvcm1OYXRpdmVTY3JpcHREeW5hbWljIH0gZnJvbSBcIm5hdGl2ZXNjcmlwdC1hbmd1bGFyL3BsYXRmb3JtXCI7XG5cbmltcG9ydCB7IEFwcE1vZHVsZSB9IGZyb20gXCIuL2FwcC9hcHAubW9kdWxlXCI7XG5cbi8vIEEgdHJhZGl0aW9uYWwgTmF0aXZlU2NyaXB0IGFwcGxpY2F0aW9uIHN0YXJ0cyBieSBpbml0aWFsaXppbmcgZ2xvYmFsIG9iamVjdHMsXG4vLyBzZXR0aW5nIHVwIGdsb2JhbCBDU1MgcnVsZXMsIGNyZWF0aW5nLCBhbmQgbmF2aWdhdGluZyB0byB0aGUgbWFpbiBwYWdlLlxuLy8gQW5ndWxhciBhcHBsaWNhdGlvbnMgbmVlZCB0byB0YWtlIGNhcmUgb2YgdGhlaXIgb3duIGluaXRpYWxpemF0aW9uOlxuLy8gbW9kdWxlcywgY29tcG9uZW50cywgZGlyZWN0aXZlcywgcm91dGVzLCBESSBwcm92aWRlcnMuXG4vLyBBIE5hdGl2ZVNjcmlwdCBBbmd1bGFyIGFwcCBuZWVkcyB0byBtYWtlIGJvdGggcGFyYWRpZ21zIHdvcmsgdG9nZXRoZXIsXG4vLyBzbyB3ZSBwcm92aWRlIGEgd3JhcHBlciBwbGF0Zm9ybSBvYmplY3QsIHBsYXRmb3JtTmF0aXZlU2NyaXB0RHluYW1pYyxcbi8vIHRoYXQgc2V0cyB1cCBhIE5hdGl2ZVNjcmlwdCBhcHBsaWNhdGlvbiBhbmQgY2FuIGJvb3RzdHJhcCB0aGUgQW5ndWxhciBmcmFtZXdvcmsuXG5wbGF0Zm9ybU5hdGl2ZVNjcmlwdER5bmFtaWMoKS5ib290c3RyYXBNb2R1bGUoQXBwTW9kdWxlKTtcbiJdfQ== \ No newline at end of file +//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoibWFpbi5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIm1haW4udHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6Ijs7QUFBQSwwR0FBMEc7QUFDMUcsMERBQTRFO0FBRTVFLCtDQUE2QztBQUU3QyxnRkFBZ0Y7QUFDaEYsMEVBQTBFO0FBQzFFLHNFQUFzRTtBQUN0RSx5REFBeUQ7QUFDekQseUVBQXlFO0FBQ3pFLHdFQUF3RTtBQUN4RSxtRkFBbUY7QUFDbkYsc0NBQTJCLEVBQUUsQ0FBQyxlQUFlLENBQUMsc0JBQVMsQ0FBQyxDQUFDIiwic291cmNlc0NvbnRlbnQiOlsiLy8gdGhpcyBpbXBvcnQgc2hvdWxkIGJlIGZpcnN0IGluIG9yZGVyIHRvIGxvYWQgc29tZSByZXF1aXJlZCBzZXR0aW5ncyAobGlrZSBnbG9iYWxzIGFuZCByZWZsZWN0LW1ldGFkYXRhKVxyXG5pbXBvcnQgeyBwbGF0Zm9ybU5hdGl2ZVNjcmlwdER5bmFtaWMgfSBmcm9tIFwibmF0aXZlc2NyaXB0LWFuZ3VsYXIvcGxhdGZvcm1cIjtcclxuXHJcbmltcG9ydCB7IEFwcE1vZHVsZSB9IGZyb20gXCIuL2FwcC9hcHAubW9kdWxlXCI7XHJcblxyXG4vLyBBIHRyYWRpdGlvbmFsIE5hdGl2ZVNjcmlwdCBhcHBsaWNhdGlvbiBzdGFydHMgYnkgaW5pdGlhbGl6aW5nIGdsb2JhbCBvYmplY3RzLFxyXG4vLyBzZXR0aW5nIHVwIGdsb2JhbCBDU1MgcnVsZXMsIGNyZWF0aW5nLCBhbmQgbmF2aWdhdGluZyB0byB0aGUgbWFpbiBwYWdlLlxyXG4vLyBBbmd1bGFyIGFwcGxpY2F0aW9ucyBuZWVkIHRvIHRha2UgY2FyZSBvZiB0aGVpciBvd24gaW5pdGlhbGl6YXRpb246XHJcbi8vIG1vZHVsZXMsIGNvbXBvbmVudHMsIGRpcmVjdGl2ZXMsIHJvdXRlcywgREkgcHJvdmlkZXJzLlxyXG4vLyBBIE5hdGl2ZVNjcmlwdCBBbmd1bGFyIGFwcCBuZWVkcyB0byBtYWtlIGJvdGggcGFyYWRpZ21zIHdvcmsgdG9nZXRoZXIsXHJcbi8vIHNvIHdlIHByb3ZpZGUgYSB3cmFwcGVyIHBsYXRmb3JtIG9iamVjdCwgcGxhdGZvcm1OYXRpdmVTY3JpcHREeW5hbWljLFxyXG4vLyB0aGF0IHNldHMgdXAgYSBOYXRpdmVTY3JpcHQgYXBwbGljYXRpb24gYW5kIGNhbiBib290c3RyYXAgdGhlIEFuZ3VsYXIgZnJhbWV3b3JrLlxyXG5wbGF0Zm9ybU5hdGl2ZVNjcmlwdER5bmFtaWMoKS5ib290c3RyYXBNb2R1bGUoQXBwTW9kdWxlKTtcclxuIl19 \ No newline at end of file diff --git a/server/nightr/app.py b/server/nightr/app.py index 3f8b923..f1f534e 100644 --- a/server/nightr/app.py +++ b/server/nightr/app.py @@ -1,4 +1,5 @@ import inspect +import json import statistics import timeit from dataclasses import asdict @@ -7,7 +8,7 @@ from logging import DEBUG from typing import List 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 .util import Context @@ -33,8 +34,10 @@ strategies = { @app.route("/", methods=["GET", "POST"]) def probabilities(): - phone_data = {} # TODO: get from POST request + phone_data = request.get_json(force=True) context = Context(**phone_data) + logger.debug("phone_data:\n%s", json.dumps(phone_data, indent=2)) + logger.debug("Context: %s", context) predictions: List[dict] = [] for name, strategy in strategies.items():