{"id":13425340,"url":"https://github.com/jrowen/rhandsontable","last_synced_at":"2025-10-21T20:55:17.524Z","repository":{"id":28189708,"uuid":"31691538","full_name":"jrowen/rhandsontable","owner":"jrowen","description":"A htmlwidgets implementation of Handsontable.js","archived":false,"fork":false,"pushed_at":"2024-07-23T18:38:19.000Z","size":117364,"stargazers_count":390,"open_issues_count":166,"forks_count":148,"subscribers_count":33,"default_branch":"master","last_synced_at":"2025-10-13T14:44:07.163Z","etag":null,"topics":["handsontable","htmlwidgets","javascript","r","shiny","sparkline"],"latest_commit_sha":null,"homepage":"http://jrowen.github.io/rhandsontable/","language":"HTML","has_issues":true,"has_wiki":null,"has_pages":null,"mirror_url":null,"source_name":null,"license":"other","status":null,"scm":"git","pull_requests_enabled":true,"icon_url":"https://github.com/jrowen.png","metadata":{"files":{"readme":"README.md","changelog":"NEWS","contributing":null,"funding":null,"license":"LICENSE","code_of_conduct":null,"threat_model":null,"audit":null,"citation":null,"codeowners":null,"security":null,"support":null,"governance":null,"roadmap":null,"authors":null,"dei":null,"publiccode":null,"codemeta":null}},"created_at":"2015-03-05T02:28:24.000Z","updated_at":"2025-10-06T09:16:29.000Z","dependencies_parsed_at":"2025-03-15T19:43:25.926Z","dependency_job_id":null,"html_url":"https://github.com/jrowen/rhandsontable","commit_stats":{"total_commits":453,"total_committers":21,"mean_commits":"21.571428571428573","dds":"0.12141280353200878","last_synced_commit":"dd296376820ed864e8f938581482878a40f54a0e"},"previous_names":[],"tags_count":11,"template":false,"template_full_name":null,"purl":"pkg:github/jrowen/rhandsontable","repository_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/jrowen%2Frhandsontable","tags_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/jrowen%2Frhandsontable/tags","releases_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/jrowen%2Frhandsontable/releases","manifests_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/jrowen%2Frhandsontable/manifests","owner_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners/jrowen","download_url":"https://codeload.github.com/jrowen/rhandsontable/tar.gz/refs/heads/master","sbom_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/jrowen%2Frhandsontable/sbom","scorecard":{"id":537071,"data":{"date":"2025-08-11","repo":{"name":"github.com/jrowen/rhandsontable","commit":"dd296376820ed864e8f938581482878a40f54a0e"},"scorecard":{"version":"v5.2.1-40-gf6ed084d","commit":"f6ed084d17c9236477efd66e5b258b9d4cc7b389"},"score":2.7,"checks":[{"name":"Maintained","score":0,"reason":"0 commit(s) and 0 issue activity found in the last 90 days -- score normalized to 0","details":null,"documentation":{"short":"Determines if the project is \"actively maintained\".","url":"https://github.com/ossf/scorecard/blob/f6ed084d17c9236477efd66e5b258b9d4cc7b389/docs/checks.md#maintained"}},{"name":"Dangerous-Workflow","score":-1,"reason":"no workflows found","details":null,"documentation":{"short":"Determines if the project's GitHub Action workflows avoid dangerous patterns.","url":"https://github.com/ossf/scorecard/blob/f6ed084d17c9236477efd66e5b258b9d4cc7b389/docs/checks.md#dangerous-workflow"}},{"name":"Code-Review","score":0,"reason":"Found 1/16 approved changesets -- score normalized to 0","details":null,"documentation":{"short":"Determines if the project requires human code review before pull requests (aka merge requests) are merged.","url":"https://github.com/ossf/scorecard/blob/f6ed084d17c9236477efd66e5b258b9d4cc7b389/docs/checks.md#code-review"}},{"name":"Packaging","score":-1,"reason":"packaging workflow not detected","details":["Warn: no GitHub/GitLab publishing workflow detected."],"documentation":{"short":"Determines if the project is published as a package that others can easily download, install, easily update, and uninstall.","url":"https://github.com/ossf/scorecard/blob/f6ed084d17c9236477efd66e5b258b9d4cc7b389/docs/checks.md#packaging"}},{"name":"Token-Permissions","score":-1,"reason":"No tokens found","details":null,"documentation":{"short":"Determines if the project's workflows follow the principle of least privilege.","url":"https://github.com/ossf/scorecard/blob/f6ed084d17c9236477efd66e5b258b9d4cc7b389/docs/checks.md#token-permissions"}},{"name":"Binary-Artifacts","score":10,"reason":"no binaries found in the repo","details":null,"documentation":{"short":"Determines if the project has generated executable (binary) artifacts in the source repository.","url":"https://github.com/ossf/scorecard/blob/f6ed084d17c9236477efd66e5b258b9d4cc7b389/docs/checks.md#binary-artifacts"}},{"name":"CII-Best-Practices","score":0,"reason":"no effort to earn an OpenSSF best practices badge detected","details":null,"documentation":{"short":"Determines if the project has an OpenSSF (formerly CII) Best Practices Badge.","url":"https://github.com/ossf/scorecard/blob/f6ed084d17c9236477efd66e5b258b9d4cc7b389/docs/checks.md#cii-best-practices"}},{"name":"Security-Policy","score":0,"reason":"security policy file not detected","details":["Warn: no security policy file detected","Warn: no security file to analyze","Warn: no security file to analyze","Warn: no security file to analyze"],"documentation":{"short":"Determines if the project has published a security policy.","url":"https://github.com/ossf/scorecard/blob/f6ed084d17c9236477efd66e5b258b9d4cc7b389/docs/checks.md#security-policy"}},{"name":"Fuzzing","score":0,"reason":"project is not fuzzed","details":["Warn: no fuzzer integrations found"],"documentation":{"short":"Determines if the project uses fuzzing.","url":"https://github.com/ossf/scorecard/blob/f6ed084d17c9236477efd66e5b258b9d4cc7b389/docs/checks.md#fuzzing"}},{"name":"License","score":9,"reason":"license file detected","details":["Info: project has a license file: LICENSE:0","Warn: project license file does not contain an FSF or OSI license."],"documentation":{"short":"Determines if the project has defined a license.","url":"https://github.com/ossf/scorecard/blob/f6ed084d17c9236477efd66e5b258b9d4cc7b389/docs/checks.md#license"}},{"name":"Signed-Releases","score":0,"reason":"Project has not signed or included provenance with any releases.","details":["Warn: release artifact v0.3.8 not signed: https://api.github.com/repos/jrowen/rhandsontable/releases/43497357","Warn: release artifact v0.3.8 does not have provenance: https://api.github.com/repos/jrowen/rhandsontable/releases/43497357"],"documentation":{"short":"Determines if the project cryptographically signs release artifacts.","url":"https://github.com/ossf/scorecard/blob/f6ed084d17c9236477efd66e5b258b9d4cc7b389/docs/checks.md#signed-releases"}},{"name":"Branch-Protection","score":0,"reason":"branch protection not enabled on development/release branches","details":["Warn: branch protection not enabled for branch 'master'"],"documentation":{"short":"Determines if the default and release branches are protected with GitHub's branch protection settings.","url":"https://github.com/ossf/scorecard/blob/f6ed084d17c9236477efd66e5b258b9d4cc7b389/docs/checks.md#branch-protection"}},{"name":"Pinned-Dependencies","score":-1,"reason":"no dependencies found","details":null,"documentation":{"short":"Determines if the project has declared and pinned the dependencies of its build process.","url":"https://github.com/ossf/scorecard/blob/f6ed084d17c9236477efd66e5b258b9d4cc7b389/docs/checks.md#pinned-dependencies"}},{"name":"Vulnerabilities","score":10,"reason":"0 existing vulnerabilities detected","details":null,"documentation":{"short":"Determines if the project has open, known unfixed vulnerabilities.","url":"https://github.com/ossf/scorecard/blob/f6ed084d17c9236477efd66e5b258b9d4cc7b389/docs/checks.md#vulnerabilities"}},{"name":"SAST","score":0,"reason":"SAST tool is not run on all commits -- score normalized to 0","details":["Warn: 0 commits out of 19 are checked with a SAST tool"],"documentation":{"short":"Determines if the project uses static code analysis.","url":"https://github.com/ossf/scorecard/blob/f6ed084d17c9236477efd66e5b258b9d4cc7b389/docs/checks.md#sast"}}]},"last_synced_at":"2025-08-20T07:15:09.341Z","repository_id":28189708,"created_at":"2025-08-20T07:15:09.341Z","updated_at":"2025-08-20T07:15:09.341Z"},"host":{"name":"GitHub","url":"https://github.com","kind":"github","repositories_count":280325188,"owners_count":26311414,"icon_url":"https://github.com/github.png","version":null,"created_at":"2022-05-30T11:31:42.601Z","updated_at":"2022-07-04T15:15:14.044Z","status":"online","status_checked_at":"2025-10-21T02:00:06.614Z","response_time":58,"last_error":null,"robots_txt_status":"success","robots_txt_updated_at":"2025-07-24T06:49:26.215Z","robots_txt_url":"https://github.com/robots.txt","online":true,"can_crawl_api":true,"host_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub","repositories_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories","repository_names_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repository_names","owners_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners"}},"keywords":["handsontable","htmlwidgets","javascript","r","shiny","sparkline"],"created_at":"2024-07-31T00:01:10.390Z","updated_at":"2025-10-21T20:55:17.519Z","avatar_url":"https://github.com/jrowen.png","language":"HTML","readme":"[![Build Status](https://travis-ci.org/jrowen/rhandsontable.svg?branch=master)](https://travis-ci.org/jrowen/rhandsontable)\n[![AppVeyor Build Status](https://ci.appveyor.com/api/projects/status/github/jrowen/rhandsontable?branch=master\u0026svg=true)](https://ci.appveyor.com/project/jrowen/rhandsontable)\n[![CRAN_Status_Badge](https://www.r-pkg.org/badges/version/rhandsontable)](https://cran.r-project.org/package=rhandsontable)\n[![CRAN_Download_Badge](https://cranlogs.r-pkg.org/badges/grand-total/rhandsontable)](https://cran.r-project.org/package=rhandsontable)\n\n**See the [project website](https://jrowen.github.io/rhandsontable/) for more details and live examples, and see below for important details on use in shiny apps.**\n\nAn [`htmlwidgets`](https://www.htmlwidgets.org/) implementation of [Handsontable.js](https://handsontable.com).  Per the website:\n\n*Handsontable is a minimalist Excel-like data grid editor for HTML \u0026 JavaScript*\n\nThis library was inspired by the [`shinyTable`](https://github.com/trestletech/shinyTable) package.  Most of the original functionality was preserved, and the `htmlwidgets` framework made it possible to leverage even more of the Handsontable.js functionality.\n\nNote: With v7, `handsontable` went to a more [restrictive license for commercial use](https://github.com/handsontable/handsontable#license-key).  To avoid license violations for existing users, `rhandsontable` will not update `handsontable` beyond v6.2.2.  This may change in the future if a way is found to manage multiple `handsontable` versions.\n\n**See the [vignette](https://rpubs.com/jrowen/intro_rhandsontable) for detailed examples and links to shiny apps.**\n\nTo install from CRAN use\n```R\ninstall.packages(\"rhandsontable\")\n```\nFor the latest development version use\n```R\ndevtools::install_github(\"jrowen/rhandsontable\")\n```\n\nA simple example\n```R\nlibrary(rhandsontable)\n\nDF = data.frame(int = 1:10,\n                numeric = rnorm(10),\n                logical = TRUE,\n                character = LETTERS[1:10],\n                fact = factor(letters[1:10]),\n                date = seq(from = Sys.Date(), by = \"days\", length.out = 10),\n                stringsAsFactors = FALSE)\n\n# add a sparkline chart\nDF$chart = sapply(1:10, function(x) jsonlite::toJSON(list(values=rnorm(10))))\n                                                    \nrhandsontable(DF, rowHeaders = NULL) %\u003e%\n  hot_col(\"chart\", renderer = htmlwidgets::JS(\"renderSparkline\"))\n```\n![alt tag](https://raw.github.com/jrowen/rhandsontable/master/inst/examples/images/rhandsontable_readme.png \"A simple example\")\n\nA more involved `shiny` example\n```R\nshiny::runGitHub(\"rhandsontable\", \"jrowen\", subdir = \"inst/examples/rhandsontable_corr\")\n```\n\n**Important note on shiny use:** The `htmlwidgets` package creates widgets as shiny output bindings.  The `rhandsontable` package also attempts to expose the table as a *pseudo* shiny input binding using handsontable change events (see [here](https://github.com/jrowen/rhandsontable/blob/master/inst/htmlwidgets/rhandsontable.js) for the supported events).  **This means the table (e.g. `hot`) can be accessed in shiny using either `input$hot` or `output$hot`, but these values may not be in-sync.**  The timing of updates will depend on the particular reactive path followed by your shiny application.  \n\nSince the widget is not currently able to use the standard shiny input binding functionality, you will need to explicitly call the `hot_to_r` function to convert the handsontable data to an R object.\n\nTwo additional inputs are also enabled, `input$hot_select` and `input$hot_comment`, which will fire when a cell selection or a comment changes, respectively (if you would like to see more options, please post an issue or create a PR).\n\nThis functionality is still evolving, so please don't hesitate to share suggestions and PRs.\n","funding_links":[],"categories":["HTML","Tools","UI Components"],"sub_categories":["Integrations","Table"],"project_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fjrowen%2Frhandsontable","html_url":"https://awesome.ecosyste.ms/projects/github.com%2Fjrowen%2Frhandsontable","lists_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fjrowen%2Frhandsontable/lists"}