Ecosyste.ms: Awesome

An open API service indexing awesome lists of open source software.

Awesome Lists | Featured Topics | Projects

https://github.com/Appsilon/shiny.collections

This project is deprecated and no longer supported. (Google Docs-like live collaboration in Shiny)
https://github.com/Appsilon/shiny.collections

Last synced: about 2 months ago
JSON representation

This project is deprecated and no longer supported. (Google Docs-like live collaboration in Shiny)

Awesome Lists containing this project

README

        

---
output: html_document
params:
website_url: http://appsilon.com
logo_url: https://cdn.rawgit.com/Appsilon/website-cdn/gh-pages/logo-white.png
repo_name: shiny.collections
repo_url: https://github.com/Appsilon/shiny.collections
demo_url: http://appsilon.com/demo
chagelog_url: https://github.com/Appsilon/shiny.collections/blob/master/CHANGELOG.md
escape_script: false
---

`r params$repo_name`
===========

Google Docs-like live collaboration in Shiny


**shiny.collections** adds persistent reactive collections that can be effortlessly integrated with components like Shiny inputs, DT::dataTable or rhandsontable. The package makes it easy to build collaborative Shiny applications with persistent data.

Source code {.darkslide}
-----------

This library source code can be found on [Appsilon Data Science's](`r params$website_url`) Github:


[`r params$repo_url`](`r params$repo_url`)

```{r, echo = F, results='asis'}
if (params$type == "web") {
cat(paste0('
document.write(\'<div class="logo"><a href="', params$website_url, '"><img alt="Appsilon Data Science" src="', params$logo_url, '"/></a></div>\')

'))
}
```

How to install?
---------------
**Note! This library is still in its infancy. Api might change in the future.**

At the moment it's possible to install this library through [devtools](https://github.com/hadley/devtools).
```
devtools::install_github("Appsilon/`r params$repo_name`")
```

To install [previous version](`r params$changelog_url`) you can run:
```
devtools::install_github("Appsilon/`r params$repo_name`", ref = "0.1.0")
```

Example {.darkorange}
-------

Before running an example make sure that your RethinkDB is set-up and running. For installation and running guidelines you can visit [RethinkDB docs](https://www.rethinkdb.com/).

```
library(shiny)

ui <- shinyUI(fluidPage(
actionButton("click", "Add one"),
DT::dataTableOutput("cars_data")
))

connection <- shiny.collections::connect()

server <- shinyServer(function(input, output) {
cars <- shiny.collections::collection("cars", connection)

observeEvent(input$click, {
shiny.collections::insert(cars, list(name = "Sample name", value = sample(1:100, 1)))
})
output$cars_data <- DT::renderDataTable(DT::datatable(cars$collection))
})

shinyApp(ui = ui, server = server)
```

Talk
----

We are proud that **shiny.collections** gained a lot of interests at **useR!2017** in
Brussels. Here you can see a talk by [Marek Rogala](https://github.com/marekrogala)
presenting two interesting use cases: https://goo.gl/mD1KfV .

How to contribute?
-----------------
If you want to contribute to this project please submit a regular PR, once you're done with new feature or bug fix.

**Changes in documentation**

Both repository **README.md** file and an official documentation page are generated with Rmarkdown, so if there is a need to update them, please modify accordingly a **README.Rmd** file and run a **build_readme.R** script to compile it.

Troubleshooting {.darkslide}
-----------------
We used the latest versions of dependencies for this library, so please update your R environment before installation.

However, if you encounter any problems, try the following:

1. Up-to-date R language environment
2. Installing specific dependent libraries versions
* shiny
```
install.packages("shiny", version='0.14.2.9001')
```
3. Make sure you open the connection _outside_ the `server` function.

Future enhacements
------------------
* CRAN release
* More methods (allowing for batch insert, update, delete, etc)
* Publications and subscriptions allowing to sync only part of the data in each Shiny session

Appsilon Data Science {.footer}
------------------

```{r, echo = F, results='asis'}
if (params$type == "web") {
cat(paste0('
document.write(\'<div class="logo"><a href="', params$website_url, '"><img alt="Appsilon Data Science" src="', params$logo_url, '" /></a></div><div class="subheader"> We Provide End-to-End Data Science Solutions </div> \');

'))
}
```

Get in touch [[email protected]]([email protected])

```{r, echo = F, results='asis'}
if (params$type == "web") {
cat(paste0('
document.write(\'<a href="', params$repo_url, '"><img style="position: absolute; margin: 0; top: 0; right: 0; border: 0;" src="https://camo.githubusercontent.com/38ef81f8aca64bb9a64448d0d70f1308ef5341ab/68747470733a2f2f73332e616d617a6f6e6177732e636f6d2f6769746875622f726962626f6e732f666f726b6d655f72696768745f6461726b626c75655f3132313632312e706e67" alt="Fork me on GitHub" data-canonical-src="https://s3.amazonaws.com/github/ribbons/forkme_right_darkblue_121621.png"></a>\');

'))
}
```