README.md

The In Control of Effects project

version R-CMD-check

In Control of Effects UI Components

The iceComponents package is a primary dependency for the shiny application iceApp and part of the In Control of Effects project. The In Control of Effects application is a shiny app that provides antipsychotic medication recommendations based on an individual's preference for avoiding side effects. This project aims to initiate a discussion between the individual and their psychiatrist regarding antipsychotic medications and the risk of side effects.

This package includes several of the components that are used in the Shiny app. These components are designed for applications that have a series of "pages" that users click through and interact with. For example, instructions pages or surveys. The components used in this package are designed specifically for the application, but they can be adapted for use in your applications. These components are slightly experimental and serve as a starting point for the accessible shiny package.

More information about the project can be found in the information repository.

Installation

You can install iceComponents using the devtools (or remotes) package.

devtools::install_github("InControlofEffects/iceComponents")

Use

The iceComponents package provides a few custom UI components and a few Shiny server functions. To enable the package, call the function use_iceComponents at the top of the UI.

ui <- tagList(
    iceComponents::use_iceComponents(),
    ...
)

Shiny UI

| function | arguments | description | :------- | :-------- | :---------- | use_iceComponents | --- | Load package assets into the client (required). | accordion | inputId, title, content, heading_level, class | Create a collapsible section. | accordion_input | inputId, title, content, checked, class | Create a collapsible section with checkbox input. | back_btn | inputId, label | create back button for page navigation | checkbox_group | inputId, title, caption, choices, values, checked | Create a series of checkboxes | card | inputId, text, icon_name, icon_type | display a text card | card_group | ..., class | a container for multiple cards | container | class, ... | a generic container for writing pages into | error_box | inputId, class, icon_name, icon_type | create an error message container | forward_btn | inputId, label | create forward button (i.e., next page) for page navigation | input | inputId, label, type, icon | create an input element | navigation | ... | create a page naviation component (use back_btn and/or forward_btn) | page | inputId, class, ... | a container for creating pages | progress | ... | an R6 class for creating progressbars | set_doc_attribs | lang, dir | set attributes in the <html> element

Shiny Server

| function | arguments | description | :------- | :-------- | :---------- | reset_accordion | inputId | Reset accordion component to it's initial state (i.e., closed) | reset_accordion_input | inputId | Close and reset input to default checked state | clear_accordion_input | inputId | Force close and uncheck input (will override defaults) | reset_checkbox_group | inputId | Reset a checkbox group to the initial checked state | clear_checkbox_group | inputId | Unchecks all checkboxes | invalidate_input | inputId, error | Invalidate an input element and display an error message | clear_input | inputId | Removes form validation attributes/classes, but leaves text entered by user | reset_input | inputId | Clear input text and form validation attributes/classes | show_error_box | inputId, error | update and show an error box | hide_error_box | inputId | hide an error box | update_card | inputId | modify the text of a text card

Accounts Management

In addition to the functions above, there is also the accounts class. This object contains a series of methods for managing user accounts.

# create new instance
db <- iceComponents::accounts$new()

# define instance configuration
db$config(
    name = "my-app-accounts",
    version = "1.0.0"
)

# add user
db$add_user(
    username = "myCoolName",
    password = "test",
    type = "standard"
)

# change password for `test`
db$reset_password(
    username = "myCoolName",
    password = "new-pwd"
)

# save and view
db$print_data()
db$save_data(dir = "data/")

Getting Started

There are a number of command lines that are needed in order to develop the iceComponents package. The following steps outline what tools are needed and how to install them.

1. Install Node and NPM

Make sure Node and NPM are installed on your machine. You may also use Yarn. To test the installation or to see if these tools are already installed on your machine, run the following commands in the terminal.

node -v
npm -v

2. Clone the iceComponents repository

git clone https://github.com/InControlofEffects/iceComponents

3. Install dependencies

Next, install the npm packages that are required to run the app locally. I have used pnpm to manage packages on my machine and across projects. To install pnpm, run the following command. If you prefer to use npm, use npm instead of pnpm.

npm install -g pnpm

You will need to install the dependencies in the root directory and in the client/ directory.

pnpm install

cd client
pnpm install

4. Start the development servers

When everything is install, navigate back to the main directory and start the development server. This will start the client at port localhost:3000 and the API at localhost:8000/api/data.

npm run start


InControlofEffects/iceComponents documentation built on April 1, 2021, 5:51 a.m.