Started projects
This commit is contained in:
@@ -61,6 +61,7 @@ class _ActivitiesState extends State<Activities> {
|
||||
@override
|
||||
Widget build(BuildContext context) {
|
||||
// progressDialog = ProgressDialog(context: context);
|
||||
List<Widget> activities = PrintTasks();
|
||||
return Scaffold(
|
||||
floatingActionButton: FloatingActionButton.extended(
|
||||
onPressed: () {
|
||||
@@ -154,10 +155,16 @@ class _ActivitiesState extends State<Activities> {
|
||||
drawer: Main.navDrawer(context, 2),
|
||||
body: Container(
|
||||
padding: EdgeInsets.all(0),
|
||||
child: SingleChildScrollView(
|
||||
child: Column(
|
||||
children: PrintTasks(),
|
||||
))));
|
||||
child: ListView.builder(
|
||||
itemCount: activities.length,
|
||||
itemBuilder: (context, index){
|
||||
return activities[index];
|
||||
})
|
||||
// SingleChildScrollView(
|
||||
// child: Column(
|
||||
// children: PrintTasks(),
|
||||
// ))
|
||||
));
|
||||
}
|
||||
|
||||
|
||||
@@ -268,7 +275,7 @@ class _ActivitiesState extends State<Activities> {
|
||||
Container(
|
||||
alignment: Alignment.bottomLeft,
|
||||
padding: const EdgeInsets.all(8),
|
||||
child: Text('Gap of : $gap'),
|
||||
child: Text('Untracked period $gap'),
|
||||
),
|
||||
Row(
|
||||
children: [
|
||||
@@ -366,6 +373,7 @@ class _ActivitiesState extends State<Activities> {
|
||||
Widget ActivityCard(BuildContext context, String name, DateTime sTime, DateTime eTime, bool productive, Color color, Activity activity, int totalMinutes) {
|
||||
DateFormat dateFormat = DateFormat("HH:mm");
|
||||
int thisMinutes = (activity.endTime.difference(activity.startTime).inMinutes);
|
||||
|
||||
int timePercentage = ((thisMinutes / totalMinutes) * 100).toInt();
|
||||
// print("$thisMinutes / $totalMinutes");
|
||||
bool containsMetadata = ((activity.metadata ?? 'null') != 'null') && ((activity.metadata ?? '').isNotEmpty);
|
||||
@@ -396,7 +404,7 @@ class _ActivitiesState extends State<Activities> {
|
||||
child: Card(
|
||||
|
||||
// color: color,
|
||||
elevation: 20,
|
||||
elevation: 30,
|
||||
shadowColor: color,
|
||||
child: InkWell(
|
||||
onTap: () {
|
||||
|
||||
109
lib/Projects.dart
Normal file
109
lib/Projects.dart
Normal file
@@ -0,0 +1,109 @@
|
||||
import 'package:flutter/material.dart';
|
||||
import 'User.dart' as User;
|
||||
import 'main.dart';
|
||||
class Projects extends StatefulWidget {
|
||||
const Projects({Key? key}) : super(key: key);
|
||||
|
||||
@override
|
||||
State<Projects> createState() => _ProjectsState();
|
||||
}
|
||||
|
||||
class _ProjectsState extends State<Projects> {
|
||||
@override
|
||||
Widget build(BuildContext context) {
|
||||
return SafeArea(child: Scaffold(
|
||||
floatingActionButton: FloatingActionButton.extended(
|
||||
onPressed: () {
|
||||
// Navigator.of(context).push(MaterialPageRoute(builder: (context) => NewTodo())).then((value) => {User.refreshUserData().then((va) => {})});
|
||||
},
|
||||
label: Text("New Project"),
|
||||
icon: Icon(Icons.add)),
|
||||
appBar: AppBar(
|
||||
title: Column(
|
||||
mainAxisSize: MainAxisSize.max,
|
||||
mainAxisAlignment: MainAxisAlignment.end,
|
||||
children: [
|
||||
Row(
|
||||
mainAxisSize: MainAxisSize.max,
|
||||
mainAxisAlignment: MainAxisAlignment.spaceBetween,
|
||||
children: [
|
||||
Row(children: [Icon(Icons.work_outline_sharp, color: Theme.of(context).primaryColor), SizedBox(width: 10), Text('Projects')]),
|
||||
Row(
|
||||
children: [
|
||||
(User.offline)
|
||||
? Icon(Icons.signal_cellular_connected_no_internet_4_bar_outlined)
|
||||
: InkWell(
|
||||
onTap: () {
|
||||
setState(() {
|
||||
//LoadStats();
|
||||
});
|
||||
},
|
||||
child: Icon(Icons.refresh, size: 30),
|
||||
)
|
||||
],
|
||||
)
|
||||
],
|
||||
),
|
||||
//Container(color: Colors.red,child: Text("Offline",style:TextStyle(fontSize: 5))),
|
||||
],
|
||||
)),
|
||||
drawer: navDrawer(context, 7),
|
||||
body: Container(
|
||||
padding: EdgeInsets.all(10),
|
||||
child: Column(
|
||||
children: [
|
||||
ProjectCard('This app'),
|
||||
ProjectCard('Sneaky Peaky'),
|
||||
ProjectCard('Zombie MP'),
|
||||
ProjectCard('Pico pico')
|
||||
],
|
||||
),
|
||||
),
|
||||
));
|
||||
}
|
||||
|
||||
Widget ProjectCard(String name){
|
||||
return Row(
|
||||
mainAxisSize: MainAxisSize.max,
|
||||
mainAxisAlignment: MainAxisAlignment.center,
|
||||
children:[
|
||||
Expanded(
|
||||
child: Card(
|
||||
child:InkWell(
|
||||
onTap: (){},
|
||||
child: Padding(
|
||||
padding: const EdgeInsets.all(10.0),
|
||||
child: Row(
|
||||
mainAxisSize: MainAxisSize.max,
|
||||
mainAxisAlignment: MainAxisAlignment.spaceBetween,
|
||||
children: [
|
||||
Icon(Icons.work),
|
||||
Text(name),
|
||||
Container(
|
||||
decoration: BoxDecoration(
|
||||
color: Colors.green,
|
||||
borderRadius: BorderRadius.circular(8)
|
||||
),
|
||||
child:Padding(
|
||||
padding: const EdgeInsets.symmetric(horizontal: 5, vertical: 2),
|
||||
child: Text("Work"),
|
||||
))
|
||||
],
|
||||
),
|
||||
),
|
||||
)
|
||||
)
|
||||
)
|
||||
]
|
||||
);
|
||||
}
|
||||
|
||||
Widget prioritySeperator(String text){
|
||||
return Padding(
|
||||
padding: const EdgeInsets.fromLTRB(15,15,15,0),
|
||||
child: Row(
|
||||
children: [Text(text,style:TextStyle(fontSize: 18, color: Colors.grey))],
|
||||
),
|
||||
);
|
||||
}
|
||||
}
|
||||
@@ -14,7 +14,7 @@ class _TodoPageState extends State<TodoPage> {
|
||||
return SafeArea(child: Scaffold(
|
||||
floatingActionButton: FloatingActionButton.extended(
|
||||
onPressed: () {
|
||||
// Navigator.of(context).push(MaterialPageRoute(builder: (context) => NewActivity())).then((value) => {User.refreshUserData().then((va) => LoadStats())});
|
||||
// Navigator.of(context).push(MaterialPageRoute(builder: (context) => NewTodo())).then((value) => {User.refreshUserData().then((va) => {})});
|
||||
},
|
||||
label: Text("New Todo"),
|
||||
icon: Icon(Icons.add)),
|
||||
|
||||
@@ -353,9 +353,15 @@ Future<List<Activity>> GetActivities(bool forceOffline) async {
|
||||
|
||||
if(eTime.day!=sTime.day){
|
||||
DateTime midnight = DateTime(eTime.year,eTime.month,eTime.day,0,0,0);
|
||||
|
||||
int firstHalf = eTime.difference(midnight).inMinutes;
|
||||
int secondHalf = midnight.difference(sTime).inMinutes;
|
||||
// print("${taskType.name} first half : $firstHalf -> second half: $secondHalf");
|
||||
if(firstHalf>1){
|
||||
_activities.add(Activity(taskType, midnight, eTime, metadata: metadata,tStartTime: sTime));
|
||||
_activities.add(Activity(taskType, sTime, midnight, metadata: metadata,tEndTime: eTime));
|
||||
}
|
||||
if(secondHalf > 1) {
|
||||
_activities.add(Activity(taskType, sTime, midnight, metadata: metadata, tEndTime: eTime));
|
||||
}
|
||||
}else{
|
||||
_activities.add(Activity(taskType, DateTime.parse(startTime), DateTime.parse(endTime), metadata: metadata));
|
||||
}
|
||||
|
||||
@@ -5,6 +5,7 @@ import 'package:flutter/material.dart';
|
||||
import 'package:intl/intl.dart';
|
||||
import 'package:provider/provider.dart';
|
||||
import 'package:tasktracker/Categories.dart';
|
||||
import 'package:tasktracker/Projects.dart';
|
||||
import 'package:tasktracker/Todo.dart';
|
||||
import 'package:tasktracker/Welcome.dart';
|
||||
import 'package:tasktracker/splash.dart';
|
||||
@@ -95,7 +96,7 @@ class MyApp extends StatelessWidget {
|
||||
'/Categories': (context) => const Categories(),
|
||||
'/Activities': (context) => const Activities(),
|
||||
'/Settings': (context) => const SettingsPage(),
|
||||
'/Todo':(context)=> const TodoPage()
|
||||
'/Projects':(context)=> const Projects()
|
||||
});
|
||||
});
|
||||
}
|
||||
@@ -282,6 +283,10 @@ class _MyHomePageState extends State<MyHomePage> {
|
||||
trackedTime += value;
|
||||
});
|
||||
int untrackedTime = 1440-trackedTime;
|
||||
if(untrackedTime<0){
|
||||
User.refreshUserData().then((val)=>LoadStats());
|
||||
print("Shit went wrong!");
|
||||
}
|
||||
print("Tracked time : $trackedTime");
|
||||
|
||||
dailyData.sort((a, b) {
|
||||
@@ -718,15 +723,26 @@ Drawer navDrawer(BuildContext context, int pageIndex) {
|
||||
Divider(),
|
||||
ListTile(
|
||||
selected: (pageIndex == 7),
|
||||
title: Text('TODO'),
|
||||
leading: Icon(Icons.check, color: Theme.of(context).primaryColor),
|
||||
title: Text('Projects'),
|
||||
leading: Icon(Icons.work_outline_sharp, color: Theme.of(context).primaryColor),
|
||||
onTap: () {
|
||||
if (pageIndex == 7) {
|
||||
return;
|
||||
}
|
||||
Navigator.of(context).pushReplacementNamed('/Todo');
|
||||
Navigator.of(context).pushReplacementNamed('/Projects');
|
||||
},
|
||||
),
|
||||
// ListTile(
|
||||
// selected: (pageIndex == 7),
|
||||
// title: Text('TODO'),
|
||||
// leading: Icon(Icons.check, color: Theme.of(context).primaryColor),
|
||||
// onTap: () {
|
||||
// if (pageIndex == 7) {
|
||||
// return;
|
||||
// }
|
||||
// // Navigator.of(context).pushReplacementNamed('/Todo');
|
||||
// },
|
||||
// ),
|
||||
Divider(),
|
||||
ListTile(
|
||||
selected: (pageIndex == 5),
|
||||
|
||||
@@ -94,10 +94,17 @@ class _SplashScreenState extends State<SplashScreen> {
|
||||
padding: EdgeInsets.all(80),
|
||||
child: Column(
|
||||
mainAxisSize: MainAxisSize.max,
|
||||
mainAxisAlignment: MainAxisAlignment.center,
|
||||
mainAxisAlignment: MainAxisAlignment.spaceBetween,
|
||||
children: [
|
||||
Container(),
|
||||
Column(
|
||||
children: [
|
||||
Image(image: AssetImage('images/logo.png')),
|
||||
SpinKitPouringHourGlass(color: Colors.white)
|
||||
SpinKitPouringHourGlass(color: Colors.white),
|
||||
],
|
||||
),
|
||||
DefaultTextStyle(style: TextStyle(fontSize: 15,color: Colors.white,fontStyle: FontStyle.italic),
|
||||
child: Text('If you lie to me, That means you lie to yourself\n\n -This app (2022)',))
|
||||
// Text('Loading', style:TextStyle(color: Colors.grey, fontSize: 20,fontStyle: FontStyle.italic))
|
||||
]));
|
||||
}
|
||||
|
||||
Reference in New Issue
Block a user