Summary page done

This commit is contained in:
warlock
2022-03-02 09:24:26 +05:30
parent 8c7ea9b86e
commit 4576957b4c
16 changed files with 974 additions and 409 deletions

View File

@@ -61,7 +61,7 @@ Future<void> initUserData() async {
print('Going offline mode.');
}
}
bool userDataInitiated =false;
Future<void> refreshUserData() async{
ShowProgress("Loading data");
// categories= await GetCategories(true);
@@ -70,6 +70,7 @@ Future<void> refreshUserData() async{
await updateCatsList();
await updateTasksList();
await updateActList();
userDataInitiated=true;
HideProgress();
}
@@ -122,7 +123,7 @@ void onCacheDatabaseCreate(Database db, int newVersion) async {
await db.execute(TaskTableSQL);
String ActivityTableSQL =
'CREATE TABLE Activities(id INTEGER PRIMARY KEY AUTOINCREMENT, ${Activity.colType} INT, ${Activity.colStartTime} DATETIME, ${Activity.colEndTime} DATETIME, '
'CREATE TABLE Activities(id INTEGER PRIMARY KEY AUTOINCREMENT, ${Activity.colType} INT, ${Activity.colStartTime} DATETIME, ${Activity.colEndTime} DATETIME, ${Activity.colMetadata} TEXT, '
'FOREIGN KEY (${Activity.colType}) REFERENCES TaskTypes(id))';
// print(ActivityTableSQL);
await db.execute(ActivityTableSQL);
@@ -328,7 +329,7 @@ Future<List<Activity>> GetActivities(bool forceOffline) async{
List<Activity> _activities = [];
if(offline || forceOffline){
//Retreive from cacheDB
print('offline, refreshing activities');
}else{
//Check if server got updated, If not go for cache
var android_id = await Settings.UUID();
@@ -359,14 +360,15 @@ Future<List<Activity>> GetActivities(bool forceOffline) async{
String? type = element[Activity.colType].toString();
String? startTime = element[Activity.colStartTime].toString();
String? endTime = element[Activity.colEndTime].toString();
String? metadata = element[Activity.colMetadata].toString();
TaskType? taskType = await getTaskFromId(type);
if(type==null || startTime==null || endTime==null || taskType==null){
print("Something is null!");
print("TaskType:{$type}, Start Time:{$startTime}, endTime:{$endTime}");
print("Something is null!\ntype:${type==null}, startTime:${startTime==null}, eTime:${endTime==null}, taskType${taskType==null}");
print("TaskType:{$type}, Start Time:{$startTime}, endTime:{$endTime}, metadata:${metadata}");
continue;
}
print("TaskType:{$type}, Start Time:{$startTime}, endTime:{$endTime}");
_activities.add(Activity(taskType, DateTime.parse(startTime), DateTime.parse(endTime)));
print("TaskType:{$type}, Start Time:{$startTime}, endTime:{$endTime}, metadata:${metadata}");
_activities.add(Activity(taskType, DateTime.parse(startTime), DateTime.parse(endTime), metadata: metadata));
}
activities = _activities;
return activities;
@@ -395,8 +397,8 @@ Future<void> UpdateActivitiesFromServer() async{
Map<String, dynamic> cat = jsonDecode(value);
print(cat);
await cacheDb.rawInsert(
"INSERT OR REPLACE INTO Activities (${Activity.colType}, ${Activity.colStartTime}, ${Activity.colEndTime}) "
"VALUES ('${cat['task_id']}', '${cat['sTime']}','${cat['eTime']}') ");
"INSERT OR REPLACE INTO Activities (${Activity.colType}, ${Activity.colStartTime}, ${Activity.colEndTime}, ${Activity.colMetadata}) "
"VALUES ('${cat['task_id']}', '${cat['sTime']}','${cat['eTime']}', '${cat['metadata']}') ");
}
}else{
print("No activities for now");
@@ -410,13 +412,15 @@ Future<void> UpdateActivitiesFromServer() async{
Future<TaskType?> getTaskFromId(String taskId) async{
// await GetTaskTypes(false);
TaskType? cat = null;
taskTypes.forEach((element) async{
for (var element in taskTypes){
if(element.id == taskId){
cat= element;
cat?.cat = await getCatFromId((cat?.category ?? ''));
}
});
}
if(cat==null){
print('Got null tasktype for ${taskId} after searching on ${taskTypes.length}');
}
return cat;
}
@@ -424,11 +428,11 @@ Future<TaskType?> getTaskFromId(String taskId) async{
Future<Category?> getCatFromId(String catId) async{
// await GetTaskTypes(false);
Category? cat = null;
categories.forEach((element) {
for (var element in categories) {
if(element.category_id == catId){
cat= element;
}
});
}
return cat;
}
@@ -519,7 +523,7 @@ class UserOperations{
}
}
static Future<void> addActivity(String type, String sTime,String eTime, {bool bulk = false, Function(int)? onOverlap}) async{
static Future<void> addActivity(String type, String sTime,String eTime, {String metadata = 'null',bool bulk = false, Function(int)? onOverlap}) async{
//Check for timeoverlapse
activities= await GetActivities(true);
int? overlapCount = Sqflite.firstIntValue(await cacheDb.rawQuery("SELECT COUNT(*) FROM Activities WHERE (((${Activity.colStartTime} < datetime('$sTime')) AND ((${Activity.colEndTime} > datetime('$eTime')) OR (${Activity.colEndTime} < datetime('$eTime') AND ${Activity.colEndTime} > datetime('$sTime')))) OR (${Activity.colStartTime} > datetime('$sTime') AND ${Activity.colStartTime} < datetime('$eTime')) OR (${Activity.colStartTime}=datetime('$sTime') AND ${Activity.colEndTime}=datetime('$eTime')))"));
@@ -533,8 +537,13 @@ class UserOperations{
'device_id': await Settings.UUID(),
'type' : username+type,
'sTime': sTime,
'eTime':eTime
'eTime':eTime,
'metadata': metadata
};
if(metadata.length > 0){
}
//Add Query
Map<String,Object> query = {
Queries.colLink: 'add_activity',
@@ -547,12 +556,13 @@ class UserOperations{
//update Cache
Map<String,Object> data = {
Activity.colType: type,
Activity.colType: username+type,
Activity.colStartTime: sTime,
Activity.colEndTime: eTime
Activity.colEndTime: eTime,
Activity.colMetadata: metadata
};
await cacheDb.insert('Activities', data);
await GetActivities(true);
activities= await GetActivities(false);
if(!bulk){
//Add to server and refresh Cache
await executeQueries();
@@ -688,10 +698,10 @@ class UserOperations{
}
void ShowProgress(msg){
try{progressDialog?.show(max: 100, msg: msg);}catch(e){}
//try{progressDialog?.show(max: 100, msg: msg);}catch(e){}
}
void HideProgress(){
try{progressDialog?.update(value: 100);}catch(e){}
// try{progressDialog?.update(value: 100);}catch(e){}
}