From ffd696053a32dbd9f46918f985760fb93450e688 Mon Sep 17 00:00:00 2001
From: Joshua Burman <jburman@meazurelearning.com>
Date: Mon, 23 Dec 2024 23:46:34 -0500
Subject: [PATCH] Activity category and type widgets

---
 lib/widgets/activity_view.dart            | 19 +++++++--
 lib/widgets/activity_view_categories.dart | 48 ++++++++++-------------
 lib/widgets/activity_view_types.dart      | 29 ++++++++++++++
 3 files changed, 65 insertions(+), 31 deletions(-)
 create mode 100644 lib/widgets/activity_view_types.dart

diff --git a/lib/widgets/activity_view.dart b/lib/widgets/activity_view.dart
index eeff698..6d13c3a 100644
--- a/lib/widgets/activity_view.dart
+++ b/lib/widgets/activity_view.dart
@@ -7,6 +7,7 @@ import 'package:sendtrain/models/activity_timer_model.dart';
 import 'package:sendtrain/widgets/activity_action_view.dart';
 import 'package:sendtrain/widgets/activity_view_categories.dart';
 import 'package:sendtrain/widgets/activity_view_media.dart';
+import 'package:sendtrain/widgets/activity_view_types.dart';
 
 class ActivityView extends StatefulWidget {
   const ActivityView(
@@ -66,15 +67,25 @@ class _ActivityViewState extends State<ActivityView> {
                   maxLines: 1,
                   style: const TextStyle(
                       fontSize: 25, fontWeight: FontWeight.bold),
-                  activityModel.title)),
-          ActivityViewCategories(categories: activityModel.categories),
+                  activity.title)),
+          Padding(
+              padding: const EdgeInsets.fromLTRB(10, 0, 0, 10),
+              child: Flex(direction: Axis.horizontal, children: [
+                ActivityViewCategories(categories: [activity.category]),
+                ActivityViewTypes(types: [activity.type])
+              ])),
           Padding(
               padding: const EdgeInsets.only(
-                  top: 0, bottom: 20, left: 15, right: 15),
+                  top: 0, bottom: 10, left: 15, right: 15),
               child: Text(
                   textAlign: TextAlign.left,
                   style: const TextStyle(fontSize: 15),
-                  activityModel.description)),
+                  activity.description)),
+          const Padding(
+              padding: EdgeInsets.fromLTRB(15, 20, 0, 10),
+              child: Text(
+                  style: TextStyle(fontSize: 20, fontWeight: FontWeight.bold),
+                  'Media:')),
           ActivityViewMedia(activity: activity),
           const Padding(
               padding: EdgeInsets.fromLTRB(15, 30, 0, 10),
diff --git a/lib/widgets/activity_view_categories.dart b/lib/widgets/activity_view_categories.dart
index 7bfb744..9df2113 100644
--- a/lib/widgets/activity_view_categories.dart
+++ b/lib/widgets/activity_view_categories.dart
@@ -1,35 +1,29 @@
 import 'package:flutter/material.dart';
+import 'package:sendtrain/database/database.dart';
 
 class ActivityViewCategories extends StatelessWidget {
-  const ActivityViewCategories({super.key, this.categories});
+  const ActivityViewCategories({super.key, required this.categories});
 
-  final List<String>? categories;
+  final List<ActivityCategories> categories;
 
   @override
   Widget build(BuildContext context) {
-    return Column(
-      children: [
-        Padding(
-            padding: const EdgeInsets.only(bottom: 10),
-            child: SizedBox(
-                height: 40,
-                child: ListView.builder(
-                  shrinkWrap: true,
-                  scrollDirection: Axis.horizontal,
-                  padding: const EdgeInsets.fromLTRB(10, 0, 10, 0),
-                  itemCount: categories?.length,
-                  itemBuilder: (BuildContext context, int index) {
-                    return Padding(
-                        padding: const EdgeInsets.only(right: 5),
-                        child: ActionChip(
-                          visualDensity: VisualDensity.compact,
-                          avatar: const Icon(Icons.check_circle_outline),
-                          label: Text(maxLines: 1, '${categories?[index]}'),
-                          onPressed: () {},
-                        ));
-                  },
-                ))),
-      ],
-    );
+    return SizedBox(
+        height: 40,
+        child: ListView.builder(
+          shrinkWrap: true,
+          scrollDirection: Axis.horizontal,
+          padding: const EdgeInsets.only(right: 10),
+          itemCount: categories.length,
+          itemBuilder: (BuildContext context, int index) {
+            return ActionChip(
+              visualDensity: VisualDensity.compact,
+              avatar: const Icon(Icons.category_rounded),
+              label: Text(maxLines: 1, categories[index].name),
+              tooltip: "Activity Category",
+              onPressed: () {},
+            );
+          },
+        ));
   }
-}
\ No newline at end of file
+}
diff --git a/lib/widgets/activity_view_types.dart b/lib/widgets/activity_view_types.dart
new file mode 100644
index 0000000..a13816c
--- /dev/null
+++ b/lib/widgets/activity_view_types.dart
@@ -0,0 +1,29 @@
+import 'package:flutter/material.dart';
+import 'package:sendtrain/database/database.dart';
+
+class ActivityViewTypes extends StatelessWidget {
+  const ActivityViewTypes({super.key, required this.types});
+
+  final List<ActivityType> types;
+
+  @override
+  Widget build(BuildContext context) {
+    return SizedBox(
+        height: 40,
+        child: ListView.builder(
+          shrinkWrap: true,
+          scrollDirection: Axis.horizontal,
+          padding: const EdgeInsets.only(right: 10),
+          itemCount: types.length,
+          itemBuilder: (BuildContext context, int index) {
+            return ActionChip(
+              visualDensity: VisualDensity.compact,
+              avatar: const Icon(Icons.fitness_center_rounded),
+              label: Text(maxLines: 1, types[index].name),
+              tooltip: "Activity Type",
+              onPressed: () {},
+            );
+          },
+        ));
+  }
+}