டேப்செட்கள் முழுவதும் bs4Dash இல் கடைசியாக செயலில் உள்ள தாவலை எவ்வாறு வைத்திருப்பது

Tabset

பளபளப்பான டாஷ்போர்டுகளில் தாவல் நிலைத்தன்மையுடன் பயனர் அனுபவத்தை மேம்படுத்துதல்

பல டேப்செட்கள் உங்கள் பணிப்பாய்வுக்கு வழிகாட்டும் சிக்கலான டாஷ்போர்டில் வேலை செய்வதை கற்பனை செய்து பாருங்கள். டேப்செட்டுகளுக்கு இடையில் மாறுவது உங்கள் முன்னேற்றத்தை அடிக்கடி மீட்டமைக்கிறது, நீங்கள் பணிபுரிந்த கடைசி தாவலுக்குச் செல்லும்படி கட்டாயப்படுத்துகிறது. குறிப்பாக பெரிய தரவுத்தொகுப்புகள் அல்லது சிக்கலான பகுப்பாய்வுகளைக் கையாளும் போது இது வெறுப்பாகவும் நேரத்தைச் செலவழிப்பதாகவும் இருக்கும். 🚀

bs4Dash உடன் கட்டமைக்கப்பட்ட பளபளப்பான டாஷ்போர்டுகளில், டேப்செட்டுகளுக்கு இடையே நகரும் போது கடைசியாக செயலில் உள்ள தாவலைத் தக்கவைப்பது ஒரு பொதுவான சவாலாகும். பயனர்கள் தடையற்ற அனுபவத்தை விரும்புகிறார்கள், டேப்செட்டிற்குத் திரும்புவது, அவர்களின் முந்தைய நிலைக்குத் திரும்பும். கைமுறை தீர்வுகள் இருக்கும்போது, ​​அவை டெவலப்பர்கள் மற்றும் பயனர்களுக்கு சிக்கலானதாகவும் திறமையற்றதாகவும் இருக்கும்.

இந்தச் சிக்கலைத் தீர்க்க, டைனமிக் டேப் பெர்சிஸ்டன்ஸ் `ஷினிஜஸ்` மற்றும் தனிப்பயன் ஜாவாஸ்கிரிப்ட் ஒருங்கிணைப்பைப் பயன்படுத்துகிறது. வினைத்திறன் மதிப்புகள் மற்றும் நிகழ்வு கையாளுதலை மேம்படுத்துவதன் மூலம், ஒவ்வொரு டேப்செட்டிலும் நீங்கள் கடைசியாக பார்வையிட்ட தாவலை நினைவில் வைத்து, பயனர் திருப்தி மற்றும் உற்பத்தித்திறனை மேம்படுத்தும் டாஷ்போர்டை நீங்கள் உருவாக்கலாம்.

இந்த அம்சத்தை எவ்வாறு திறம்பட செயல்படுத்துவது என்பதை இந்தக் கட்டுரையில் ஆராய்வோம். குறியீடு துணுக்குகள், முக்கிய கருத்துக்கள் மற்றும் தாவல் நிலைகளைப் பராமரிப்பதற்கான நடைமுறை உதவிக்குறிப்புகள் bs4Dash இல் விவாதிப்போம். உங்கள் பயனர்களுக்கு புத்திசாலித்தனமாகவும் உள்ளுணர்வுடனும் உணரக்கூடிய டாஷ்போர்டுகளை உருவாக்குவோம்! 💡

கட்டளை பயன்பாட்டின் உதாரணம்
reactiveValues இந்த கட்டளை ஒவ்வொரு டேப்செட்டிற்கும் கடைசியாக பார்வையிட்ட தாவலைச் சேமிக்க ஒரு எதிர்வினை பட்டியலை உருவாக்குகிறது. ஒவ்வொரு டேப்செட்டிலும் எந்த டேப் செயலில் இருந்தது என்பதை பயன்பாடு நினைவில் வைத்திருப்பதை உறுதிசெய்து, பயனர் இடைவினைகள் முழுவதும் நிலைத்திருப்பதை இது அனுமதிக்கிறது.
shinyjs::onclick ஜாவாஸ்கிரிப்ட் கிளிக் நிகழ்வுகளை R குறியீட்டுடன் பிணைக்கப் பயன்படுகிறது. இந்த சூழலில், இது பயனர் கிளிக்குகளின் அடிப்படையில் செயலில் உள்ள டேப்செட்டை மாற்றி, அதற்கேற்ப உள்ளீட்டு மதிப்புகளைப் புதுப்பிக்கிறது.
req உள்ளீடு அல்லது வினைத்திறன் மதிப்பு அல்லாதது என்பதை உறுதிப்படுத்தும் ஒரு பளபளப்பான செயல்பாடு. டேப்செட் நிலையை ரெண்டரிங் செய்வதற்கு அல்லது செயலாக்குவதற்கு முன் கிடைக்கிறதா என்பதை உறுதிப்படுத்த இது பயன்படுகிறது.
bs4SidebarMenu செயலில் உள்ள டேப்செட்டுக்கு குறிப்பிட்ட டைனமிக் பக்கப்பட்டி மெனுவை உருவாக்குகிறது. தேர்ந்தெடுக்கப்பட்ட டேப்செட்டுடன் தொடர்புடைய மெனு விருப்பங்களை மட்டுமே பயனர்கள் பார்ப்பதை இது உறுதி செய்கிறது.
session$sendCustomMessage கிளையன்ட் பக்கத்தில் R சர்வர் மற்றும் JavaScript இடையே தொடர்பை செயல்படுத்துகிறது. பயனர் டேப்செட்களை மாற்றும் போது, ​​கடைசியாக செயலில் உள்ள தாவலை டைனமிக் ஹைலைட் செய்ய இது பயன்படுகிறது.
Shiny.addCustomMessageHandler R சேவையகத்திலிருந்து கட்டளைகளைக் கையாள தனிப்பயன் JavaScript செய்தி கையாளுதலை வரையறுக்கிறது. இந்த எடுத்துக்காட்டில், இது தாவல்களை மாற்றுவதற்கான கட்டளையைக் கேட்கிறது மற்றும் கிளையன்ட் உலாவியில் தேவையான செயல்களைச் செய்கிறது.
setTimeout ஒரு ஜாவாஸ்கிரிப்ட் செயல்பாடு குறிப்பிட்ட குறியீட்டை செயல்படுத்துவதை தாமதப்படுத்த பயன்படுகிறது. இங்கே, UI தயாராக இருப்பதை உறுதிசெய்ய, செயலில் உள்ள தாவல் உள்ளீட்டு மதிப்பை அமைப்பதற்கு முன் சிறிது நேரம் காத்திருக்கப் பயன்படுகிறது.
$(document).on('shiny:connected') ஷைனி ஆப் முழுமையாக இணைக்கப்பட்டிருக்கும் போது, ​​ஜாவாஸ்கிரிப்ட் நிகழ்வு கேட்பான் தூண்டப்பட்டது. பயன்பாடு ஏற்றப்படும்போது, ​​இயல்புநிலை செயலில் உள்ள டேப்செட்டை அமைப்பதன் மூலம் இது பயன்பாட்டின் நிலையைத் துவக்குகிறது.
bs4TabItems ஒரு டேப்செட்டில் உள்ள பல தாவல் உருப்படிகளை வரையறுக்கிறது. ஒவ்வொரு உருப்படியும் ஒரு குறிப்பிட்ட உள்ளடக்கப் பகுதிக்கு ஒத்திருக்கும், பயன்பாட்டின் தளவமைப்பு பயனர் தொடர்புத் தேவைகளுடன் சீரமைக்கப்படுவதை உறுதி செய்கிறது.
observeEvent ஒரு குறிப்பிட்ட எதிர்வினை மதிப்பு அல்லது உள்ளீட்டில் ஏற்படும் மாற்றங்களைக் கண்காணித்து பதிலளிக்கிறது. தாவல் நிலைகளை மாறும் வகையில் புதுப்பிக்கவும், சேவையகத்தை பயனர் இடைமுகத்துடன் ஒத்திசைக்கவும் இது பயன்படுகிறது.

bs4Dash இல் டேப் பெர்சிஸ்டன்ஸ் மூலம் சிறந்த வழிசெலுத்தலை உருவாக்குகிறது

வழங்கப்பட்ட ஸ்கிரிப்ட் டாஷ்போர்டில் உள்ள பொதுவான சிக்கலைக் குறிக்கிறது: பல டேப்செட்டுகளுக்கு இடையில் மாறும்போது கடைசி செயலில் உள்ள தாவலைத் தக்கவைத்தல். பயனர்கள் தங்கள் முந்தைய சூழலுக்குத் திரும்ப வேண்டிய சிக்கலான பணிப்பாய்வுகளைக் கொண்ட டாஷ்போர்டுகளுக்கு இது மிகவும் முக்கியமானது. எதிர்வினை மதிப்புகள் மற்றும் shinyjs ஆகியவற்றைப் பயன்படுத்துவதன் மூலம், செயலில் உள்ள தாவல் நிலை மாறும் வகையில் சேமிக்கப்பட்டு மீட்டெடுக்கப்படுவதை ஸ்கிரிப்ட் உறுதிசெய்கிறது, இது பயனர் அனுபவத்தை மேம்படுத்துகிறது. ஒவ்வொரு டேப்செட்டிற்கான கடைசி செயலில் உள்ள தாவலைக் கண்காணிப்பது மற்றும் மாற்றங்கள் ஏற்படும் போது அதைப் புதுப்பிப்பது முக்கிய வழிமுறையாகும். இந்த செயல்படுத்தல் தடையற்ற கிளையன்ட்-சர்வர் தொடர்புக்கு தனிப்பயன் ஜாவாஸ்கிரிப்டைப் பயன்படுத்துகிறது, இது R ஐ முன்-இறுதிக் கருவிகளுடன் இணைக்கும் ஆற்றலைக் காட்டுகிறது. 🌟

ஒரு டேப்செட்டுடன் பயனர் தொடர்பு கொள்ளும்போது, ​​ஒரு ஜாவாஸ்கிரிப்ட் ஹேண்ட்லர் செயலில் உள்ள டேப் தகவலை ஷைனி சர்வருக்கு `shinyjs::onclick` வழியாக அனுப்புகிறது. இது ஒவ்வொரு டேப்செட்டின் நிலையைச் சேமிக்கும் `ரியாக்டிவ் மதிப்புகள்` பொருளில் புதுப்பிப்புகளைத் தூண்டுகிறது. எடுத்துக்காட்டாக, ஒரு பயனர் "Tab Set 1"ஐக் கிளிக் செய்தால், அந்த டேப்செட்டின் நிலை "tab1_1" அல்லது "tab1_2" ஆகச் சேமிக்கப்படும். மாறும் வகையில் ரெண்டர் செய்யப்பட்ட பக்கப்பட்டி மெனு தேர்ந்தெடுக்கப்பட்ட டேப்செட்டின் அடிப்படையில் மாற்றியமைக்கிறது, இது தொடர்புடைய விருப்பங்கள் மட்டுமே காட்டப்படுவதை உறுதி செய்கிறது. இந்த வடிவமைப்பு காட்சி அமைப்பு மற்றும் செயல்பாடு இரண்டையும் மேம்படுத்துகிறது, இடைமுகத்தை உள்ளுணர்வு மற்றும் பதிலளிக்கக்கூடியதாக ஆக்குகிறது. 🖥️

`session$sendCustomMessage` செயல்பாடு இங்கு முக்கியமானது. டேப்செட்டுக்கு திரும்பும் போது, ​​கடைசியாக பார்வையிட்ட தாவலை மீண்டும் செயல்படுத்த, கிளையன்ட் பக்க ஜாவாஸ்கிரிப்டுடன் தொடர்பு கொள்ள இது சேவையகத்தை அனுமதிக்கிறது. உதாரணமாக, பயனர் "Tab Set 2" க்கு சென்று பின்னர் "Tab Set 1" க்கு திரும்பினால், "Tab Set 1" இல் செயலில் உள்ள கடைசி தாவலை ஆப்ஸ் தானாகவே மீட்டெடுக்கும். இது கைமுறை வழிசெலுத்தலின் தேவையை நீக்குகிறது, பயனர்களின் நேரத்தையும் முயற்சியையும் மிச்சப்படுத்துகிறது. தேவையற்ற பிழைகளைத் தடுக்க, தேவையான நிபந்தனைகள் பூர்த்தி செய்யப்பட்டால் மட்டுமே அனைத்து செயல்களும் செயல்படுத்தப்படுவதை `req` இன் பயன்பாடு உறுதி செய்கிறது.

ஒட்டுமொத்தமாக, இந்த ஸ்கிரிப்ட் ஆனது டைனமிக் ஃப்ரண்ட்-எண்ட் செயல்பாடு உடன் R இன் பின்தளத்தின் தடையற்ற ஒருங்கிணைப்பைக் காட்டுகிறது. bs4Dash, பளபளப்பான மற்றும் `shinyjs` ஆகியவற்றை மேம்படுத்துவதன் மூலம், டெவலப்பர்கள் டாஷ்போர்டுகளை உருவாக்க முடியும், அவை அழகுடன் மட்டுமின்றி, பயன்பாட்டினைப் பொறுத்தவரை சிறந்ததாகவும் இருக்கும். டாஷ்போர்டில் ஒரு விரிவான அறிக்கையை உருவாக்குவதை கற்பனை செய்து பாருங்கள், ஒவ்வொரு முறையும் நீங்கள் தாவல்களுக்கு இடையில் மாறும்போது, ​​உங்கள் முன்னேற்றம் நீங்கள் விட்டுச்சென்ற இடத்திலேயே இருக்கும். இந்த அணுகுமுறை விரக்தியைக் குறைக்கிறது மற்றும் மென்மையான பணிப்பாய்வுகளை உறுதி செய்கிறது. R மற்றும் JavaScript கூறுகள் இரண்டையும் சேர்ப்பது, நிஜ-உலக சவால்களை திறம்பட தீர்க்க பல்வேறு கருவிகள் எவ்வாறு இணைந்து செயல்பட முடியும் என்பதை எடுத்துக்காட்டுகிறது. 💡

பல டேப்செட் bs4Dash அமைப்பில் கடைசியாக செயலில் உள்ள தாவலைத் தொடர்வது எப்படி?

ஷைனி ஃப்ரேம்வொர்க் மற்றும் bs4Dash லைப்ரரியுடன் R ஐப் பயன்படுத்தி, செயலில் உள்ள தாவல்களை மாறும் வகையில் நினைவில் வைக்கலாம்.

# Import necessary libraries
library(shiny)
library(bs4Dash)
library(shinyjs)
# Define the UI
ui <- bs4DashPage(
  header = bs4DashNavbar(title = "Remember Last Tab in bs4Dash"),
  sidebar = bs4DashSidebar(uiOutput("sidebar_menu")),
  body = bs4DashBody(
    useShinyjs(),
    bs4TabItems(
      bs4TabItem(tabName = "tab1_1", h2("Content for Tab 1.1"))
      bs4TabItem(tabName = "tab1_2", h2("Content for Tab 1.2"))
    )
  )
)
# Define the server
server <- function(input, output, session) {
  lastTabs <- reactiveValues(tabset1 = "tab1_1")
  output$sidebar_menu <- renderUI({
    bs4SidebarMenu(
      id = "sidebar",
      bs4SidebarMenuItem("Tab 1.1", tabName = "tab1_1", icon = icon("dashboard"))
    )
  })
  observeEvent(input$sidebar, {
    lastTabs$tabset1 <- input$sidebar
  })
}
# Run the app
shinyApp(ui, server)

மாற்று அணுகுமுறை: மென்மையான தாவல் நிர்வாகத்திற்காக ஜாவாஸ்கிரிப்டை ஒருங்கிணைத்தல்

இந்த அணுகுமுறையானது R மற்றும் bs4Dash உடன் இணைந்து தனிப்பயன் ஜாவாஸ்கிரிப்ட் ஹேண்ட்லர்களைப் பயன்படுத்துவதை உள்ளடக்கியது.

library(shiny)
library(bs4Dash)
library(shinyjs)
ui <- bs4DashPage(
  header = bs4DashNavbar(title = "Remember Last Tab in bs4Dash"),
  sidebar = bs4DashSidebar(uiOutput("sidebar_menu")),
  body = bs4DashBody(
    useShinyjs(),
    tags$script(HTML("        
      $(document).on('shiny:connected', function (event) {
        Shiny.setInputValue('activeTabSet', 'tabset1')
      })
    
")),
    bs4TabItems(
      bs4TabItem(tabName = "tab1_1", h2("Content for Tab 1.1"))
    )
  )
)
server <- function(input, output, session) {
  output$sidebar_menu <- renderUI({
    req(input$activeTabSet)
    if (input$activeTabSet == "tabset1") {
      bs4SidebarMenu(
        id = "sidebar",
        bs4SidebarMenuItem("Tab 1.1", tabName = "tab1_1", icon = icon("dashboard"))
      )
    }
  })
}
shinyApp(ui, server)

பயனர் வசதிக்காக bs4Dash இல் தாவல் நிர்வாகத்தை மேம்படுத்துதல்

திறமையான டாஷ்போர்டுகளை உருவாக்குவதில் மிகவும் குறைவாக மதிப்பிடப்பட்ட அம்சங்களில் ஒன்று, பயனரின் தொடர்பு ஓட்டத்தைக் கருத்தில் கொள்வது. bs4Dashஐப் பயன்படுத்தி கட்டப்பட்ட டாஷ்போர்டுகளில், தாவல்களுக்கு இடையில் மாறும்போது பயனர்கள் தங்கள் சூழலை இழந்தால், பல டேப்செட்களை நிர்வகிப்பது சிரமமாகிவிடும். நினைவில் கொள்ள ஒரு பொறிமுறையை செயல்படுத்துவது இங்குதான் ஜொலிக்கிறது. இது பணிப்பாய்வுகளை எளிதாக்குகிறது மற்றும் உராய்வைக் குறைக்கிறது, குறிப்பாக தரவு ஆய்வு அல்லது நிர்வாகப் பணிகளைப் பூர்த்தி செய்யும் சிக்கலான பயன்பாடுகளில். 🚀

கடைசி செயலில் உள்ள தாவலைத் தக்கவைத்துக்கொள்வதற்கு அப்பால், தனிப்பயன் UI கூறுகளை நிர்வகிக்க இந்த கருத்தை நீட்டிக்க முடியும். எடுத்துக்காட்டாக, டைனமிக் வடிகட்டலுடன் தாவல் நிலைத்தன்மையை இணைப்பது பயனர்கள் தங்களுக்கு விருப்பமான தாவல் மற்றும் முன்பு அமைக்கப்பட்ட வடிப்பான்கள் இரண்டிற்கும் திரும்ப அனுமதிக்கிறது. இந்த கலவையானது பயன்பாட்டினை கணிசமாக மேம்படுத்தும், டாஷ்போர்டுகளை பயனர் மையமாக மாற்றும். மற்றொரு குறிப்பிடத்தக்க நன்மை என்னவென்றால், தேவையற்ற சேவையக அழைப்புகளைத் தவிர்ப்பதன் மூலம் இது செயல்திறனை மேம்படுத்துகிறது, ஏனெனில் பயனர் அடுத்து எங்கு செல்ல வேண்டும் என்பதை பயன்பாடு எதிர்பார்க்கலாம்.

மேலும், தாவல் மாற்றங்களின் போது அனிமேஷன்கள் அல்லது காட்சி குறிப்புகளைச் சேர்ப்பது பயனர் அனுபவத்தை மேலும் மேம்படுத்தலாம். கடைசியாகப் பார்வையிட்ட தாவலைக் குறிக்க நுட்பமான சிறப்பம்சங்களைப் பயன்படுத்துதல் அல்லது தாவல்கள் மாறும்போது மென்மையான ஸ்க்ரோலிங் விளைவை வழங்குதல், ஒரு பயன்பாட்டை மெருகூட்டப்பட்டதாகவும் உள்ளுணர்வுடனும் உணர வைப்பதற்கான எடுத்துக்காட்டுகளாகும். டெவலப்பர்கள் `shinyjs` போன்ற நூலகங்களைப் பயன்படுத்தி இந்த மேம்பாடுகளை தடையின்றி பளபளப்பான டாஷ்போர்டுகளில் ஒருங்கிணைத்து, செயல்பாடு மற்றும் அழகியல் ஆகியவற்றின் சீரான கலவையை உறுதிசெய்யலாம். 🌟

  1. செயலில் உள்ள டேப்செட்டின் அடிப்படையில் பக்கப்பட்டி மெனுவை எவ்வாறு மாறும் வகையில் புதுப்பிப்பது?
  2. நீங்கள் பயன்படுத்தலாம் அதன் அடிப்படையில் பக்கப்பட்டி மெனுவை நிபந்தனையுடன் வழங்குவதற்கான செயல்பாடு மதிப்பு.
  3. கடைசியாக செயலில் உள்ள தாவல் நிலையை விட அதிகமாக சேமிக்க முடியுமா?
  4. ஆம், பயன்படுத்துவதன் மூலம் , வடிப்பான்கள், பயனர் தேர்வுகள் அல்லது பிற நிலைகள் போன்ற கூடுதல் தகவல்களை நீங்கள் சேமிக்கலாம்.
  5. ஒரு பயனர் டாஷ்போர்டை மூடிவிட்டு மீண்டும் திறந்தால் என்ன செய்வது? அவர்களின் நிலையை நினைவில் கொள்ள முடியுமா?
  6. அமர்வுகள் முழுவதும் மாநிலத்தைத் தொடர, நீங்கள் இதைப் பயன்படுத்தலாம் பயனர் குறிப்பிட்ட அமைப்புகளைச் சேமிக்கவும் மீட்டெடுக்கவும் தொகுப்பு அல்லது தரவுத்தளம்.
  7. தாவல் மாற்றங்களை எவ்வாறு மென்மையாக்குவது?
  8. பயன்படுத்தவும் அனிமேஷன்கள் அல்லது தாமதமான தாவல் மாற்றங்களுக்கான தனிப்பயன் ஜாவாஸ்கிரிப்டைச் சேர்க்க நூலகம்.
  9. தாவல் மாற்றங்களின் அடிப்படையில் சர்வர் பக்க செயல்களைத் தூண்டுவது சாத்தியமா?
  10. ஆம், நீங்கள் பயன்படுத்தலாம் செயலில் உள்ள தாவல் மாறும்போதெல்லாம் சர்வர் பக்க லாஜிக்கை இயக்குவதற்கான செயல்பாடு.

பயனரின் கடைசி செயலில் உள்ள தாவலை டாஷ்போர்டுகள் நினைவில் வைத்திருப்பதை உறுதி செய்வது, உள்ளுணர்வு மற்றும் திறமையான இடைமுகங்களை உருவாக்குவதற்கான ஒரு முக்கிய படியாகும். R இன் எதிர்வினை திறன்களை JavaScript உடன் இணைப்பதன் மூலம், டெவலப்பர்கள் ஒரு மென்மையான மற்றும் சிறந்த வழிசெலுத்தல் அனுபவத்தை வழங்க முடியும், இதனால் அவர்களின் பயன்பாடுகள் தனித்து நிற்கின்றன. 🌟

தாவல் நிலைத்தன்மையை ஒருங்கிணைப்பது பயனர்களின் நேரத்தை மிச்சப்படுத்துகிறது மற்றும் சிக்கலான அமைப்புகளில் கூட பணிப்பாய்வு தொடர்ச்சியை பராமரிக்க உதவுகிறது. இந்த அணுகுமுறை டாஷ்போர்டு வடிவமைப்பில் பயனர் தொடர்புக்கு முன்னுரிமை அளிப்பதன் முக்கியத்துவத்தை எடுத்துக்காட்டுகிறது, ஒவ்வொரு கிளிக்கிலும் அர்த்தமுள்ளதாகவும் பயனுள்ளதாகவும் இருப்பதை உறுதி செய்கிறது. bs4Dash மற்றும் shinyjs போன்ற கருவிகள் மூலம், அறிவார்ந்த பயன்பாடுகளை உருவாக்குவது எளிதாக இருந்ததில்லை.

  1. இந்த கட்டுரை அதிகாரப்பூர்வ bs4Dash ஆவணத்தால் ஈர்க்கப்பட்டது. மேலும் விவரங்களுக்கு, பார்வையிடவும் bs4Dash ஆவணம் .
  2. கூடுதல் எடுத்துக்காட்டுகள் மற்றும் விளக்கங்கள் ஷைனி ஆர் நூலகத்தின் ஆதாரங்களில் இருந்து மாற்றியமைக்கப்பட்டன ஷைனி ஆர் அதிகாரப்பூர்வ தளம் .
  3. ஷைனியுடன் ஜாவாஸ்கிரிப்டை ஒருங்கிணைப்பதற்கான வழிகாட்டுதல் shinyjs தொகுப்பு ஆவணத்தில் இருந்து குறிப்பிடப்பட்டுள்ளது shinyjs ஆவணம் .
  4. தனிப்பயன் ஜாவாஸ்கிரிப்ட் மற்றும் UI தொடர்பு உத்திகள் பற்றிய சமூக விவாதங்கள் மூலம் தெரிவிக்கப்பட்டது RStudio சமூகம் .