diff --git a/lib/Activities.dart b/lib/Activities.dart index 21b8d6d..8a4d816 100644 --- a/lib/Activities.dart +++ b/lib/Activities.dart @@ -195,7 +195,9 @@ class _ActivitiesState extends State { } } print(productivtyActs); - for (var element in User.activities) { + //for (var element in User.activities) { + for(int i =0; i < User.activities.length; i++){ + Activity element =User.activities[i]; if(searching){ bool matchMetadata = element.metadata!.toLowerCase().contains(searchController.text.toLowerCase()); bool matchTaskType=element.taskType.name.toLowerCase().contains(searchController.text.toLowerCase()); @@ -208,6 +210,8 @@ class _ActivitiesState extends State { } String thisDate = dFormat.format(element.startTime); + + if (thisDate != lastDate) { int prodActs = productivtyActs[thisDate] ?? 0; int unProdActs = unproductivtyActs[thisDate] ?? 0; @@ -224,11 +228,64 @@ class _ActivitiesState extends State { // print('Activity : ${name} ,sTime: ${element.startTime}, eTime: ${element.endTime}'); _tasks.add(task); } + //Check for gaps + if(i < User.activities.length-1){ + int gap = User.activities[i].trueStartTime.difference(User.activities[i+1].trueEndTime).inMinutes; + if(gap > 20) { + Widget addGap = timeGap(User.activities[i].trueStartTime, User.activities[i+1].trueEndTime); + + _tasks.add(addGap); + } + } } return _tasks; } + Widget timeGap(DateTime sTime, DateTime eTime){ + DateFormat dateFormat = DateFormat("HH:mm"); + String gap = Main.MinutesToTimeString(sTime.difference(eTime).inMinutes); + return Row( + mainAxisSize: MainAxisSize.max, + + children: [ + Container(padding: EdgeInsets.fromLTRB(10, 0, 5, 0), child: Column( + mainAxisSize: MainAxisSize.max,mainAxisAlignment: MainAxisAlignment.center, + children: [ + // Text(dateFormat.format(activity.endTime)), + SizedBox(width: 1, height: 30, child: Container(color: Colors.white)), + Text(dateFormat.format(eTime))])), + Expanded( + child: InkWell( + onTap: (){ + Navigator.of(context).push(MaterialPageRoute(builder: (context) => NewActivity(sTime: eTime,eTime: sTime))).then((value) => UpdateList()); + }, + child: Card( + child: Row( + mainAxisSize: MainAxisSize.max, + mainAxisAlignment: MainAxisAlignment.spaceAround, + children: [ + Container( + alignment: Alignment.bottomLeft, + padding: const EdgeInsets.all(8), + child: Text('Gap of : $gap'), + ), + Row( + children: [ + Icon(Icons.add,size:30), + Text("Add Activity") + ], + ), + + ], + ) + ), + ), + ), + ], + ); + } + Widget DateSeperator(date, prodActs, unprodActs) { // double prodPercentage = (prodActs / (prodActs + unprodActs)) * 100; double prodPercentage = (prodActs / 1440) * 100; @@ -413,7 +470,7 @@ class _ActivitiesState extends State { setState(() { }); - Navigator.of(context).push(MaterialPageRoute(builder: (context) => NewActivity(sTime: activity.startTime,eTime: activity.endTime,metadata: activity.metadata,selectedTask: activity.taskType.name,))).then((value) => UpdateList()); + Navigator.of(context).push(MaterialPageRoute(builder: (context) => NewActivity(sTime: activity.trueStartTime,eTime: activity.trueEndTime,metadata: activity.metadata,selectedTask: activity.taskType.name,))).then((value) => UpdateList()); },) ]); } diff --git a/lib/Data.dart b/lib/Data.dart index 7f71975..2bd3bdc 100644 --- a/lib/Data.dart +++ b/lib/Data.dart @@ -37,8 +37,12 @@ class TaskType{ class Activity{ - Activity(this.taskType, this.startTime, this.endTime, {this.metadata}); - + Activity(this.taskType, this.startTime, this.endTime, {this.metadata,DateTime? tEndTime,DateTime? tStartTime}){ + trueStartTime = tStartTime ?? startTime; + trueEndTime = tEndTime ?? endTime; + } + late DateTime trueStartTime; + late DateTime trueEndTime; TaskType taskType; DateTime startTime; DateTime endTime; diff --git a/lib/User.dart b/lib/User.dart index eb69884..d96e017 100644 --- a/lib/User.dart +++ b/lib/User.dart @@ -336,6 +336,7 @@ Future> GetActivities(bool forceOffline) async { List cats = await cacheDb.rawQuery('SELECT * FROM Activities ORDER BY ${Activity.colStartTime} DESC'); print(cats.length); for (Map element in cats) { + int? id = element['id']; String? type = element[Activity.colType].toString(); String? startTime = element[Activity.colStartTime].toString(); String? endTime = element[Activity.colEndTime].toString(); @@ -353,8 +354,8 @@ Future> GetActivities(bool forceOffline) async { if(eTime.day!=sTime.day){ DateTime midnight = DateTime(eTime.year,eTime.month,eTime.day,0,0,0); - _activities.add(Activity(taskType, midnight, eTime, metadata: metadata)); - _activities.add(Activity(taskType, sTime, midnight, metadata: metadata)); + _activities.add(Activity(taskType, midnight, eTime, metadata: metadata,tStartTime: sTime)); + _activities.add(Activity(taskType, sTime, midnight, metadata: metadata,tEndTime: eTime)); }else{ _activities.add(Activity(taskType, DateTime.parse(startTime), DateTime.parse(endTime), metadata: metadata)); }