MIRO에는 슬롯 게임자 정의 입력을 슬롯 게임할 수 있는 API가 있습니다
입력 데이터를 생성하는 차트와 같은 위젯. 이는 다음을 의미합니다.
GAMS 모델에 대한 입력 데이터는 다음을 통해 생성될 수 있습니다.
차트, 테이블 또는 기타 항목을 대화식으로 수정
렌더러 유형입니다.
이 섹션을 읽기 전에 먼저 다음 사항을 연구해야 합니다.
장에 대해맞춤 렌더러. 슬롯 게임자 정의 위젯은 슬롯 게임자 정의 렌더러의 확장입니다.
데이터를 다시 MIRO로 반환할 수 있습니다.
참고:
슬롯 게임자 정의 입력 위젯의 API가 변경되었습니다
MIRO 2.0으로. API 버전 1에 대한 설명서(MIRO
1.x)는에서 찾을 수 있습니다.MIRO GitHub 저장소.
이것이 어떻게 작동하는지 이해하기 위해 예를 살펴보겠습니다.
문제를 해결할 수 있는 앱스도쿠. 우리는 스도쿠를 9x9 격자로 시각화하고 싶습니다.
이는 9개의 하위 그리드(각각 3x3 셀)로 나뉩니다. 우리는
입력 테이블을 표시하는 데 슬롯 게임하는 것과 동일한 도구를 슬롯 게임하십시오.
MIRO이지만 다른 R 패키지를 슬롯 게임할 수도 있고 심지어
그 조합. 먼저
모든 맞춤 입력 위젯에 필요한 상용구 코드:
mirowidget_<symbolName>출력 <- 함수(id, 높이 = NULL, 옵션 = NULL, 경로 = NULL)
ns <- NS(ID)
renderMirowidget_<symbolName> <- 함수(입력, 출력, 세션, 데이터, 옵션 = NULL, 경로 = NULL, rendererEnv = NULL, views = NULL, ...)
반환(반응적(데이터()))
슬롯 게임자 정의에 대한 상용구 코드가
위젯은 위젯과 거의 동일합니다.맞춤 렌더러. 커스텀 렌더러와의 주요 차이점은
이제 슬롯 게임에 전달할 입력 데이터를 반환해야 합니다.
우리는 a 안에 래핑된 데이터를 반환합니다.반응적 표현. 이렇게 하면 항상 현재 값을 반환하게 됩니다.
귀하의 데이터 상태. 슬롯 게임자가 귀하와 상호작용할 때
위젯, 데이터가 업데이트됩니다.
맞춤 렌더러와의 또 다른 중요한 차이점은
그데이터여기의 인수도 반응형입니다.
표현식(또는 반응형 표현식 목록)
통신할 추가 데이터 세트를 지정했습니다.
귀하의 위젯), NOT a티블.
우리가 언급한 스도쿠 예시로 돌아가 보겠습니다.
더 일찍. 파일을 배치합니다mirowidget_initial_state.R우리 앱의 슬롯 게임자 정의 렌더러 디렉토리 내:<modeldirectory>renderer_sudoku. 슬롯 게임자 정의 위젯의 출력 및 렌더링 기능
이름이 지정되어야 합니다.mirorwidget_<symbolName>출력그리고renderMirowidget_<symbolName>각각, 어디서기호이름은 소문자입니다
위젯이 정의된 슬롯 게임 기호의 이름입니다.
MIRO에게 어떤 입력 기호가 우리의 문자를 슬롯 게임해야 하는지 알려주기 위해
새 맞춤 위젯을 수정해야 합니다.sudoku.json파일은에 있습니다.<모델 디렉터리>/conf_<모델 이름>디렉토리. 입력 기호에 슬롯 게임자 정의 위젯을 슬롯 게임하려면
명명된초기_상태우리 모델에서는 다음과 같습니다
슬롯 게임 파일에 추가해야 합니다.
"inputWidgets":
"초기_상태":
"widgetType": "맞춤형",
"rendererName": "mirowidget_initial_state",
"alias": "초기 상태",
"api버전": 2,
"옵션":
"isInput": 참
우리는 다음 유형의 입력 위젯을 원한다고 지정했습니다.커스텀슬롯 게임 기호용초기_상태. 게다가 우리는 다음과 같이 선언했습니다.
탭 제목을 정의하는 이 기호의 별칭입니다. 우리
또한 렌더러에 옵션 목록을 제공했습니다.
기능. 스도쿠 예제에서는 동일한 것을 슬롯 게임하고 싶습니다.
입력 데이터와 출력 데이터 모두를 위한 렌더러. 따라서 언제
입력 기호에 대한 새로운 렌더러 슬롯 게임초기_상태, 옵션을 전달합니다isInput값 포함참우리에게
렌더러 기능.
참고:
이전 버전과의 호환성을 위해 현재
API를 슬롯 게임하고 싶다고 명시적으로 지정해야 합니다.
슬롯 게임자 정의 입력 위젯용 버전 2. 미래에는
MIRO 버전에서는 이것이 기본값이 됩니다.
다시 렌더러 기능에 집중하고
이전의 상용구 코드를 확장합니다.
mirowidget_initial_stateOutput <- 함수(id, 높이 = NULL, 옵션 = NULL, 경로 = NULL)
ns <- NS(ID)
rHandsontableOutput(ns('sudoku'))
renderMirowidget_initial_state <- 함수(입력, 출력, 세션, 데이터, 옵션 = NULL, 경로 = NULL, rendererEnv = NULL, 뷰 = NULL, ...)
출력$스도쿠 <- renderRHandsontable(
rhandsontable(if(isTRUE(options$isInput)) 데이터() else 데이터,
readOnly = !isTRUE(옵션$isInput),
rowHeaders = 거짓))
if(isTRUE(옵션$isInput))
return(reactive(hot_to_r(input$sudoku)))
방금 수행한 작업을 분석해 보겠습니다. 먼저 두 가지를 정의했습니다.
렌더러 함수mirowidget_initial_stateOutput그리고renderMirowidget_initial_state.
우리는 R 패키지를 슬롯 게임하고 싶기 때문에rhandsontable스도쿠 그리드를 표시하려면
자리 표시자 기능rHandsontableOutput그리고
해당 렌더러 함수renderRHandsontable. 무엇인지 궁금하시다면
대체 자리표시자와 렌더러 함수는 다음을 읽어보세요.
섹션맞춤 렌더러.
우리는 옵션을 슬롯 게임한다는 점에 유의하세요isInput우리
테이블 여부를 결정하기 위해 이전에 지정했습니다.
읽기 전용이어야 합니다. 게다가, 우리는 단지
렌더러 함수를 슬롯 게임하여 반응 표현식을 슬롯 게임하면
데이터 반환 - 슬롯 게임자 정의 입력 위젯의 경우. 참고
입력 위젯의 경우 반응형을 실행해야 합니다.
표현(데이터()) 우리와 함께 티블을 얻으려면
입력 데이터. 데이터가 변경될 때마다(예:
슬롯 게임자가 새 CSV 파일을 업로드했기 때문에), 반응형
표현식이 업데이트되어 테이블이
새 데이터로 다시 렌더링됩니다(반응성으로 인해).
의 성격renderRHandsontable함수).
반응형 프로그래밍의 개념은 다소 어렵습니다.
처음에는 이해하지만 일단 이해하면 감사하게 될 것입니다.
얼마나 편리한지.
당신이 우연히 발견할 수 있는 세부사항은 다음과 같습니다.hot_to_r(input$sudoku). 이것은 단순히 방법이다
에역직렬화UI에서 나오는 데이터rhandsontable도구가 제공합니다. 중요한 것은 R을 반환한다는 것입니다.
MIRO의 열 개수와 정확히 일치하는 데이터 프레임
입력 기호에는 다음이 있을 것으로 예상됩니다(이 예에서는초기_상태).
그게 전부입니다! 첫 번째 슬롯 게임자 정의를 구성했습니다.
위젯. 다음 결과에 대해 동일한 렌더러를 슬롯 게임하려면
이라는 GAMS 기호에 저장됩니다.결과, 간단히 추가하세요
다음 줄을sudoku.json파일. 우리는
옵션을 설정하지 마세요isInput여기.
"데이터 렌더링":
"결과":
"outType": "mirowidget_initial_state"
여기에 설명된 맞춤 위젯의 정식 버전은 다음과 같습니다.
및 해당 슬롯 게임 모델스도쿠MIRO 모델 라이브러리에서 찾을 수 있습니다.
여기서는 생성 방법에 대한 예도 찾을 수 있습니다.
여러 기호를 정의하는 위젯입니다. 이 경우에는데이터인수는 명명된 반응형 목록입니다.
여기서 이름은 소문자 이름입니다.
GAMS 기호. 마찬가지로, 명명된 이름도 반환해야 합니다.
반응식 목록. 슬롯 게임자 정의 입력 정의
여러 GAMS 기호에 대한 위젯은 나열만큼 간단합니다.
위젯이 정의하기를 원하는 모든 추가 기호
에서"widgetSymbols"배열
귀하의 위젯 슬롯 게임. 아래에서
에 대한 슬롯 게임초기_상태위젯
Sudoku 예제에 슬롯 게임되었습니다.
"초기_상태":
"widgetType": "맞춤형",
"rendererName": "mirowidget_initial_state",
"alias": "초기 상태",
"api버전": 2,
"widgetSymbols": ["force_unique_sol"],
"옵션":
"isInput": 참
여러 기호에 대한 위젯을 정의하는 것 외에도,
MIRO를 슬롯 게임하면 (다른) 입력의 값에 액세스할 수도 있습니다.
코드의 위젯. 이렇게 하려면 다음을 나열해야 합니다.
에서 액세스하려는 기호"추가데이터"슬롯 게임 배열.
슬롯 게임자 정의 위젯은 자동으로 확장될 수 없습니다.
그것을 슬롯 게임하기 위해하이퍼큐브 작업. 그러므로,
슬롯 게임자 정의 위젯에 스칼라 기호를 포함하는 경우(둘 중 하나)
위젯이 정의된 기호로 또는 다음을 통해"widgetSymbols") 및
여전히 Hypercube 작업에 이러한 기호를 포함하고 싶습니다.
구성을 슬롯 게임하려면 스칼라 위젯도 정의해야 합니다.
Hypercube 작업에 대한 구성입니다. 당신은 이것을 할 수 있습니다"hcubeWidgets"슬롯 게임 옵션. 아래에서 예를 찾을 수 있습니다.
스칼라force_unique_sol, 즉
슬롯 게임자 정의 위젯과 슬라이더로 모두 슬롯 게임할 수 있습니다.하이퍼큐브 모듈:
"활성화모듈":
"hcubeModule": 사실
,
"hcubeWidgets":
"force_unique_sol":
"widgetType": "체크박스",
"alias": "초기 솔루션 강제 적용",
"값": 1,
"class": "체크박스-재료"
,
"inputWidgets":
"force_unique_sol":
"widgetType": "맞춤형",
"rendererName": "mirowidget_force_unique_sol",
"alias": "초기 상태",
"api버전": 2,
"widgetSymbols": ["initial_state"],
"옵션":
"isInput": 참
그런 다음 확인란은 다음의 드롭다운 메뉴로 확장됩니다.
하이퍼큐브 제출 대화 상자(참조이 테이블, 지원되는 위젯 및 확장 방법
Hypercube 제출 대화상자에서).