{"id":13941889,"url":"https://github.com/gyang274/ygdashboard","last_synced_at":"2026-02-23T05:14:44.853Z","repository":{"id":217551288,"uuid":"62477346","full_name":"gyang274/ygdashboard","owner":"gyang274","description":"A modified shinydashboard to incorporate more functionality from adminLTE","archived":false,"fork":false,"pushed_at":"2018-01-05T19:44:20.000Z","size":15031,"stargazers_count":41,"open_issues_count":0,"forks_count":6,"subscribers_count":5,"default_branch":"master","last_synced_at":"2024-11-27T11:37:28.671Z","etag":null,"topics":["adminlte","r","shiny","shinydashboard"],"latest_commit_sha":null,"homepage":null,"language":"JavaScript","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/gyang274.png","metadata":{"files":{"readme":"README.Rmd","changelog":null,"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}},"created_at":"2016-07-03T02:02:15.000Z","updated_at":"2023-08-11T05:48:29.000Z","dependencies_parsed_at":"2024-01-17T04:26:31.887Z","dependency_job_id":"3925fe2d-a5b4-445d-8426-127ba49600d5","html_url":"https://github.com/gyang274/ygdashboard","commit_stats":null,"previous_names":["gyang274/ygdashboard"],"tags_count":0,"template":false,"template_full_name":null,"purl":"pkg:github/gyang274/ygdashboard","repository_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/gyang274%2Fygdashboard","tags_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/gyang274%2Fygdashboard/tags","releases_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/gyang274%2Fygdashboard/releases","manifests_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/gyang274%2Fygdashboard/manifests","owner_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners/gyang274","download_url":"https://codeload.github.com/gyang274/ygdashboard/tar.gz/refs/heads/master","sbom_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/gyang274%2Fygdashboard/sbom","host":{"name":"GitHub","url":"https://github.com","kind":"github","repositories_count":266071519,"owners_count":23871940,"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","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":["adminlte","r","shiny","shinydashboard"],"created_at":"2024-08-08T02:01:34.087Z","updated_at":"2026-02-23T05:14:44.807Z","avatar_url":"https://github.com/gyang274.png","language":"JavaScript","funding_links":[],"categories":["JavaScript"],"sub_categories":[],"readme":"---\noutput:\n  md_document:\n    variant: markdown_github\n---\n\n\u003c!-- README.md is generated from README.Rmd. --\u003e\n\n```{r, echo = FALSE}\nknitr::opts_chunk$set(\n  collapse = TRUE,\n  comment = \"#\u003e\",\n  fig.path = \"README-\"\n)\n```\n\n## ygdashboard\n\nA modified shinydashboard to incorporate more functionality from adminLTE:\n\n+ A modified dashboardPage.R, a modified dashboardBody.R and deps.R to allow showing menu icons when sidebar collapse.\n\n    - Add AdminLTE/bootstrap, AdminLTE/dist and AdminLTE/plugin to inst/AdminLTE/bootstrap, inst/AdminLTE/dist and inst/AdminLTE/plugin.\n\n    - Enhance `tags$body(class = paste0(\"skin-\", skin), ...)` to `tags$body(class = paste0(\"hold-transition skin-\", skin, \" sidebar-mini\"), ...)` in dashboardPage.R.\n    \n    - ~~Add JS in `htmlDependency(\"AdminLTE\", \"2.0.6\", ..., scripts = c(adminLTE_js, ...))` in `addDeps` in deps.R~~\n    \n    - ~~Add JS at the end of `tags$body(...)` in dashboardPage.R - manual refer to JS with name, version and src derived from `addDeps()` in deps.R, not perfect (TODO - replace `ygdashboard-0.5.1.9000` by `system.file(\"AdminLTE\", package = \"ygdashboard\")`).~~\n    \n    - These together allow showing menu icons when sidebar collapse.\n    \n+ A modified infoBox: allow filled infoBox (Type2 infoBox) to have progress report.\n\n+ A modified dashboardPage.R, a modified dashboardHeader.R and a new dashboardControlbar.R: show control panel on top right of header panel.\n\n    - Add component controlbar in argument list and in `content \u003c- div(class = \"wrapper\", header, sidebar, body, controlbar)` in dashboardPage.R\n    \n    - Add `HTML('\u003cli\u003e\u003ca href=\"#\" data-toggle=\"control-sidebar\"\u003e\u003ci class=\"fa fa-gears\"\u003e\u003c/i\u003e\u003c/a\u003e\u003c/li\u003e')` in `tags$header(class = \"main-header\", ..., div(class = \"navbar-custom-menu\", tags$ul(class = \"nav navbar-nav\", items, ...)))` in dashboardHeader.R to show controlbar button toggle on/off controlbar.\n    \n    - Add dashboardControlbar.R to implement control-sidebar.\n          \n+ A modified dashboardPage.R, a modified dashboardHeader.R and a new dashboardUser.R: show user account info panel on top right of header panel.\n\n    - Add component user in argument list and in `tags$header(class = \"main-header\", ..., div(class = \"navbar-custom-menu\", tags$ul(class = \"nav navbar-nav\", items, ...)))` in dashboardHeader.R to show user account inf panel on top right of header panel.\n\n    - Add dashboardUser.R to implement user account infomation.\n    \n    - Add `htmlDependency(\"ygdashboard\", ...)` in `addDeps()` in deps.R pointing to inst/ygdashboard - so default user profile figure in inst/ygdashboard can be used when shiny rendering html.\n    \n+ A modified shinydashboard.js, a new moduleOutput.R and a modified `tagAssert()` in utils.R to allow dynamically generating ygdashboard modules such as `dashboardUser()`, `dashboardFooter()`.\n\n    - Add `var moduleOutputBinding =new Shiny.OutputBinding(); ...` to replace and find `class=ygdashboard-module-output` in `shinydashboard.js`. This is a mimic of `var menuOutputBinding = new Shiny.OutputBinding(); ...` and allows run time dynamically generate modules on server side to be binded into client side module place holders. The `class=\"ygdashboard-module-output\"` is used in shinydashboard.js as an id for replacing the origin DOM element with the new DOM elements copying over the ID and class.\n    \n    - Add class `ygdashboard-module-output` as skipped elements in `tagAssert()` in utils.R:\n    \n    ```  \n    if (allowUI \u0026\u0026\n        (hasCssClass(tag, \"shiny-html-output\") ||\n         hasCssClass(tag, \"shinydashboard-menu-output\") ||\n         hasCssClass(tag, \"ygdashboard-module-output\"))) {\n      return()\n    }\n    ```\n    \n    - Add `moduleOutput()` in moduleOutput.R as a method of creating a dynamic module output place holder on client side, use in context with `shiny::renderUI({})`. This is a mimic of `menuOutput()`. And similar as in menuOutput, it is recommended to use the wrapper function such as `userOutput()` and `footerOutput()`, instead of calling `moduleOutput()` directly.\n    \n+ A modified dashboardUser.R and a modified shinydashboard.js: create user dynamically from server side and render user reponsively on client side by taking input from URL - should be login from database when deployed.\n\n    - Add a modified `dashboardUser()` in dashboardUser.R to create userInfo as shiny html context - tagList.\n    \n    - Add `userOutput()` in dashboardUser.R  as client-side place holder, use in context with server-side dynamically generated `renderUser({ dashboardUser() })`.\n    \n+ A modified `sidebarUserPanel()` in dashboardSidebar.R to add user account info panel on sidebar with Online, Away, and Offline stauts:\n\n    - Add argument `status` in `sidebarUserPanel()`.\n    \n    - Add `sidebarUserPanelOutput()` in menuOutput.R as client-side place holder, use in context with server-side dynamically generated `renderMenu({ sidebarUserPanel() })`.\n    \n    - Add `style=\"background-color:transparent;\"` in `div(class = \"user-panel\", ..., div(class = \"pull-left info\", ...))` in `sidebarUserPanel()` - in case otherwise when work with leaflet package, background is overwritten by leafletfix.css:8.\n\n+ A modified dashboardSidebar.R:\n\n    - Add `menuSegment()` in context of `sidebarMenu()` in dashboardSidebar.R by `\u003cli class=\"header\"\u003eMAIN NAVIGATION\u003c/li\u003e`.\n    \n    - Add `menuSegmentOutput()` in menuOutput.R as client-side place holder, use in context with server-side dynamically generated `renderMenu({ menuSegment() })`.\n    \n+ A modified dashboardPage.R and a new dashboardFooter.R: add `footer` in body `content-wrapper`.\n\n    - Add a new `dashboardFooter()` to create dashboardFooter in dashboardFooter.R.\n    \n    - Add a new `footerOutput()` in dashboardFooter.R as client-side place holder, use in context with server-side dynamically generated `renderFooter({ dashboardFooter() })`.\n    \n    - Add an argument `footer` in `dashboardPage()` in dashboardPage.R.\n\n+ Add `chatBox()` in boxes.R: show chats and potential use for commnunicating with clients.\n\n    - Add `chatBox()` together with components `chatMessage()`, `chatContactList()` and `chatContact()` in boxes.R\n    \n    - Add `chatMessageOutput()` and `renderChatMessage()` for generating chatMessage dynamically on server-side and rendering on client-side.\n\n+ Add `calendarBox()` in boxes.R: show calendar and task progress. \n\n    - TODO: check the reason calendar won't show in shiny?\n\n+ Add `timelineBox()`, `timelineLabel()` and `timelineItem()` in boxes.R: show timeline of development and etc. \n\n    - TODO: Add `timelineOutput()` and `renderTimeline()` for generating timelineBox dynamically on server-side and rendering on client-side?\n\n\n## TODO:\n\n+ dashboardControlbar.R: create functions that can create sub-components in control-sidebar, like functions defined in dashboardSidebar.R\n\n+ create more valid `status` in `box()` - so more header color such as oragne, dark-blue, purple - or, add an argument color that takes valid color as input and overwrite status.\n\n\n\n","project_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fgyang274%2Fygdashboard","html_url":"https://awesome.ecosyste.ms/projects/github.com%2Fgyang274%2Fygdashboard","lists_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fgyang274%2Fygdashboard/lists"}