Files
home_automatization/laravel-app/resources/js/Components/StatusDot.vue
T
cacto f7aa0ba88e Страница зоны со всеми её устройствами и live-статусом
Раньше зона в списке была просто строкой без возможности провалиться
внутрь — все устройства смотрелись только через общий плоский список
/devices с колонкой "Зона". Теперь клик по зоне открывает её страницу
с карточками устройств (иконка по категории, статус online/offline/
unknown точкой с пульсацией для online, external_id) — ровно то, что
просили: все устройства и их статус на одном экране при выборе зоны.

Заодно список зон переведён с голой таблицы на карточки для
консистентности с новой страницей — вся карточка кликабельна и ведёт
на show, кнопки изменить/удалить остаются только у owner.

ZonePolicy::view уже был публичным (true всем) — новый роут
zones.show использует его без изменений.
2026-08-13 13:07:01 +05:00

32 lines
893 B
Vue

<script setup>
defineProps({
status: { type: String, required: true },
});
const dotColor = {
online: 'bg-green-500',
offline: 'bg-gray-300',
unknown: 'bg-yellow-400',
};
const label = {
online: 'Онлайн',
offline: 'Офлайн',
unknown: 'Неизвестно',
};
</script>
<template>
<span class="inline-flex items-center gap-1.5">
<span class="relative flex h-2.5 w-2.5">
<span
v-if="status === 'online'"
class="absolute inline-flex h-full w-full animate-ping rounded-full opacity-75"
:class="dotColor[status]"
/>
<span class="relative inline-flex h-2.5 w-2.5 rounded-full" :class="dotColor[status] ?? dotColor.unknown" />
</span>
<span class="text-xs font-medium text-gray-500">{{ label[status] ?? status }}</span>
</span>
</template>