Skip to content

Commit 701ca3a

Browse files
BUG FIX: Limiting the frequency of progress reporting [#80]
1 parent 3282171 commit 701ca3a

File tree

2 files changed

+11
-2
lines changed

2 files changed

+11
-2
lines changed

NEWS

Lines changed: 3 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -35,6 +35,9 @@ NEW FEATURES:
3535

3636
BUG FIXES:
3737

38+
* Limiting the frequency of progress reporting via handler arguments 'times',
39+
'interval' or 'intrusivness' did not work and was effectively ignored.
40+
3841
* The 'progress' handler, which uses progress::progress_bar(), did not support
3942
colorization of the 'format' string when done by the 'crayon' package.
4043

R/make_progression_handler.R

Lines changed: 8 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -324,13 +324,19 @@ make_progression_handler <- function(name, reporter = list(), handler = NULL, en
324324
times <- max(times, 1L)
325325
interval <- interval * intrusiveness
326326

327+
## Milestone steps that need to be reach in order to trigger an
328+
## update of the reporter
327329
milestones <<- if (times == 1L) {
328330
c(max_steps)
329331
} else {
330332
seq(from = 1L, to = max_steps, length.out = times)
331333
}
334+
335+
## Timestamps for when steps where reached
336+
## Note that they will remain NA for "skipped" steps
332337
timestamps <<- rep(as.POSIXct(NA), times = max_steps)
333338
timestamps[1] <<- Sys.time()
339+
334340
step <<- 0L
335341
message <<- character(0L)
336342
if (debug) mstr(list(finished = finished, milestones = milestones))
@@ -351,6 +357,8 @@ make_progression_handler <- function(name, reporter = list(), handler = NULL, en
351357
if (length(msg) > 0) message <<- msg
352358
timestamps[step] <<- Sys.time()
353359
if (debug) mstr(list(finished = finished, step = step, milestones = milestones, prev_milestone = prev_milestone, interval = interval))
360+
361+
## Only update if a new milestone step has been reached
354362
if (length(milestones) > 0L && step >= milestones[1]) {
355363
skip <- FALSE
356364
if (interval > 0) {
@@ -368,8 +376,6 @@ make_progression_handler <- function(name, reporter = list(), handler = NULL, en
368376
if (debug) mstr(list(type = "finish (auto)", milestones = milestones))
369377
finish_reporter(p)
370378
}
371-
} else {
372-
update_reporter(p)
373379
}
374380
.validate_internal_state(sprintf("handler(type=%s) ... end", type))
375381
} else {

0 commit comments

Comments
 (0)