@@ -20,7 +20,7 @@ class WidgetController extends GetxController {
2020 final HomeController storageWidget = Get .find <HomeController >();
2121 late Storage storage;
2222 late final Filters filters; // Use RxList for observable list
23- List <ChartSeries > dailyBurnDown = [];
23+ List <CartesianSeries > dailyBurnDown = [];
2424 Directory ? baseDirectory;
2525 RxList <Task > allData = < Task > [].obs; // Use RxList for observable list
2626 bool stopTraver = false ;
@@ -31,103 +31,108 @@ class WidgetController extends GetxController {
3131 // var currentProfile = ProfilesWidget.of(context!).currentProfile;
3232 var currentProfile = Get .find <SplashController >().currentProfile.value;
3333 baseDirectory = Get .find <SplashController >().baseDirectory ();
34- storage =
34+ storage =
3535 Storage (Directory ('${baseDirectory !.path }/profiles/$currentProfile ' ));
3636 allData.assignAll (storage.data.allData ());
3737 sendAndUpdate ();
3838 }
3939 }
40+
4041 Future <void > sendAndUpdate () async {
4142 await sendData ();
4243 await updateWidget ();
4344 }
44-
45+
4546 Future <void > sendData () async {
4647 final HomeController taskController = Get .find <HomeController >();
4748 int lengthBeforeFilters = allData.length;
4849 List <Task > tasks = allData;
49- debugPrint ('Tasks: ${tasks .length }, ${taskController .projectFilter }, ${taskController .pendingFilter .value }, ${taskController .selectedSort .value }' );
50- if (taskController.projectFilter.value != 'All Projects' && taskController.projectFilter.toString ().isNotEmpty) {
51- tasks = tasks.where ((task) => task.project == taskController.projectFilter.value).toList ();
50+ debugPrint (
51+ 'Tasks: ${tasks .length }, ${taskController .projectFilter }, ${taskController .pendingFilter .value }, ${taskController .selectedSort .value }' );
52+ if (taskController.projectFilter.value != 'All Projects' &&
53+ taskController.projectFilter.toString ().isNotEmpty) {
54+ tasks = tasks
55+ .where ((task) => task.project == taskController.projectFilter.value)
56+ .toList ();
57+ } else {
58+ tasks = List <Task >.from (tasks);
59+ }
60+
61+ // Apply other filters and sorting
62+ tasks.sort ((a, b) => a.id! .compareTo (b.id! ));
63+
64+ tasks = tasks.where ((task) {
65+ if (taskController.pendingFilter.value) {
66+ return task.status == 'pending' ;
5267 } else {
53- tasks = List < Task >. from (tasks) ;
68+ return task.status == 'completed' ;
5469 }
70+ }).toList ();
5571
56- // Apply other filters and sorting
57- tasks.sort ((a, b) => a.id! .compareTo (b.id! ));
58-
59- tasks = tasks.where ((task) {
60- if (taskController.pendingFilter.value) {
61- return task.status == 'pending' ;
62- } else {
63- return task.status == 'completed' ;
72+ tasks = tasks.where ((task) {
73+ var tags = task.tags? .toSet () ?? {};
74+ if (taskController.tagUnion.value) {
75+ if (taskController.selectedTags.isEmpty) {
76+ return true ;
6477 }
65- }).toList ();
78+ return taskController.selectedTags.any ((tag) => (tag.startsWith ('+' ))
79+ ? tags.contains (tag.substring (1 ))
80+ : ! tags.contains (tag.substring (1 )));
81+ } else {
82+ return taskController.selectedTags.every ((tag) => (tag.startsWith ('+' ))
83+ ? tags.contains (tag.substring (1 ))
84+ : ! tags.contains (tag.substring (1 )));
85+ }
86+ }).toList ();
6687
67- tasks = tasks.where ((task) {
68- var tags = task.tags? .toSet () ?? {};
69- if (taskController.tagUnion.value) {
70- if (taskController.selectedTags.isEmpty) {
71- return true ;
72- }
73- return taskController.selectedTags.any ((tag) => (tag.startsWith ('+' ))
74- ? tags.contains (tag.substring (1 ))
75- : ! tags.contains (tag.substring (1 )));
76- } else {
77- return taskController.selectedTags.every ((tag) => (tag.startsWith ('+' ))
78- ? tags.contains (tag.substring (1 ))
79- : ! tags.contains (tag.substring (1 )));
80- }
81- }).toList ();
82-
83- // Apply sorting based on selectedSort
84- tasks.sort ((a, b) {
85- switch (taskController.selectedSort.value) {
86- case 'Created+' :
87- return a.entry.compareTo (b.entry);
88- case 'Created-' :
89- return b.entry.compareTo (a.entry);
90- case 'Modified+' :
91- return a.modified! .compareTo (b.modified! );
92- case 'Modified-' :
93- return b.modified! .compareTo (a.modified! );
94- case 'Due till+' :
95- return a.due! .compareTo (b.due! );
96- case 'Due till-' :
97- return b.due! .compareTo (a.due! );
98- case 'Priority-' :
99- return a.priority! .compareTo (b.priority! );
100- case 'Priority+' :
101- return b.priority! .compareTo (a.priority! );
102- case 'Project+' :
103- return a.project! .compareTo (b.project! );
104- case 'Project-' :
105- return b.project! .compareTo (a.project! );
106- case 'Urgency-' :
107- return b.urgency! .compareTo (a.urgency! );
108- case 'Urgency+' :
109- return a.urgency! .compareTo (b.urgency! );
110- default :
111- return 0 ;
112- }
113- });
88+ // Apply sorting based on selectedSort
89+ tasks.sort ((a, b) {
90+ switch (taskController.selectedSort.value) {
91+ case 'Created+' :
92+ return a.entry.compareTo (b.entry);
93+ case 'Created-' :
94+ return b.entry.compareTo (a.entry);
95+ case 'Modified+' :
96+ return a.modified! .compareTo (b.modified! );
97+ case 'Modified-' :
98+ return b.modified! .compareTo (a.modified! );
99+ case 'Due till+' :
100+ return a.due! .compareTo (b.due! );
101+ case 'Due till-' :
102+ return b.due! .compareTo (a.due! );
103+ case 'Priority-' :
104+ return a.priority! .compareTo (b.priority! );
105+ case 'Priority+' :
106+ return b.priority! .compareTo (a.priority! );
107+ case 'Project+' :
108+ return a.project! .compareTo (b.project! );
109+ case 'Project-' :
110+ return b.project! .compareTo (a.project! );
111+ case 'Urgency-' :
112+ return b.urgency! .compareTo (a.urgency! );
113+ case 'Urgency+' :
114+ return a.urgency! .compareTo (b.urgency! );
115+ default :
116+ return 0 ;
117+ }
118+ });
114119 List <Map <String , String >> l = [];
115120 for (var task in tasks) {
116- l.add ({
117- "description" : task.description,
118- "urgency" : 'urgencyLevel : ${urgency (task )}' ,
119- "uuid" : task.uuid,
120- "priority" : task.priority ?? "N"
121- });
121+ l.add ({
122+ "description" : task.description,
123+ "urgency" : 'urgencyLevel : ${urgency (task )}' ,
124+ "uuid" : task.uuid,
125+ "priority" : task.priority ?? "N"
126+ });
122127 }
123- if (l.isEmpty&& lengthBeforeFilters> 0 ) {
128+ if (l.isEmpty && lengthBeforeFilters > 0 ) {
124129 l.add ({
125130 "description" : "No tasks found because of filter" ,
126131 "urgency" : "urgencyLevel : 0" ,
127132 "priority" : "2" ,
128133 "uuid" : "NO_TASK"
129134 });
130- }else if (l.isEmpty&& lengthBeforeFilters== 0 ) {
135+ } else if (l.isEmpty && lengthBeforeFilters == 0 ) {
131136 l.add ({
132137 "description" : "No tasks found" ,
133138 "urgency" : "urgencyLevel : 0" ,
0 commit comments