Skip to content

Commit 66fd3c1

Browse files
committed
Fix issues with description parsing
1 parent 02d1502 commit 66fd3c1

File tree

1 file changed

+33
-12
lines changed

1 file changed

+33
-12
lines changed

src/models/hasTimes.js

Lines changed: 33 additions & 12 deletions
Original file line numberDiff line numberDiff line change
@@ -57,6 +57,7 @@ class hasTimes extends Base {
5757
getTimes() {
5858
let times = [],
5959
timeSpent = 0,
60+
totalTimeSpent = 0,
6061
timeUsers = {},
6162
timeFormat = this.config.get('timeFormat', this._type);
6263

@@ -67,24 +68,33 @@ class hasTimes extends Base {
6768
});
6869

6970
let promise = this.parallel(this.notes, (note, done) => {
70-
let created = moment(note.created_at), match, subMatch, removeMatch;
71+
let created = moment(note.created_at), match, subMatch;
7172

72-
if (
73-
// filter out user notes
73+
74+
if ( //
75+
// filter out user notes
7476
!note.system ||
77+
// filter out notes that are no time things
78+
!(match = regex.exec(note.body)) && !(subMatch = subRegex.exec(note.body)) && !removeRegex.exec(note.body)
79+
) return done();
80+
81+
// create a time string and a time object
82+
let timeString = match ? match[1] : (subMatch ? `-${subMatch[1]}` : `-${Time.toHumanReadable(timeSpent, this.config.get('hoursPerDay'))}`);
83+
let time = new Time(timeString, note, this, this.config);
84+
85+
// add to total time spent
86+
totalTimeSpent += time.seconds;
87+
88+
if ( //
7589
// only include times by the configured user
7690
(this.config.get('user') && this.config.get('user') !== note.author.username) ||
7791
// filter out times that are not in the given time frame
78-
!(created.isSameOrAfter(moment(this.config.get('from'))) && created.isSameOrBefore(moment(this.config.get('to')))) ||
79-
// filter out notes that are no time things
80-
!(match = regex.exec(note.body)) && !(subMatch = subRegex.exec(note.body)) && !(removeMatch = removeRegex.exec(note.body))
92+
!(created.isSameOrAfter(moment(this.config.get('from'))) && created.isSameOrBefore(moment(this.config.get('to'))))
8193
) return done();
8294

8395
if (!timeUsers[note.author.username]) timeUsers[note.author.username] = 0;
8496

85-
let timeString = match ? match[1] : (subMatch ? `-${subMatch[1]}` : `-${Time.toHumanReadable(timeSpent, this.config.get('hoursPerDay'))}`);
86-
let time = new Time(timeString, note, this, this.config);
87-
97+
// add to time spent & add to user specific time spent
8898
timeSpent += time.seconds;
8999
timeUsers[note.author.username] += time.seconds;
90100

@@ -95,9 +105,20 @@ class hasTimes extends Base {
95105
});
96106

97107
promise = promise.then(() => new Promise(resolve => {
98-
if (this.config('_skipDescriptionParsing') || timeSpent === this.data.time_stats.total_time_spent) return resolve();
99-
100-
let difference = this.data.time_stats.total_time_spent - timeSpent,
108+
let created = moment(this.data.created_at);
109+
110+
if ( //
111+
// skip if description parsing is disabled
112+
this.config.get('_skipDescriptionParsing') ||
113+
// or the total time matches
114+
totalTimeSpent === this.data.time_stats.total_time_spent ||
115+
// or the user is filtered out
116+
(this.config.get('user') && this.config.get('user') !== this.data.author.username) ||
117+
// or the issue is not within the given time frame
118+
!(created.isSameOrAfter(moment(this.config.get('from'))) && created.isSameOrBefore(moment(this.config.get('to'))))
119+
) return resolve();
120+
121+
let difference = this.data.time_stats.total_time_spent - totalTimeSpent,
101122
note = Object.assign({noteable_type: this._typeSingular}, this.data);
102123

103124
times.unshift(new Time(Time.toHumanReadable(difference, this.config.get('hoursPerDay')), note, this, this.config));

0 commit comments

Comments
 (0)