Initial commit

This commit is contained in:
Jonas Braus
2024-11-28 15:49:21 +01:00
commit 402ec0b793
21 changed files with 1444 additions and 0 deletions
+104
View File
@@ -0,0 +1,104 @@
import 'package:flutter/material.dart';
import 'package:mensaappbackend/modules/ratingCard.dart';
import 'package:mensaappbackend/providers/pageProvider.dart';
import 'package:provider/provider.dart';
import 'package:supabase_flutter/supabase_flutter.dart';
class PageDashboard extends StatelessWidget {
const PageDashboard({super.key});
Future<List<dynamic>> requestSupaBase7Days() async {
var supabase = Supabase.instance.client;
var result = await supabase.from("ratings_database").select("ratings");
return result;
}
final ratingNames = const {
"page1": {"title": "Essen", "q1": "Geschmack", "q2": "Qualität"},
"page2": {"title": "Service", "q1": "Undefined", "q2": "Undefined"},
"page3": {"title": "Wünsche", "q1": "Undefined", "q2": "Undefined"}
};
@override
Widget build(BuildContext context) {
return Scaffold(
appBar: AppBar(
backgroundColor: Theme.of(context).colorScheme.primary,
title: Text(
"Dashboard - Bewertungen",
style: TextStyle(color: Theme.of(context).colorScheme.onPrimary),
),
centerTitle: false,
actions: [
TextButton.icon(
onPressed: () {
var supabase = Supabase.instance.client;
supabase.auth.signOut();
Provider.of<PageProvider>(context, listen: false)
.setSelectedPage(0);
},
label: Text(
"Logout",
style: TextStyle(color: Theme.of(context).colorScheme.onPrimary),
),
icon: Icon(
Icons.logout,
color: Theme.of(context).colorScheme.onPrimary,
),
)
],
),
body: FutureBuilder(
future: requestSupaBase7Days(),
builder: (context, snapshot) {
var data = snapshot.data;
List<Widget> cards = [];
if (data == null) {
return Center();
}
for (var map in data) {
var ratings = map["ratings"];
for (var key in ratings.keys) {
var rating = ratings[key];
if (rating["q1"] != 0) {
cards.add(RatingCard(
rating1: rating["q1"],
rating2: rating["q2"],
text: rating["t1"],
title: ratingNames[key]!["title"]!,
rating1Title: ratingNames[key]!["q1"]!,
rating2Title: ratingNames[key]!["q2"]!,
));
}
}
}
return SingleChildScrollView(
child: Center(
child: Column(
crossAxisAlignment: CrossAxisAlignment.center,
children: [
SizedBox(
height: 20,
),
Text(
"Letze 7 Tage:",
style: TextStyle(fontSize: 25),
),
SizedBox(
height: 20,
),
for (var card in cards) card
],
),
),
);
},
),
);
}
}