Keyboard shortcuts

Press ← or → to navigate between chapters

Press ? to show this help

Press Esc to hide this help

Slate Visualization 위젯

Visualization에는 Graph, Image Gallery, Map, Table, Toast와 Tree가 있습니다. 아래에서 선택과 hover 등 상호작용값을 따로 표시하며 나머지는 편집 설정입니다.

Graph

Graph는 nodes와 edges로 관계를 표시합니다.

속성자료형필수역할
defaultEdgeIcon / defaultNodeIconString아니요기본 이미지 URL 또는 Blueprint 아이콘입니다.
directedEdgesEnabledBoolean아니요간선 끝에 대상 노드를 가리키는 화살표를 표시합니다.
edgeArrowSizeNumber아니요화살표의 픽셀 크기입니다.
edgeIconOffset / edgeLabelOffsetNumber아니요간선 중앙에서 아이콘/레이블을 옮깁니다. 방향은 레이블 수평 여부에 따라 달라집니다.
edgeIconSizeNumber아니요간선 아이콘의 픽셀 너비와 높이입니다.
edgeLabelHorizontalBoolean아니요레이블을 간선과 나란히 놓는 대신 수평으로 유지합니다.
edgeLengthNumber아니요Flow와 Force Directed 배치에 사용하는 간선 길이입니다.
edgesIEdges아니요간선 데이터입니다.
hideLabelsScaleNumber아니요읽기 어려운 작은 레이블을 숨길 확대 수준입니다.
nodeColorScaleRangeString[]아니요노드 값의 색상 그라디언트입니다.
nodeLabelPosition / nodeLabelOffsetString / Number아니요노드에 대한 레이블 위치와 중심으로부터의 간격입니다.
layout레이아웃 구성아니요Force Directed, Flow Up/Down/Left/Right 또는 Manual을 선택합니다.
nodeDiameter / nodeIconSizeNumber아니요노드 원의 지름과 아이콘의 너비/높이입니다.
nodeMarginNumber아니요Flow와 Force Directed에서 노드 사이의 최소 간격입니다.
nodesINodes예노드 데이터입니다.
nodeSelectorDiameterNumber아니요선택을 표시하는 원의 지름입니다.
selectedNodeIdsString[]아니요현재 선택한 고유 노드 ID입니다. 상호작용값입니다.
zoomScaleRangeNumber아니요그래프에서 허용하는 확대 범위 설정입니다.

Force Directed는 노드를 펼쳐 배치하고 Flow는 간선이 지정 방향으로 향하도록 배치합니다. Manual에서는 끌어서 바꾼 위치를 저장할 수 있지만 다른 배치에서 끌어 바꾼 위치는 저장하지 않습니다.

nodeColorScaleRange는 색 두 개 이상을 사용합니다. 값 [0,5,10]과 색 ["red","blue"]는 빨강, 보라, 파랑입니다. 생략하거나 두 색 미만이면 Blueprint @green4, @gold4와 @red4에 해당하는 #15B371, #F2B824, #F55656을 사용합니다.

IEdges와 INodes

모델과 속성자료형필수역할
IEdges.cssClasses / icons / labelsString[]아니요간선의 class, 이미지 URL 또는 Blueprint 아이콘, 레이블입니다.
IEdges.sourceNodeIds / targetNodeIdsString[]예nodes.ids와 대응하는 출발/대상 노드 ID입니다.
INodes.colorScaleValuesNumber[]아니요색상 그라디언트에 사용할 값입니다.
INodes.cssClasses / icons / labelsString[]아니요노드의 class, 아이콘과 레이블입니다.
INodes.idsString[]예고유 노드 ID입니다.
INodes.xPositions / yPositionsNumber[]예Manual 배치의 좌표입니다. 값이 빠진 노드는 격자로 배치하며 끌기 상호작용으로 바뀝니다.

구성 예

graph가 노드와 간선 배열 및 이미지 URL들을 반환하는 동적 예입니다.

{
  "camera": {
    "ratio": null,
    "x": null,
    "y": null
  },
  "edges": {
    "sourceNodeIds": "{{graph.sourceNodeIds}}",
    "targetNodeIds": "{{graph.targetNodeIds}}"
  },
  "nodes": {
    "icons": "{{graph.iconUrls}}",
    "ids": "{{graph.ids}}",
    "labels": "{{graph.ids}}",
    "xPositions": "{{graph.xPositions}}",
    "yPositions": "{{graph.yPositions}}"
  },
  "selectedNodeIds": [
    "n18"
  ]
}

정적 다섯 노드 예입니다. defaultNodeIcon의 이미지 경로는 해당 Slate 환경에서 접근 가능한 리소스로 준비합니다.

{
  "camera": {
    "ratio": null,
    "x": null,
    "y": null
  },
  "defaultNodeIcon": "resources/map-people.svg",
  "edges": {
    "ids": [
      "e1",
      "e2",
      "e3",
      "e4",
      "e5"
    ],
    "labels": [
      "e1",
      "e2",
      "e3",
      "e4",
      "e5"
    ],
    "sourceNodeIds": [
      "n1",
      "n2",
      "n3",
      "n4",
      "n5"
    ],
    "targetNodeIds": [
      "n2",
      "n3",
      "n4",
      "n5",
      "n1"
    ]
  },
  "layout": {
    "type": "layered"
  },
  "nodes": {
    "ids": [
      "n1",
      "n2",
      "n3",
      "n4",
      "n5"
    ],
    "labels": [
      "n1",
      "n2",
      "n3",
      "n4",
      "n5"
    ],
    "xPositions": [
      100,
      30.9,
      -80.9,
      -80.9,
      30.9
    ],
    "yPositions": [
      0,
      95.1,
      58.78,
      -58.78,
      -95.1
    ]
  },
  "selectedNodeIds": [
    "n1"
  ]
}

기본 구성은 다음과 같습니다.

{
  "camera": {
    "ratio": null,
    "x": null,
    "y": null
  },
  "edges": {
    "sourceNodeIds": [],
    "targetNodeIds": []
  },
  "nodes": {
    "ids": [],
    "xPositions": [],
    "yPositions": []
  },
  "selectedNodeIds": []
}

필수 imageUrls는 이미지 URL의 String 배열입니다. 선택적인 captions는 각 이미지의 설명 String 배열입니다.

Map

Slate Map은 Leaflet 기반이며 Mapbox 배경 지도를 사용합니다. 배경인 base/tile layer와 업무 데이터를 표현하는 overlay/feature layer를 나누며 feature layer에는 raster와 vector 타일을 사용할 수 있습니다.

지도 용어

용어의미
Map tile배경 영상입니다. 업무 객체의 속성이나 선택 데이터와 구분합니다. Misc에서 지도 전체에 구성하며 한 번에 배경 종류 하나를 표시합니다.
Feature데이터에 연결된 점이나 도형입니다.
Raster픽셀 격자로 표현하는 영상입니다.
Vector점과 선으로 도형을 표현하므로 크기가 달라져도 형태를 유지합니다.
Vector tile벡터 도형 데이터를 담은 타일입니다.
Tile server필요한 타일을 동적으로 제공하는 서버입니다.
Map tile source배경 타일을 제공하는 소스이며 타일 서버의 한 종류입니다.

레이어

유형데이터와 동작
Location위도와 경도 쌍의 점을 원 또는 아이콘으로 표시합니다.
Heat map / Heat grid점의 분포를 계산합니다. Heat map은 밀도를 연속 색상으로, Heat grid는 버킷별 셀로 표시합니다.
ShapeGeoJSON 도형을 SVG로 표시하며 처음 로드할 때 도형을 한꺼번에 읽습니다. Slate 서버에서 GeoJSON을 제공할 수 있습니다.
Vector별도 타일 서버가 필요합니다. 보이는 영역의 타일을 동적으로 가져오고 canvas에 그리므로 Shape보다 많은 feature를 다룰 수 있습니다.
Choropleth다각형의 값에 색상 척도를 적용합니다. 주별 인구밀도나 우편번호별 사회 취약성 지수 같은 값입니다.
Raven해당 연동이 필요하면 Palantir 담당자와 구성합니다.

배경과 규모

Property의 Misc > Tile Layer에서 dark, light, satellite, street와 default 등의 배경을 고릅니다. All을 선택하면 지도 안의 Layer Selector에서 종류를 바꿀 수 있습니다.

Shape는 약 1,000 feature 부근에서, Location은 약 5,000~10,000점에서 성능 저하가 나타날 수 있습니다. 이는 고정된 최대 입력 수가 아니라 성능을 검토할 규모입니다. 큰 Shape는 geometry를 단순화하거나 Vector로 제공하는 방식을 고려합니다.

정적 지도에는 이동과 확대를 끌 수 있습니다. feature만 표시하려면 배경 레이어도 제거할 수 있습니다.

레이어 예와 스타일

개별 marker에 class를 부여하고 앱의 Less 스타일에서 색을 정할 수 있습니다.

.city { stroke: @cyan3; fill: @cyan5; }
.town { stroke: @pink3; fill: @pink5; }
.village { stroke: @lime3; fill: @lime5; }

레이어 이름 또는 .layer${layerIndex}로 그 레이어의 마커와 군집을 함께 꾸밀 수도 있습니다. 유효한 CSS class인 레이어 이름만 class로 추가됩니다.

.cities {
  background-color: @blue5;
  fill: @blue5;
  stroke: @blue2;
  border-color: @blue2;
}
.layer1 {
  background-color: @green5;
  fill: @green5;
  stroke: @green2;
  border-color: @green2;
}

지도 속성

속성자료형필수역할
autoZoomBoolean예지도 데이터에 맞춰 자동 확대합니다.
boundsIBounds예현재 보이는 경계입니다. 설정과 상호작용으로 바뀝니다.
crsString아니요EPSG3395(타원체 Mercator), EPSG3857(구면 Mercator), EPSG4326(위경도의 등간격 표현)입니다.
fixedBoundsEnabledBoolean아니요이동과 확대에 따른 경계 변경을 제어합니다.
zoomControlEnabledBoolean아니요왼쪽 위 확대 조작을 표시합니다.
layerSelectorEnabledBoolean아니요오른쪽 위 레이어 메뉴를 표시합니다.
layersILayerModel[]아니요레이어 목록입니다.
maxBoundsIBounds아니요사용자가 이동하고 확대할 수 있는 최대 경계입니다.
minMaxZoomLevelNumber아니요확대 범위를 설정합니다. 수준 0은 지구 전체, 18은 개별 주택 정도의 범위입니다.
zoomLevelNumber예현재 확대 수준입니다. 상호작용값입니다.
selectionIMapSelection예선택 도형과 ID입니다. 상호작용값입니다.
tileLayerEnabledBoolean예배경 타일 표시 여부입니다.
tileUrlsEnabledBoolean예사용자 타일 URL을 사용합니다. tileLayerEnabled도 켜져 있어야 하며 레이어 선택기를 켜면 사용자 URL도 선택지에 추가됩니다.
tileLayerString예배경 타일 종류입니다.
tileUrlLabelsString(JSON 배열)아니요사용자 타일 이름들입니다. 없으면 Custom, Custom (1) 등의 이름을 사용합니다.
tileUrlsString(JSON 배열)아니요사용자 타일 URL 목록입니다.
shapeSelectionEnabledBoolean예끌기 선택 도구를 사용합니다. Cmd/Ctrl을 누르면 선택을 추가할 수 있습니다.
selectionTypeString아니요Area는 selection.areas의 지속 도형을, Data는 Location marker의 직접 선택과 selection.ids 갱신을 사용합니다.

타일 URL의 형식 예는 https://{s}.example.com/blah/{z}/{x}/{y}.png입니다. 이는 실제 서비스 주소로 바꿔야 하며 s는 선택적인 하위 도메인, z는 확대 수준, x/y는 타일 좌표입니다.

공통 경계와 선택

모델필드와 계약
IBaseLayerOptions선택적인 name(String)은 레이어 선택기 이름입니다. Location/Shape는 없으면 CSS 선택기를 이름으로 사용합니다. Raven에 지정하면 Raven이 제공한 모든 레이어 이름을 덮어씁니다.
ILatLng필수 latitude/longitude(Number)입니다. 설정 또는 상호작용으로 바뀝니다.
IBounds필수 northEast와 southWest(ILatLng)입니다. 설정 또는 상호작용으로 바뀝니다.
IMapSelection선택적 areas는 사각형/원 도형 배열, 필수 ids는 선택한 Location marker의 String 배열입니다.
IRectangleShape필수 type은 rectangle이며 bounds는 IBounds입니다.
ICircleShape필수 type은 circle, center는 ILatLng, radius는 미터 단위 Number, bounds는 원 전체를 감싸는 가장 작은 사각형 경계입니다.

선택 도형의 필드는 사용자 상호작용으로 바뀝니다. ILayerModel은 필수 type과 해당 레이어에 맞는 options 객체를 갖습니다. 유형은 Choropleth, Location, Heat map/Heat grid, Shape, Vector 또는 Raven의 설정에 맞춥니다.

Location options

속성자료형필수역할
clusteringBoolean예점을 군집으로 표시합니다.
cssClassesString[]아니요마커별 CSS class입니다.
idsString[]예선택 때 selection.ids로 내보낼 ID입니다.
latitudes / longitudesNumber[]예점의 위도와 경도입니다.
weightsNumber[]아니요군집 레이블에 집계할 가중치이며 기본값은 1입니다.
markerTypeString아니요circle 또는 icon입니다.
markerRadiusNumber아니요원 마커 반지름입니다.

Shape options

속성자료형필수역할
cssClassesString[]아니요GeoJSON 도형과 마커의 class입니다.
idsString[]예GeoJSON ID와 대응하며 개별 feature에 class를 연결할 때 사용합니다.
markerType / markerRadiusString / Number아니요circle/icon 마커와 원 반지름입니다.
shapeSourceAny아니요Server Resource 또는 Raw를 선택합니다.
shapeGeoJsonAny아니요Raw일 때 사용하는 GeoJSON입니다. 함수나 질의 결과를 권장합니다.
shapeUrlString아니요Server Resource일 때 사용하는 파일 URL입니다. 예는 resources/map/us-states.geojson입니다.

큰 GeoJSON을 앱에 직접 저장하면 앱 크기 한도에 영향을 주므로 Server Resource나 질의를 사용합니다.

Choropleth options

속성자료형필수역할
colorScaleOptionsIColorScaleOptions아니요사용자 색상 척도입니다.
idsString[]예GeoJSON ID와 대응하며 선택 ID로도 반환합니다.
layerSourceString예GeoJSON 또는 Vector Tile 소스를 선택합니다.
shapeSource / shapeGeoJson / shapeUrlAny / Any / String아니요Shape와 같은 Raw/Server Resource 조건을 따릅니다.
valuesNumber[]예각 영역의 값입니다.
vectorTileOptionsIVectorTileOptionsVector Tile 사용 시벡터 타일 설정입니다.

IColorScaleOptions의 필수 필드는 다음과 같습니다.

필드자료형의미
colorScaleTypesString값에서 색으로 대응시키는 척도입니다.
colorsString(JSON 색상 배열)두 색 이상의 보간 범위입니다. hex 또는 CSS 색 이름을 사용합니다.
defaultColorString값이 null인 요소의 색입니다.
opacityString0은 투명, 1은 불투명인 척도 설정입니다.
linearityString1은 선형이며 작은 값은 낮은 값 구간의 색 차이를 늘립니다.

예를 들어 값 [0,25,100]과 색 ["red","yellow","green"]이면 빨강, 주황, 초록으로 나타냅니다.

Heat map options

필수 latitudes, longitudes와 values는 Number 배열입니다. 선택적 scaleRadiusEnabled의 기본값은 true입니다. 확대에 따라 radius를 조정하면 지도 척도의 값으로 사용하며 기본 radius는 2입니다. 조정하지 않으면 픽셀 단위이며 기본 radius는 20입니다.

Heat grid options

속성자료형필수역할
latitudes / longitudes / valuesNumber[]예점 좌표와 값입니다.
featureString아니요셀을 그리는 형태입니다.
colorScaleNumber아니요셀의 색상 척도 설정입니다.
granularityNumber아니요셀 크기입니다.
opacityRangeNumber[]아니요최소/최대 불투명도입니다.
colorScaleLinearity척도 계수아니요1.0은 선형, 0.5는 제곱근 척도입니다.
radiusScaleNumber[]아니요원 feature의 반지름 범위입니다. 최소와 최대가 같으면 모두 같은 크기입니다.

Vector options

IVectorTileLayerOptions의 baseStyle, clickStyle과 hoverStyle은 선택적인 IVectorTileStyleOptions입니다. vectorTileOptions는 필수입니다.

IVectorTileOptions 필드자료형필수역할
featureIdKeyString아니요고유 feature ID로 사용할 속성입니다. 기본값은 id입니다.
layerNameString예서버가 타일에 제공한 여러 레이어 중 표시할 레이어 이름입니다.
vectorTileUrlString예x, y, z 좌표 자리에 대응하는 {x}, {y}, {z}를 포함한 서버 URL입니다.
featureIdWhitelistString[]아니요문자열이나 정규식 목록입니다. 비어 있지 않으면 어느 항목과도 맞지 않는 featureIdKey를 숨깁니다.

IVectorTileStyleOptions의 모든 필드는 선택 사항입니다. color(String)는 모든 feature와 outline의 색, radius(Number)는 점의 반지름, size(Number)는 선과 outline의 두께입니다. outline은 다각형 경계의 color와 size를 담은 객체입니다.

Raven options

필수 serverUri는 Raven 서버 URI이며 slate.yml의 script와 image CSP에 해당 도메인을 명시적으로 허용해야 합니다. 선택적 filter는 필수 propertyName과 propertyValue String을 갖습니다. 예를 들어 City 속성의 Medford 값을 필터링할 수 있습니다.

Table

속성자료형필수역할
columnData열 이름별 Any[] 객체예표 데이터입니다. 질의 결과를 연결할 수 있습니다.
columnOptions열 이름별 IColumnOption 객체예열별 표시 설정입니다.
columnOrderString[]예표시할 열의 부분집합과 순서입니다. 빈 배열이면 순서가 비결정적일 수 있습니다. 끌기 재정렬을 켜면 상호작용으로 갱신됩니다.
gridOptionsIGridOptions예표 조작 설정입니다.
selectedRowKeysAny[]예사용자가 선택한 행의 키입니다.
selectionIdentityColumnIdString아니요행을 고유하게 식별하는 columnData의 열 ID입니다. 그 열의 값이 selectedRowKeys에 들어갑니다.
serverEnabledBoolean예기본 false는 로드한 데이터만 클라이언트에서 정렬/페이징합니다. true이면 질의가 페이지와 정렬 조건을 실제로 적용해야 합니다.
bodyTooltip / headerTooltipString아니요HTML을 지원하며 생략하거나 null이면 표시하지 않습니다.
tooltipPositionBlueprint.Position아니요tooltip 위치입니다.
tooltipsEnabledBoolean예tooltip 사용 여부입니다.
transposeBoolean아니요행과 열을 바꿔 표시합니다.
clickEventsString[]예표가 노출하는 클릭 이벤트 이름들입니다.

클라이언트 방식은 서버 호출이 적지만 데이터를 먼저 모두 읽어야 하므로 메모리를 더 사용합니다. 서버 방식에서 pageSize가 10이면 질의도 최대 10행만 반환해야 합니다.

열과 grid 옵션

모델필드와 조건
IColumnOption선택적 horizontalAlignment(String)는 left/center/right, name(String)은 표시 이름, width(Number)는 너비입니다.
IGridOptions선택적 enableSelection, enableSorting, enableColumnReordering(Boolean), pagingOptions, selectionOptions와 sortOptions입니다. 선택/정렬 옵션에는 해당 enable 설정도 켜야 합니다.
ISelectionOptions선택적 checkbox, multiSelect와 selectionRequired(Boolean)입니다. selectionRequired는 마지막 선택 해제를 막되 초기 미선택 상태에서는 첫 선택 이후부터 적용합니다.
ISortOptions필수 columnId(String)와 isAscending(Boolean)이며 사용자 정렬 상태입니다.

열 끌기 재정렬을 켜도 체크박스 열은 고정되며 이동할 수 없습니다.

hover와 페이징

ITableHover는 필수 columnIndex(Number, 0부터 시작), displayValue(String), isHeader(String)를 갖습니다. ITablePagingOptions는 필수 currentOffset(Number, 0부터 시작하는 현재 페이징 위치), pageSize(Number), 선택적 totalServerItems(Number)를 갖습니다. currentOffset은 상호작용값이고 다른 두 값은 편집 설정입니다.

동적 표

query1이 id, name, address, phone_number와 score 열을 반환하는 예입니다. 서버 페이지당 최대 10행을 가져오고 전체 결과 수는 100으로 구성한 예제입니다.

{
  "columnData": "{{query1}}",
  "columnOptions": {
    "id": {
      "name": "ID",
      "width": 50
    },
    "name": {
      "name": "Full Name"
    },
    "address": {
      "name": "Home Address"
    },
    "phone_number": {
      "name": "Phone Number"
    },
    "score": {
      "name": "Score",
      "horizontalAlignment": "right"
    }
  },
  "columnOrder": [
    "id",
    "name",
    "address",
    "phone_number",
    "score"
  ],
  "gridOptions": {
    "enableSelection": true,
    "enableSorting": true,
    "pagingOptions": {
      "currentOffset": 0,
      "pageSize": 10,
      "totalServerItems": 100
    },
    "selectionOptions": {
      "checkbox": false,
      "multiSelect": true
    },
    "sortOptions": {
      "columnId": "score",
      "isAscending": false
    }
  },
  "selectedRowKeys": [],
  "selectionIdentityColumnId": "id",
  "serverEnabled": true,
  "tooltipsEnabled": false
}

정적 표와 기본값

{
  "columnData": {
    "staticOptions": [
      "option1",
      "option2",
      "option3"
    ]
  },
  "columnOptions": {},
  "columnOrder": [],
  "gridOptions": {
    "enableSelection": true,
    "selectionOptions": {
      "checkbox": true,
      "multiSelect": false
    }
  },
  "selectedRowKeys": [],
  "selectionIdentityColumnId": "staticOptions",
  "serverEnabled": false,
  "tooltipsEnabled": false
}
{
  "columnOptions": {},
  "columnOrder": [],
  "gridOptions": {},
  "selectedRowKeys": [],
  "selectionIdentityColumnId": "Metric",
  "serverEnabled": false,
  "tooltipsEnabled": false
}

항공편 표 만들기

Visualization > Table을 추가하고 이름을 w_flightTable로 정합니다. Legacy Foundry 질의 q_allFlights의 열 데이터를 Data의 "{{q_allFlights}}"에 연결합니다. 이 값은 유효한 JSON 문자열 안에 Handlebars 참조를 둔 형식이며 Slate가 결과 객체로 해석합니다.

Add all columns로 열 표시 설정을 엽니다. flight_id는 숨기되 데이터에는 남겨 행 선택 키로 사용합니다. 다른 열에는 Title을 정하고 timestamp 열에 Moment 형식을 지정합니다.

Misc에서 Allow Selection과 Enable Sorting을 켜고 Key column ID를 flight_id로 지정합니다.

Server Paging/Sorting을 끄면 이미 로드한 행만 정렬하고 나눕니다. 처음 질의가 10행만 가져왔다면 그 10행만 대상입니다. 브라우저에서 다룰 수 있는 약 5,000~10,000행은 사용자의 탭 자원에 따라 달라집니다.

서버 페이징과 정렬

Enable Paging과 Server Paging/Sorting을 켜고 예를 들어 Page Size를 20으로 정합니다. q_allFlights의 LIMIT과 OFFSET에 표의 값을 연결합니다.

SELECT
    flight_id,
    carrier_code,
    tail_num,
    origin,
    dest,
    dep_ts_utc,
    arr_ts_utc,
    distance,
    actual_elapsed_time
FROM "foundry_sync"."{{v_flightTable}}"
LIMIT {{w_flightTable.gridOptions.pagingOptions.pageSize}}
OFFSET {{w_flightTable.gridOptions.pagingOptions.currentOffset}}

전체 결과 수는 q_flightCount 질의로 구합니다.

SELECT
    COUNT(flight_id) as num_flights
FROM "foundry_sync"."{{v_flightTable}}"

Server Total에는 다음을 연결합니다.

{{q_flightCount.num_flights.[0]}}

예제 데이터의 last-mile-flights는 73,946행으로 약 75,000행이며 flights는 약 420만 행입니다. 실제 앱에서는 count 질의가 반환한 값을 사용합니다.

정렬도 서버에 반영하도록 ORDER BY에 columnId와 isAscending을 연결합니다. 단순한 분기는 if 블록으로, 복잡한 로직은 Slate 함수로 처리합니다. 전체 질의는 다음과 같습니다.

SELECT
    flight_id,
    carrier_code,
    tail_num,
    origin,
    dest,
    dep_ts_utc,
    arr_ts_utc,
    distance,
    actual_elapsed_time
FROM "foundry_sync"."{{v_flightTable}}"
ORDER BY {{w_flightTable.gridOptions.sortOptions.columnId}}
    {{#if w_flightTable.gridOptions.sortOptions.isAscending}}
        ASC
    {{else}}
        DESC
    {{/if}}
LIMIT {{w_flightTable.gridOptions.pagingOptions.pageSize}}
OFFSET {{w_flightTable.gridOptions.pagingOptions.currentOffset}}

이 예제는 FOUNDRY 동기화 소스의 SQL입니다. 외부 SQL 소스에는 별도의 보안 helper 규칙을 적용합니다.

Text 위젯으로 All Flights 또는 Last Mile Flights 제목을 만들고 표 왼쪽 위에 배치합니다. Ctrl, macOS에서는 Cmd를 사용해 표와 제목을 함께 선택하거나 영역으로 선택하여 정렬할 수 있습니다.

Toast

속성자료형필수역할
actionTextString예동작 버튼의 문구입니다.
hasActionBoolean예동작 버튼을 표시합니다.
intent강조 설정예시각적 강조 색상입니다. 기본 JSON은 -1을 사용합니다.
messageString예알림 문구입니다.
timeoutNumber예자동 닫힘까지의 밀리초입니다. 0 이하이면 자동으로 닫지 않습니다.

open과 close 액션으로 열고 닫습니다. 완전히 열리면 didOpen, 완전히 닫히면 didClose가 발생합니다. click은 Toast의 동작 버튼을 눌렀을 때의 이벤트입니다.

{
  "actionText": "Toast Example",
  "hasAction": false,
  "intent": -1,
  "message": "Toast Message",
  "timeout": 600
}
{
  "actionText": "Action!",
  "hasAction": false,
  "intent": -1,
  "message": "Message",
  "timeout": 3000
}

Tree

필수 contents는 Blueprint ITreeNode 구조를 사용하는 계층 JSON, selected는 선택한 노드 ID의 JSON 값입니다. 필수 selectionType은 none, single 또는 multiple입니다.

기본 구성은 다음처럼 자식 노드와 초기 선택 상태를 포함합니다.

{
  "contents": [
    {
      "childNodes": [
        {
          "id": 3,
          "label": "bar 1"
        },
        {
          "id": 4,
          "label": "bar 2"
        }
      ],
      "iconName": "folder-close",
      "id": 1,
      "label": "bars"
    },
    {
      "id": 2,
      "label": "foo"
    }
  ],
  "searchText": "",
  "selectedNodes": [],
  "selectionType": "single"
}