---
title: "Counters"
output: rmarkdown::html_vignette
vignette: >
%\VignetteIndexEntry{Counters}
%\VignetteEngine{knitr::rmarkdown}
%\VignetteEncoding{UTF-8}
---
```{r, include = FALSE}
knitr::opts_chunk$set(
collapse = TRUE,
comment = "#>",
eval = interactive()
)
```
`whereami` stores in counters when a `whereami` call was invoked in a script during a session. This information can be used in control reactivity in shiny app development and testing.
Below shows the basics of accessing and controlling counters.
```{r setup}
library(whereami)
```
```{r}
txt_1 <- "
whereami::cat_where(whereami::whereami(tag = 'tag1'))
"
txt_2 <- "whereami::cat_where(whereami::whereami(tag = 'tag2'))"
tf_1 <- tempfile(fileext = '.R')
tf_2 <- tempfile(fileext = '.R')
cat(txt_1,file = tf_1)
cat(txt_2,file = tf_2)
```
```{r}
source(tf_1)
source(tf_2)
```
## Query Counter State
```{r}
# All counters
counter_state()
# A single counter
counter_state(tag = 'tag1')
```
## Accessing Counters
```{r}
# Counter names
counter_names()
# Counter tags
counter_tags()
```
## Retrieve Counters
```{r}
counters <- counter_get()
counters
```
## Manipulating Counters
Using `counter_reset` and `counter_state` in a loop
```{r}
for( i in 1:10 ){
source(tf_1)
source(tf_2)
if( counter_state(tag = 'tag1') > 5 )
counter_reset(tag = 'tag2')
}
```
## Plot Method
```{r,fig.width=7}
plot(counter_get())
```
## json logs
A json log of the counter is written to `file.path(tempdir(),'whereami.json')` by default. The path can be set using `set_whereami_log()`.
```{r}
jsonlite::read_json(
file.path(tempdir(),'whereami.json'),
simplifyVector = TRUE)
```
## Clear all counters
```{r}
counter_reset()
```
Verify that there are no active counters.
```{r}
counter_state()
```