Fix displaying in progress task only on current day report
This commit is contained in:
parent
7c8702bb63
commit
d96fe7c813
1 changed files with 24 additions and 8 deletions
32
stt.c
32
stt.c
|
|
@ -56,7 +56,7 @@ int timesnode_heigh(struct timesnode *);
|
||||||
int timesnode_getbalance(struct timesnode *);
|
int timesnode_getbalance(struct timesnode *);
|
||||||
struct timesnode *timesnode_rightrotate(struct timesnode *);
|
struct timesnode *timesnode_rightrotate(struct timesnode *);
|
||||||
struct timesnode *timesnode_leftrotate(struct timesnode *);
|
struct timesnode *timesnode_leftrotate(struct timesnode *);
|
||||||
int timesnode_print(struct timesnode *, time_t aftertime, time_t beforetime);
|
int timesnode_print(struct timesnode *, time_t aftertime, time_t beforetime, int showinprogress);
|
||||||
void timesnode_free(struct timesnode *);
|
void timesnode_free(struct timesnode *);
|
||||||
|
|
||||||
void
|
void
|
||||||
|
|
@ -275,7 +275,7 @@ timesnode_stop(struct timesnode * p, time_t endtime)
|
||||||
}
|
}
|
||||||
|
|
||||||
int
|
int
|
||||||
timesnode_print(struct timesnode * p, time_t aftertime, time_t beforetime)
|
timesnode_print(struct timesnode * p, time_t aftertime, time_t beforetime, int showinprogress)
|
||||||
{
|
{
|
||||||
time_t *nowtime;
|
time_t *nowtime;
|
||||||
int duration = 0;
|
int duration = 0;
|
||||||
|
|
@ -285,9 +285,13 @@ timesnode_print(struct timesnode * p, time_t aftertime, time_t beforetime)
|
||||||
return 0;
|
return 0;
|
||||||
}
|
}
|
||||||
if (p->left != NULL) {
|
if (p->left != NULL) {
|
||||||
totalDuration += timesnode_print(p->left, aftertime, beforetime);
|
totalDuration += timesnode_print(p->left, aftertime, beforetime, showinprogress);
|
||||||
}
|
}
|
||||||
if ((p->starttime > aftertime && p->starttime < beforetime) && (p->endtime < beforetime || p->endtime == 0)) {
|
if ((p->starttime > aftertime && p->starttime < beforetime) ||
|
||||||
|
(p->endtime > aftertime && p->endtime < beforetime) ||
|
||||||
|
(p->starttime < aftertime && p->endtime > beforetime) ||
|
||||||
|
(showinprogress && p->endtime == 0)) {
|
||||||
|
|
||||||
printf("task: %s\n", p->task);
|
printf("task: %s\n", p->task);
|
||||||
printf("started at: %s", ctime(&p->starttime));
|
printf("started at: %s", ctime(&p->starttime));
|
||||||
|
|
||||||
|
|
@ -311,7 +315,7 @@ timesnode_print(struct timesnode * p, time_t aftertime, time_t beforetime)
|
||||||
totalDuration += duration;
|
totalDuration += duration;
|
||||||
}
|
}
|
||||||
if (p->right != NULL) {
|
if (p->right != NULL) {
|
||||||
totalDuration += timesnode_print(p->right, aftertime, beforetime);
|
totalDuration += timesnode_print(p->right, aftertime, beforetime, showinprogress);
|
||||||
}
|
}
|
||||||
return totalDuration;
|
return totalDuration;
|
||||||
}
|
}
|
||||||
|
|
@ -341,7 +345,7 @@ main(int argc, char *argv[])
|
||||||
struct timesnode *timestree;
|
struct timesnode *timestree;
|
||||||
time_t *nowtime;
|
time_t *nowtime;
|
||||||
int changed;
|
int changed;
|
||||||
struct tm startfilter, endfilter;
|
struct tm startfilter, endfilter, today;
|
||||||
|
|
||||||
timestree = NULL;
|
timestree = NULL;
|
||||||
task = NULL;
|
task = NULL;
|
||||||
|
|
@ -400,6 +404,10 @@ default:
|
||||||
writetimes(fp, timestree);
|
writetimes(fp, timestree);
|
||||||
}
|
}
|
||||||
if (list) {
|
if (list) {
|
||||||
|
memset(&startfilter, 0, sizeof(struct tm));
|
||||||
|
memset(&endfilter, 0, sizeof(struct tm));
|
||||||
|
memset(&today, 0, sizeof(struct tm));
|
||||||
|
|
||||||
if (datefilter != NULL) {
|
if (datefilter != NULL) {
|
||||||
strptime(datefilter, "%Y-%m-%d", &startfilter);
|
strptime(datefilter, "%Y-%m-%d", &startfilter);
|
||||||
strptime(datefilter, "%Y-%m-%d", &endfilter);
|
strptime(datefilter, "%Y-%m-%d", &endfilter);
|
||||||
|
|
@ -408,17 +416,25 @@ default:
|
||||||
localtime_r(nowtime, &endfilter);
|
localtime_r(nowtime, &endfilter);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
localtime_r(nowtime, &today);
|
||||||
|
|
||||||
|
today.tm_sec = 0;
|
||||||
|
today.tm_min = 0;
|
||||||
|
today.tm_hour = 0;
|
||||||
|
today.tm_isdst = 0;
|
||||||
|
|
||||||
|
|
||||||
startfilter.tm_sec = 0;
|
startfilter.tm_sec = 0;
|
||||||
startfilter.tm_min = 0;
|
startfilter.tm_min = 0;
|
||||||
startfilter.tm_hour = 0;
|
startfilter.tm_hour = 0;
|
||||||
//startfilter.tm_mday-=4;
|
startfilter.tm_isdst = 0;
|
||||||
|
|
||||||
endfilter.tm_sec = 0;
|
endfilter.tm_sec = 0;
|
||||||
endfilter.tm_min = 0;
|
endfilter.tm_min = 0;
|
||||||
endfilter.tm_hour = 0;
|
endfilter.tm_hour = 0;
|
||||||
endfilter.tm_mday++;
|
endfilter.tm_mday++;
|
||||||
|
|
||||||
printf("total: %.2f\n", timesnode_print(timestree, mktime(&startfilter), mktime(&endfilter)) / 3600.0);
|
printf("total: %.2f\n", timesnode_print(timestree, mktime(&startfilter), mktime(&endfilter), mktime(&startfilter) == mktime(&today)) / 3600.0);
|
||||||
}
|
}
|
||||||
fclose(fp);
|
fclose(fp);
|
||||||
|
|
||||||
|
|
|
||||||
Loading…
Add table
Add a link
Reference in a new issue