# 선택기

> 포인트 하나에 등록한 선택지를 키나 목록으로 내놓고, 공장이 실제로 어느 쪽에 있는지 보여 줍니다.

**선택기**는 쓸 수 있는 포인트 하나 위에서 닫힌 선택지 묶음을 운전자에게 내놓습니다. 운전 모드, 레시피, 속도 단계입니다. 하나를 고르면 그 선택지의 값을 쓰고, 같은 포인트를 되읽은 값이 지금 유효한 선택지를 켭니다. 그 되읽기가 이 종류가 존재하는 이유의 전부입니다. 저마다 고정된 값을 쓰는 [버튼](component-button)을 늘어놓아도 쓰기는 똑같이 되지만 아무것도 보여 주지 못합니다. *조작* 구성 요소이며, 새로 만들면 5 × 1 칸을 차지합니다.

## 데이터 {#data}

| 항목 | 하는 일 | 값 | 기본값 |
|---|---|---|---|
| 주소 | 고른 값을 쓰고 되읽는 뿌리 있는 Logic 주소입니다. 내부 값 변수이거나 쓸 수 있는 태그입니다. 목록은 실제로 쓸 수 있는 포인트로 좁혀집니다. | 자유 입력, 쓸 수 있는 포인트 제안 | 비어 있음 |

## 선택지 {#options}

| 항목 | 하는 일 | 값 | 기본값 |
|---|---|---|---|
| 보여 주는 것 | 선택지를 어떻게 내놓는지입니다. 선택지마다 키 하나를 나란히 놓아 모든 선택지를 한꺼번에 읽게 하거나, 키를 늘어놓을 자리가 없는 칸을 위해 부를 때 펼쳐지는 목록을 놓습니다. | `선택지마다 키 하나` · `펼쳐지는 목록` | `선택지마다 키 하나` |

선택지 하나가 카드 하나이며, 선택지가 *무엇인지*를 이루는 두 가지를 담습니다.

| 항목 | 하는 일 | 값 | 기본값 |
|---|---|---|---|
| 문구 | 운전자가 키나 목록에서 읽는 말입니다. 비우면 값 자체로 물러납니다. 아무것도 적히지 않은 키는 아무 말도 하지 않기 때문입니다. | 자유 입력 | 비어 있음 |
| 값 | 이 선택지를 고를 때 쓰는 값이자, 이것이 유효함을 보여 주는 읽은 값입니다. 정확히 맞춰 보는 코드입니다. 두 코드 사이에 놓인 것은 선택이 아닙니다. | 아무 숫자 | 비어 있음(적기 전까지 아무것도 선언하지 않습니다) |

카드의 순서가 운전자의 손 아래 놓이는 키의 순서입니다. 위로 / 아래로 화살표로 순서를 바꾸며, 여기에서 스스로 정렬되는 것은 없습니다. 같은 값을 가리키는 두 선택지가 둘 다 키를 그릴 수는 없습니다(포인트는 둘 중 하나만 알릴 수 있고 조작 요소는 어느 쪽인지 말할 수 없습니다). 패널이 그렇게 말하고 겹치는 쪽은 아무것도 그리지 않습니다.

모든 키는 등록한 낱말 가운데 가장 넓은 것에서 잡아 둔 하나의 글자 크기를 함께 씁니다. 그래야 그 줄이 서로 무관한 키의 나열이 아니라 하나의 조작 요소로 읽힙니다. 선택지가 없는 선택기는 아직 읽어 들이는 중인 화면처럼 보이는 빈 줄을 그리는 대신 "등록한 선택지가 없습니다."라고 말합니다.

## 무엇이 언제 켜지는지 {#what-lights-and-when}

켜진 키(또는 목록의 선택)는 포인트 자신의 읽은 값이지 클릭이 아닙니다.

| 상황 | 조작 요소가 보여 주는 것 |
|---|---|
| 포인트가 등록된 값을 알릴 때 | 그 선택지가 켜지거나 목록에서 골라집니다 |
| 포인트가 어느 선택지에도 등록되지 않은 값을 알릴 때 | 아무것도 켜지지 않습니다. 가까운 키가 켜진다면 화면이 공장의 모드를 지어내는 셈입니다 |
| 포인트가 읽히지 않을 때 | 아무것도 켜지지 않고, 구성 요소가 공통 읽기 실패 표시를 답니다 |

고르는 일은 먼저 읽은 값을 구하지 않습니다. 선택지가 절대값을 담기 때문입니다. 그래서 품질이 나빠도 조작 요소는 *쓸 수 있는* 채로 남고 표시만 사라집니다.

## 쓰기의 뜻 {#write-semantics}

선택지를 고르면 그 값을 스테이션의 단일 로직 통로를 거쳐 쓰며, 모든 명령이 지나는 것과 같은 권한 확인을 지납니다. 숫자를 담을 수 없는 포인트는 조작 요소의 응답 줄에서 이유와 함께 쓰기를 물리칩니다("이 포인트가 담는 값은 날짜와 시간이므로 2 값은 받지 않습니다."). 잘 골라진 경우에는 그 선택지의 말로 답합니다("자동 썼습니다"). 응답 줄은 몇 초 뒤에 사라지고, 권한은 고를 때마다 다시 확인합니다. 선택지를 키로 보여 줄 때, 그 줄이 들어갈 자리가 없고 키 줄 위에 모서리 제목도 서 있지 않은 칸에서는 응답이 보이는 동안 응답이 누른 키의 글자 자리를 차지하며, 거부는 오류 색으로 나옵니다. 키는 너비를 지키므로 담지 못하는 부분은 말줄임표로 줄고 응답 전체는 도구 설명에 담기며, 어떤 키도 움직이지 않고 응답이 사라지면 글자가 돌아옵니다. 선택지를 목록으로 보여 줄 때는 같은 방식으로 응답이 닫힌 목록에 보이는 것의 자리를 차지합니다. 목록은 너비와 화살표를 지키고, 응답이 사라지면 원래 보이던 것이 돌아옵니다.

**한계** 단계를 켠 태그에서는 값이 그 한계 밖에 있는 선택지도 같은 방식으로 거부되고, 그 한계를 알려 주는 이유가 나오며, 아무것도 쓰지 않습니다. 끝값으로 받아들이면 설비는 고른 것과 다른 선택지에 들어가고, 응답 줄은 고른 선택지를 확인해 주게 되기 때문입니다.

정수를 담는 포인트(스케일링과 교정이 값을 바꾸지 않는 정수 형식의 태그, 또는 정수를 담는 내부 값 변수)에서는 값에 소수가 있는 선택지도 반올림되지 않고 같은 방식으로 거부되며("이 포인트는 정수를 받으므로 2.5 값은 쓰지 않습니다."), 아무것도 쓰지 않습니다.

## 권한과 잠금 {#permissions-and-the-lock}

선택기를 조작하려면 대시보드를 조작하는 역할 권한이 필요합니다. 막힌 누름은 키를 쓸 수 없게 만들고, 공통 잠금 표시를 그리며 이유는 구성 요소의 도구 설명에 담깁니다([대시보드 페이지](home) 참조).

공통 모양, 식별, 위치와 레이어, 액션 구역은 [구성 요소 페이지](components#the-shared-property-sections)에서 설명합니다.
