After a long time, No idea whats changed
This commit is contained in:
@@ -56,62 +56,89 @@ class _AnalyticsPageState extends State<AnalyticsPage> {
|
|||||||
children: [
|
children: [
|
||||||
landscape?navDrawer(context, 1) : Container(),
|
landscape?navDrawer(context, 1) : Container(),
|
||||||
Expanded(
|
Expanded(
|
||||||
child: SingleChildScrollView(
|
child: Align(
|
||||||
scrollDirection: Axis.vertical,
|
alignment: Alignment.topCenter ,
|
||||||
child: Container(
|
child: SingleChildScrollView(
|
||||||
padding: EdgeInsets.all(8),
|
scrollDirection: Axis.vertical,
|
||||||
child:Column(
|
child: Container(
|
||||||
children: [
|
padding: EdgeInsets.all(8),
|
||||||
Card(
|
child:Column(
|
||||||
child: Container(
|
children: [
|
||||||
padding: EdgeInsets.symmetric(horizontal: 15, vertical: 5),
|
Card(
|
||||||
child: Column(
|
child: Container(
|
||||||
children: [
|
padding: EdgeInsets.symmetric(horizontal: 15, vertical: 5),
|
||||||
Row(
|
child: Column(
|
||||||
mainAxisAlignment: MainAxisAlignment.spaceBetween,
|
children: [
|
||||||
children: [
|
Row(
|
||||||
Text('Average Day',style: TextStyle(fontSize: 17)),
|
mainAxisAlignment: MainAxisAlignment.spaceBetween,
|
||||||
MaterialButton(
|
children: [
|
||||||
|
Text('Average Day',style: TextStyle(fontSize: 17)),
|
||||||
|
MaterialButton(
|
||||||
|
|
||||||
color: Colors.green,
|
color: Colors.green,
|
||||||
onPressed: (){
|
onPressed: (){
|
||||||
Navigator.of(context).push(MaterialPageRoute(builder: (context)=> AvgDayPage()));
|
Navigator.of(context).push(MaterialPageRoute(builder: (context)=> AvgDayPage()));
|
||||||
},
|
},
|
||||||
child: Text('More...'),
|
child: Text('More...'),
|
||||||
)
|
)
|
||||||
],
|
],
|
||||||
),
|
),
|
||||||
Divider(),
|
Divider(),
|
||||||
Container(
|
Container(
|
||||||
height: 400,
|
height: 400,
|
||||||
padding: EdgeInsets.all(10),
|
padding: EdgeInsets.all(10),
|
||||||
child: Padding(
|
child: Padding(
|
||||||
padding: EdgeInsets.all(8),
|
padding: EdgeInsets.all(8),
|
||||||
child: (!days.isEmpty)
|
child: (!days.isEmpty)
|
||||||
? Column(
|
? Column(
|
||||||
children: [
|
children: [
|
||||||
|
|
||||||
Expanded(
|
Expanded(
|
||||||
child: SfCircularChart(legend: Legend(isVisible: true,position: LegendPosition.bottom,overflowMode: LegendItemOverflowMode.wrap), series: <CircularSeries>[
|
child: SfCircularChart(legend: Legend(isVisible: true,position: LegendPosition.bottom,overflowMode: LegendItemOverflowMode.wrap), series: <CircularSeries>[
|
||||||
// Render pie chart
|
// Render pie chart
|
||||||
PieSeries<CatMapData, String>(
|
PieSeries<CatMapData, String>(
|
||||||
dataSource: avgDayData,
|
dataSource: avgDayData,
|
||||||
pointColorMapper: (CatMapData data, _) => data.color,
|
pointColorMapper: (CatMapData data, _) => data.color,
|
||||||
xValueMapper: (CatMapData data, _) => data.name,
|
xValueMapper: (CatMapData data, _) => data.name,
|
||||||
yValueMapper: (CatMapData data, _) => data.time,
|
yValueMapper: (CatMapData data, _) => data.time,
|
||||||
dataLabelMapper: (CatMapData sales, _) => MinutesToTimeString(sales.time),
|
dataLabelMapper: (CatMapData sales, _) => MinutesToTimeString(sales.time),
|
||||||
dataLabelSettings: DataLabelSettings(isVisible: true, useSeriesColor: true, overflowMode: OverflowMode.shift, showZeroValue: false))
|
dataLabelSettings: DataLabelSettings(isVisible: true, useSeriesColor: true, overflowMode: OverflowMode.shift, showZeroValue: false))
|
||||||
]))
|
]))
|
||||||
],
|
],
|
||||||
)
|
)
|
||||||
: Row(mainAxisSize: MainAxisSize.max, mainAxisAlignment: MainAxisAlignment.center, children: [CircularProgressIndicator()]))),
|
: Row(mainAxisSize: MainAxisSize.max, mainAxisAlignment: MainAxisAlignment.center, children: [CircularProgressIndicator()]))),
|
||||||
|
|
||||||
],
|
],
|
||||||
|
),
|
||||||
|
)
|
||||||
|
),
|
||||||
|
Card(
|
||||||
|
child: Container(
|
||||||
|
padding: EdgeInsets.all(8),
|
||||||
|
child: Column(
|
||||||
|
children: [
|
||||||
|
Row(
|
||||||
|
mainAxisAlignment: MainAxisAlignment.start,
|
||||||
|
children: [
|
||||||
|
Text("Compare",style: TextStyle(fontSize: 17)),
|
||||||
|
],
|
||||||
|
),
|
||||||
|
Divider(),
|
||||||
|
Row(
|
||||||
|
mainAxisAlignment: MainAxisAlignment.spaceAround,
|
||||||
|
children: [
|
||||||
|
MaterialButton(color: Colors.blue,onPressed: (){}, child: Text("Task Types"),),
|
||||||
|
MaterialButton(color: Colors.blue,onPressed: (){}, child: Text("Categories"),),
|
||||||
|
MaterialButton(color: Colors.blue,onPressed: (){}, child: Text("Days"),),
|
||||||
|
],
|
||||||
|
)
|
||||||
|
],
|
||||||
|
),
|
||||||
),
|
),
|
||||||
)
|
)
|
||||||
)
|
],
|
||||||
],
|
)
|
||||||
)
|
),
|
||||||
),
|
),
|
||||||
),
|
),
|
||||||
),
|
),
|
||||||
|
|||||||
@@ -184,9 +184,9 @@ class Settings{
|
|||||||
}else{
|
}else{
|
||||||
var uuid = Uuid();
|
var uuid = Uuid();
|
||||||
String _uuid = uuid.v4();
|
String _uuid = uuid.v4();
|
||||||
if(Platform.isAndroid){
|
// if(Platform.isAndroid){
|
||||||
|
//
|
||||||
}
|
// }
|
||||||
await prefs.setString('uuid',_uuid);
|
await prefs.setString('uuid',_uuid);
|
||||||
return Future.value(_uuid);
|
return Future.value(_uuid);
|
||||||
}
|
}
|
||||||
|
|||||||
@@ -2,6 +2,7 @@ import 'dart:async';
|
|||||||
import 'dart:io';
|
import 'dart:io';
|
||||||
|
|
||||||
import 'package:flutter/cupertino.dart';
|
import 'package:flutter/cupertino.dart';
|
||||||
|
import 'package:flutter/foundation.dart' as K;
|
||||||
import 'package:intl/intl.dart';
|
import 'package:intl/intl.dart';
|
||||||
import 'package:shared_preferences/shared_preferences.dart';
|
import 'package:shared_preferences/shared_preferences.dart';
|
||||||
import 'package:tasktracker/NewProject.dart';
|
import 'package:tasktracker/NewProject.dart';
|
||||||
@@ -19,7 +20,7 @@ import 'package:sqflite_common/sqlite_api.dart';
|
|||||||
import 'Tasks.dart';
|
import 'Tasks.dart';
|
||||||
import 'Dialogs.dart';
|
import 'Dialogs.dart';
|
||||||
|
|
||||||
bool cacheEnabled = true;
|
bool cacheEnabled = !K.kIsWeb;
|
||||||
|
|
||||||
late http.Response loginResponse;
|
late http.Response loginResponse;
|
||||||
|
|
||||||
@@ -63,15 +64,16 @@ Future<http.Response> login(String _username, String password) async {
|
|||||||
Future<void> initUserData() async {
|
Future<void> initUserData() async {
|
||||||
if (cacheEnabled) {
|
if (cacheEnabled) {
|
||||||
await initCacheDatabase();
|
await initCacheDatabase();
|
||||||
|
int catCount = Sqflite.firstIntValue(await cacheDb.rawQuery('SELECT COUNT(*) FROM Categories')) ?? 0;
|
||||||
|
int taskCount = Sqflite.firstIntValue(await cacheDb.rawQuery('SELECT COUNT(*) FROM TaskTypes')) ?? 0;
|
||||||
|
if(catCount > 0 && taskCount > 0){
|
||||||
|
await refreshUserData(forceOffline: true);
|
||||||
|
refreshUserData();
|
||||||
|
}else{
|
||||||
|
await refreshUserData();
|
||||||
|
}
|
||||||
}
|
}
|
||||||
int catCount = Sqflite.firstIntValue(await cacheDb.rawQuery('SELECT COUNT(*) FROM Categories')) ?? 0;
|
|
||||||
int taskCount = Sqflite.firstIntValue(await cacheDb.rawQuery('SELECT COUNT(*) FROM TaskTypes')) ?? 0;
|
|
||||||
if(catCount > 0 && taskCount > 0){
|
|
||||||
await refreshUserData(forceOffline: true);
|
|
||||||
refreshUserData();
|
|
||||||
}else{
|
|
||||||
await refreshUserData();
|
|
||||||
}
|
|
||||||
|
|
||||||
BuildBridgeToServer();
|
BuildBridgeToServer();
|
||||||
Debug.Log('Initializing UserData...');
|
Debug.Log('Initializing UserData...');
|
||||||
@@ -156,7 +158,7 @@ Future<void> refreshUserData({bool forceOffline = false}) async {
|
|||||||
|
|
||||||
refreshStream.add(false);
|
refreshStream.add(false);
|
||||||
} else {
|
} else {
|
||||||
if(false) {
|
if(K.kIsWeb) {
|
||||||
Debug.LogTest('updating cats ${DateTime.now()}');
|
Debug.LogTest('updating cats ${DateTime.now()}');
|
||||||
categories = await GetCategories(false);
|
categories = await GetCategories(false);
|
||||||
Debug.LogTest('updating projs ${DateTime.now()}');
|
Debug.LogTest('updating projs ${DateTime.now()}');
|
||||||
@@ -197,12 +199,13 @@ Future<void> refreshUserData({bool forceOffline = false}) async {
|
|||||||
|
|
||||||
Debug.LogTest('Done filling @ ${DateTime.now()}');
|
Debug.LogTest('Done filling @ ${DateTime.now()}');
|
||||||
|
|
||||||
categories = await GetCategories(true);
|
|
||||||
projects = await GetProjects(true);
|
categories = await GetCategories(true);
|
||||||
taskTypes = await GetTaskTypes(true);
|
projects = await GetProjects(true);
|
||||||
activities = await GetActivities(true);
|
taskTypes = await GetTaskTypes(true);
|
||||||
journal = await GetJournals(true);
|
activities = await GetActivities(true);
|
||||||
todos = await GetTodos(true);
|
journal = await GetJournals(true);
|
||||||
|
todos = await GetTodos(true);
|
||||||
|
|
||||||
|
|
||||||
} catch (e) {
|
} catch (e) {
|
||||||
@@ -220,7 +223,7 @@ Future<void> refreshUserData({bool forceOffline = false}) async {
|
|||||||
}
|
}
|
||||||
|
|
||||||
Future<bool> cacheDbExist() async {
|
Future<bool> cacheDbExist() async {
|
||||||
if (Platform.isAndroid || Platform.isIOS) {
|
if (!K.kIsWeb && Platform.isAndroid || Platform.isIOS) {
|
||||||
Directory directory = await getApplicationDocumentsDirectory();
|
Directory directory = await getApplicationDocumentsDirectory();
|
||||||
return databaseFactory.databaseExists(directory.path + 'cache.db');
|
return databaseFactory.databaseExists(directory.path + 'cache.db');
|
||||||
} else {
|
} else {
|
||||||
@@ -248,7 +251,7 @@ Future<void> updateProjectsList() async {
|
|||||||
Future<void> initCacheDatabase() async {
|
Future<void> initCacheDatabase() async {
|
||||||
Directory directory = await getApplicationDocumentsDirectory();
|
Directory directory = await getApplicationDocumentsDirectory();
|
||||||
Debug.LogResponse('database at ' + directory.path + '/cache.db');
|
Debug.LogResponse('database at ' + directory.path + '/cache.db');
|
||||||
if (Platform.isAndroid || Platform.isIOS) {
|
if (!K.kIsWeb && Platform.isAndroid || Platform.isIOS) {
|
||||||
cacheDb = await openDatabase(directory.path + 'cache.db', version: 1, onCreate: onCacheDatabaseCreate, onUpgrade: onCacheDatabaseUpgrade);
|
cacheDb = await openDatabase(directory.path + 'cache.db', version: 1, onCreate: onCacheDatabaseCreate, onUpgrade: onCacheDatabaseUpgrade);
|
||||||
} else {
|
} else {
|
||||||
cacheDb = await SqlFF.databaseFactoryFfi
|
cacheDb = await SqlFF.databaseFactoryFfi
|
||||||
|
|||||||
@@ -2,6 +2,7 @@ import 'dart:async';
|
|||||||
import 'dart:io';
|
import 'dart:io';
|
||||||
|
|
||||||
import 'package:flutter/cupertino.dart';
|
import 'package:flutter/cupertino.dart';
|
||||||
|
import 'package:flutter/foundation.dart' as K;
|
||||||
import 'package:flutter/material.dart';
|
import 'package:flutter/material.dart';
|
||||||
import 'package:flutter/services.dart';
|
import 'package:flutter/services.dart';
|
||||||
import 'package:flutter_spinkit/flutter_spinkit.dart';
|
import 'package:flutter_spinkit/flutter_spinkit.dart';
|
||||||
@@ -29,6 +30,7 @@ import 'package:syncfusion_flutter_charts/charts.dart';
|
|||||||
import 'Dialogs.dart';
|
import 'Dialogs.dart';
|
||||||
import 'CustomWidgets.dart';
|
import 'CustomWidgets.dart';
|
||||||
import 'package:firebase_core/firebase_core.dart';
|
import 'package:firebase_core/firebase_core.dart';
|
||||||
|
|
||||||
final GlobalKey<NavigatorState> navigatorKey = new GlobalKey<NavigatorState>();
|
final GlobalKey<NavigatorState> navigatorKey = new GlobalKey<NavigatorState>();
|
||||||
showAlertDialog(BuildContext context, String title, String message) {
|
showAlertDialog(BuildContext context, String title, String message) {
|
||||||
// set up the button
|
// set up the button
|
||||||
@@ -76,9 +78,9 @@ extension HexColor on Color {
|
|||||||
|
|
||||||
void main() async {
|
void main() async {
|
||||||
//Wakelock.enable(); // or Wakelock.toggle(on: true);
|
//Wakelock.enable(); // or Wakelock.toggle(on: true);
|
||||||
WidgetsFlutterBinding.ensureInitialized();
|
|
||||||
if(Platform.isAndroid || Platform.isIOS){
|
|
||||||
|
|
||||||
|
if(!K.kIsWeb &&(Platform.isAndroid || Platform.isIOS)){
|
||||||
|
WidgetsFlutterBinding.ensureInitialized();
|
||||||
await Firebase.initializeApp();
|
await Firebase.initializeApp();
|
||||||
}
|
}
|
||||||
//
|
//
|
||||||
|
|||||||
Reference in New Issue
Block a user