2016-11-07 3 views
2

Могу ли я приветствовать вас на вопрос о пакете «shinyjs»?Управление видимыми/невидимыми элементами меню блестящей приборной панели с использованием пакета «shinyjs»

Я построил блестящую приборную панель, и я хотел бы установить функцию, используя «shinyjs» для управления видимыми/невидимыми элементами меню.

Я разработал первый пункт меню/страницу, чтобы выбрать данные для этой приборной панели. После того, как пользователи выбрали нужные им данные, я не хочу, чтобы они возвращались, чтобы изменить их выбор. Поэтому я хочу создать кнопку, которая, если пользователи нажмут эту кнопку, первый пункт меню исчезнет, ​​а остальная часть пункта меню появится.

Я уверен, что это возможно, но я думаю, что для его кодирования требуется знание Javascript.

Это как ответ на этот вопрос, но мой просто переключает видимые/невидимые пункты меню.

activate tabpanel from another tabpanel

Я признателен за любые ответы!

Спасибо!

Joanna

+1

Просьба представить минимальный воспроизводимый пример. Вероятно, вы можете решить это с помощью JavaScript и CSS 'display: none', не используя' shinyjs'. –

+0

Спасибо Xiongbing Jin! Я решил эту проблему, добавив теги $ div (id = "haha", menuItem()) в пункты меню, которые я хочу контролировать и добавляя функцию наблюдения (ввод $ showSidebar, {shinyjs :: toggle ("haha")}) для управления их. – Joanna

ответ

3

Я решил, добавив теги $ DIV() для элементов, которые я хочу, чтобы скрыть/показать.

УИ:

hidden(tags$div(class="header", id="haha",menuItem(tags$em("DIY Pivot Table",style="font-size:170%"),icon=icon("bar-chart-o"),tabName="Pivot"),br(), 

MENUITEM (теги $ эм ("Поиск данных", стиль = "Размер шрифта: 170%"), значок = значок ("бар-чарт-о"), TABNAME = "searchdata")))

сервер:

observeEvent(input$showSidebar, { 
shinyjs::toggle("haha") 

})

Итак, таким образом, вы можете использовать вход $ showSidebar контролировать видимый/невидимый о f пунктов меню.

+3

Спасибо, что поделились своим решением. Если вы хотите решить эту проблему без необходимости ее переноса в другой div, это должно быть возможно с помощью параметра 'selector' вместо параметра' id' в 'toggle()', но я бы не смог сказать вам что использовать в качестве значения «селектор», не видя полностью воспроизводимого примера с рабочим кодом –

+0

Спасибо @daattali! Я определенно попробую больше возможностей! – Joanna

+1

Чтобы сохранить тех, кто пытается сделать предложение Дина некоторое время: селектора jquery объясняются здесь довольно хорошо: [jquery selectors] (https://www.w3schools.com/jquery/jquery_ref_selectors.asp). Любой из селекторов может быть адресован аргументом в toggle: 'selector =" jquery selector "' – SprengMeister