Keyboard shortcuts

Press ← or → to navigate between chapters

Press ? to show this help

Press Esc to hide this help

Slate 이벤트와 액션 참조

Events 패널에서 발생할 이벤트와 실행할 액션을 선택하고, 필요한 경우 JavaScript 본문으로 액션 입력을 반환합니다. 연결 절차에서 slEventValue와 slDisableAction의 사용법을 설명합니다. 아래 코드의 return은 Events 패널의 Action 본문입니다.

앱 이벤트

이벤트발생 조건과 전달값
slate.ready페이지 프레임워크가 로드되고 질의가 실행되기 시작했을 때 발생합니다. 모든 질의의 완료를 뜻하지 않습니다. 초기 수동 질의 등을 연결할 수 있습니다.
slate.resize브라우저 창 크기가 바뀔 때 발생합니다. 창 크기를 기준으로 한 위젯도 크기가 바뀌며 Chart 등의 redraw 액션을 연결할 수 있습니다.
slate.onNavigate[page_name]해당 페이지로 이동할 때 발생합니다.
slate.onPrintslate.print로 열었던 인쇄 대화상자를 닫을 때 발생합니다.
slate.userStorageChangedUser storage가 갱신될 때 발생합니다. 다른 탭이나 창의 갱신도 포함하며 새 값은 {{slEventValue}}입니다.
slate.viewSavedActions 메뉴 또는 slate.saveView로 공유 뷰를 저장한 뒤 발생합니다. {{slEventValue}}는 새 뷰의 ID 문자열입니다.
slate.onExportWidget위젯 내보내기 뒤 발생하며 widgetId와 PNG 또는 PDF의 base64 문자열을 전달합니다.

User storage는 slate.ready 시점에 아직 로드되지 않을 수 있습니다. 저장값으로 변수를 초기화할 때에는 slate.userStorageChanged를 사용합니다.

slate.getMessage

삽입된 Slate 앱이 부모 프레임의 메시지를 받을 때 다음 형식을 사용합니다. 메시지 본문의 예는 숫자값을 담은 객체입니다.

{"target":"slate-parent-iframe-event","message":{"value":123}}

부모 또는 자식 창이 다음 target을 가진 객체를 보내는 방식도 지원합니다.

{"target":"SLATE_MESSAGING_SERVICE","value":123}

메시지 본문은 이벤트 코드의 {{slEventValue}}로 읽습니다. 메시지의 Slate 액션 옵션에는 다음 구성이 있습니다.

slateActionOption.typeslateActionOption.payload
SET_VARIABLES변수 이름을 키로 하고 설정할 값을 값으로 가진 객체입니다.
TRIGGER_ACTION실행 대상 Slate 액션의 요청 payload입니다. 대상 액션의 계약에 맞는 실제 payload를 공급해야 합니다.

변수 설정 옵션의 예는 다음과 같습니다.

{
  "slateActionOption": {
    "type": "SET_VARIABLES",
    "payload": {"v_variable": 123}
  }
}

외부 메시지를 특정 동작에 연결하는 경우 slate.getMessage 이벤트에서 받은 값을 확인하고 해당 액션을 Events 패널에 연결할 수도 있습니다. 메시지는 신뢰할 수 있는 앱과 창 사이에서만 전달하도록 구성합니다. Workshop과 Slate를 연결하는 전용 설정은 Iframe 위젯을 사용합니다.

slate.getBroadcast

열어 둔 BroadcastChannel에서 메시지를 받으면 발생합니다. 수신 전에 slate.createBroadcastChannel로 채널을 열어야 합니다. slEventValue의 필드는 다음과 같습니다.

필드값
channel메시지를 받은 채널 이름입니다.
data전송된 payload입니다.

브라우저 BroadcastChannel은 같은 출처(origin)와 저장소 파티션 안의 창, 탭, 프레임과 워커 사이에서 통신합니다. 채널 이름이 같다는 것만으로 다른 출처나 다른 브라우저에 메시지를 보내지는 않습니다.

slate.onCloseCheckpoint

사유 확인 창을 닫으면 다음 정보를 slEventValue로 제공합니다.

필드자료형과 조건
slateCheckpointIdshowCheckpoint 호출에서 정한 식별자 String입니다.
statuscancelled, no-checkpoint, success 중 하나입니다.
interactionRid성공한 사유 확인의 상호작용 RID이며 선택 필드입니다.

slate.onChildWindowClosed

slate.redirectToUrl로 연 자식 창이 닫힐 때 발생합니다. 창을 열 때 windowSharingOptions에 id를 부여한 경우에만 이 이벤트가 발생합니다. slEventValue.id는 닫힌 창의 ID이며 String 또는 Number입니다.

구성 요소 이벤트

각 질의, 함수와 변수 및 위젯은 자신의 이벤트를 가집니다. 이름 자리에 실제 구성 요소의 ID를 사용합니다.

이벤트발생 조건
QUERY_NAME.success질의가 성공적으로 완료됩니다.
QUERY_NAME.failure시간 초과, 잘못된 질의 형식이나 서버 문제 등으로 질의가 실패합니다.
FUNCTION_NAME.ran함수 실행이 끝납니다.
VARIABLE_NAME.changed변수값이 바뀝니다. 새 값은 slEventValue입니다.
WIDGET_ID.cssClassesUpdatedAdditional CSS Classes가 바뀝니다. DOM 갱신 후 화면을 그리기 전에 발생하므로 크기를 바꾼 위젯의 redraw에 연결할 수 있습니다.
WIDGET_ID.INTERACTION_PROPERTY.changedselectedValue처럼 사용자가 바꿀 수 있는 상호작용 속성이 바뀝니다. 새 값은 slEventValue이며 모든 속성에 제공되는 이벤트는 아닙니다.

WIDGET_ID.transitionend

해당 위젯에서 직접 CSS 전이가 완료될 때 발생합니다. 자식 위젯에서 발생한 전이는 여기에 포함하지 않으며 각 전이 완료 이벤트를 한 번 전달합니다.

slEventValue 속성내용
elapsedTime전이에 걸린 시간입니다.
propertyName애니메이션한 속성 이름입니다.
targetId전이 대상 DOM 요소에 ID가 있다면 그 ID입니다.

여러 전이를 사용하는 화면은 propertyName과 targetId로 대상 전이를 구분할 수 있습니다. 전이가 끝난 뒤 크기가 달라진 위젯의 resize 같은 동작을 연결합니다.

페이지와 창 액션

slate.navigateTo[page_name]

대상 페이지로 이동하고 URL 경로를 갱신합니다. Shared 변수는 페이지가 바뀌어도 값을 유지합니다.

slate.scrollToId

Action 코드가 반환한 DOM 요소 ID로 페이지와 내부의 스크롤 가능한 컨테이너를 이동합니다. 특정 요소나 표 및 목록의 기억한 위치로 돌아갈 때 사용할 수 있습니다.

slate.setWindowTitle

반환한 문자열로 현재 브라우저 창과 탭 제목을 바꿉니다. 로드 때 이 액션을 호출하지 않으면 문서 이름을 기본 제목으로 사용합니다.

slate.print

브라우저의 인쇄 대화상자를 엽니다. 사용자가 인쇄 옵션을 고르고 닫으면 slate.onPrint가 발생합니다.

slate.redirectToUrl

URL을 열 설정 객체를 반환합니다.

필드자료형과 동작
url대상 URL인 String입니다.
target선택적인 탐색 문맥 이름이며 window.open의 target에 대응합니다.
popup선택적인 Boolean이며 팝업 창으로 열지 정합니다.
windowSharingOptions선택적인 {id: String}입니다. 자식 창의 고유 ID로 메시지 송수신과 종료 이벤트를 연결합니다.

새 탭으로 여는 예입니다.

return { url: "https://www.palantir.com/", target: "_blank" };

여러 URL에는 설정 객체 배열을 반환합니다. 새 창과 탭 표시는 브라우저의 팝업 정책도 따릅니다.

return [
  { url: "https://www.palantir.com/", target: "_blank" },
  { url: "https://www.palantir.com/uk", target: "_blank" }
];

slate.ready에 즉시 이동을 연결하면 편집 화면도 로드 직후 떠나므로 권장하지 않습니다. 필요한 경우에는 이동을 끄는 URL 매개변수를 둡니다. 예를 들어 기본값이 빈 문자열인 disableRedirect 변수를 만들고 다음처럼 구성하면 ?disableRedirect=true로 자동 이동을 막을 수 있습니다.

if ({{disableRedirect}} === "true") {
  return {{slDisableAction}};
}
return { url: "https://www.palantir.com/", target: "_blank" };

파일과 위젯 내보내기

slate.downloadBlob

Slate의 내보내기 제한을 적용하면서 Blob 데이터를 다운로드합니다. 다음은 텍스트 파일을 만드는 Action 본문입니다.

return {
  fileName: "my_file.txt",
  blob: new Blob(["Hello, world!"], { type: "text/plain;charset=utf-8" })
};

Functions에서 ExcelJS 같은 라이브러리로 조건부 서식이 있는 Excel 데이터를 만들고 이 액션에 전달하는 구성도 가능합니다.

slate.exportWidget

위젯을 PNG 또는 PDF로 내보냅니다.

return {
  widgetId: "my_chart",
  exportType: "download",
  outputType: "png",
  fileName: "exported_chart"
};

이 예에서는 실제 앱에 my_chart라는 위젯이 있어야 합니다.

필드계약
widgetId위젯 목록에 표시된 내보낼 위젯 ID입니다.
exportTypecopy는 클립보드, download는 파일 다운로드, eventOnly는 파일을 복사하거나 다운로드하지 않고 이벤트만 발생시킵니다.
outputTypepng 또는 pdf입니다.
fileNamedownload일 때 사용할 선택적인 파일 이름입니다.

내보내면 slate.onExportWidget이 widgetId와 base64 문자열을 제공합니다. eventOnly도 같은 이벤트를 사용할 수 있습니다.

iframe, code sandbox, multiselect box 위젯과 이 위젯들을 포함하는 container는 내보낼 수 없습니다.

창 사이 메시지

slate.sendMessage

다른 앱의 iframe 안에 있는 Slate에서 Action 본문이 반환한 payload를 부모 프레임에 보냅니다. 전송 형식은 source가 slate-parent-iframe-action이고 message가 해당 payload인 객체입니다.

{"source":"slate-parent-iframe-action","message":{"value":123}}

iframe 밖에서도 창 대상을 지정할 수 있습니다. 예를 들어 redirectToUrl의 windowSharingOptions로 등록한 자식 ID가 child-id1, child-id2라면 다음처럼 전달합니다. selectedId는 메시지 내용의 예제 필드입니다.

return {
  targetOptions: {
    targetWindow: "child",
    children: ["child-id1", "child-id2"]
  },
  message: { selectedId: "sample-1" }
};
targetWindow대상
child등록된 자식 창입니다. children 배열을 생략하면 모든 자식 창에 전달합니다.
openerwindow.opener에 해당하는 창입니다.
parentwindow.parent에 해당하는 창입니다.

필요한 창만 지정하여 메시지의 전달 범위를 정합니다.

slate.createBroadcastChannel

채널을 만들거나 같은 이름의 채널에 참여합니다. 다음 예제에서 사용하는 채널 이름은 my_channel입니다.

return { channel: "my_channel" };

slate.broadcastMessage

먼저 연 채널에 메시지를 보냅니다.

return {
  channel: "my_channel",
  message: { selectedId: "sample-1" }
};

다른 수신 문맥은 slate.getBroadcast의 slEventValue.channel과 slEventValue.data로 읽습니다.

slate.closeBroadcastChannel

지정한 채널을 닫고 삭제합니다. 닫은 채널에서는 메시지를 보내거나 받지 않습니다.

return { channel: "my_channel" };

Checkpoint 열기

slate.showCheckpoint

구성된 사유 확인 단계를 엽니다. 호출에는 해당 플랫폼 인스턴스의 Checkpoints 연동 계약에 맞는 유형값과 대상 식별자를 준비해야 합니다.

필드필수 여부와 계약
slateCheckpointId필수 String입니다. 앱에서 정하는 호출 식별자이며 닫힘 이벤트에 그대로 전달됩니다.
checkpointType필수 CheckpointTypeV1 값입니다. 적용할 Checkpoint 구성의 유형과 맞아야 합니다.
primaryCheckpointedItemId선택적인 기본 대상입니다. String id와 CheckpointedItemIdType인 type을 가집니다.
additionalCheckpointedItemIds선택적인 추가 대상 배열입니다. 각 항목은 같은 id와 type 구조입니다.

유형별 적용 동작에서 업무에 해당하는 상호작용을 고릅니다. 코드에 넣을 유형값은 배포된 V1 연동 타입에 맞는 값이어야 하므로 UI 표시 이름을 임의의 API 값으로 바꾸지 않습니다. 해당 값과 대상 ID 유형은 연동 담당자에게 확인하여 공급합니다.

필수 필드와 필요한 선택 필드를 포함한 실제 요청 객체를 Object 변수 checkpointRequest에 준비했다면 Action 본문은 다음처럼 전달합니다.

return {{checkpointRequest}};

닫힘 결과는 slate.onCloseCheckpoint의 status와 선택적인 interactionRid로 처리합니다.

플랫폼 도구 액션

slate.openAppsPortal

Applications Portal을 엽니다. 아무 값도 전달하지 않거나 아래 설정 객체를 반환하여 시작 위치를 고를 수 있습니다.

위치반환 객체의 필드
기본 위치인자 없음
All applicationstype: allResultsNavItem
Platform applicationstype: platformAppsNavItem
Promoted appstype: promotedAppsNavItem
특정 플랫폼 앱 범주type: platformAppsCategoryNavItem, title: String
특정 승격 컬렉션type: promotedAppsCollectionNavItem, title: String, rid: String

예를 들어 전체 앱을 열 때에는 다음을 반환합니다.

return { type: "allResultsNavItem" };

slate.askAIPAssist

AIP Assist를 엽니다. 선택적인 prompt 문자열을 전달하면 사용자의 채팅 메시지로 보냅니다. 앱의 현재 상태를 바탕으로 질문을 만들 수도 있습니다.

return { prompt: "How do I interact with widgets in Slate?" };

slate.logout

로그아웃할지 브라우저 대화상자로 확인하고 사용자가 승인하면 Foundry에서 로그아웃합니다.

slate.copyToClipboard

Action 코드가 반환한 값을 사용자의 클립보드에 복사합니다.

slate.setUserStorage / slate.refreshUserStorage

사용자별 저장값을 설정하거나 다른 탭과 창에서 변경한 값을 다시 읽습니다. User storage의 10 kB 한도와 로딩 이벤트를 따릅니다.

공유 뷰 저장과 복원

slate.saveView

홈 페이지의 위젯 상호작용 속성과 Local 변수값을 새 공유 뷰로 저장합니다. Shared 변수는 저장하지 않습니다. 인자는 필요하지 않으며 완료 후 slate.viewSaved가 실제 뷰 ID를 제공합니다.

slate.loadView

Action 본문이 반환한 뷰 ID 문자열로 저장된 뷰를 열고 홈 페이지의 위젯 상호작용 속성과 Local 변수값을 복원합니다. 이름과 위젯 유형 변경 및 앱 버전 간 복원 조건은 공유 뷰를 따릅니다.

뷰 ID를 보관하는 String 변수 savedViewId를 만들고 slate.viewSaved 이벤트를 savedViewId.set에 연결할 때 다음을 반환합니다.

return {{slEventValue}};

이후 로드 버튼의 이벤트를 slate.loadView에 연결하고 다음을 사용합니다. savedViewId의 기본값은 빈 문자열로 둡니다.

var viewId = {{savedViewId}};
if (viewId === "") return {{slDisableAction}};
return viewId;

질의 액션

QUERY_NAME.run

수동 또는 자동 질의에 관계없이 지정한 질의를 즉시 실행합니다.

QUERY_NAME.export / exportXlsx / exportCsv

.export는 질의를 서버에서 실행하고 결과로 XLSX 파일을 만들어 다운로드합니다. Queries 탭의 Export on에서 이벤트를 연결할 수 있습니다.

기본 이름은 QUERY_NAME.xlsx입니다. Events에서 해당 내보내기 액션에 return "january_data"; 또는 다음 객체를 반환하면 january_data.xlsx로 저장합니다.

return { fileName: "january_data" };

Events의 Actions 드롭다운에서 exportXlsx 또는 exportCsv를 선택하면 Excel 또는 CSV를 다운로드할 수 있으며 fileName으로 이름을 정할 수 있습니다.

이름은 비어 있지 않아야 하고 문자, 숫자, 밑줄 또는 공백으로만 구성합니다. 유효하지 않은 이름을 반환하면 질의 이름을 사용합니다.

함수 액션

FUNCTION_NAME.run

지정한 Slate 함수를 즉시 실행합니다.

FUNCTION_NAME.export / exportXlsx / exportCsv

.export는 함수를 실행하고 결과를 서버로 보내 XLSX 파일을 생성하여 다운로드합니다. Functions 탭의 Export on에서 이벤트를 연결합니다.

기본 이름은 FUNCTION_NAME.xlsx입니다. 문자열 "january_data" 또는 {fileName: "january_data"}를 반환하여 이름을 바꿀 수 있습니다. 파일 이름의 허용 문자와 잘못된 이름의 기본값 처리 규칙은 질의 내보내기와 같으며, 여기서는 함수 이름을 기본값으로 사용합니다. exportXlsx와 exportCsv도 Events의 Actions 드롭다운에서 선택합니다.

함수 결과는 모든 속성의 이름이 열 이름이고 모든 값이 같은 길이의 배열인 객체여야 합니다. 질의의 실행 메타데이터는 제외하고 내보낼 데이터 열만 반환합니다. 함수 장의 소행성 입력처럼 id, name, diameter가 같은 길이의 배열인 경우 다음과 같이 명시합니다.

var data = {{asteroids}};
return {
  id: data.id,
  name: data.name,
  diameter: data.diameter
};

이 방식은 _response 같은 실행 정보가 내보낼 열에 섞이지 않게 합니다. 행 배열을 다루는 경우에는 행과 열 스키마 변환으로 입력 계약을 맞춥니다.

변수 액션

VARIABLE_NAME.set

Action 본문이 반환한 값으로 변수를 바꿉니다. 이전값도 {{VARIABLE_NAME}}으로 읽을 수 있으므로 현재값에서 다음 값을 계산하여 반환할 수 있습니다.