diff --git a/.Rbuildignore b/.Rbuildignore new file mode 100644 index 0000000..5619237 --- /dev/null +++ b/.Rbuildignore @@ -0,0 +1,13 @@ +^.*\.Rproj$ +^\.Rproj\.user$ +Readme.Rmd +^_pkgdown\.yml$ +^docs$ +^pkgdown$ +^\.github$ +^pkgdownTemplate\.Rcheck$ +^pkgdownTemplate.*\.tar\.gz$ +^pkgdownTemplate.*\.tgz$ +^DataProduct\.Rcheck$ +^DataProduct.*\.tar\.gz$ +^DataProduct.*\.tgz$ diff --git a/.github/.gitignore b/.github/.gitignore new file mode 100644 index 0000000..2d19fc7 --- /dev/null +++ b/.github/.gitignore @@ -0,0 +1 @@ +*.html diff --git a/.github/workflows/R-CMD-check.yaml b/.github/workflows/R-CMD-check.yaml new file mode 100644 index 0000000..3edd850 --- /dev/null +++ b/.github/workflows/R-CMD-check.yaml @@ -0,0 +1,33 @@ +# For help debugging build failures open an issue on the RStudio community with the 'github-actions' tag. +# https://community.rstudio.com/new-topic?category=Package%20development&tags=github-actions +# Turned of check/build of vignettes +on: + push: + branches: + - main + - master + pull_request: + branches: + - main + - master + +name: R-CMD-check + +jobs: + R-CMD-check: + runs-on: macOS-latest + env: + GITHUB_PAT: ${{ secrets.GITHUB_TOKEN }} + steps: + - uses: actions/checkout@v2 + - uses: r-lib/actions/setup-r@v1 + - name: Install dependencies + run: | + install.packages(c("remotes", "rcmdcheck")) + remotes::install_deps(dependencies = TRUE) + shell: Rscript {0} + - name: Check + run: | + options(crayon.enabled = TRUE) + rcmdcheck::rcmdcheck(args = c("--no-manual", "--no-build-vignettes"), error_on = "error", build_args = "--no-build-vignettes") + shell: Rscript {0} diff --git a/.gitignore b/.gitignore new file mode 100644 index 0000000..c092f48 --- /dev/null +++ b/.gitignore @@ -0,0 +1,47 @@ +# History files +.Rhistory +.Rapp.history + +# Session Data files +.RData +*.Rproj + +# User-specific files +.Ruserdata + +# Example code in package build process +*-Ex.R + +# Output files from R CMD build +/*.tar.gz + +# Output files from R CMD check +/*.Rcheck/ + +# RStudio files +.Rproj.user/ + +# produced vignettes +vignettes/*.html +vignettes/*.pdf + +# OAuth2 token, see https://github.com/hadley/httr/releases/tag/v0.3 +.httr-oauth + +# knitr and R markdown default cache directories +*_cache/ +/cache/ + +# Temporary files created by R markdown +*.utf8.md +*.knit.md + +# R Environment Variables +.Renviron +inst/doc +pkgdownTemplate.Rcheck/ +pkgdownTemplate*.tar.gz +pkgdownTemplate*.tgz +DataProduct.Rcheck/ +DataProduct*.tar.gz +DataProduct*.tgz diff --git a/DESCRIPTION b/DESCRIPTION new file mode 100644 index 0000000..cbfe899 --- /dev/null +++ b/DESCRIPTION @@ -0,0 +1,19 @@ +Package: DataProduct +Title: A NMFS Data Product +Date: 2022-02-14 +Version: 1.0 +Authors@R: c(person("Elizabeth", "Holmes", , "eli.holmes@noaa.gov", role = c("aut", "cre")), person("Another", "Contributor", role="aut")) +URL: https://rverse-tutorials.github.io/DataProduct, https://github.com/rverse-tutorials/DataProduct +BugReports: https://github.com/rverse-tutorials/DataProduct/issues +Description: This is an expample NMFS branded R data package with a pkgdown website. +Depends: R (>= 4.0.0) +Suggests: + rmarkdown, + knitr +Imports: stats, graphics +License: GPL-3 + file LICENSE +Encoding: UTF-8 +LazyData: true +RoxygenNote: 7.1.2 +Roxygen: list(markdown = TRUE) +VignetteBuilder: knitr diff --git a/LICENSE b/LICENSE new file mode 100644 index 0000000..ee2504c --- /dev/null +++ b/LICENSE @@ -0,0 +1,8 @@ +Software code created by U.S. Government employees is not subject to +copyright in the United States (17 U.S.C. §105). The United State +s/Department of Commerce reserve all rights to seek and obtain copyright +protection in countries other than the United States for Software authored +in its entirety by the Department of Commerce. To this end, the Department +of Commerce hereby grants to Recipient a royalty-free, nonexclusive license +to use, copy, and create derivative works of the Software outside of the +United States. diff --git a/NAMESPACE b/NAMESPACE new file mode 100644 index 0000000..e6375b2 --- /dev/null +++ b/NAMESPACE @@ -0,0 +1,6 @@ +# Generated by roxygen2: do not edit by hand + +export(samplefunction) +export(sampleplot) +import(graphics) +import(stats) diff --git a/NEWS.md b/NEWS.md new file mode 100644 index 0000000..611c375 --- /dev/null +++ b/NEWS.md @@ -0,0 +1,5 @@ +# pkgdownTemplate + +# Version 1.0 + +This is a basic template with NMFS branding. It has NMFS palette and the NMFS footer, license, and **pkgdown** structure. diff --git a/R/data-cars.R b/R/data-cars.R new file mode 100644 index 0000000..7efbe54 --- /dev/null +++ b/R/data-cars.R @@ -0,0 +1,18 @@ +#' @title a dataset of horsepower for different cars +#' +#' @description First 4 columns of the mtcars dataset. +#' +#' \itemize{ +#' \item mpg. miles per gallon +#' \item cyl. cylinders +#' \item disp. displacement +#' \item hp. horse poser +#' } +#' +#' @docType data +#' @name cars +#' @usage data(cars) +#' @references R base package. +#' @format A data frame. +#' @keywords datasets +NULL \ No newline at end of file diff --git a/R/data-iris2.R b/R/data-iris2.R new file mode 100644 index 0000000..aa0f284 --- /dev/null +++ b/R/data-iris2.R @@ -0,0 +1,16 @@ +#' @title sepal length for differen species of iris +#' +#' @description The Species and Sepal.Length from the iris data set from base R. +#' +#' \itemize{ +#' \item Species. species +#' \item Sepal.Length. sepal length +#' } +#' +#' @docType data +#' @name iris2 +#' @usage data(iris2) +#' @references from R base package. +#' @format A data frame. +#' @keywords datasets +NULL \ No newline at end of file diff --git a/R/import_packages.R b/R/import_packages.R new file mode 100644 index 0000000..6564bdb --- /dev/null +++ b/R/import_packages.R @@ -0,0 +1,3 @@ +#' @import stats +#' @import graphics +NULL diff --git a/R/samplefunction.R b/R/samplefunction.R new file mode 100644 index 0000000..2d466fb --- /dev/null +++ b/R/samplefunction.R @@ -0,0 +1,16 @@ +#' Sample Function Title +#' +#' This part is the description. It can be as long as you want but usually is one paragraph. +#' +#' @param x This is a required argument and has no default value. +#' @param y Has a default value of 10. +#' @param z Although this looks like it is a default string, the function `match.arg()` is +#' used to set it in the function. With `match.arg()`, the string specifies what values are allowed and it will throw an error if not one of those. The default is the first value. +#' @return A string with the values. +#' @examples +#' samplefunction(1) +#' @export +samplefunction <- function(x, y=10, z=c("yellow", "red", "green")){ + z <- match.arg(z) + return(paste(x, y, z)) +} diff --git a/R/sampleplot.R b/R/sampleplot.R new file mode 100644 index 0000000..4daeed5 --- /dev/null +++ b/R/sampleplot.R @@ -0,0 +1,18 @@ +#' Sample plot +#' +#' This shows how you need to use `::` with all your functions that are not in base R. +#' +#' @param x The x variables. +#' @param y The y response values. +#' @return the coefficient of the linear regression +#' @examples +#' x <- 1:10 +#' y <- 10+3*x + stats::rnorm(10, 0, 10) +#' sampleplot(x, y) +#' @export +sampleplot <- function(x, y){ + the.lm <- stats::lm(y ~ x) + plot(x, y) + graphics::abline(the.lm) + return(coef(the.lm)) +} \ No newline at end of file diff --git a/README.Rmd b/README.Rmd new file mode 100644 index 0000000..bd39ec9 --- /dev/null +++ b/README.Rmd @@ -0,0 +1,93 @@ +--- +output: + md_document: + variant: gfm +--- + + + +# DataProduct + + +[![GitHub release (latest by date)](https://img.shields.io/github/v/release/RVerse-Tutorials/DataProduct)](https://github.com/RVerse-Tutorials/DataProduct/releases) +[![R-CMD-check](https://github.com/RVerse-Tutorials/DataProduct/workflows/R-CMD-check/badge.svg)](https://github.com/RVerse-Tutorials/DataProduct/actions/workflows/R-CMD-check.yaml) + + +This is a template for a NMFS branded R package and pkgdown website. It will have a NMFS palette, appropriate license and disclaimer, and a NMFS footer with logo. + +The instructions will use the **usethis** and **pkgdown** packages. So install those. + +## Step 1 Make sure the package builds + +1. Clone this GitHub repository and then open the new repository (on your computer). +2. Set-up your RStudio project to use Roxygen for documentation and NAMESPACE + * Tools > Project Options... > Build Tools Click the checkbox that says "Build documentation with Roxygen". + * The Configure popup box for Roxygen will probably appear, if not click the Configure button. Check all the checkboxes. +3. On the Build tab, click Install and Restart to make sure it builds. +4. On the Build tab, click Check to make sure it passes all the checks. +5. Type the code `pkgdown::build_site()` and make sure the **pkgdown** building works. If on RStudio Cloud, you will need to use `pkgdown::build_site(override = list(destination = "~/docs"))` to + +Note steps 3 and 4 are to make sure your computer is set up to build and check packages. As long as you haven't edited the package yet, it will build and pass check. + +## Step 2 Customize your package + +1. Edit the DESCRIPTION file (change Title, Description, urls for repo, Authors) +2. Add any required packages to Depends (or Imports* or Suggests*). +3. Edit the Readme.Rmd file. +4. Add your functions to the R folder. There are some template functions there already. +5. Don't touch the man folder. Roxygen2 will make your Rd files. + +## Step 3 Make some vignettes (optional) + +Vignettes are longform examples and are Rmd files in the `vignettes` folder. Easiest way to start a new vignette is `usethis::use_vignette("vignettename")`. + +## Step 4 Customize your **pkgdown** site and build + +1. Structure of the upper navbar. Edit `_pkgdown.yml` in the `pkddown` folder to change the look of the upper navbar. There are endless options. Find examples from other peoples' pkgdown sites. +2. Update your logo and favicons. Logo is in `man/figures`. After updating run `pkgdown::build_favicon()` to remake the favicons. +3. Add material to the `docs` folder as needed. See the example for the References tab in the `_pkgdown.yml`. +4. Build your site with `pkgdown::build_site()`. + +## Step 5 Make your site live on GitHub + +1. Push the changes to GitHub. +2. Click on Settings for the repository. +3. Scroll way down to the GitHub Pages section. +4. In the **Source** section, change branch to Main and folder to `docs`. There are other ways to set up GitHub Pages but this will get you started. +5. I always add my GitHub Pages URL to the repo description (on right when on your main repo page). + +## NMFS Branding + +This template has the following branding elements. + +1. `extra.css` in the `pkgdown` folder sources the **nmfspalette** css. This get you the colors. +2. The `Readme.Rmd` file sources the NMFS Disclaimer and footer with NMFS logo from the [FIT Resources](https://github.com/nmfs-fish-tools/Resources). +3. The LICENSE is set to that used by [FIT packages](https://github.com/nmfs-fish-tools). + +## GitHub Actions and Badges + +In the `.github` folder is just one action, to run R CMD check on the package. + +## Readme File + +**pkgdown** uses `Readme.md` but to pull in the Disclaimer and footer from FIT, you need a Rmd file. When you update the `Readme.Rmd` file, **you need to remember to knit the file** to update `Readme.md`. + + + +**** + +```{r add-disclaimer, echo=FALSE, results='asis'} +url <- "https://raw.githubusercontent.com/nmfs-fish-tools/Resources/master/Disclaimer.md" +childtext <- readLines(url) +cat(childtext, sep="\n") +``` + +**** + +```{r footer, echo=FALSE, results='asis'} +url <- "https://raw.githubusercontent.com/nmfs-fish-tools/Resources/master/footer.md" +childtext <- readLines(url) +cat(childtext, sep="\n") +``` + + diff --git a/README.md b/README.md new file mode 100644 index 0000000..cd54f42 --- /dev/null +++ b/README.md @@ -0,0 +1,128 @@ + + +# DataProduct + + + +[![GitHub release (latest by +date)](https://img.shields.io/github/v/release/RVerse-Tutorials/DataProduct)](https://github.com/RVerse-Tutorials/DataProduct/releases) +[![R-CMD-check](https://github.com/RVerse-Tutorials/DataProduct/workflows/R-CMD-check/badge.svg)](https://github.com/RVerse-Tutorials/DataProduct/actions/workflows/R-CMD-check.yaml) + + +This is a template for a NMFS branded R package and pkgdown website. It +will have a NMFS palette, appropriate license and disclaimer, and a NMFS +footer with logo. + +The instructions will use the **usethis** and **pkgdown** packages. So +install those. + +## Step 1 Make sure the package builds + +1. Clone this GitHub repository and then open the new repository (on + your computer). +2. Set-up your RStudio project to use Roxygen for documentation and + NAMESPACE + +- Tools > Project Options… > Build Tools Click the checkbox that says + “Build documentation with Roxygen”. +- The Configure popup box for Roxygen will probably appear, if not + click the Configure button. Check all the checkboxes. + +3. On the Build tab, click Install and Restart to make sure it builds. +4. On the Build tab, click Check to make sure it passes all the checks. +5. Type the code `pkgdown::build_site()` and make sure the **pkgdown** + building works. If on RStudio Cloud, you will need to use + `pkgdown::build_site(override = list(destination = "~/docs"))` to + +Note steps 3 and 4 are to make sure your computer is set up to build and +check packages. As long as you haven’t edited the package yet, it will +build and pass check. + +## Step 2 Customize your package + +1. Edit the DESCRIPTION file (change Title, Description, urls for repo, + Authors) +2. Add any required packages to Depends (or Imports\* or Suggests\*). +3. Edit the Readme.Rmd file. +4. Add your functions to the R folder. There are some template + functions there already. +5. Don’t touch the man folder. Roxygen2 will make your Rd files. + +## Step 3 Make some vignettes (optional) + +Vignettes are longform examples and are Rmd files in the `vignettes` +folder. Easiest way to start a new vignette is +`usethis::use_vignette("vignettename")`. + +## Step 4 Customize your **pkgdown** site and build + +1. Structure of the upper navbar. Edit `_pkgdown.yml` in the `pkddown` + folder to change the look of the upper navbar. There are endless + options. Find examples from other peoples’ pkgdown sites. +2. Update your logo and favicons. Logo is in `man/figures`. After + updating run `pkgdown::build_favicon()` to remake the favicons. +3. Add material to the `docs` folder as needed. See the example for the + References tab in the `_pkgdown.yml`. +4. Build your site with `pkgdown::build_site()`. + +## Step 5 Make your site live on GitHub + +1. Push the changes to GitHub. +2. Click on Settings for the repository. +3. Scroll way down to the GitHub Pages section. +4. In the **Source** section, change branch to Main and folder to + `docs`. There are other ways to set up GitHub Pages but this will + get you started. +5. I always add my GitHub Pages URL to the repo description (on right + when on your main repo page). + +## NMFS Branding + +This template has the following branding elements. + +1. `extra.css` in the `pkgdown` folder sources the **nmfspalette** css. + This get you the colors. +2. The `Readme.Rmd` file sources the NMFS Disclaimer and footer with + NMFS logo from the [FIT + Resources](https://github.com/nmfs-fish-tools/Resources). +3. The LICENSE is set to that used by [FIT + packages](https://github.com/nmfs-fish-tools). + +## GitHub Actions and Badges + +In the `.github` folder is just one action, to run R CMD check on the +package. + +## Readme File + +**pkgdown** uses `Readme.md` but to pull in the Disclaimer and footer +from FIT, you need a Rmd file. When you update the `Readme.Rmd` file, +**you need to remember to knit the file** to update `Readme.md`. + + + +------------------------------------------------------------------------ + +## Disclaimer + +The United States Department of Commerce (DOC) GitHub project code is +provided on an ‘as is’ basis and the user assumes responsibility for its +use. DOC has relinquished control of the information and no longer has +responsibility to protect the integrity, confidentiality, or +availability of the information. Any claims against the Department of +Commerce stemming from the use of its GitHub project will be governed by +all applicable Federal law. Any reference to specific commercial +products, processes, or services by service mark, trademark, +manufacturer, or otherwise, does not constitute or imply their +endorsement, recommendation or favoring by the Department of Commerce. +The Department of Commerce seal and logo, or the seal and logo of a DOC +bureau, shall not be used in any manner to imply endorsement of any +commercial product or activity by DOC or the United States Government.” + +------------------------------------------------------------------------ + +NOAA Fisheries + +[U.S. Department of Commerce](https://www.commerce.gov/) \| [National +Oceanographic and Atmospheric Administration](https://www.noaa.gov) \| +[NOAA Fisheries](https://www.fisheries.noaa.gov/) diff --git a/data/cars.rda b/data/cars.rda new file mode 100644 index 0000000..9069403 Binary files /dev/null and b/data/cars.rda differ diff --git a/data/iris2.rda b/data/iris2.rda new file mode 100644 index 0000000..a32179f Binary files /dev/null and b/data/iris2.rda differ diff --git a/docs/404.html b/docs/404.html new file mode 100644 index 0000000..0ec611e --- /dev/null +++ b/docs/404.html @@ -0,0 +1,171 @@ + + + + + + + +Page not found (404) • DataProduct + + + + + + + + + + + + + + + + + + + +
+
+ + + + +
+
+ + +Content not found. Please use links in the navbar. + +
+ + + +
+ + + + +
+ + + + + + + + diff --git a/docs/LICENSE-text.html b/docs/LICENSE-text.html new file mode 100644 index 0000000..d0eae5a --- /dev/null +++ b/docs/LICENSE-text.html @@ -0,0 +1,140 @@ + +License • DataProduct + + +
+
+ + + +
+
+ + +
Software code created by U.S. Government employees is not subject to
+copyright in the United States (17 U.S.C. §105). The United State
+s/Department of Commerce reserve all rights to seek and obtain copyright
+protection in countries other than the United States for Software authored
+in its entirety by the Department of Commerce. To this end, the Department
+of Commerce hereby grants to Recipient a royalty-free, nonexclusive license
+to use, copy, and create derivative works of the Software outside of the
+United States.
+
+ +
+ + + +
+ + + +
+ + + + + + + + diff --git a/docs/Page.Rmd b/docs/Page.Rmd new file mode 100644 index 0000000..237a25a --- /dev/null +++ b/docs/Page.Rmd @@ -0,0 +1,12 @@ +--- +title: "Page" +output: html_document +--- + +```{r setup, include=FALSE} +knitr::opts_chunk$set(echo = TRUE) +``` + +## Page + +You can also make a Rmd file and save the output to html. Then you can make a page of links (say) or whatever you need. \ No newline at end of file diff --git a/docs/Page.html b/docs/Page.html new file mode 100644 index 0000000..ff02874 --- /dev/null +++ b/docs/Page.html @@ -0,0 +1,222 @@ + + + + + + + + + + + + + +Page + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
+ + + + + + + +
+

Page

+

You can also make a Rmd file and save the output to html. Then you can make a page of links (say) or whatever you need.

+
+ + + + +
+ + + + + + + + + + + + + + + diff --git a/docs/Scoping.pdf b/docs/Scoping.pdf new file mode 100644 index 0000000..1da73b6 Binary files /dev/null and b/docs/Scoping.pdf differ diff --git a/docs/apple-touch-icon-120x120.png b/docs/apple-touch-icon-120x120.png new file mode 100644 index 0000000..e44dbae Binary files /dev/null and b/docs/apple-touch-icon-120x120.png differ diff --git a/docs/apple-touch-icon-152x152.png b/docs/apple-touch-icon-152x152.png new file mode 100644 index 0000000..ddfb3a5 Binary files /dev/null and b/docs/apple-touch-icon-152x152.png differ diff --git a/docs/apple-touch-icon-180x180.png b/docs/apple-touch-icon-180x180.png new file mode 100644 index 0000000..300ba1a Binary files /dev/null and b/docs/apple-touch-icon-180x180.png differ diff --git a/docs/apple-touch-icon-60x60.png b/docs/apple-touch-icon-60x60.png new file mode 100644 index 0000000..3105548 Binary files /dev/null and b/docs/apple-touch-icon-60x60.png differ diff --git a/docs/apple-touch-icon-76x76.png b/docs/apple-touch-icon-76x76.png new file mode 100644 index 0000000..a05ac1d Binary files /dev/null and b/docs/apple-touch-icon-76x76.png differ diff --git a/docs/apple-touch-icon.png b/docs/apple-touch-icon.png new file mode 100644 index 0000000..cadcfa3 Binary files /dev/null and b/docs/apple-touch-icon.png differ diff --git a/docs/articles/index.html b/docs/articles/index.html new file mode 100644 index 0000000..fddf961 --- /dev/null +++ b/docs/articles/index.html @@ -0,0 +1,131 @@ + +Articles • DataProduct + + +
+
+ + + +
+
+ + +
+

All vignettes

+

+ +
samplevignette
+
+
+
+
+ + +
+ + + + + + + + diff --git a/docs/articles/samplevignette.html b/docs/articles/samplevignette.html new file mode 100644 index 0000000..6326a25 --- /dev/null +++ b/docs/articles/samplevignette.html @@ -0,0 +1,200 @@ + + + + + + + +samplevignette • DataProduct + + + + + + + + + + + + + + + + + + + + +
+
+ + + + +
+
+ + + + + +
## 
+## Attaching package: 'DataProduct'
+
## The following object is masked from 'package:datasets':
+## 
+##     cars
+

Here you can show uses worked up examples for your package. The easiest way to make a new package is to use usethis::use_vignette("nameofvignette").

+
+

Let’s make a plot! +

+
+require(stats)
+x <- runif(10)
+y <- 10 + 3*x + rnorm(10)
+sampleplot(x, y)
+
## (Intercept)           x 
+##   10.376958    1.943484
+
+title(samplefunction("x versus y", y="10 vals", z="green"))
+

+
+
+ + + +
+ + + + +
+ + + + + + + + diff --git a/docs/articles/samplevignette_files/figure-html/unnamed-chunk-1-1.png b/docs/articles/samplevignette_files/figure-html/unnamed-chunk-1-1.png new file mode 100644 index 0000000..250e4c6 Binary files /dev/null and b/docs/articles/samplevignette_files/figure-html/unnamed-chunk-1-1.png differ diff --git a/docs/articles/samplevignette_files/header-attrs-2.9/header-attrs.js b/docs/articles/samplevignette_files/header-attrs-2.9/header-attrs.js new file mode 100644 index 0000000..dd57d92 --- /dev/null +++ b/docs/articles/samplevignette_files/header-attrs-2.9/header-attrs.js @@ -0,0 +1,12 @@ +// Pandoc 2.9 adds attributes on both header and div. We remove the former (to +// be compatible with the behavior of Pandoc < 2.8). +document.addEventListener('DOMContentLoaded', function(e) { + var hs = document.querySelectorAll("div.section[class*='level'] > :first-child"); + var i, h, a; + for (i = 0; i < hs.length; i++) { + h = hs[i]; + if (!/^h[1-6]$/i.test(h.tagName)) continue; // it should be a header h1-h6 + a = h.attributes; + while (a.length > 0) h.removeAttribute(a[0].name); + } +}); diff --git a/docs/authors.html b/docs/authors.html new file mode 100644 index 0000000..375abea --- /dev/null +++ b/docs/authors.html @@ -0,0 +1,156 @@ + +Authors and Citation • DataProduct + + +
+
+ + + +
+
+
+ + + +
  • +

    Elizabeth Holmes. Author, maintainer. +

    +
  • +
  • +

    Another Contributor. Author. +

    +
  • +
+
+
+

Citation

+ Source: DESCRIPTION +
+
+ + +

Holmes E, Contributor A (2022). +DataProduct: A NMFS Data Product. +https://rverse-tutorials.github.io/DataProduct, https://github.com/rverse-tutorials/DataProduct. +

+
@Manual{,
+  title = {DataProduct: A NMFS Data Product},
+  author = {Elizabeth Holmes and Another Contributor},
+  year = {2022},
+  note = {https://rverse-tutorials.github.io/DataProduct, https://github.com/rverse-tutorials/DataProduct},
+}
+ +
+ +
+ + + +
+ + + + + + + + diff --git a/docs/bootstrap-toc.css b/docs/bootstrap-toc.css new file mode 100644 index 0000000..5a85941 --- /dev/null +++ b/docs/bootstrap-toc.css @@ -0,0 +1,60 @@ +/*! + * Bootstrap Table of Contents v0.4.1 (http://afeld.github.io/bootstrap-toc/) + * Copyright 2015 Aidan Feldman + * Licensed under MIT (https://github.com/afeld/bootstrap-toc/blob/gh-pages/LICENSE.md) */ + +/* modified from https://github.com/twbs/bootstrap/blob/94b4076dd2efba9af71f0b18d4ee4b163aa9e0dd/docs/assets/css/src/docs.css#L548-L601 */ + +/* All levels of nav */ +nav[data-toggle='toc'] .nav > li > a { + display: block; + padding: 4px 20px; + font-size: 13px; + font-weight: 500; + color: #767676; +} +nav[data-toggle='toc'] .nav > li > a:hover, +nav[data-toggle='toc'] .nav > li > a:focus { + padding-left: 19px; + color: #563d7c; + text-decoration: none; + background-color: transparent; + border-left: 1px solid #563d7c; +} +nav[data-toggle='toc'] .nav > .active > a, +nav[data-toggle='toc'] .nav > .active:hover > a, +nav[data-toggle='toc'] .nav > .active:focus > a { + padding-left: 18px; + font-weight: bold; + color: #563d7c; + background-color: transparent; + border-left: 2px solid #563d7c; +} + +/* Nav: second level (shown on .active) */ +nav[data-toggle='toc'] .nav .nav { + display: none; /* Hide by default, but at >768px, show it */ + padding-bottom: 10px; +} +nav[data-toggle='toc'] .nav .nav > li > a { + padding-top: 1px; + padding-bottom: 1px; + padding-left: 30px; + font-size: 12px; + font-weight: normal; +} +nav[data-toggle='toc'] .nav .nav > li > a:hover, +nav[data-toggle='toc'] .nav .nav > li > a:focus { + padding-left: 29px; +} +nav[data-toggle='toc'] .nav .nav > .active > a, +nav[data-toggle='toc'] .nav .nav > .active:hover > a, +nav[data-toggle='toc'] .nav .nav > .active:focus > a { + padding-left: 28px; + font-weight: 500; +} + +/* from https://github.com/twbs/bootstrap/blob/e38f066d8c203c3e032da0ff23cd2d6098ee2dd6/docs/assets/css/src/docs.css#L631-L634 */ +nav[data-toggle='toc'] .nav > .active > ul { + display: block; +} diff --git a/docs/bootstrap-toc.js b/docs/bootstrap-toc.js new file mode 100644 index 0000000..1cdd573 --- /dev/null +++ b/docs/bootstrap-toc.js @@ -0,0 +1,159 @@ +/*! + * Bootstrap Table of Contents v0.4.1 (http://afeld.github.io/bootstrap-toc/) + * Copyright 2015 Aidan Feldman + * Licensed under MIT (https://github.com/afeld/bootstrap-toc/blob/gh-pages/LICENSE.md) */ +(function() { + 'use strict'; + + window.Toc = { + helpers: { + // return all matching elements in the set, or their descendants + findOrFilter: function($el, selector) { + // http://danielnouri.org/notes/2011/03/14/a-jquery-find-that-also-finds-the-root-element/ + // http://stackoverflow.com/a/12731439/358804 + var $descendants = $el.find(selector); + return $el.filter(selector).add($descendants).filter(':not([data-toc-skip])'); + }, + + generateUniqueIdBase: function(el) { + var text = $(el).text(); + var anchor = text.trim().toLowerCase().replace(/[^A-Za-z0-9]+/g, '-'); + return anchor || el.tagName.toLowerCase(); + }, + + generateUniqueId: function(el) { + var anchorBase = this.generateUniqueIdBase(el); + for (var i = 0; ; i++) { + var anchor = anchorBase; + if (i > 0) { + // add suffix + anchor += '-' + i; + } + // check if ID already exists + if (!document.getElementById(anchor)) { + return anchor; + } + } + }, + + generateAnchor: function(el) { + if (el.id) { + return el.id; + } else { + var anchor = this.generateUniqueId(el); + el.id = anchor; + return anchor; + } + }, + + createNavList: function() { + return $(''); + }, + + createChildNavList: function($parent) { + var $childList = this.createNavList(); + $parent.append($childList); + return $childList; + }, + + generateNavEl: function(anchor, text) { + var $a = $(''); + $a.attr('href', '#' + anchor); + $a.text(text); + var $li = $('
  • '); + $li.append($a); + return $li; + }, + + generateNavItem: function(headingEl) { + var anchor = this.generateAnchor(headingEl); + var $heading = $(headingEl); + var text = $heading.data('toc-text') || $heading.text(); + return this.generateNavEl(anchor, text); + }, + + // Find the first heading level (`

    `, then `

    `, etc.) that has more than one element. Defaults to 1 (for `

    `). + getTopLevel: function($scope) { + for (var i = 1; i <= 6; i++) { + var $headings = this.findOrFilter($scope, 'h' + i); + if ($headings.length > 1) { + return i; + } + } + + return 1; + }, + + // returns the elements for the top level, and the next below it + getHeadings: function($scope, topLevel) { + var topSelector = 'h' + topLevel; + + var secondaryLevel = topLevel + 1; + var secondarySelector = 'h' + secondaryLevel; + + return this.findOrFilter($scope, topSelector + ',' + secondarySelector); + }, + + getNavLevel: function(el) { + return parseInt(el.tagName.charAt(1), 10); + }, + + populateNav: function($topContext, topLevel, $headings) { + var $context = $topContext; + var $prevNav; + + var helpers = this; + $headings.each(function(i, el) { + var $newNav = helpers.generateNavItem(el); + var navLevel = helpers.getNavLevel(el); + + // determine the proper $context + if (navLevel === topLevel) { + // use top level + $context = $topContext; + } else if ($prevNav && $context === $topContext) { + // create a new level of the tree and switch to it + $context = helpers.createChildNavList($prevNav); + } // else use the current $context + + $context.append($newNav); + + $prevNav = $newNav; + }); + }, + + parseOps: function(arg) { + var opts; + if (arg.jquery) { + opts = { + $nav: arg + }; + } else { + opts = arg; + } + opts.$scope = opts.$scope || $(document.body); + return opts; + } + }, + + // accepts a jQuery object, or an options object + init: function(opts) { + opts = this.helpers.parseOps(opts); + + // ensure that the data attribute is in place for styling + opts.$nav.attr('data-toggle', 'toc'); + + var $topContext = this.helpers.createChildNavList(opts.$nav); + var topLevel = this.helpers.getTopLevel(opts.$scope); + var $headings = this.helpers.getHeadings(opts.$scope, topLevel); + this.helpers.populateNav($topContext, topLevel, $headings); + } + }; + + $(function() { + $('nav[data-toggle="toc"]').each(function(i, el) { + var $nav = $(el); + Toc.init($nav); + }); + }); +})(); diff --git a/docs/docsearch.css b/docs/docsearch.css new file mode 100644 index 0000000..e5f1fe1 --- /dev/null +++ b/docs/docsearch.css @@ -0,0 +1,148 @@ +/* Docsearch -------------------------------------------------------------- */ +/* + Source: https://github.com/algolia/docsearch/ + License: MIT +*/ + +.algolia-autocomplete { + display: block; + -webkit-box-flex: 1; + -ms-flex: 1; + flex: 1 +} + +.algolia-autocomplete .ds-dropdown-menu { + width: 100%; + min-width: none; + max-width: none; + padding: .75rem 0; + background-color: #fff; + background-clip: padding-box; + border: 1px solid rgba(0, 0, 0, .1); + box-shadow: 0 .5rem 1rem rgba(0, 0, 0, .175); +} + +@media (min-width:768px) { + .algolia-autocomplete .ds-dropdown-menu { + width: 175% + } +} + +.algolia-autocomplete .ds-dropdown-menu::before { + display: none +} + +.algolia-autocomplete .ds-dropdown-menu [class^=ds-dataset-] { + padding: 0; + background-color: rgb(255,255,255); + border: 0; + max-height: 80vh; +} + +.algolia-autocomplete .ds-dropdown-menu .ds-suggestions { + margin-top: 0 +} + +.algolia-autocomplete .algolia-docsearch-suggestion { + padding: 0; + overflow: visible +} + +.algolia-autocomplete .algolia-docsearch-suggestion--category-header { + padding: .125rem 1rem; + margin-top: 0; + font-size: 1.3em; + font-weight: 500; + color: #00008B; + border-bottom: 0 +} + +.algolia-autocomplete .algolia-docsearch-suggestion--wrapper { + float: none; + padding-top: 0 +} + +.algolia-autocomplete .algolia-docsearch-suggestion--subcategory-column { + float: none; + width: auto; + padding: 0; + text-align: left +} + +.algolia-autocomplete .algolia-docsearch-suggestion--content { + float: none; + width: auto; + padding: 0 +} + +.algolia-autocomplete .algolia-docsearch-suggestion--content::before { + display: none +} + +.algolia-autocomplete .ds-suggestion:not(:first-child) .algolia-docsearch-suggestion--category-header { + padding-top: .75rem; + margin-top: .75rem; + border-top: 1px solid rgba(0, 0, 0, .1) +} + +.algolia-autocomplete .ds-suggestion .algolia-docsearch-suggestion--subcategory-column { + display: block; + padding: .1rem 1rem; + margin-bottom: 0.1; + font-size: 1.0em; + font-weight: 400 + /* display: none */ +} + +.algolia-autocomplete .algolia-docsearch-suggestion--title { + display: block; + padding: .25rem 1rem; + margin-bottom: 0; + font-size: 0.9em; + font-weight: 400 +} + +.algolia-autocomplete .algolia-docsearch-suggestion--text { + padding: 0 1rem .5rem; + margin-top: -.25rem; + font-size: 0.8em; + font-weight: 400; + line-height: 1.25 +} + +.algolia-autocomplete .algolia-docsearch-footer { + width: 110px; + height: 20px; + z-index: 3; + margin-top: 10.66667px; + float: right; + font-size: 0; + line-height: 0; +} + +.algolia-autocomplete .algolia-docsearch-footer--logo { + background-image: url("data:image/svg+xml;utf8,"); + background-repeat: no-repeat; + background-position: 50%; + background-size: 100%; + overflow: hidden; + text-indent: -9000px; + width: 100%; + height: 100%; + display: block; + transform: translate(-8px); +} + +.algolia-autocomplete .algolia-docsearch-suggestion--highlight { + color: #FF8C00; + background: rgba(232, 189, 54, 0.1) +} + + +.algolia-autocomplete .algolia-docsearch-suggestion--text .algolia-docsearch-suggestion--highlight { + box-shadow: inset 0 -2px 0 0 rgba(105, 105, 105, .5) +} + +.algolia-autocomplete .ds-suggestion.ds-cursor .algolia-docsearch-suggestion--content { + background-color: rgba(192, 192, 192, .15) +} diff --git a/docs/docsearch.js b/docs/docsearch.js new file mode 100644 index 0000000..b35504c --- /dev/null +++ b/docs/docsearch.js @@ -0,0 +1,85 @@ +$(function() { + + // register a handler to move the focus to the search bar + // upon pressing shift + "/" (i.e. "?") + $(document).on('keydown', function(e) { + if (e.shiftKey && e.keyCode == 191) { + e.preventDefault(); + $("#search-input").focus(); + } + }); + + $(document).ready(function() { + // do keyword highlighting + /* modified from https://jsfiddle.net/julmot/bL6bb5oo/ */ + var mark = function() { + + var referrer = document.URL ; + var paramKey = "q" ; + + if (referrer.indexOf("?") !== -1) { + var qs = referrer.substr(referrer.indexOf('?') + 1); + var qs_noanchor = qs.split('#')[0]; + var qsa = qs_noanchor.split('&'); + var keyword = ""; + + for (var i = 0; i < qsa.length; i++) { + var currentParam = qsa[i].split('='); + + if (currentParam.length !== 2) { + continue; + } + + if (currentParam[0] == paramKey) { + keyword = decodeURIComponent(currentParam[1].replace(/\+/g, "%20")); + } + } + + if (keyword !== "") { + $(".contents").unmark({ + done: function() { + $(".contents").mark(keyword); + } + }); + } + } + }; + + mark(); + }); +}); + +/* Search term highlighting ------------------------------*/ + +function matchedWords(hit) { + var words = []; + + var hierarchy = hit._highlightResult.hierarchy; + // loop to fetch from lvl0, lvl1, etc. + for (var idx in hierarchy) { + words = words.concat(hierarchy[idx].matchedWords); + } + + var content = hit._highlightResult.content; + if (content) { + words = words.concat(content.matchedWords); + } + + // return unique words + var words_uniq = [...new Set(words)]; + return words_uniq; +} + +function updateHitURL(hit) { + + var words = matchedWords(hit); + var url = ""; + + if (hit.anchor) { + url = hit.url_without_anchor + '?q=' + escape(words.join(" ")) + '#' + hit.anchor; + } else { + url = hit.url + '?q=' + escape(words.join(" ")); + } + + return url; +} diff --git a/docs/extra.css b/docs/extra.css new file mode 100644 index 0000000..ea8c954 --- /dev/null +++ b/docs/extra.css @@ -0,0 +1 @@ +@import url("https://nmfs-general-modeling-tools.github.io/nmfspalette/extra.css"); \ No newline at end of file diff --git a/docs/favicon-16x16.png b/docs/favicon-16x16.png new file mode 100644 index 0000000..d9b36b9 Binary files /dev/null and b/docs/favicon-16x16.png differ diff --git a/docs/favicon-32x32.png b/docs/favicon-32x32.png new file mode 100644 index 0000000..bd48740 Binary files /dev/null and b/docs/favicon-32x32.png differ diff --git a/docs/favicon.ico b/docs/favicon.ico new file mode 100644 index 0000000..eee7615 Binary files /dev/null and b/docs/favicon.ico differ diff --git a/docs/index.html b/docs/index.html new file mode 100644 index 0000000..aaf161c --- /dev/null +++ b/docs/index.html @@ -0,0 +1,298 @@ + + + + + + + +A NMFS Data Product • DataProduct + + + + + + + + + + + + + + + + + + + + +
    +
    + + + + +
    +
    +
    + + + +

    This is a template for a NMFS branded R package and pkgdown website. It will have a NMFS palette, appropriate license and disclaimer, and a NMFS footer with logo.

    +

    The instructions will use the usethis and pkgdown packages. So install those.

    +
    +

    Step 1 Make sure the package builds +

    +
      +
    1. Clone this GitHub repository and then open the new repository (on your computer).
    2. +
    3. Set-up your RStudio project to use Roxygen for documentation and NAMESPACE
    4. +
    +
      +
    • Tools > Project Options… > Build Tools Click the checkbox that says “Build documentation with Roxygen”.
    • +
    • The Configure popup box for Roxygen will probably appear, if not click the Configure button. Check all the checkboxes.
    • +
    +
      +
    1. On the Build tab, click Install and Restart to make sure it builds.
    2. +
    3. On the Build tab, click Check to make sure it passes all the checks.
    4. +
    5. Type the code pkgdown::build_site() and make sure the pkgdown building works. If on RStudio Cloud, you will need to use pkgdown::build_site(override = list(destination = "~/docs")) to
    6. +
    +

    Note steps 3 and 4 are to make sure your computer is set up to build and check packages. As long as you haven’t edited the package yet, it will build and pass check.

    +
    +
    +

    Step 2 Customize your package +

    +
      +
    1. Edit the DESCRIPTION file (change Title, Description, urls for repo, Authors)
    2. +
    3. Add any required packages to Depends (or Imports* or Suggests*).
    4. +
    5. Edit the Readme.Rmd file.
    6. +
    7. Add your functions to the R folder. There are some template functions there already.
    8. +
    9. Don’t touch the man folder. Roxygen2 will make your Rd files.
    10. +
    +
    +
    +

    Step 3 Make some vignettes (optional) +

    +

    Vignettes are longform examples and are Rmd files in the vignettes folder. Easiest way to start a new vignette is usethis::use_vignette("vignettename").

    +
    +
    +

    Step 4 Customize your pkgdown site and build +

    +
      +
    1. Structure of the upper navbar. Edit _pkgdown.yml in the pkddown folder to change the look of the upper navbar. There are endless options. Find examples from other peoples’ pkgdown sites.
    2. +
    3. Update your logo and favicons. Logo is in man/figures. After updating run pkgdown::build_favicon() to remake the favicons.
    4. +
    5. Add material to the docs folder as needed. See the example for the References tab in the _pkgdown.yml.
    6. +
    7. Build your site with pkgdown::build_site().
    8. +
    +
    +
    +

    Step 5 Make your site live on GitHub +

    +
      +
    1. Push the changes to GitHub.
    2. +
    3. Click on Settings for the repository.
    4. +
    5. Scroll way down to the GitHub Pages section.
    6. +
    7. In the Source section, change branch to Main and folder to docs. There are other ways to set up GitHub Pages but this will get you started.
    8. +
    9. I always add my GitHub Pages URL to the repo description (on right when on your main repo page).
    10. +
    +
    +
    +

    NMFS Branding +

    +

    This template has the following branding elements.

    +
      +
    1. +extra.css in the pkgdown folder sources the nmfspalette css. This get you the colors.
    2. +
    3. The Readme.Rmd file sources the NMFS Disclaimer and footer with NMFS logo from the FIT Resources.
    4. +
    5. The LICENSE is set to that used by FIT packages.
    6. +
    +
    +
    +

    GitHub Actions and Badges +

    +

    In the .github folder is just one action, to run R CMD check on the package.

    +
    +
    +

    Readme File +

    +

    pkgdown uses Readme.md but to pull in the Disclaimer and footer from FIT, you need a Rmd file. When you update the Readme.Rmd file, you need to remember to knit the file to update Readme.md.

    + +
    +
    +
    +

    Disclaimer +

    +

    The United States Department of Commerce (DOC) GitHub project code is provided on an ‘as is’ basis and the user assumes responsibility for its use. DOC has relinquished control of the information and no longer has responsibility to protect the integrity, confidentiality, or availability of the information. Any claims against the Department of Commerce stemming from the use of its GitHub project will be governed by all applicable Federal law. Any reference to specific commercial products, processes, or services by service mark, trademark, manufacturer, or otherwise, does not constitute or imply their endorsement, recommendation or favoring by the Department of Commerce. The Department of Commerce seal and logo, or the seal and logo of a DOC bureau, shall not be used in any manner to imply endorsement of any commercial product or activity by DOC or the United States Government.”

    +
    +

    NOAA Fisheries

    +

    U.S. Department of Commerce | National Oceanographic and Atmospheric Administration | NOAA Fisheries

    +
    +
    +
    + + +
    + + + +
    + + + + + + + + diff --git a/docs/link.svg b/docs/link.svg new file mode 100644 index 0000000..88ad827 --- /dev/null +++ b/docs/link.svg @@ -0,0 +1,12 @@ + + + + + + diff --git a/docs/logo.png b/docs/logo.png new file mode 100644 index 0000000..1783a02 Binary files /dev/null and b/docs/logo.png differ diff --git a/docs/news/index.html b/docs/news/index.html new file mode 100644 index 0000000..860eba1 --- /dev/null +++ b/docs/news/index.html @@ -0,0 +1,134 @@ + +Changelog • DataProduct + + +
    +
    + + + +
    +
    + + +
    + +

    This is a basic template with NMFS branding. It has NMFS palette and the NMFS footer, license, and pkgdown structure.

    +
    +
    + + + +
    + + +
    + + + + + + + + diff --git a/docs/pkgdown.css b/docs/pkgdown.css new file mode 100644 index 0000000..80ea5b8 --- /dev/null +++ b/docs/pkgdown.css @@ -0,0 +1,384 @@ +/* Sticky footer */ + +/** + * Basic idea: https://philipwalton.github.io/solved-by-flexbox/demos/sticky-footer/ + * Details: https://github.com/philipwalton/solved-by-flexbox/blob/master/assets/css/components/site.css + * + * .Site -> body > .container + * .Site-content -> body > .container .row + * .footer -> footer + * + * Key idea seems to be to ensure that .container and __all its parents__ + * have height set to 100% + * + */ + +html, body { + height: 100%; +} + +body { + position: relative; +} + +body > .container { + display: flex; + height: 100%; + flex-direction: column; +} + +body > .container .row { + flex: 1 0 auto; +} + +footer { + margin-top: 45px; + padding: 35px 0 36px; + border-top: 1px solid #e5e5e5; + color: #666; + display: flex; + flex-shrink: 0; +} +footer p { + margin-bottom: 0; +} +footer div { + flex: 1; +} +footer .pkgdown { + text-align: right; +} +footer p { + margin-bottom: 0; +} + +img.icon { + float: right; +} + +/* Ensure in-page images don't run outside their container */ +.contents img { + max-width: 100%; + height: auto; +} + +/* Fix bug in bootstrap (only seen in firefox) */ +summary { + display: list-item; +} + +/* Typographic tweaking ---------------------------------*/ + +.contents .page-header { + margin-top: calc(-60px + 1em); +} + +dd { + margin-left: 3em; +} + +/* Section anchors ---------------------------------*/ + +a.anchor { + display: none; + margin-left: 5px; + width: 20px; + height: 20px; + + background-image: url(./link.svg); + background-repeat: no-repeat; + background-size: 20px 20px; + background-position: center center; +} + +h1:hover .anchor, +h2:hover .anchor, +h3:hover .anchor, +h4:hover .anchor, +h5:hover .anchor, +h6:hover .anchor { + display: inline-block; +} + +/* Fixes for fixed navbar --------------------------*/ + +.contents h1, .contents h2, .contents h3, .contents h4 { + padding-top: 60px; + margin-top: -40px; +} + +/* Navbar submenu --------------------------*/ + +.dropdown-submenu { + position: relative; +} + +.dropdown-submenu>.dropdown-menu { + top: 0; + left: 100%; + margin-top: -6px; + margin-left: -1px; + border-radius: 0 6px 6px 6px; +} + +.dropdown-submenu:hover>.dropdown-menu { + display: block; +} + +.dropdown-submenu>a:after { + display: block; + content: " "; + float: right; + width: 0; + height: 0; + border-color: transparent; + border-style: solid; + border-width: 5px 0 5px 5px; + border-left-color: #cccccc; + margin-top: 5px; + margin-right: -10px; +} + +.dropdown-submenu:hover>a:after { + border-left-color: #ffffff; +} + +.dropdown-submenu.pull-left { + float: none; +} + +.dropdown-submenu.pull-left>.dropdown-menu { + left: -100%; + margin-left: 10px; + border-radius: 6px 0 6px 6px; +} + +/* Sidebar --------------------------*/ + +#pkgdown-sidebar { + margin-top: 30px; + position: -webkit-sticky; + position: sticky; + top: 70px; +} + +#pkgdown-sidebar h2 { + font-size: 1.5em; + margin-top: 1em; +} + +#pkgdown-sidebar h2:first-child { + margin-top: 0; +} + +#pkgdown-sidebar .list-unstyled li { + margin-bottom: 0.5em; +} + +/* bootstrap-toc tweaks ------------------------------------------------------*/ + +/* All levels of nav */ + +nav[data-toggle='toc'] .nav > li > a { + padding: 4px 20px 4px 6px; + font-size: 1.5rem; + font-weight: 400; + color: inherit; +} + +nav[data-toggle='toc'] .nav > li > a:hover, +nav[data-toggle='toc'] .nav > li > a:focus { + padding-left: 5px; + color: inherit; + border-left: 1px solid #878787; +} + +nav[data-toggle='toc'] .nav > .active > a, +nav[data-toggle='toc'] .nav > .active:hover > a, +nav[data-toggle='toc'] .nav > .active:focus > a { + padding-left: 5px; + font-size: 1.5rem; + font-weight: 400; + color: inherit; + border-left: 2px solid #878787; +} + +/* Nav: second level (shown on .active) */ + +nav[data-toggle='toc'] .nav .nav { + display: none; /* Hide by default, but at >768px, show it */ + padding-bottom: 10px; +} + +nav[data-toggle='toc'] .nav .nav > li > a { + padding-left: 16px; + font-size: 1.35rem; +} + +nav[data-toggle='toc'] .nav .nav > li > a:hover, +nav[data-toggle='toc'] .nav .nav > li > a:focus { + padding-left: 15px; +} + +nav[data-toggle='toc'] .nav .nav > .active > a, +nav[data-toggle='toc'] .nav .nav > .active:hover > a, +nav[data-toggle='toc'] .nav .nav > .active:focus > a { + padding-left: 15px; + font-weight: 500; + font-size: 1.35rem; +} + +/* orcid ------------------------------------------------------------------- */ + +.orcid { + font-size: 16px; + color: #A6CE39; + /* margins are required by official ORCID trademark and display guidelines */ + margin-left:4px; + margin-right:4px; + vertical-align: middle; +} + +/* Reference index & topics ----------------------------------------------- */ + +.ref-index th {font-weight: normal;} + +.ref-index td {vertical-align: top; min-width: 100px} +.ref-index .icon {width: 40px;} +.ref-index .alias {width: 40%;} +.ref-index-icons .alias {width: calc(40% - 40px);} +.ref-index .title {width: 60%;} + +.ref-arguments th {text-align: right; padding-right: 10px;} +.ref-arguments th, .ref-arguments td {vertical-align: top; min-width: 100px} +.ref-arguments .name {width: 20%;} +.ref-arguments .desc {width: 80%;} + +/* Nice scrolling for wide elements --------------------------------------- */ + +table { + display: block; + overflow: auto; +} + +/* Syntax highlighting ---------------------------------------------------- */ + +pre, code, pre code { + background-color: #f8f8f8; + color: #333; +} +pre, pre code { + white-space: pre-wrap; + word-break: break-all; + overflow-wrap: break-word; +} + +pre { + border: 1px solid #eee; +} + +pre .img, pre .r-plt { + margin: 5px 0; +} + +pre .img img, pre .r-plt img { + background-color: #fff; +} + +code a, pre a { + color: #375f84; +} + +a.sourceLine:hover { + text-decoration: none; +} + +.fl {color: #1514b5;} +.fu {color: #000000;} /* function */ +.ch,.st {color: #036a07;} /* string */ +.kw {color: #264D66;} /* keyword */ +.co {color: #888888;} /* comment */ + +.error {font-weight: bolder;} +.warning {font-weight: bolder;} + +/* Clipboard --------------------------*/ + +.hasCopyButton { + position: relative; +} + +.btn-copy-ex { + position: absolute; + right: 0; + top: 0; + visibility: hidden; +} + +.hasCopyButton:hover button.btn-copy-ex { + visibility: visible; +} + +/* headroom.js ------------------------ */ + +.headroom { + will-change: transform; + transition: transform 200ms linear; +} +.headroom--pinned { + transform: translateY(0%); +} +.headroom--unpinned { + transform: translateY(-100%); +} + +/* mark.js ----------------------------*/ + +mark { + background-color: rgba(255, 255, 51, 0.5); + border-bottom: 2px solid rgba(255, 153, 51, 0.3); + padding: 1px; +} + +/* vertical spacing after htmlwidgets */ +.html-widget { + margin-bottom: 10px; +} + +/* fontawesome ------------------------ */ + +.fab { + font-family: "Font Awesome 5 Brands" !important; +} + +/* don't display links in code chunks when printing */ +/* source: https://stackoverflow.com/a/10781533 */ +@media print { + code a:link:after, code a:visited:after { + content: ""; + } +} + +/* Section anchors --------------------------------- + Added in pandoc 2.11: https://github.com/jgm/pandoc-templates/commit/9904bf71 +*/ + +div.csl-bib-body { } +div.csl-entry { + clear: both; +} +.hanging-indent div.csl-entry { + margin-left:2em; + text-indent:-2em; +} +div.csl-left-margin { + min-width:2em; + float:left; +} +div.csl-right-inline { + margin-left:2em; + padding-left:1em; +} +div.csl-indent { + margin-left: 2em; +} diff --git a/docs/pkgdown.js b/docs/pkgdown.js new file mode 100644 index 0000000..6f0eee4 --- /dev/null +++ b/docs/pkgdown.js @@ -0,0 +1,108 @@ +/* http://gregfranko.com/blog/jquery-best-practices/ */ +(function($) { + $(function() { + + $('.navbar-fixed-top').headroom(); + + $('body').css('padding-top', $('.navbar').height() + 10); + $(window).resize(function(){ + $('body').css('padding-top', $('.navbar').height() + 10); + }); + + $('[data-toggle="tooltip"]').tooltip(); + + var cur_path = paths(location.pathname); + var links = $("#navbar ul li a"); + var max_length = -1; + var pos = -1; + for (var i = 0; i < links.length; i++) { + if (links[i].getAttribute("href") === "#") + continue; + // Ignore external links + if (links[i].host !== location.host) + continue; + + var nav_path = paths(links[i].pathname); + + var length = prefix_length(nav_path, cur_path); + if (length > max_length) { + max_length = length; + pos = i; + } + } + + // Add class to parent
  • , and enclosing
  • if in dropdown + if (pos >= 0) { + var menu_anchor = $(links[pos]); + menu_anchor.parent().addClass("active"); + menu_anchor.closest("li.dropdown").addClass("active"); + } + }); + + function paths(pathname) { + var pieces = pathname.split("/"); + pieces.shift(); // always starts with / + + var end = pieces[pieces.length - 1]; + if (end === "index.html" || end === "") + pieces.pop(); + return(pieces); + } + + // Returns -1 if not found + function prefix_length(needle, haystack) { + if (needle.length > haystack.length) + return(-1); + + // Special case for length-0 haystack, since for loop won't run + if (haystack.length === 0) { + return(needle.length === 0 ? 0 : -1); + } + + for (var i = 0; i < haystack.length; i++) { + if (needle[i] != haystack[i]) + return(i); + } + + return(haystack.length); + } + + /* Clipboard --------------------------*/ + + function changeTooltipMessage(element, msg) { + var tooltipOriginalTitle=element.getAttribute('data-original-title'); + element.setAttribute('data-original-title', msg); + $(element).tooltip('show'); + element.setAttribute('data-original-title', tooltipOriginalTitle); + } + + if(ClipboardJS.isSupported()) { + $(document).ready(function() { + var copyButton = ""; + + $("div.sourceCode").addClass("hasCopyButton"); + + // Insert copy buttons: + $(copyButton).prependTo(".hasCopyButton"); + + // Initialize tooltips: + $('.btn-copy-ex').tooltip({container: 'body'}); + + // Initialize clipboard: + var clipboardBtnCopies = new ClipboardJS('[data-clipboard-copy]', { + text: function(trigger) { + return trigger.parentNode.textContent.replace(/\n#>[^\n]*/g, ""); + } + }); + + clipboardBtnCopies.on('success', function(e) { + changeTooltipMessage(e.trigger, 'Copied!'); + e.clearSelection(); + }); + + clipboardBtnCopies.on('error', function() { + changeTooltipMessage(e.trigger,'Press Ctrl+C or Command+C to copy'); + }); + }); + } +})(window.jQuery || window.$) diff --git a/docs/pkgdown.yml b/docs/pkgdown.yml new file mode 100644 index 0000000..bb99052 --- /dev/null +++ b/docs/pkgdown.yml @@ -0,0 +1,10 @@ +pandoc: 2.14.0.3 +pkgdown: 2.0.2 +pkgdown_sha: ~ +articles: + samplevignette: samplevignette.html +last_built: 2022-02-15T02:51Z +urls: + reference: https://RVerse-Tutorials.github.io/DataProduct/reference + article: https://RVerse-Tutorials.github.io/DataProduct/articles + diff --git a/docs/reference/Rplot001.png b/docs/reference/Rplot001.png new file mode 100644 index 0000000..93cc4c9 Binary files /dev/null and b/docs/reference/Rplot001.png differ diff --git a/docs/reference/cars.html b/docs/reference/cars.html new file mode 100644 index 0000000..ee0eaca --- /dev/null +++ b/docs/reference/cars.html @@ -0,0 +1,157 @@ + +a dataset of horsepower for different cars — cars • DataProduct + + +
    +
    + + + +
    +
    + + +
    +

    First 4 columns of the mtcars dataset.

    +
    • mpg. miles per gallon

    • +
    • cyl. cylinders

    • +
    • disp. displacement

    • +
    • hp. horse poser

    • +
    + +
    +
    data(cars)
    +
    + +
    +

    Format

    +

    A data frame.

    +
    +
    +

    References

    +

    R base package.

    +
    + +
    + +
    + + +
    + + + + + + + + diff --git a/docs/reference/figures/logo.png b/docs/reference/figures/logo.png new file mode 100644 index 0000000..1783a02 Binary files /dev/null and b/docs/reference/figures/logo.png differ diff --git a/docs/reference/index.html b/docs/reference/index.html new file mode 100644 index 0000000..e5c00b9 --- /dev/null +++ b/docs/reference/index.html @@ -0,0 +1,136 @@ + +Function reference • DataProduct + + +
    +
    + + + +
    +
    + + + + + + +
    +

    cars

    +

    a dataset of horsepower for different cars

    +

    iris2

    +

    sepal length for differen species of iris

    + + +
    + + +
    + + + + + + + + diff --git a/docs/reference/iris2.html b/docs/reference/iris2.html new file mode 100644 index 0000000..a05ed1f --- /dev/null +++ b/docs/reference/iris2.html @@ -0,0 +1,153 @@ + +sepal length for differen species of iris — iris2 • DataProduct + + +
    +
    + + + +
    +
    + + +
    +

    The Species and Sepal.Length from the iris data set from base R.

    +
    • Species. species

    • +
    • Sepal.Length. sepal length

    • +
    + +
    +
    data(iris2)
    +
    + +
    +

    Format

    +

    A data frame.

    +
    +
    +

    References

    +

    from R base package.

    +
    + +
    + +
    + + +
    + + + + + + + + diff --git a/docs/reference/samplefunction.html b/docs/reference/samplefunction.html new file mode 100644 index 0000000..944f73e --- /dev/null +++ b/docs/reference/samplefunction.html @@ -0,0 +1,158 @@ + +Sample Function Title — samplefunction • DataProduct + + +
    +
    + + + +
    +
    + + +
    +

    This part is the description. It can be as long as you want but usually is one paragraph.

    +
    + +
    +
    samplefunction(x, y = 10, z = c("yellow", "red", "green"))
    +
    + +
    +

    Arguments

    +
    x
    +

    This is a required argument and has no default value.

    +
    y
    +

    Has a default value of 10.

    +
    z
    +

    Although this looks like it is a default string, the function match.arg() is +used to set it in the function. With match.arg(), the string specifies what values are allowed and it will throw an error if not one of those. The default is the first value.

    +
    +
    +

    Value

    +

    A string with the values.

    +
    + +
    +

    Examples

    +
    samplefunction(1)
    +#> [1] "1 10 yellow"
    +
    +
    +
    + +
    + + +
    + + + + + + + + diff --git a/docs/reference/sampleplot-1.png b/docs/reference/sampleplot-1.png new file mode 100644 index 0000000..9202e82 Binary files /dev/null and b/docs/reference/sampleplot-1.png differ diff --git a/docs/reference/sampleplot.html b/docs/reference/sampleplot.html new file mode 100644 index 0000000..869763c --- /dev/null +++ b/docs/reference/sampleplot.html @@ -0,0 +1,159 @@ + +Sample plot — sampleplot • DataProduct + + +
    +
    + + + +
    +
    + + +
    +

    This shows how you need to use :: with all your functions that are not in base R.

    +
    + +
    +
    sampleplot(x, y)
    +
    + +
    +

    Arguments

    +
    x
    +

    The x variables.

    +
    y
    +

    The y response values.

    +
    +
    +

    Value

    +

    the coefficient of the linear regression

    +
    + +
    +

    Examples

    +
    x <- 1:10
    +y <- 10+3*x + stats::rnorm(10, 0, 10)
    +sampleplot(x, y)
    +
    +#> (Intercept)           x 
    +#>    3.669781    4.807259 
    +
    +
    +
    + +
    + + +
    + + + + + + + + diff --git a/docs/sitemap.xml b/docs/sitemap.xml new file mode 100644 index 0000000..501245a --- /dev/null +++ b/docs/sitemap.xml @@ -0,0 +1,42 @@ + + + + https://RVerse-Tutorials.github.io/DataProduct/404.html + + + https://RVerse-Tutorials.github.io/DataProduct/LICENSE-text.html + + + https://RVerse-Tutorials.github.io/DataProduct/Page.html + + + https://RVerse-Tutorials.github.io/DataProduct/articles/index.html + + + https://RVerse-Tutorials.github.io/DataProduct/articles/samplevignette.html + + + https://RVerse-Tutorials.github.io/DataProduct/authors.html + + + https://RVerse-Tutorials.github.io/DataProduct/index.html + + + https://RVerse-Tutorials.github.io/DataProduct/news/index.html + + + https://RVerse-Tutorials.github.io/DataProduct/reference/cars.html + + + https://RVerse-Tutorials.github.io/DataProduct/reference/index.html + + + https://RVerse-Tutorials.github.io/DataProduct/reference/iris2.html + + + https://RVerse-Tutorials.github.io/DataProduct/reference/samplefunction.html + + + https://RVerse-Tutorials.github.io/DataProduct/reference/sampleplot.html + + diff --git a/man/cars.Rd b/man/cars.Rd new file mode 100644 index 0000000..0e6f4a3 --- /dev/null +++ b/man/cars.Rd @@ -0,0 +1,26 @@ +% Generated by roxygen2: do not edit by hand +% Please edit documentation in R/data-cars.R +\docType{data} +\name{cars} +\alias{cars} +\title{a dataset of horsepower for different cars} +\format{ +A data frame. +} +\usage{ +data(cars) +} +\description{ +First 4 columns of the mtcars dataset. + +\itemize{ +\item mpg. miles per gallon +\item cyl. cylinders +\item disp. displacement +\item hp. horse poser +} +} +\references{ +R base package. +} +\keyword{datasets} diff --git a/man/figures/logo.png b/man/figures/logo.png new file mode 100644 index 0000000..1783a02 Binary files /dev/null and b/man/figures/logo.png differ diff --git a/man/iris2.Rd b/man/iris2.Rd new file mode 100644 index 0000000..5cc4e39 --- /dev/null +++ b/man/iris2.Rd @@ -0,0 +1,24 @@ +% Generated by roxygen2: do not edit by hand +% Please edit documentation in R/data-iris2.R +\docType{data} +\name{iris2} +\alias{iris2} +\title{sepal length for differen species of iris} +\format{ +A data frame. +} +\usage{ +data(iris2) +} +\description{ +The Species and Sepal.Length from the iris data set from base R. + +\itemize{ +\item Species. species +\item Sepal.Length. sepal length +} +} +\references{ +from R base package. +} +\keyword{datasets} diff --git a/man/samplefunction.Rd b/man/samplefunction.Rd new file mode 100644 index 0000000..19ac9c7 --- /dev/null +++ b/man/samplefunction.Rd @@ -0,0 +1,25 @@ +% Generated by roxygen2: do not edit by hand +% Please edit documentation in R/samplefunction.R +\name{samplefunction} +\alias{samplefunction} +\title{Sample Function Title} +\usage{ +samplefunction(x, y = 10, z = c("yellow", "red", "green")) +} +\arguments{ +\item{x}{This is a required argument and has no default value.} + +\item{y}{Has a default value of 10.} + +\item{z}{Although this looks like it is a default string, the function \code{match.arg()} is +used to set it in the function. With \code{match.arg()}, the string specifies what values are allowed and it will throw an error if not one of those. The default is the first value.} +} +\value{ +A string with the values. +} +\description{ +This part is the description. It can be as long as you want but usually is one paragraph. +} +\examples{ +samplefunction(1) +} diff --git a/man/sampleplot.Rd b/man/sampleplot.Rd new file mode 100644 index 0000000..2e0905d --- /dev/null +++ b/man/sampleplot.Rd @@ -0,0 +1,24 @@ +% Generated by roxygen2: do not edit by hand +% Please edit documentation in R/sampleplot.R +\name{sampleplot} +\alias{sampleplot} +\title{Sample plot} +\usage{ +sampleplot(x, y) +} +\arguments{ +\item{x}{The x variables.} + +\item{y}{The y response values.} +} +\value{ +the coefficient of the linear regression +} +\description{ +This shows how you need to use \code{::} with all your functions that are not in base R. +} +\examples{ +x <- 1:10 +y <- 10+3*x + stats::rnorm(10, 0, 10) +sampleplot(x, y) +} diff --git a/pkgdown/_pkgdown.yml b/pkgdown/_pkgdown.yml new file mode 100644 index 0000000..f02fbed --- /dev/null +++ b/pkgdown/_pkgdown.yml @@ -0,0 +1,58 @@ +url: https://RVerse-Tutorials.github.io/DataProduct/ + +navbar: + structure: + left: + - home + - reference + - sourcecode + - issue + - articles + - documents + - news + right: github + + components: + home: + icon: fas fa-home fa-lg + href: index.html + + reference: + text: Reference + icon: far fa-file-code fa-lg + href: reference/index.html + + sourcecode: + text: Source Code + icon: fab fa-github fa-lg + href: https://github.com/RVerse-Tutorials/DataProduct + + issue: + text: Issues + icon: fas fa-question-circle fa-lg + href: https://github.com/RVerse-Tutorials/DataProduct/issues/ + + articles: + text: Vignettes + icon: fas fa-file-contract fa-lg + href: articles/index.html + + documents: + text: Background + icon: fas fa-book fa-lg + menu: + - text: Scoping Document + href: Scoping.pdf + +reference: +- contents: + - has_keyword("datasets") + +news: + releases: + - text: "Version 1.0" + href: https://github.com/RVerse-Tutorials/DataProduct/releases/tag/v1.0 + +authors: + Elizabeth Holmes: + href: https://github.com/eeholmes diff --git a/pkgdown/extra.css b/pkgdown/extra.css new file mode 100644 index 0000000..ea8c954 --- /dev/null +++ b/pkgdown/extra.css @@ -0,0 +1 @@ +@import url("https://nmfs-general-modeling-tools.github.io/nmfspalette/extra.css"); \ No newline at end of file diff --git a/pkgdown/favicon/apple-touch-icon-120x120.png b/pkgdown/favicon/apple-touch-icon-120x120.png new file mode 100644 index 0000000..e44dbae Binary files /dev/null and b/pkgdown/favicon/apple-touch-icon-120x120.png differ diff --git a/pkgdown/favicon/apple-touch-icon-152x152.png b/pkgdown/favicon/apple-touch-icon-152x152.png new file mode 100644 index 0000000..ddfb3a5 Binary files /dev/null and b/pkgdown/favicon/apple-touch-icon-152x152.png differ diff --git a/pkgdown/favicon/apple-touch-icon-180x180.png b/pkgdown/favicon/apple-touch-icon-180x180.png new file mode 100644 index 0000000..300ba1a Binary files /dev/null and b/pkgdown/favicon/apple-touch-icon-180x180.png differ diff --git a/pkgdown/favicon/apple-touch-icon-60x60.png b/pkgdown/favicon/apple-touch-icon-60x60.png new file mode 100644 index 0000000..3105548 Binary files /dev/null and b/pkgdown/favicon/apple-touch-icon-60x60.png differ diff --git a/pkgdown/favicon/apple-touch-icon-76x76.png b/pkgdown/favicon/apple-touch-icon-76x76.png new file mode 100644 index 0000000..a05ac1d Binary files /dev/null and b/pkgdown/favicon/apple-touch-icon-76x76.png differ diff --git a/pkgdown/favicon/apple-touch-icon.png b/pkgdown/favicon/apple-touch-icon.png new file mode 100644 index 0000000..cadcfa3 Binary files /dev/null and b/pkgdown/favicon/apple-touch-icon.png differ diff --git a/pkgdown/favicon/favicon-16x16.png b/pkgdown/favicon/favicon-16x16.png new file mode 100644 index 0000000..d9b36b9 Binary files /dev/null and b/pkgdown/favicon/favicon-16x16.png differ diff --git a/pkgdown/favicon/favicon-32x32.png b/pkgdown/favicon/favicon-32x32.png new file mode 100644 index 0000000..bd48740 Binary files /dev/null and b/pkgdown/favicon/favicon-32x32.png differ diff --git a/pkgdown/favicon/favicon.ico b/pkgdown/favicon/favicon.ico new file mode 100644 index 0000000..eee7615 Binary files /dev/null and b/pkgdown/favicon/favicon.ico differ diff --git a/vignettes/.gitignore b/vignettes/.gitignore new file mode 100644 index 0000000..097b241 --- /dev/null +++ b/vignettes/.gitignore @@ -0,0 +1,2 @@ +*.html +*.R diff --git a/vignettes/samplevignette.Rmd b/vignettes/samplevignette.Rmd new file mode 100644 index 0000000..3eb93be --- /dev/null +++ b/vignettes/samplevignette.Rmd @@ -0,0 +1,24 @@ +--- +title: "samplevignette" +output: rmarkdown::html_vignette +vignette: > + %\VignetteIndexEntry{samplevignette} + %\VignetteEngine{knitr::rmarkdown} + %\VignetteEncoding{UTF-8} +--- + +```{r setup} +library(DataProduct) +``` + +Here you can show uses worked up examples for your package. The easiest way to make a new package is to use `usethis::use_vignette("nameofvignette")`. + +## Let's make a plot! + +```{r fig.align="center"} +require(stats) +x <- runif(10) +y <- 10 + 3*x + rnorm(10) +sampleplot(x, y) +title(samplefunction("x versus y", y="10 vals", z="green")) +```