Use rome and initial format
This commit is contained in:
@@ -10,7 +10,7 @@ import {
|
||||
Tabs,
|
||||
TabsContent,
|
||||
TabsList,
|
||||
TabsTrigger
|
||||
TabsTrigger,
|
||||
} from "@app/components/UI/Tabs.js";
|
||||
|
||||
export const getChannelName = (channel: Protobuf.Channel) =>
|
||||
@@ -23,7 +23,7 @@ export const getChannelName = (channel: Protobuf.Channel) =>
|
||||
export const ChannelsPage = (): JSX.Element => {
|
||||
const { channels, setDialogOpen } = useDevice();
|
||||
const [activeChannel, setActiveChannel] = useState<Types.ChannelNumber>(
|
||||
Types.ChannelNumber.PRIMARY
|
||||
Types.ChannelNumber.PRIMARY,
|
||||
);
|
||||
|
||||
const currentChannel = channels.get(activeChannel);
|
||||
@@ -41,14 +41,14 @@ export const ChannelsPage = (): JSX.Element => {
|
||||
icon: ImportIcon,
|
||||
onClick() {
|
||||
setDialogOpen("import", true);
|
||||
}
|
||||
},
|
||||
},
|
||||
{
|
||||
icon: QrCodeIcon,
|
||||
onClick() {
|
||||
setDialogOpen("QR", true);
|
||||
}
|
||||
}
|
||||
},
|
||||
},
|
||||
]}
|
||||
>
|
||||
<Tabs defaultValue="0">
|
||||
|
||||
@@ -11,7 +11,7 @@ import {
|
||||
Tabs,
|
||||
TabsContent,
|
||||
TabsList,
|
||||
TabsTrigger
|
||||
TabsTrigger,
|
||||
} from "@components/UI/Tabs.js";
|
||||
|
||||
export const DeviceConfig = (): JSX.Element => {
|
||||
@@ -21,33 +21,33 @@ export const DeviceConfig = (): JSX.Element => {
|
||||
{
|
||||
label: "Device",
|
||||
element: Device,
|
||||
count: 0
|
||||
count: 0,
|
||||
},
|
||||
{
|
||||
label: "Position",
|
||||
element: Position
|
||||
element: Position,
|
||||
},
|
||||
{
|
||||
label: "Power",
|
||||
element: Power
|
||||
element: Power,
|
||||
},
|
||||
{
|
||||
label: "Network",
|
||||
element: Network,
|
||||
disabled: !hardware.hasWifi
|
||||
disabled: !hardware.hasWifi,
|
||||
},
|
||||
{
|
||||
label: "Display",
|
||||
element: Display
|
||||
element: Display,
|
||||
},
|
||||
{
|
||||
label: "LoRa",
|
||||
element: LoRa
|
||||
element: LoRa,
|
||||
},
|
||||
{
|
||||
label: "Bluetooth",
|
||||
element: Bluetooth
|
||||
}
|
||||
element: Bluetooth,
|
||||
},
|
||||
];
|
||||
|
||||
return (
|
||||
|
||||
@@ -12,7 +12,7 @@ import {
|
||||
Tabs,
|
||||
TabsContent,
|
||||
TabsList,
|
||||
TabsTrigger
|
||||
TabsTrigger,
|
||||
} from "@components/UI/Tabs.js";
|
||||
|
||||
export const ModuleConfig = (): JSX.Element => {
|
||||
@@ -21,36 +21,36 @@ export const ModuleConfig = (): JSX.Element => {
|
||||
const tabs = [
|
||||
{
|
||||
label: "MQTT",
|
||||
element: MQTT
|
||||
element: MQTT,
|
||||
},
|
||||
{
|
||||
label: "Serial",
|
||||
element: Serial
|
||||
element: Serial,
|
||||
},
|
||||
{
|
||||
label: "Ext Notif",
|
||||
element: ExternalNotification
|
||||
element: ExternalNotification,
|
||||
},
|
||||
{
|
||||
label: "S&F",
|
||||
element: StoreForward
|
||||
element: StoreForward,
|
||||
},
|
||||
{
|
||||
label: "Range Test",
|
||||
element: RangeTest
|
||||
element: RangeTest,
|
||||
},
|
||||
{
|
||||
label: "Telemetry",
|
||||
element: Telemetry
|
||||
element: Telemetry,
|
||||
},
|
||||
{
|
||||
label: "Canned",
|
||||
element: CannedMessage
|
||||
element: CannedMessage,
|
||||
},
|
||||
{
|
||||
label: "Audio",
|
||||
element: Audio
|
||||
}
|
||||
element: Audio,
|
||||
},
|
||||
];
|
||||
|
||||
return (
|
||||
|
||||
@@ -47,24 +47,24 @@ export const ConfigPage = (): JSX.Element => {
|
||||
async (config) =>
|
||||
await connection?.setConfig(config).then(() =>
|
||||
toast({
|
||||
title: `Config ${config.payloadVariant.case} saved`
|
||||
})
|
||||
)
|
||||
title: `Config ${config.payloadVariant.case} saved`,
|
||||
}),
|
||||
),
|
||||
);
|
||||
} else {
|
||||
workingModuleConfig.map(
|
||||
async (moduleConfig) =>
|
||||
await connection?.setModuleConfig(moduleConfig).then(() =>
|
||||
toast({
|
||||
title: `Config ${moduleConfig.payloadVariant.case} saved`
|
||||
})
|
||||
)
|
||||
title: `Config ${moduleConfig.payloadVariant.case} saved`,
|
||||
}),
|
||||
),
|
||||
);
|
||||
}
|
||||
|
||||
await connection?.commitEditSettings();
|
||||
}
|
||||
}
|
||||
},
|
||||
},
|
||||
]}
|
||||
>
|
||||
{activeConfigSection === "device" ? <DeviceConfig /> : <ModuleConfig />}
|
||||
|
||||
+15
-15
@@ -9,7 +9,7 @@ import {
|
||||
ZoomInIcon,
|
||||
ZoomOutIcon,
|
||||
BoxSelectIcon,
|
||||
MapPinIcon
|
||||
MapPinIcon,
|
||||
} from "lucide-react";
|
||||
import { bbox, lineString } from "@turf/turf";
|
||||
import { SidebarSection } from "@components/UI/Sidebar/SidebarSection.js";
|
||||
@@ -30,7 +30,7 @@ export const MapPage = (): JSX.Element => {
|
||||
const getBBox = () => {
|
||||
if (!map) return;
|
||||
const nodesWithPosition = allNodes.filter(
|
||||
(node) => node.position?.latitudeI
|
||||
(node) => node.position?.latitudeI,
|
||||
);
|
||||
if (!nodesWithPosition.length) return;
|
||||
if (nodesWithPosition.length === 1) {
|
||||
@@ -38,24 +38,24 @@ export const MapPage = (): JSX.Element => {
|
||||
zoom: 12,
|
||||
center: [
|
||||
(nodesWithPosition[0].position?.longitudeI ?? 0) / 1e7,
|
||||
(nodesWithPosition[0].position?.latitudeI ?? 0) / 1e7
|
||||
]
|
||||
(nodesWithPosition[0].position?.latitudeI ?? 0) / 1e7,
|
||||
],
|
||||
});
|
||||
return;
|
||||
}
|
||||
const line = lineString(
|
||||
nodesWithPosition.map((n) => [
|
||||
(n.position?.latitudeI ?? 0) / 1e7,
|
||||
(n.position?.longitudeI ?? 0) / 1e7
|
||||
])
|
||||
(n.position?.longitudeI ?? 0) / 1e7,
|
||||
]),
|
||||
);
|
||||
const bounds = bbox(line);
|
||||
const center = map.cameraForBounds(
|
||||
[
|
||||
[bounds[1], bounds[0]],
|
||||
[bounds[3], bounds[2]]
|
||||
[bounds[3], bounds[2]],
|
||||
],
|
||||
{ padding: { top: 10, bottom: 10, left: 10, right: 10 } }
|
||||
{ padding: { top: 10, bottom: 10, left: 10, right: 10 } },
|
||||
);
|
||||
if (center) map.easeTo(center);
|
||||
};
|
||||
@@ -89,20 +89,20 @@ export const MapPage = (): JSX.Element => {
|
||||
icon: ZoomInIcon,
|
||||
onClick() {
|
||||
map?.zoomIn();
|
||||
}
|
||||
},
|
||||
},
|
||||
{
|
||||
icon: ZoomOutIcon,
|
||||
onClick() {
|
||||
map?.zoomOut();
|
||||
}
|
||||
},
|
||||
},
|
||||
{
|
||||
icon: BoxSelectIcon,
|
||||
onClick() {
|
||||
getBBox();
|
||||
}
|
||||
}
|
||||
},
|
||||
},
|
||||
]}
|
||||
>
|
||||
<Map
|
||||
@@ -126,7 +126,7 @@ export const MapPage = (): JSX.Element => {
|
||||
initialViewState={{
|
||||
zoom: 10,
|
||||
latitude: -38,
|
||||
longitude: 145
|
||||
longitude: 145,
|
||||
}}
|
||||
>
|
||||
{waypoints.map((wp) => (
|
||||
@@ -162,8 +162,8 @@ export const MapPage = (): JSX.Element => {
|
||||
zoom: 12,
|
||||
center: [
|
||||
(node.position?.longitudeI ?? 0) / 1e7,
|
||||
(node.position?.latitudeI ?? 0) / 1e7
|
||||
]
|
||||
(node.position?.latitudeI ?? 0) / 1e7,
|
||||
],
|
||||
});
|
||||
}}
|
||||
>
|
||||
|
||||
@@ -15,14 +15,14 @@ export const MessagesPage = (): JSX.Element => {
|
||||
const [chatType, setChatType] =
|
||||
useState<Types.PacketDestination>("broadcast");
|
||||
const [activeChat, setActiveChat] = useState<number>(
|
||||
Types.ChannelNumber.PRIMARY
|
||||
Types.ChannelNumber.PRIMARY,
|
||||
);
|
||||
const filteredNodes = Array.from(nodes.values()).filter(
|
||||
(n) => n.num !== hardware.myNodeNum
|
||||
(n) => n.num !== hardware.myNodeNum,
|
||||
);
|
||||
const allChannels = Array.from(channels.values());
|
||||
const filteredChannels = allChannels.filter(
|
||||
(ch) => ch.role !== Protobuf.Channel_Role.DISABLED
|
||||
(ch) => ch.role !== Protobuf.Channel_Role.DISABLED,
|
||||
);
|
||||
const currentChannel = channels.get(activeChat);
|
||||
|
||||
@@ -82,7 +82,7 @@ export const MessagesPage = (): JSX.Element => {
|
||||
messages={messages.broadcast.get(channel.index)}
|
||||
channel={channel.index}
|
||||
/>
|
||||
)
|
||||
),
|
||||
)}
|
||||
{filteredNodes.map(
|
||||
(node) =>
|
||||
@@ -93,7 +93,7 @@ export const MessagesPage = (): JSX.Element => {
|
||||
messages={messages.direct.get(node.num)}
|
||||
channel={Types.ChannelNumber.PRIMARY}
|
||||
/>
|
||||
)
|
||||
),
|
||||
)}
|
||||
</PageLayout>
|
||||
</>
|
||||
|
||||
+9
-8
@@ -11,7 +11,7 @@ export const PeersPage = (): JSX.Element => {
|
||||
const { nodes, hardware } = useDevice();
|
||||
|
||||
const filteredNodes = Array.from(nodes.values()).filter(
|
||||
(n) => n.num !== hardware.myNodeNum
|
||||
(n) => n.num !== hardware.myNodeNum,
|
||||
);
|
||||
|
||||
return (
|
||||
@@ -25,16 +25,17 @@ export const PeersPage = (): JSX.Element => {
|
||||
{ title: "Model", type: "normal", sortable: true },
|
||||
{ title: "MAC Address", type: "normal", sortable: true },
|
||||
{ title: "Last Heard", type: "normal", sortable: true },
|
||||
{ title: "SNR", type: "normal", sortable: true }
|
||||
{ title: "SNR", type: "normal", sortable: true },
|
||||
]}
|
||||
rows={filteredNodes.map((node) => [
|
||||
<Hashicon size={24} value={node.num.toString()} />,
|
||||
<h1>
|
||||
{node.user?.longName ?? (node.user?.macaddr
|
||||
? `Meshtastic ${base16
|
||||
.stringify(node.user?.macaddr.subarray(4, 6) ?? [])
|
||||
.toLowerCase()}`
|
||||
: `UNK: ${node.num}`)}
|
||||
{node.user?.longName ??
|
||||
(node.user?.macaddr
|
||||
? `Meshtastic ${base16
|
||||
.stringify(node.user?.macaddr.subarray(4, 6) ?? [])
|
||||
.toLowerCase()}`
|
||||
: `UNK: ${node.num}`)}
|
||||
</h1>,
|
||||
|
||||
<Mono>{Protobuf.HardwareModel[node.user?.hwModel ?? 0]}</Mono>,
|
||||
@@ -53,7 +54,7 @@ export const PeersPage = (): JSX.Element => {
|
||||
{node.snr}db/
|
||||
{Math.min(Math.max((node.snr + 10) * 5, 0), 100)}%/
|
||||
{(node.snr + 10) * 5}raw
|
||||
</Mono>
|
||||
</Mono>,
|
||||
])}
|
||||
/>
|
||||
</div>
|
||||
|
||||
Reference in New Issue
Block a user