Подсказка external_id из уже увиденных устройств при добавлении
Поле External ID при создании/изменении устройства теперь input+datalist: можно вписать значение вручную (как раньше) или выбрать из подсказок — идентификаторы устройств, от которых device-control-service уже получал MQTT-телеметрию/ack (Redis-множество devices:known), но которые ещё не зарегистрированы в Postgres. Уже зарегистрированные id из списка подсказок исключаются. DeviceShadow::knownExternalIds() — новый read-метод (SMEMBERS devices:known), зеркалит то же множество, что Go-сервисы уже читают/ пишут для health-check/online-детекции.
This commit is contained in:
@@ -6,6 +6,7 @@ const props = defineProps({
|
||||
device: { type: Object, default: null },
|
||||
zones: { type: Array, required: true },
|
||||
deviceTypes: { type: Array, required: true },
|
||||
unregisteredExternalIds: { type: Array, default: () => [] },
|
||||
});
|
||||
|
||||
const isEdit = !!props.device;
|
||||
@@ -76,9 +77,17 @@ function submit() {
|
||||
id="external_id"
|
||||
v-model="form.external_id"
|
||||
type="text"
|
||||
list="unregistered-external-ids"
|
||||
required
|
||||
placeholder="можно ввести вручную или выбрать увиденное устройство"
|
||||
class="mt-1 block w-full font-mono border-gray-300 focus:border-indigo-500 focus:ring-indigo-500 rounded-md shadow-sm"
|
||||
>
|
||||
<datalist id="unregistered-external-ids">
|
||||
<option v-for="id in unregisteredExternalIds" :key="id" :value="id" />
|
||||
</datalist>
|
||||
<p v-if="unregisteredExternalIds.length" class="mt-1 text-xs text-gray-400">
|
||||
От {{ unregisteredExternalIds.length }} {{ unregisteredExternalIds.length === 1 ? 'устройства' : 'устройств' }} уже приходил сигнал, но они ещё не зарегистрированы — начните вводить, чтобы увидеть подсказки.
|
||||
</p>
|
||||
<div v-if="form.errors.external_id" class="mt-2 text-sm text-red-600">{{ form.errors.external_id }}</div>
|
||||
</div>
|
||||
|
||||
|
||||
Reference in New Issue
Block a user