Basic Functions done

This commit is contained in:
warlock
2022-02-27 16:46:13 +05:30
parent d4dd0864fa
commit 8c7ea9b86e
10 changed files with 421 additions and 160 deletions

View File

@@ -1,6 +1,7 @@
import 'package:flutter/material.dart';
import 'package:intl/intl.dart';
import 'main.dart';
import 'NewTask.dart';
import 'newActivity.dart';
import 'Data.dart';
import 'User.dart' as User;
import 'package:sn_progress_dialog/sn_progress_dialog.dart';
@@ -31,7 +32,7 @@ class _ActivitiesState extends State<Activities> {
floatingActionButton: FloatingActionButton.extended(
onPressed: () {
Navigator.of(context)
.push(MaterialPageRoute(builder: (context) => NewTask()))
.push(MaterialPageRoute(builder: (context) => NewActivity()))
.then((value) => UpdateList());
},
label: Text("New Activity"),
@@ -57,7 +58,7 @@ class _ActivitiesState extends State<Activities> {
]) : Container(),
],
)),
drawer: navDrawer(context, 3),
drawer: navDrawer(context, 2),
body: Container(
padding: EdgeInsets.all(10),
child: SingleChildScrollView(
@@ -67,41 +68,62 @@ class _ActivitiesState extends State<Activities> {
}
void UpdateList() async {
if(progressDialog != null){progressDialog.show(max:100,msg: 'Loading Task Types');}
await User.updateTasksList();
try{progressDialog.show(max:100,msg: 'Loading Activities');}catch(e){}
await User.updateActList();
setState(() {});
if(progressDialog != null){progressDialog.update(value: 100);}
try{progressDialog.update(value: 100);}catch(e){}
}
List<Widget> PrintTasks() {
List<Widget> _tasks = [];
print('Priting cats : ' + User.taskTypes.length.toString());
User.taskTypes.forEach((element) {
String name = element.name;
if (element.cat == null) {
print('Got some null cat : ${element.name}');
String lastDate = "";
DateFormat dFormat = DateFormat("MM/dd");
for (var element in User.activities) {
String thisDate = dFormat.format(element.startTime);
if(thisDate != lastDate){
_tasks.add(DateSeperator(thisDate));
lastDate=thisDate;
}
String name = element.taskType.name;
if (element.taskType.cat == null) {
print('Got some null cat : ${element.taskType.name}');
} else {
Color color = HexColor.fromHex(element.cat?.color ?? '#000000');
bool productive = element.cat?.productive ?? true;
Widget task = TaskCard(context, name, productive, color);
Color color = HexColor.fromHex(element.taskType.cat?.color ?? '#000000');
bool productive = element.taskType.cat?.productive ?? true;
Widget task = ActivityCard(context, name,element.startTime,element.endTime, productive, color,element);
_tasks.add(task);
}
});
}
return _tasks;
}
Widget DateSeperator(date){
return Padding(
padding: const EdgeInsets.fromLTRB(10, 20, 10, 0),
child: Column(children: [
Row(children: [
Text(date,style: TextStyle(fontSize: 18),)
],)
],),
);
}
bool selecting = false;
Widget TaskCard(
BuildContext context, String name, bool productive, Color color) {
Widget ActivityCard(
BuildContext context, String name,DateTime sTime, DateTime eTime, bool productive, Color color, Activity activity) {
DateFormat dateFormat = DateFormat("HH:mm");
var _timeSpan = eTime.difference(sTime);
String timeSpan = ((_timeSpan.inHours > 0) ? _timeSpan.inHours.toString()+'h ' : '') + ((_timeSpan.inMinutes %60 > 0) ? (_timeSpan.inMinutes%60).toString()+'m ' : '');
return Row(children: [
// Container(),
(selecting)
? Checkbox(
value: selectedTasks.contains(name),
value: selectedActivities.contains(activity),
onChanged: (value) {
print('selected $name');
OnItemSelected(name);
OnItemSelected(activity);
setState(() {});
})
: Container(),
@@ -116,7 +138,7 @@ class _ActivitiesState extends State<Activities> {
onTap: () {
//Open Respective Category
if(selecting){
OnItemSelected(name);
OnItemSelected(activity);
}
setState(() {
@@ -125,7 +147,7 @@ class _ActivitiesState extends State<Activities> {
onLongPress: () {
print('gonna delete');
selecting = !selecting;
selectedTasks = [name];
selectedActivities = [activity];
setState(() {});
},
@@ -137,8 +159,9 @@ class _ActivitiesState extends State<Activities> {
mainAxisSize: MainAxisSize.max,
mainAxisAlignment: MainAxisAlignment.spaceBetween,
children: [
Text(name,
Text(name + " ($timeSpan)",
style: TextStyle(color: Colors.white)),
Text(dateFormat.format(sTime) + " - " + dateFormat.format(eTime)),
// Icon(Icons.analytics, color: color, size: 20,),
Icon(Icons.circle,
color: (productive)
@@ -156,23 +179,24 @@ class _ActivitiesState extends State<Activities> {
]);
}
void OnItemSelected(String name){
if (!selectedTasks.contains(name)) {
selectedTasks.add(name);
void OnItemSelected(Activity activity){
if (!selectedActivities.contains(activity)) {
selectedActivities.add(activity);
} else {
selectedTasks.remove(name);
selectedActivities.remove(activity);
}
}
void DeleteSelectedTasks() async{
progressDialog.show(max: 100, msg: 'Deleteing ${selectedTasks.length} Task Types');
selectedTasks.forEach((element) async {
await User.UserOperations.deleteTask(element, bulk:true);
progressDialog.show(max: 100, msg: 'Deleteing ${selectedActivities.length} Task Types');
selectedActivities.forEach((element) async {
await User.UserOperations.deleteActivity(element, bulk:true);
});
await Future.delayed(Duration(seconds: 2));
await User.UserOperations.executeQueries();
selectedTasks=[];
await User.updateActList();
selectedActivities=[];
selecting=false;
setState(() {
progressDialog.update(value: 100);
@@ -182,4 +206,4 @@ class _ActivitiesState extends State<Activities> {
}
List<String> selectedTasks = [];
List<Activity> selectedActivities = [];