구성 모드에서는 옵션을 슬롯 게임할 수 없음

    맞춤 데이터 커넥터

    MIRO를 슬롯 게임하면 다음을 수행할 수 있습니다.가져오기그리고내보내기다양한 파일 형식의 시나리오 데이터. 그러나 당신은 MIRO가 제공하지 않는 슬롯 게임자 정의 형식의 데이터가 있을 수 있습니다. 지원하거나 데이터를 직접 가져오고 푸시할 수도 있습니다. 외부 데이터베이스에서. 이러한 경우에는 다음을 수행해야 합니다. R 형식으로 자신만의 데이터 커넥터를 작성하세요. MIRO에 연결할 수 있는 기능입니다. 맞춤 데이터 커넥터는 다음 이름으로 저장되어야 합니다.miroimport.R또는miroexport.R파일을 저장하고 다음 위치에 배치함renderer_<모델 이름>디렉토리.

    MIRO를 슬롯 게임하면 여러 가져오기 및 여러 가져오기를 정의할 수 있습니다. 수출 기능. 다음을 통해 액세스할 수 있습니다.데이터 로드그리고수출 시나리오대화상자.

    데이터 로드 및 내보내기 대화상자에 표시되는 슬롯 게임자 정의 데이터 가져오기 및 내보내기 기능
    맞춤 가져오기 기능

    슬롯 게임자 정의 가져오기 기능에는 다음이 있어야 합니다. 서명:

    miroimport_<importerName> <- function(symNames, localFile = NULL, views = NULL, 첨부 파일 = NULL, 메타데이터 = NULL, customRendererDir = NULL, ...)

    어디에서수입업자이름원하는 이름이 될 수 있습니다. 수입자를 식별하기 위해,symNames캐릭터입니다 데이터를 가져올 기호의 이름이 포함된 벡터 그리고로컬파일는 하나의 선택적 데이터 프레임입니다. 업로드된 각 파일의 행과 열:이름업로드된 파일의 이름을 지정합니다.크기파일 크기를 바이트 단위로 지정합니다.유형에 의해 보고된 MIME 유형을 제공합니다. 브라우저 및데이터 경로임시 경로 포함 파일이 에 업로드되었습니다. 또한 다음 서비스에 액세스할 수 있습니다.메타데이터, 첨부파일그리고조회수20948_21034renderer_<모델 이름>다음을 통해 액세스할 수 있습니다.customRendererDir인수(예: 액세스 동일한 디렉토리에 추가 파일이 배치됨).

    슬롯 게임자 정의 가져오기 기능은 이름이 지정된 목록을 반환해야 합니다. 이름이 기호인 데이터 프레임 또는 티블 이름. 슬롯 게임자 정의 가져오기 기능으로 인해 발생하는 오류 MIRO에 의해 포착되고 일반 오류 메시지가 표시됩니다. 슬롯 게임자에게 표시됩니다. 슬롯 게임자에게 더 많은 정보를 제공하는 오류 메시지가 있으면 슬롯 게임자 정의를 실행할 수 있습니다. 오류가 발생했습니다.abortSafe(msg = "")함수.msg슬롯 게임자에게 표시됩니다.

    우리를 위한 슬롯 게임자 정의 가져오기 기능을 생성합시다운송데이터를 업로드할 수 있는 예 JSON 파일 형식입니다. 우리는jsonliteJSON 데이터를 구문 분석하는 패키지입니다. 첫째, 우리는 파일 생성miroimport.Rrenderer_transport디렉토리. 둘째, 자체 가져오기 함수를 작성합니다.

    miroimport_JSON <- 함수(symbolNames, localFile = NULL, views = NULL, 첨부 파일 = NULL, 메타데이터 = NULL, customRendererDir = NULL, ...) 
      if (is.null(localFile) || !identical(length(localFile$datapath), 1L)) 
        abortSafe("유효한 단일 JSON 파일을 업로드하세요.")
    
      시도캐치(
    
          jsonData <- jsonlite::read_json(localFile$datapath, 단순화벡터 = TRUE)
        ,
        오류 = 함수(e) 
          abortSafe("JSON 파일을 구문 분석할 수 없습니다. 구문이 정확합니까?")
    
      )
      dataTmp <- lapply(symbolNames, function(symbolName) 
        if (!symbolName %in% names(jsonData)) 
          반환(NULL)
    
        시도캐치(
    
            return(tibble::as_tibble(jsonData[[symbolName]]))
          ,
          오류 = 함수(e) 
            abortSafe("JSON 파일을 구문 분석할 수 없습니다. 예상 구조를 따르지 않는 것 같습니다.")
    
        )
      )
      이름(dataTmp) <- 기호이름
      반환(데이터Tmp)

    새로 생성된 슬롯 게임자 정의 가져오기 기능을 슬롯 게임하려면 다음이 필요합니다. 다음 구성을 추가하려면transport.json파일:

    "customDataImport": [
    
          "label": "JSON 가져오기",
          "functionName": "miroimport_JSON",
          "symNames": ["a", "b"],
          "localFileInput": 
            "label": "여기에 JSON 파일을 업로드해 주세요",
            "다중": 거짓,
            "수락": [".json", "application/json"]
    
      ]

    라벨는 데이터 가져오기 섹션에서 다음과 같이 슬롯 게임됩니다. 맞춤 가져오기 도구의 식별자입니다.함수이름가져오기 이름으로 설정되어야 합니다. 우리의 경우 함수:miroimport_JSON.

    또한, 우리는 다음을 슬롯 게임할 수 있습니다symNames제한 설정 가져오기 기능이 지원하는 기호입니다. 생략하면 이 설정에서 MIRO는 가져오기 기능을 가정합니다. 모든 입력 및 출력 기호를 지원합니다.

    선택사항localFileInput객체는 MIRO에게 다음과 같이 말합니다. 우리의 슬롯 게임자 정의 가져오기 기능은 로컬 파일이 업로드되었습니다. 수입업자에게 파일이 필요하지 않은 경우(예: 원격 데이터베이스에서만 현재 값을 가져옵니다.) 이 객체는 생략할 수 있습니다.

    다양한 구성 옵션에 대해 자세히 알아보려면 슬롯 게임자 정의 가져오기 기능의 경우 전체 스키마는 다음과 같습니다. 귀하의 구성이 검증될 것입니다.

    참고:

    스칼라(그리고 0차원 또는 1차원)를 전달하기 위해 싱글톤 세트) 슬롯 게임자 정의 데이터 가져오기 도구를 통해 다음을 수행할 수 있습니다. 에 명시적으로 지정하거나symNames배열하여 개별적으로 보내세요. 1차원 문자, 정수 또는 숫자형 벡터, 또는 티블로 결합하십시오. 티블에는 다음이 있어야 합니다. 이름_scalars및 열:스칼라그리고(둘 다 유형문자). 스칼라의 이름은 다음과 같아야 합니다. 에 저장됨스칼라열과 그 값열. 참고로 소통하면_scalars테이블에는 모두 포함해야 합니다. 스칼라(슬롯 게임 옵션 및 이중 대시도 포함) 매개변수) 이 표에 나와 있습니다. 당신이 원한다면 스칼라의 하위 집합을 전달하고 이를 정의합니다. 명시적으로 배열을 통해symNames.

    지정하지 않은 경우symNames, MIRO는 다음과 같이 가정합니다. 스칼라를 다음 형식으로 제공합니다. 위에서 설명한 티블(키 슬롯 게임)_scalars).

    JSON 검증 맞춤 가져오기 기능을 위한 스키마
    "customDataImport": 
      "description": "슬롯 게임자 정의 함수를 슬롯 게임하여 데이터 가져오기",
      "유형": "배열",
      "항목": 
        "유형": "객체",
        "추가속성": 거짓,
        "필수": [
          "라벨",
          "함수이름"
        ],
        "속성": 
          "라벨": 
            "description": "커스텀 임포터 선택 시 표시되는 라벨",
            "유형": "문자열",
            "최소 길이": 1
          ,
          "symNames": 
            "description": "가져올 기호의 이름입니다. 제공되지 않거나 비어 있는 경우 모든 기호(입력 및 출력)가 기본값입니다.",
            "유형": [
              "배열",
              "문자열"
            ],
            "최소 길이": 1,
            "uniqueItems": 사실,
            "항목": 
              "유형": "문자열",
              "최소 길이": 1
    
          ,
          "함수 이름": 
            "description": "호출할 슬롯 게임자 정의 R 함수의 이름(필수 함수 서명: miroimport(symNames, localFile = NULL, ...)은 올바른 열 수/유형의 데이터 프레임의 명명된 목록을 반환해야 함). 목록의 이름은 SymNames 인수에서 제공한 이름과 동일해야 합니다.",
            "유형": "문자열",
            "default": "miroimport",
            "최소 길이": 1
          ,
          "localFileInput": 
            "description": "슬롯 게임자가 로컬 파일을 제공할 수 있도록 허용합니다.",
            "유형": "객체",
            "추가속성": 거짓,
            "필수": [
              "라벨"
            ],
            "속성": 
              "라벨": 
                "description": "로컬 파일 입력의 레이블입니다.",
                "유형": "문자열"
              ,
              "다중": 
                "description": "슬롯 게임자가 여러 파일을 업로드할 수 있는지 여부.",
                "유형": "부울"
              ,
              "수락": 
                "description": "서버가 예상하는 파일 형식에 대한 힌트를 브라우저에 제공하는 고유한 파일 형식 지정자의 문자 벡터입니다. 많은 브라우저는 슬롯 게임자가 잘못된 파일을 선택하는 것을 방지하기 위해 이를 슬롯 게임합니다.",
                "유형": "배열",
                "항목": 
                  "유형": "문자열"
    슬롯 게임자 정의 내보내기 기능

    데이터 내보내기를 위해 다음과 같은 슬롯 게임자 정의 내보내기 기능이 있습니다. 다음 서명을 슬롯 게임해야 합니다.

    miroexport_<exporterName> <- 함수(데이터, 경로 = NULL, 보기 = NULL, 첨부 파일 = NULL, 메타데이터 = NULL, customRendererDir = NULL, ...)

    어디에서데이터는 이름이 지정된 티블 목록입니다. 이름은 기호의 이름입니다(와 같은 구조). 슬롯 게임자 정의 가져오기 함수의 반환 값) 및경로은 (임시) 파일의 파일 경로입니다 다운로드를 위해 슬롯 게임자에게 제공됩니다(선택 사항). 에서 또한 다음 항목에 액세스할 수 있습니다.메타데이터, 첨부파일그리고조회32182_32268renderer_<모델 이름>다음을 통해 액세스할 수 있습니다.customRendererDir인수(예: 액세스 동일한 디렉토리에 추가 파일이 배치됨).

    JSON을 생성하는 JSON 내보내기 함수를 작성합시다 슬롯 게임자 정의 가져오기를 슬롯 게임하여 다시 가져올 수 있는 파일 이전부터 기능을 수행합니다. 그러기 위해 먼저 파일을 만듭니다.miroexport.R에서renderer_transport디렉토리. 그런 다음 슬롯 게임자 정의 내보내기 함수를 작성합니다.

    miroexport_JSON <- 함수(데이터, 경로 = NULL, 보기 = NULL, 첨부 파일 = NULL, 메타데이터 = NULL, customRendererDir = NULL, ...) 
      jsonlite::write_json(데이터, 경로 = 경로, 데이터프레임 = "열")

    다음을 다음에 추가하세요transport.json파일:

    "customDataExport": [
    
          "label": "JSON 내보내기",
          "functionName": "miroexport_JSON",
          "localFileOutput": 
            "파일 이름": "output.json",
            "contentType": "응용 프로그램/json"
    
      ]

    당신은 구성 개체가 매우 슬롯 게임자 정의 가져오기 기능과 유사하지만 선택 사항입니다.localFileOutput지금 반대하세요 다운로드할 파일의 속성을 지정합니다. 우리 내보내기 기능이 그렇지 않은 경우 이 개체를 생략할 수 있습니다. 다운로드할 파일을 생성하고 데이터를 다음으로 전달합니다. 예를 들어 원격 서비스입니다.

    다음은 슬롯 게임자 정의 내보내기에 대한 검증 스키마입니다:

    JSON 검증 맞춤 내보내기 기능을 위한 스키마
    "customDataExport": 
      "description": "슬롯 게임자 정의 함수를 슬롯 게임하여 데이터 내보내기",
      "유형": "배열",
      "항목": 
        "유형": "객체",
        "추가속성": 거짓,
        "필수": [
          "라벨",
          "함수이름"
        ],
        "속성": 
          "라벨": 
            "description": "슬롯 게임자 정의 내보내기를 선택할 때 표시되는 레이블",
            "유형": "문자열",
            "최소 길이": 1
          ,
          "symNames": 
            "description": "내보낼 기호의 이름입니다. 제공되지 않거나 비어 있는 경우 모든 기호(입력 및 출력)가 기본값으로 설정됩니다.",
            "유형": [
              "배열",
              "문자열"
            ],
            "최소 길이": 1,
            "uniqueItems": 사실,
            "항목": 
              "유형": "문자열",
              "최소 길이": 1
    
          ,
          "함수 이름": 
            "description": "호출할 슬롯 게임자 정의 R 함수의 이름(필수 함수 서명: miroexport(data, ...) 여기서 data는 명명된 데이터 프레임 목록이고 이름은 기호의 이름입니다.)",
            "유형": "문자열",
            "기본값": "miroexport",
            "최소 길이": 1
          ,
          "localFileOutput": 
            "description": "슬롯 게임자가 파일을 다운로드할 수 있도록 활성화합니다.",
            "유형": "객체",
            "추가속성": 거짓,
            "필수": [
              "파일 이름"
            ],
            "속성": 
              "파일 이름": 
                "description": "슬롯 게임자 웹 브라우저가 기본적으로 슬롯 게임해야 하는 파일 이름(확장명 포함).",
                "유형": "문자열",
                "최소 길이": 1
              ,
              "콘텐츠 유형": 
                "description": "다운로드할 파일의 MIME 유형입니다. 파일 확장자를 알 수 없는 경우 기본값은 application/octet-stream입니다.",
                "유형": "문자열",
                "최소 길이": 1
    참고:

    슬롯 게임자 정의에서 자격 증명을 슬롯 게임해야 하는 경우 가져오기/내보내기 기능(예: 원격 데이터베이스 서비스)를 슬롯 게임하여 제공할 수 있습니다. 환경변수(MIRO 데스크탑 / MIRO 서버).

    슬롯 게임자 정의 입력 위젯

    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 제출 대화상자에서).

    대시보드 시나리오 비교

    대시보드 시나리오 비교는 다음을 표시하는 도구입니다. 선택한 여러 시나리오의 데이터를 대화형으로 대시보드. 이 시나리오 비교를 슬롯 게임할 수 있으려면 모드에서는 애플리케이션별 구성이 필요합니다. 대시보드 및 해당 구성에 대한 모든 정보 일반 섹션에서 확인하실 수 있습니다.대시보드 렌더러.

    슬롯 게임된 대시보드 비교

    출력에 대한 대시보드를 이미 슬롯 게임한 경우 상징, 시나리오 속 상대방을 위한 노력 비교가 매우 낮습니다. 거의 전체 슬롯 게임 1:1로 입양이 가능합니다. 시나리오 비교 슬롯 게임 몇 가지 측면에서만 일반 대시보드와 다릅니다. (아래 예시도 참조하세요):

    • <modelname>.json 파일의 슬롯 게임은 다음과 같습니다. 아래에서는 수행되지 않음데이터렌더링, 하지만 별도의 섹션비교모듈.
    • 표준 렌더러와 달리 시나리오 비교 모듈은 개별 기호에 대해 슬롯 게임되지 않았지만 기호 불특정입니다. 결과적으로 시나리오는 비교 모듈은 항상 모든 입력 및 기호 데이터를 출력합니다. 따라서 다음을 수행할 필요는 없습니다. 데이터가 포함될 원하는 모든 기호를 나열하십시오. 아래 대시보드에서 액세스됨추가데이터.
    • 대신에"아웃타입"에 대시보드 슬롯 게임, a"유형": "대시보드"이다 여기에 지정됩니다.
    • A"라벨"할당된 것은 무엇입니까? 시나리오 비교를 선택하면 표시됩니다. 모드(분할 보기, 탭 보기, 피벗 보기 옆).

      예: 대시보드 및 대시보드 비교 슬롯 게임
    • "데이터렌더링": 
            "<소문자_기호이름>": 
              "outType": "대시보드",
              "추가데이터": [],
              "옵션": 
                "valueBoxesTitle": "",
                "valueBox": 
                    ...
                ,
                "데이터뷰": 
                    ...
                ,
                "dataViewsConfig": 
                    ...
      
          ,
          "비교모듈": [
      
            "유형": "대시보드",
            "라벨": "",
            "옵션": 
              "valueBoxesTitle": "",
              "valueBox": 
                  ...
              ,
              "데이터뷰": 
                  ...
              ,
              "dataViewsConfig": 
                  ...
      
          ]

    특징에 대한 몇 가지 참고사항"dataViewsConfig"슬롯 게임:

    • 원칙적으로 전체 슬롯 게임을 채택할 수 있습니다. 표준 대시보드를 제공하고 시나리오에서도 활용 가능 비교. 그러나 귀하의 데이터는 다음 위치에 표시됩니다. 이제 테이블과 차트에는 측정기준이 하나 더 추가되었습니다. 시나리오가 포함될 시나리오 차원 비교 대상은 이름으로 식별됩니다. 이 추가"_scenName"차원은 다음과 같아야 합니다. 아래 보기에 추가됨"dataViewsConfig". 하지 않으려면 시나리오를 미리 선택하지만 선택한 시나리오는 모두 표시합니다. 값은.
    • 추가 시나리오 차원은 또한 차트의 모습. 일부 시각화는 일반 출력에 적합하지만 더 이상 의미가 없습니다. 여러 시나리오를 표시합니다. 이 경우 뷰는 슬롯 게임(차원의 분포 행/열/집계 등)은 다음과 같이 조정될 수 있습니다. 필요합니다.피벗 비교 모드여기서 보기를 준비하는 데 도움을 줄 수 있습니다.
    • 값 상자가 숫자를 표시하는 경우("valueScalar"속성), 대시보드에 드롭다운 메뉴가 나타납니다. 값 상자 위에. 여기에서 시나리오를 선택할 수 있습니다. 값이 표시됩니다.
    • 대시보드가 특정 항목에 대해 구성되지 않았기 때문에 기호, 차트/표에 슬롯 게임되는 기호 데이터 의 각 보기에 지정해야 합니다."dataViewsConfig" ("데이터"속성).

    일반 대시보드의 예를 바탕으로 시나리오 비교를 위한 슬롯 게임은 다음과 같습니다. 다음과 같습니다:

    "비교모듈": [
    
          "유형": "대시보드",
          "label": "대시보드 비교",
          "옵션": 
            "valueBoxesTitle": "요약 표시기",
            "valueBox": 
              "id": ["요약",...],
              [...]
            ,
            "데이터뷰": 
              "요약": [
                  "macro1": "거시경제 지표(실질, 백분율 변화)",
                  "macro2": ""
              ],
              [...]
            ,
            "dataViewsConfig": 
              "매크로1": 
                "aggregationFunction": "합계",
                "pivotRenderer": "바",
                "tableSummarySettings":  "enabled": false, "rowSummaryFunction": "sum", "colSummaryFunction": "sum" ,
                "행": "맥",
                "cols": "_scenName": null,
                "집계":  "sim_miro": null ,
                "chartOptions":  "title": "거시경제 지표(실질, 백분율 변화)" ,
                "data": "macroperc",
                "userFilter": "맥",
                "소수점": 2
              ,
              "매크로2": 
                "aggregationFunction": "합계",
                "pivotRenderer": "테이블",
                "tableSummarySettings":  "enabled": false, "rowSummaryFunction": "sum", "colSummaryFunction": "sum" ,
                "행": "맥",
                "cols": "_scenName": null,
                "집계":  "sim_miro": null ,
                "data": "macroperc",
                "userFilter": "macro1",
                "소수점": 2
    
        ]
    팁:

    당신은 시나리오에 대해 여러 개의 대시보드를 가질 수 있습니다 비교.

    대시보드 비교에서 맞춤 코드 슬롯 게임

    일반 대시보드와 마찬가지로 슬롯 게임자 정의 R을 제공할 수도 있습니다. 차트/표 대신 렌더링되는 코드 구성됨"dataViewsConfig". 해야 할 일 다음과 같이 진행하세요.

    1. 다운로드최신 대시보드 시나리오 비교 렌더러 파일GitHub의 MIRO 저장소에서 가져와서 귀하의 폴더에 넣으세요renderer_<모델 이름>디렉토리. 폴더가 아직 존재하지 않는 경우 다음을 수행할 수 있습니다. 수동으로 생성하세요.
    2. mirocompare_dashboard.R 파일에서 다음을 만드세요 변경사항:
      - DashboardCompareOutput- function(id, height = NULL, options = NULL, path = NULL, ...) {
      + mirocompare_<id>Output - function(id, height = NULL, options = NULL, path = NULL) {
        [...]
      }
      - renderDashboardCompare - function(input, output, session, data, options = NULL, path = NULL, rendererEnv = NULL, views = NULL, ...) {
      + renderMirocompare_<id> - function(input, output, session, data, options = NULL, path = NULL, rendererEnv = NULL, views = NULL, ...) {
        [...]
      }
      
      위의 <id>를 원하는 ID로 바꾸세요. 슬롯 게임자 정의 시나리오 비교에 슬롯 게임하십시오. 당신은 필요합니다 이 ID는 4단계에서 다시 입력하세요.
    3. 에서<모델 이름>.json파일 추가 섹션customCompareModules대시보드 슬롯 게임을 다음에서 이동비교모듈들어가다 그것. 대시보드 슬롯 게임이 하나만 있는 경우비교모듈그러면 간단히 이름을 바꿀 수 있습니다.비교모듈customCompareModules.
    4. 대신에"유형"안에 대시보드 시나리오 비교 슬롯 게임, 항목 추가"ID"그리고 그것에 2단계에서 슬롯 게임한 이름입니다. 이전과 마찬가지로 라벨은 시나리오 비교 모드를 선택하면 표시됩니다. (분할 보기, 탭 보기, 피벗 보기 옆).

      <모델 이름>.json 파일의 변경 사항:
      - "비교모듈": [
      + "맞춤비교모듈": [
      
      - "유형": "대시보드",
      + "id": "맞춤",
          "label": "대시보드 비교",
          "옵션": 
            [...]
      
        ]
    5. 그렇습니다. 이제 대시보드 시나리오를 확장할 수 있습니다. 슬롯 게임자 정의 시나리오 비교로서의 비교 렌더러 모듈. 절차는 일반 절차와 동일하기 때문에 지금부터 대시보드 렌더링은 2번째를 참고해주세요 절반의해당 섹션.

    맞춤 시나리오 비교

    슬롯 게임 MIRO는 기본적으로 3개(+ 1를 지원합니다.슬롯 게임 가능) 시나리오 비교 모드: 분할 보기, 탭 보기, 그리고 피벗 뷰. 하지만 관심이 있다면 어떨까요? 비교를 위해 맞춤화된 다양한 통계 또는 차트 여러 시나리오? 이를 위해 다음이 있습니다. 슬롯 게임자 정의 시나리오 비교 모듈. 데이터는 다음과 같습니다. 다음을 통해 슬롯 게임자 정의 비교 모듈에 로드됩니다.일괄 로드모듈. 비교 선택을 위한 드롭다운 메뉴 선택한 시나리오를 로드할 모드는 다음과 같습니다. 그에 따라 확장되었습니다.

    일괄 로드 모듈에서 슬롯 게임자 정의 비교 모듈 선택

    슬롯 게임자 정의 시나리오 비교 모듈은 비슷한 방식으로 작동합니다 에맞춤 렌더러. 따라서 다음 내용을 읽어 보시기를 적극 권장합니다. 먼저 슬롯 게임자 정의 렌더러에 관한 장을 참조하세요. 관습처럼 렌더러, 맞춤형 시나리오 비교 모듈은 다음과 같이 구성됩니다. JSON 구성 블록 및.R파일 애플리케이션의 렌더러에 코드가 포함되어 있습니다. 디렉토리(renderer_<모델 이름>). 새로운 생성을 통해 이 과정을 진행해 보겠습니다. 에 대한 비교 모듈픽스톡모델.

    우리는 우리의 상용구 코드를 작성하는 것부터 시작합니다. 새 파일의 렌더러mirocompare_<id>.R내부renderer_pickstock디렉토리 어디서<ID>은 우리 커스텀의 ID입니다 비교 모듈. 아이디는 자유롭게 선택하실 수 있습니다. 반드시 길이는 2~20자이고 ASCII 소문자만 포함해야 합니다. 문자 또는 숫자. 우리는 이름을 선택합니다maxstock1이 예에서는 파일 생성mirocompare_maxstock1.R따라서.

    맞춤 렌더러와 마찬가지로 맞춤 시나리오 비교 모듈은 자리 표시자 또는 두 가지 기능으로 슬롯 게임됩니다. 출력 함수 및 렌더러 함수:

    mirocompare_<id>출력 <- function(id, height = NULL, options = NULL, path = NULL) 
      ns <- NS(ID)
    
    renderMirocompare_<id> <- function(입력, 출력, 세션, 데이터, 옵션 = NULL, 경로 = NULL, rendererEnv = NULL, views = NULL, ...)

    이미 렌더러를 작성했다면, 출력 및 렌더러 함수의 인수 목록은 친숙해 보여요. 따라서 우리는 다음 사항에 중점을 둘 것입니다. 차이점: 첫째, 맞춤 렌더러와 달리데이터인수는 데이터프레임이지만R6클래스의 객체맞춤비교데이터. 는 이 클래스의 다양한 메서드는 다음 항목에 설명되어 있습니다.다음 섹션. 둘째, 귀하는 다음의 첨부 데이터에 접근할 수 있습니다. 를 통한 시나리오data$getAttachmentData()메서드 대신 별도의 개체입니다.

    조회수다음과 마찬가지로 슬롯 게임자 정의 비교 렌더러에서 슬롯 게임할 수 있습니다. 출력 데이터를 위한 슬롯 게임자 정의 렌더러입니다.

    우리의 예로 돌아가서 초기 렌더러를 작성해 봅시다 최대값에 대한 상대 테스트 오류를 표시합니다. 주식 수입니다.

    mirocompare_maxstock1Output <- function(id, height = NULL, options = NULL, path = NULL) 
      ns <- NS(ID)
      return(plotOutput(ns("maxstockVsErrorTest")))
    
    renderMirocompare_maxstock1 <- 함수(입력, 출력, 세션, 데이터, 옵션 = NULL, 경로 = NULL, rendererEnv = NULL, 뷰 = NULL, ...) 
      scalarsPivoted <- dplyr::bind_rows(lapply(data$get("_scalars"), tidyr::pivot_wider, names_from = "scalar", value_from = "value", id_cols = Character()))
      scalarsOutPivoted <- dplyr::bind_rows(lapply(data$get("_scalars_out"), tidyr::pivot_wider, names_from = "scalar", value_from = "value", id_cols = Character()))
      스칼라 <- 억제 경고(dplyr::mutate(dplyr::bind_cols(scalarsPivoted, scalarsOutPivoted), across(everything(), as.numeric)))
      스칼라[["error_test_rel"]] <- 스칼라[["error_test"]] / 스칼라[["trainingdays"]]
    
      출력$maxstockVsErrorTest <- renderPlot(boxplot(error_test_rel ~ maxstock, scalars, main = options$chartTitle))

    우리는 먼저get()방법 의데이터검색할 개체 입력 및 출력 스칼라. 스칼라는 특별히 취급됩니다. 단일 데이터 프레임으로 묶인다는 점에서 열:스칼라, 설명그리고. 그러므로 우리는 먼저 피벗하고 입력 및 출력 스칼라를 병합합니다. 그런 다음 새로운 파생 열을 계산할 수 있습니다.error_test_rel그리고 생성 최대값에 대한 상대 테스트 오류가 있는 상자 그림 주식 수입니다.

    MIRO에서 이 슬롯 게임자 정의 비교 모듈을 슬롯 게임하려면 다음 JSON 구성을 추가해야 합니다.pickstock.json파일의conf_pickstock디렉토리:

    "customCompareModules": [
    
          "id": "maxstock1",
          "label": "최대 재고량에 대한 테스트 오류",
          "옵션": 
            "chartTitle": "테스트 오류(상대)와 최대 주식 수"
    
      ]

    유일한 필수 필드는 다음과 같습니다.id그리고라벨.라벨다음 경우에 표시됩니다. 비교 모드 선택 및id내부적으로 슬롯 게임됩니다. 모듈을 식별하십시오. 선택적 개체를 지정할 수 있습니다 와 함께옵션다음에 제공됨 출력 및 렌더러 기능. 이것은 특히 유용합니다 동일한 렌더러 기능을 재슬롯 게임하려는 경우 다른 옵션. 이 경우 비교 ID는 모듈은 출력/렌더러의 ID와 동일하지 않습니다. 기능. 그러므로 반드시 ID를 지정해야 합니다. 를 슬롯 게임하는 렌더러 함수externalRendererId필드. 비교 모듈에 필요한 추가 R 패키지 다음을 통해 지정할 수 있습니다.패키지필드.

    아래는 슬롯 게임자 정의 비교 모듈을 구성합니다.

    JSON 검증 맞춤 비교 모듈의 스키마
    "customCompareModules":
      "유형":"배열",
      "항목":
          "유형":"객체",
          "description": "슬롯 게임자 정의 시나리오 비교 모듈",
          "추가속성":false,
          "속성":
            "ID":
                "description": "분석 모듈의 고유 식별자(a-z0-9)",
                "유형":"문자열",
                "최소 길이":2,
                "최대 길이":20
            ,
            "라벨":
                "description": "이 분석 모듈을 식별하는 레이블",
                "유형":"문자열",
                "최소 길이":1
            ,
            "externalRendererId":
                "description":"동일한 렌더러를 여러 번 슬롯 게임하려는 경우(예: 다른 옵션 슬롯 게임) 여기에서 슬롯 게임할 렌더러의 ID를 지정할 수 있습니다. 제공된 경우 출력 함수 이름은 mirocompare_<externalRendererId>Output이어야 하며 렌더러 함수는 renderMirocompare_<externalRendererId>입니다.",
                "유형":"문자열",
                "최소 길이":2,
                "최대 길이":20
            ,
            "패키지":
                "description": "설치해야 하는 패키지",
                "유형":[
                  "배열",
                  "문자열"
                ],
                "최소 길이":2,
                "최소항목":1,
                "고유 항목":true,
                "항목":
                  "유형":"문자열",
                  "최소 길이":2
    
            ,
            "옵션":
                "description": "추가 옵션",
                "유형":"객체"
    
          ,
          "필수": ["id", "라벨"]

    맞춤 비교 데이터

    다음 섹션에서는 다양한 방법을 설명합니다.맞춤비교데이터R6 클래스. 이 클래스의 인스턴스가 슬롯 게임자 정의 비교에 전달됩니다. 형식의 렌더러데이터인수.

    기호 이름 가져오기
    data$getAllSymbols()

    슬롯 게임 가능한 모든 이름을 포함한 문자 벡터(입력 및 출력) 기호.

    설명

    이 방법을 슬롯 게임하면 슬롯 게임 가능한 모든 이름을 얻을 수 있습니다 기호.

    기호 데이터 가져오기
    data$get(기호이름)
    인수
    기호이름 슬롯 게임 기호의 (소문자) 이름(또는 특수 기호_scalars모든 입력에 대해 스칼라 또는_scalars_out모두를 위한 스칼라 출력). 지정된 기호가 다음과 같은 경우 존재하지 않습니다. 클래스에 오류가 있습니다.error_invalid_symbol이다 던졌다.

    이름이 지정되지 않은 데이터프레임(티블) 목록입니다.

    설명

    이 방법을 슬롯 게임하면 다음의 데이터를 검색할 수 있습니다. 로드된 모든 시나리오에 대해 지정된 기호. 첫 번째 요소는 항상 샌드박스 시나리오입니다. 얻으려면 메타데이터(예: 시나리오 이름, 시나리오 소유자 등) 다양한 시나리오에서는 다음을 슬롯 게임하세요.getMetadata()방법. 주문 시나리오는 모든 기호에 대해 동일하며 메타데이터.

    메타데이터 가져오기
    데이터$getMetadata()

    열이 있는 이름 없는 데이터프레임(티블) 목록:_sid(정수: 내부 시나리오 ID),_uid(문자: 시나리오 소유자의 슬롯 게임자 이름),_sname(문자: 시나리오 이름),_stime(문자: 마지막 변경의 타임스탬프, 형식: yyyy-mm-dd HH:MM:SS),_stag(문자: 쉼표로 구분된 시나리오 태그 목록).

    설명

    이 방법을 슬롯 게임하면 메타데이터(예: 로드된 모든 항목에 대한 시나리오 이름, 시나리오 소유자 등) 시나리오. 순서는 와 같습니다.data$get(기호이름)방법.

    첨부파일(메타)데이터 가져오기
    data$getAttachmentData(scenIds = NULL, fileNames = NULL, includeContent = FALSE, includeSandboxScen = TRUE)
    인수
    scenIds 시나리오 ID의 정수 벡터(다음에서 반환됨)getMetadata()방법) 또는NULL모두 포함하려면 로드된 시나리오
    파일 이름 필터링할 첨부 파일 이름의 문자형 벡터 또는NULL모두 포함하려면 로드된 시나리오
    포함콘텐츠 포함 여부를 지정하는 부울파일콘텐츠열 첨부 데이터
    includeSandboxScen 첨부 파일 포함 여부를 지정하는 부울 샌드박스 시나리오(다음에 포함됨) 시나리오 ID(_sid) 중0)

    열이 있는 데이터프레임(tibble):_sid(정수: 내부 시나리오 ID,0샌드박스용 시나리오),파일이름(문자: 첨부 파일 이름),execPerm(논리: 여부 모델은 첨부 파일을 읽을 수 있습니다),파일콘텐츠 (블롭: 첨부 데이터, 다음 경우에만 포함됨includeContentis).

    설명

    이 방법을 슬롯 게임하면 메타데이터(예: 로드된 모든 항목에 대한 시나리오 이름, 시나리오 소유자 등) 시나리오. 순서는 와 같습니다.data$get(기호이름)방법.

    입력 테이블의 드롭다운 메뉴

    입력 테이블은 셀이 다음과 같이 구성될 수 있습니다. 슬롯 게임자가 자유롭게 편집할 수 없으며 수정만 가능합니다. 드롭다운 메뉴를 통해 이는 다음을 크게 단순화할 수 있습니다. 입력 테이블의 유용성. 적절하게 슬롯 게임하면 또 다른 드롭다운 메뉴 제공의 장점은 예방입니다. 유효하지 않거나 일관성이 없는 슬롯 게임자 입력 데이터입니다.

    드롭다운 메뉴 구성이 완료되었습니다. 열별로. 다음 그림에서 '통조림' 열 식물'(슬롯 게임 기호테이블 d(i,j) '거리(천 마일)')은 드롭다운 메뉴를 슬롯 게임하도록 구성되었습니다.

    일반 셀 대신 드롭다운 메뉴

    드롭다운 메뉴의 선택은 사전 정의될 수 있습니다. (정적 선택) 또는 동적으로 채워집니다.

    • 정적 선택:
      정적 선택은 다음에 사전 정의되어 있습니다.<모델 이름>.json앱 개발자가 만든 파일입니다. 다음 슬롯 게임 위 그림의 드롭다운 메뉴가 나타납니다.
      "inputWidgets": 
          "d": 
            "widgetType": "테이블",
            "alias": "거리(천 마일)",
      	  "pivotCols": "j",
      	  "dropdownCols": 
              "나": 
                "static": ["시애틀", "샌디에고", "로스앤젤레스", "휴스턴", "필라델피아"],
      		  "colType": "드롭다운"

      슬롯 게임은 "inputWidgets" 섹션에서 완료됩니다. 각 입력 테이블에 대해(여기:d) 별도로. 에서 "dropdownCols"는 개별 테이블 열입니다. 지정(여기서는 "i" 열). 드롭다운 메뉴. "static" 키 다음에 배열은 정적 드롭다운 선택 항목을 정의합니다. 에 대한 "colType" 키는 "dropdown"과 "dropdown" 중에서 선택할 수 있습니다. "자동 완성"(기본값). "드롭다운"은 항상 모든 선택 항목을 한 번에 표시하고 "자동 완성"이 업데이트됩니다. 자동 완성에 따라 표시되는 선택 사항입니다.

      팁:

      구성 파일에 아직 아무것도 없는 경우 구성할 테이블의 항목을 다음과 같이 할 수 있습니다. 다음을 슬롯 게임하여 초기 구성을 생성하기만 하면 됩니다. 구성 모드. 원하는 기호를 선택하세요 "테이블" → "기호 테이블"에서 클릭하고 저장시. "기본값"이 선택되어 있는지 확인하십시오. 슬롯 게임할 테이블 유형입니다.

      테이블 슬롯 게임
    • 동적 선택:

      선택사항은 다음의 셀에 의해 동적으로 채워집니다. 다른 테이블의 열입니다. 다음 예에서는 슬롯 게임 기호테이블 d(i,j) '거리(천 단위) 마일'열이i("통조림 식물")은 다음을 선택할 수 있는 드롭다운 메뉴를 표시합니다. 동일한 열의 항목에서 가져옵니다. 기호 테이블의 이름A("용량").

      이것이 앱에서 일어나는 일입니다: 테이블에서 "용량"은 슬롯 게임자가 어떤 항목이라도 만들 수 있습니다. 만일 그녀가 "통조림 공장" 열을 편집하고 해당 항목을 편집합니다. 드롭다운 메뉴에 선택 항목으로 전달됩니다. "거리(천 마일)" 테이블:

      동적 드롭다운 선택

      이 테이블의 슬롯 게임은 다음과 같습니다:

      "inputWidgets": 
          "d": 
            "widgetType": "테이블",
            "alias": "거리(천 마일)",
      	  "pivotCols": "j",
      	  "dropdownCols": 
              "나": 
                "기호": "a",
                "열": "나",
      		  "colType": "드롭다운"

      "정적" 키 대신 이제 두 개의 키가 있습니다 "기호"와 "열". "기호" 키의 값 ("a" → "용량" 표) 기호를 정의합니다. "열"("i" → "canning plant")이 다음과 같은 테이블입니다. 드롭다운 메뉴를 채우는 데 슬롯 게임됩니다.

    "dropdownCols":
      "description": "특정 값만 선택할 수 있는 열(기본 테이블에만 지원됨)",
      "유형":"객체",
       "추가속성":
          "유형":"객체",
          "속성":
            "colType":
              "description": "열 유형(기본값은 'autocomplete')",
              "유형":"문자열",
              "enum":["autocomplete", "dropdown"]
            ,
            "정적":
              "description": "이 열에 허용되는 정적 선택 배열",
              "유형":["배열", "문자열"],
              "최소 길이":1,
              "항목":
                "유형":"문자열",
                "최소 길이":1
    
            ,
            "기호":
              "description": "선택 항목을 가져오는 기호",
              "유형":"문자열",
              "최소 길이":1
            ,
            "열":
              "description": "선택 항목을 가져올 (기호의) 열",
              "유형":"문자열",
              "최소 길이":1
    참고:
    • 드롭다운 메뉴 기능은 다음에서만 지원됩니다. 빅데이터용이 아닌 기본 입력 테이블 유형 테이블 또는 피벗 테이블.
    • 슬롯 게임자 데이터는 수동 편집 중에만 검증됩니다. 즉, 슬롯 게임자가 직접 값을 편집하는 경우 개별 세포. 데이터를 다음에서 가져올 때 외부 파일이나 데이터베이스에는 없습니다. 데이터와 드롭다운 메뉴 간의 유효성 검사 선택.
    • 다음의 테이블 슬롯 게임을 편집한 경우 에서 수동으로 기호<모델 이름>.json파일에 대해 구성 모드를 슬롯 게임해서는 안 됩니다. 이 기호는 더 이상 없습니다. 덮어쓸 수 있습니다. 수동 편집!

    입력 테이블의 열 유효성 검사

    슬롯 게임하는 것 외에도드롭다운 메뉴, 입력 테이블의 숫자 열을 다음과 같이 구성할 수 있습니다. 사전 정의된 내용에 대해 슬롯 게임자가 직접 편집한 내용을 검증합니다. 기준. 드롭다운 메뉴 열과 마찬가지로 구성은 열별로 수행됩니다. 다음 기준을 슬롯 게임할 수 있습니다:

    • min: 허용할 최소값
    • max: 허용할 최대값
    • choices: 허용되는 숫자 선택의 벡터입니다. 그것 지정된 경우 최소 및 최대 후에 평가됩니다.
    • 제외: 허용되지 않는 숫자 값의 벡터
    • allowInvalid: 데이터가 유효하지 않은지 여부를 지정하는 논리적 받아들여질 것입니다. 그러면 유효하지 않은 데이터 셀이 빨간색으로 표시됩니다.

    슬롯 게임은 섹션에서 완료됩니다.입력위젯각각 테이블을 별도로 입력하세요. 에서validateCols개별 테이블 열이 지정됩니다. 검증되었습니다. 다음 예에서는 기호d슬롯 게임됩니다. 칼럼 'new-york'은 값만 구성되었습니다. 9를 제외하고 1~10 사이는 유효한 것으로 간주됩니다. 슬롯 게임자가 유효하지 않은 값을 입력하면 MIRO가 이를 수락하지만 해당 셀을 빨간색으로 강조 표시합니다. 칼럼에서 'topeka' 값 11, 12, 14만 허용됩니다.

    "inputWidgets": 
        "d": 
          "widgetType": "테이블",
          "테이블 유형": "기본값",
          "읽기 전용": 거짓,
          "hideIndexCol": 거짓,
          "히트맵": 거짓,
          "validateCols": 
            "뉴욕": 
              "최소": 1,
              "최대": 10,
              "제외": 9,
              "allowInvalid": 참
            ,
            "토피카": 
              "선택": [11, 12, 14],
              "allowInvalid": 거짓
    팁:

    구성 파일에 아직 아무것도 없는 경우 구성할 테이블의 항목을 다음과 같이 할 수 있습니다. 다음을 슬롯 게임하여 초기 구성을 생성하기만 하면 됩니다. 구성 모드. 아래에서 원하는 기호를 선택하세요. "테이블" → "기호 테이블"을 클릭하고 저장을 클릭하세요. 테이블 유형으로 "기본값"이 선택되어 있는지 확인하십시오. 슬롯 게임할 수 있습니다.

    테이블 슬롯 게임
    "validateCols":
      "description": "슬롯 게임자 정의 슬롯 게임자 기준에 따라 열 값의 유효성이 검사됩니다(기본 테이블에만 지원됨)",
      "유형":"객체",
       "추가속성":
          "유형":"객체",
          "속성":
            "최소":
              "description": "이 열에 허용되는 최소값",
              "유형":["번호"]
            ,
            "최대":
              "description": "이 열에 허용되는 최대값",
              "유형":["번호"]
            ,
            "선택":
              "description": "이 열에 허용되는 숫자 값의 배열",
              "유형":["배열", "번호"],
              "최소 길이":1,
              "항목":
                "유형":"번호",
                "최소 길이":1
    
            ,
            "제외":
              "description": "이 열에 허용되지 않는 숫자 값의 배열",
              "유형":["배열", "번호"],
              "최소 길이":1,
              "항목":
                "유형":"번호",
                "최소 길이":1
    
            ,
            "허용되지 않음":
             "description": "잘못된 데이터가 허용되는지 여부를 지정하는 부울입니다. 잘못된 데이터 셀은 빨간색으로 표시됩니다.",
             "유형":"부울"
    참고:
    • 열 유효성 검사 기능은 다음에 대해서만 지원됩니다. 빅데이터용이 아닌 기본 입력 테이블 유형 테이블 또는 피벗 테이블.
    • 슬롯 게임자 데이터는 수동 편집 중에만 검증됩니다. 즉, 슬롯 게임자가 직접 값을 편집하는 경우 개별 세포. 외부 파일에서 가져온 데이터 또는 데이터베이스가 검증되지 않았습니다.
    • 다음의 테이블 슬롯 게임을 편집한 경우 에서 수동으로 기호<모델명>.json파일에 대해 구성 모드를 슬롯 게임해서는 안 됩니다. 이 기호는 더 이상 없습니다. 덮어쓸 수 있습니다. 수동 편집!

    입력 테이블의 열 너비

    와 함께colWidths옵션 조정이 가능합니다 개별 테이블의 열 너비(픽셀 단위)입니다. 는 슬롯 게임 모드는 다음 중 하나의 사양을 지원합니다. 테이블의 모든 열에 대한 열 너비입니다. 지정하려면 각 열의 너비는 개별적으로<모델명>.json파일을 수동으로 수정해야 합니다. 다음을 슬롯 게임하여 개별 열 너비는와 호환되지 않습니다.pivotCols옵션.

    예:

    "inputWidgets": 
        "d": 
          "widgetType": "테이블",
          "테이블 유형": "기본값",
          "읽기 전용": 거짓,
          "hideIndexCol": 거짓,
          "히트맵": 거짓,
          "colWidths": [165, 200, 50]

    피벗 비교 모드의 기본 보기

    당신이 슬롯 게임할 수 있는 것과 마찬가지로외부 기본 보기a가 포함된 입력/출력 기호의 경우MIRO 피벗 렌더러, 동일한 기호에 대한 기본 보기를 선택할 수도 있습니다. 에서피벗 비교 모드. 외부 뷰는 로컬 뷰일 수 있습니다. (시나리오별) 또는 전역(앱 전체)보기.

    기호 이름 앞에는 다음이 붙어야 합니다._pivotcomp_피벗임을 나타냅니다. 비교 모드 보기 슬롯 게임. 또한 기호에는 특별한 이름을 가진 추가 차원이 있습니다._scenName, 여기에 대한 정보는 시나리오 이름이 저장됩니다.

    아래는 출력 기호에 대한 슬롯 게임 예입니다일정운송예:

    "_pivotcomp_schedule": 
        "테스트" 
          "행": ["i", "j"],
          "열": 
            "_scenName": null
          ,
          "필터": 
            "Hdr": "수량"
          ,
          "pivotRenderer": "바"
    이 보기를 기본 보기로 만들려면 보기 슬롯 게임을 저장하세요 시나리오별로로컬보기 또는 다음으로글로벌에서 보기conf_transport/views.json파일. 그런 다음 간단히 추가하십시오. 다음 슬롯 게임을 귀하의conf_transport/transport.json슬롯 게임 파일:
    "pivotCompSettings": 
        "symbolConfig": 
          "일정": 
            "externalDefaultView": "테스트"

    하이퍼큐브 모듈: 위젯 그룹

    위젯 레이아웃을 더 세밀하게 제어하고 싶다면 에서하이퍼큐브 모듈, 할 수 있어요 구성 옵션을 슬롯 게임하세요"hcubeWidgetGroups". 이 옵션은 객체 배열을 허용합니다. 객체에는 다음이 포함되어야 합니다."이름"(문자열)의 그룹뿐만 아니라"회원"(배열 문자열). 멤버는 다음을 수행하는 기호의 이름이어야 합니다. 스칼라 입력 위젯을 정의했습니다.Hypercube 모듈에서 지원.

    아래에 대한 샘플 슬롯 게임이 있습니다.운송예:

    "활성화모듈": 
        "hcube": 사실
      ,
      "inputWidgets": 
        "f": 
          "widgetType": "슬라이더",
          "label": "1,000마일당 케이스당 운임(달러)",
          "최소": 1,
          "최대": 500,
          "기본값": 100,
          "단계": 1
        ,
        "분": 
          "widgetType": "슬라이더",
          "label": "최소 배송량(MIP 및 MINLP만 해당)",
          "최소": 0,
          "최대": 500,
          "기본값": 100,
          "단계": 1,
          "최소 단계": 0
        ,
        "베타": 
          "widgetType": "슬라이더",
          "label": "베타(MINLP 전용)",
          "최소": 0,
          "최대": 1,
          "기본값": 0.95,
          "단계": 0.01
        ,
        "유형": 
          "widgetType": "드롭다운",
          "label": "모델 유형을 선택하세요",
          "선택됨": "lp",
          "선택": [
            "LP",
            "밉",
            "민LP"
          ]
    
      ,
      "hcubeWidgetGroups": [
    
          "name": "일반",
          "회원": [
            "에프",
            "분"
          ]
        ,
    
          "name": "고급",
          "회원": [
            "유형",
            "베타"
          ]
    
      ]

    이 슬롯 게임은 다음 하이퍼큐브로 이어집니다. 제출 대화 상자:

    하이퍼큐브 위젯 그룹 예