|
| 1 | +#------------------------------------------------------------------------------# |
| 2 | +# |
| 3 | +# /$$ |
| 4 | +# | $$ |
| 5 | +# /$$$$$$ /$$$$$$ |
| 6 | +# /$$__ $$|_ $$_/ |
| 7 | +# | $$ \ $$ | $$ |
| 8 | +# | $$ | $$ | $$ /$$ |
| 9 | +# | $$$$$$$ | $$$$/ |
| 10 | +# \____ $$ \___/ |
| 11 | +# /$$ \ $$ |
| 12 | +# | $$$$$$/ |
| 13 | +# \______/ |
| 14 | +# |
| 15 | +# This file is part of the 'rstudio/gt' project. |
| 16 | +# |
| 17 | +# Copyright (c) 2018-2026 gt authors |
| 18 | +# |
| 19 | +# For full copyright and license information, please look at |
| 20 | +# https://gt.rstudio.com/LICENSE.html |
| 21 | +# |
| 22 | +#------------------------------------------------------------------------------# |
| 23 | + |
| 24 | + |
| 25 | +.dt_rows_hidden_key <- "_rows_hidden" |
| 26 | + |
| 27 | +dt_rows_hidden_get <- function(data) { |
| 28 | + dt__get(data, .dt_rows_hidden_key) |
| 29 | +} |
| 30 | + |
| 31 | +dt_rows_hidden_set <- function(data, rows_hidden) { |
| 32 | + dt__set(data, .dt_rows_hidden_key, rows_hidden) |
| 33 | +} |
| 34 | + |
| 35 | +dt_rows_hidden_init <- function(data) { |
| 36 | + dt_rows_hidden_set(data = data, rows_hidden = integer(0L)) |
| 37 | +} |
| 38 | + |
| 39 | +#' Add rows to the hidden rows list |
| 40 | +#' |
| 41 | +#' @param data The gt table data object. |
| 42 | +#' @param rows Integer vector of row indices to hide. |
| 43 | +#' |
| 44 | +#' @noRd |
| 45 | +dt_rows_hidden_add <- function(data, rows) { |
| 46 | + |
| 47 | + existing_hidden <- dt_rows_hidden_get(data = data) |
| 48 | + |
| 49 | + # Combine and keep unique values |
| 50 | + |
| 51 | + rows_hidden <- sort(unique(c(existing_hidden, rows))) |
| 52 | + |
| 53 | + dt_rows_hidden_set(data = data, rows_hidden = rows_hidden) |
| 54 | +} |
| 55 | + |
| 56 | +#' Remove rows from the hidden rows list (unhide them) |
| 57 | +#' |
| 58 | +#' @param data The gt table data object. |
| 59 | +#' @param rows Integer vector of row indices to unhide. |
| 60 | +#' |
| 61 | +#' @noRd |
| 62 | +dt_rows_hidden_remove <- function(data, rows) { |
| 63 | + |
| 64 | + existing_hidden <- dt_rows_hidden_get(data = data) |
| 65 | + |
| 66 | + # Remove specified rows from hidden list |
| 67 | + rows_hidden <- setdiff(existing_hidden, rows) |
| 68 | + |
| 69 | + dt_rows_hidden_set(data = data, rows_hidden = rows_hidden) |
| 70 | +} |
| 71 | + |
| 72 | +#' Check if any rows are hidden |
| 73 | +#' |
| 74 | +#' @param data The gt table data object. |
| 75 | +#' |
| 76 | +#' @noRd |
| 77 | +dt_rows_hidden_exist <- function(data) { |
| 78 | + length(dt_rows_hidden_get(data = data)) > 0 |
| 79 | +} |
0 commit comments