From f9349241f761233dedbef5a055d4f66a5ce9322a Mon Sep 17 00:00:00 2001 From: Supermjork Date: Tue, 26 Dec 2023 22:16:19 +0200 Subject: [PATCH] INSERTION WORKS LESGOO --- lib/arrival.dart | 22 +++++++++++++++++++++ lib/arrival_fetch.dart | 26 +----------------------- lib/arrival_post.dart | 45 +++++++++++------------------------------- lib/fetcher.dart | 1 + lib/input_data.dart | 25 +++++++++++++---------- 5 files changed, 51 insertions(+), 68 deletions(-) create mode 100644 lib/arrival.dart diff --git a/lib/arrival.dart b/lib/arrival.dart new file mode 100644 index 0000000..1c3278c --- /dev/null +++ b/lib/arrival.dart @@ -0,0 +1,22 @@ +class Arrival { + final String timeOfDay; + final int weekDay; + final int tramLine; + final bool direction; + + Arrival({ + required this.timeOfDay, + required this.weekDay, + required this.tramLine, + required this.direction, + }); + + factory Arrival.fromJson(Map json) { + return Arrival( + timeOfDay: json['time_of_day'] as String, + weekDay: json['week_day'] as int, + tramLine: json['tram_line'] as int, + direction: json['direction'] as bool, + ); + } +} diff --git a/lib/arrival_fetch.dart b/lib/arrival_fetch.dart index f8fd69c..6cccb8d 100644 --- a/lib/arrival_fetch.dart +++ b/lib/arrival_fetch.dart @@ -2,6 +2,7 @@ import 'dart:convert'; import 'dart:async'; import 'package:http/http.dart' as http; +import 'package:witl/arrival.dart'; Future> fetchArrivals() async { try { @@ -22,28 +23,3 @@ Future> fetchArrivals() async { throw Exception('Failed to fetch data: $error'); } } - - -class Arrival { - final String timeOfDay; - final int weekDay; - final int tramLine; - final bool direction; - - Arrival({ - required this.timeOfDay, - required this.weekDay, - required this.tramLine, - required this.direction, - }); - - factory Arrival.fromJson(Map json) { - return Arrival( - timeOfDay: json['time_of_day'] as String, - weekDay: json['week_day'] as int, - tramLine: json['tram_line'] as int, - direction: json['direction'] as bool, - ); - } -} - diff --git a/lib/arrival_post.dart b/lib/arrival_post.dart index f6ad2bb..eb5c6b7 100644 --- a/lib/arrival_post.dart +++ b/lib/arrival_post.dart @@ -1,46 +1,25 @@ import 'dart:convert'; import 'package:http/http.dart' as http; +import 'package:witl/arrival.dart'; -Future createAlbum(String title) async { +Future insertArrival(String date, int weekday, int line, bool direction) async { final response = await http.post( - Uri.parse('https://jsonplaceholder.typicode.com/albums'), - headers: { + Uri.parse('http://141.144.238.26:48502/arrivals/insert'), + headers: { 'Content-Type': 'application/json; charset=UTF-8', }, - body: jsonEncode({ - 'title': title, - }), + body: jsonEncode( { + 'time_of_day': date, + 'week_day': weekday, + 'tram_line': line, + 'direction': direction, + }) ); if (response.statusCode == 201) { - // If the server did return a 201 CREATED response, - // then parse the JSON. - return Album.fromJson(jsonDecode(response.body) as Map); + return Arrival.fromJson(jsonDecode(response.body) as Map); } else { - // If the server did not return a 201 CREATED response, - // then throw an exception. - throw Exception('Failed to create album.'); - } -} - -class Album { - final int id; - final String title; - - const Album({required this.id, required this.title}); - - factory Album.fromJson(Map json) { - return switch (json) { - { - 'id': int id, - 'title': String title, - } => - Album( - id: id, - title: title, - ), - _ => throw const FormatException('Failed to load album.'), - }; + throw Exception('Insertion Failure.'); } } \ No newline at end of file diff --git a/lib/fetcher.dart b/lib/fetcher.dart index 4837f43..94a3d26 100644 --- a/lib/fetcher.dart +++ b/lib/fetcher.dart @@ -1,4 +1,5 @@ import 'package:flutter/material.dart'; +import 'package:witl/arrival.dart'; import 'package:witl/arrival_fetch.dart'; class FetchAPI extends StatefulWidget { diff --git a/lib/input_data.dart b/lib/input_data.dart index e611882..6ee979b 100644 --- a/lib/input_data.dart +++ b/lib/input_data.dart @@ -1,5 +1,6 @@ import 'package:flutter/material.dart'; import 'package:intl/intl.dart'; +import 'package:witl/arrival_post.dart'; class InputData extends StatefulWidget { const InputData({super.key}); @@ -10,7 +11,7 @@ class InputData extends StatefulWidget { class _InputDataState extends State { late String selectedColor = 'Blue'; // Default color - late String selectedLine = '1'; // Default line + late int selectedLine = 1; // Default line late String selectedDirection = 'Raml'; // Default Station Direction // Date and Time Info, FULLY @@ -45,17 +46,17 @@ class _InputDataState extends State { Row( mainAxisAlignment: MainAxisAlignment.center, children: [ - DropdownButton( + DropdownButton( value: selectedLine, - items: ['1', '2'].map((String value) { - return DropdownMenuItem( + items: [1, 2].map((int value) { + return DropdownMenuItem( value: value, - child: Text(value), + child: Text(value.toString()), ); }).toList(), - onChanged: (String? newLine) { + onChanged: (int? newLine) { setState(() { - selectedLine = newLine ?? '1'; // Set a default value if newLine is null + selectedLine = newLine ?? 1; // Set a default value if newLine is null }); }, ), @@ -112,8 +113,11 @@ class _InputDataState extends State { InkWell( onTap: () { // Grab Data from Dropdowns - selectedColor; // - selectedLine; + selectedColor; // + + if (selectedColor == 'Yellow') { + selectedLine + 2; + } // Conforming by db standard of boolean bool payloadDirection; @@ -132,6 +136,7 @@ class _InputDataState extends State { // Send //lingy plez + insertArrival('${now.hour}:${now.minute}:${now.second}', now.weekday, selectedLine, payloadDirection); //prompting of submission showAlertDialog(context, selectedLine, selectedColor, selectedDirection, userFormattedString); @@ -177,7 +182,7 @@ class _InputDataState extends State { } } -showAlertDialog(BuildContext context, String chosenLine, String chosenColour, String chosenDir, String submissionDate) { +showAlertDialog(BuildContext context, int chosenLine, String chosenColour, String chosenDir, String submissionDate) { // set up the button Widget okButton = TextButton(