Konfigurowanie paneli dynamicznego wprowadzania danych

Ostatnie dwie dane wejściowe, które wprowadzimy, zostaną później wykorzystane do wykresów SMA. Pierwsza z nich służy do wyboru implementacji SMA, z której chce skorzystać użytkownik. Dostępne opcje to sma_efficient_1() , sma_efficient_2() , sma_delegated_fortran(), i funkcja sms_delegated_cpp(), które utworzyliśmy wcześniej. Drugi służy do określenia okresu używanego do obliczeń SMA i jest używany jako dane wejściowe w jednej z poprzednich funkcji. Ponieważ kod może zacząć być zbyt powtarzalny i zajmować zbyt dużo miejsca, a tak najprawdopodobniej zrozumiałem wzorce zagnieżdżania użyte podczas tworzenia ui , będę unikać powtarzania pełnej deklaracji obiektu ui i po prostu wskażę, gdzie należy wprowadzić zmiany. W tym przypadku chcemy dodać następujący kod po zakończeniu funkcji wellPanel() i przed zakończeniem funkcji sidedbarPanel(). Poniższy kod będzie drugim parametrem sidebarPanel(), więc nie zapomnij dodać przecinka („ ,”) po zakończeniu funkcji wellPanel(), w przeciwnym razie wystąpi błąd.

Funkcja conditionalPanel() sprawdza warunek JavaScript określony za pomocą ciągu znaków, aby zdecydować, czy panel powinien zostać pokazany użytkownikowi. Ponieważ obiekt input jest wysyłany do przeglądarki internetowej za pośrednictwem obiektu JavaScript o dogodnej nazwie input, możemy go użyć do uzyskania wartości, której szukamy, czyli tego, czy użytkownik patrzy na pierwszą kartę „Simple Moving Averages”. Jeśli tak, to pokażemy panel.  JavaScript używa notacji z kropką (“.”), Aby uzyskać dostęp do elementów zamiast notacji money ($) używanej w R. Na pokazanym panelu wellPanel() znajdują się dwa obiekty wejściowe: radioButtons() i sliderInput(). Pierwsza z nich otrzymuje opcje dostępne dla użytkownika na liście przesłanej przez parametr choice (nazwa każdego elementu jest wyświetlana użytkownikowi, podczas gdy wartość każdego elementu jest używana wewnętrznie w R, które w tym przypadku są nazwami implementacji SMA), jak również selected domyślnie. Drugi otrzymuje min, max  i domyślnie value dla suwaka numerycznego. Obie otrzymują unikalny identyfikator i etykietę jako pierwsze dwa argumenty, tak jak każda inna funkcja *Input():

conditionalPanel (

condition =  „input.tab_selected == 1”,

wellPanel (

radioButtons (

„sma_implementation”,

„Implementation:”,

choices = list (

„C++ = sma_delegated_cpp”,

„Fortran” – „sma_delegated_fortran”,

„Efficient 1 „ = „sma_efficient_1”,

„Efficient 2 „ = „sma_efficient_2”,

),

selected = „sma_delegated_cpp”

),

sliderInput (

„sma_period”,

„Period:”,

min = 5,

max = 200 ,

value = 30

)

)

)

Rzeczywiste kreacje wykresów zostawimy na później, więc nie musimy nic zmieniać na stronie server. W tym momencie wartości reaktywne wychodzące input$sma_implementation  i  input$sma_period nie będą używane. Zrzut ekranu pokazujący, jak te dane wejściowe są pokazane w następujący sposób. Jeśli przejdziesz do zakładki Simple Moving Averages, powinny zostać pokazane, ale jeśli przejdziesz do zakładki Data Overview, powinny zostać ukryte:

Jak widać, umożliwienie użytkownikom interakcji z aplikacją nie jest zbyt trudne i odbywa się za pomocą funkcji *Input() w obiekcie ui, których wartości reaktywne z kolei można wykorzystać w funkcji server

Dodaj komentarz

Twój adres e-mail nie zostanie opublikowany. Wymagane pola są oznaczone *