feat: 优化“已订阅主题列表”,自动对数据进行按主题名称升序排序
This commit is contained in:
@@ -108,6 +108,17 @@ const loading = ref(false);
|
|||||||
*/
|
*/
|
||||||
let cleanupFns = [];
|
let cleanupFns = [];
|
||||||
|
|
||||||
|
/**
|
||||||
|
* 对指定服务器的主题列表按主题名称升序排序
|
||||||
|
* @param {MqttServer} server - 服务器对象
|
||||||
|
* @returns {void}
|
||||||
|
*/
|
||||||
|
function sortTopics(server) {
|
||||||
|
if (server && server.topics) {
|
||||||
|
server.topics.sort((a, b) => a.topic.localeCompare(b.topic));
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* 设置主进程事件监听器
|
* 设置主进程事件监听器
|
||||||
* 包括状态变化、消息接收、订阅变化等事件
|
* 包括状态变化、消息接收、订阅变化等事件
|
||||||
@@ -172,6 +183,7 @@ function setupListeners() {
|
|||||||
t.subscribed = data.subscribed;
|
t.subscribed = data.subscribed;
|
||||||
if (data.topic && data.topic !== t.topic) {
|
if (data.topic && data.topic !== t.topic) {
|
||||||
t.topic = data.topic;
|
t.topic = data.topic;
|
||||||
|
sortTopics(srv);
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
@@ -252,6 +264,7 @@ export function useMqttStore() {
|
|||||||
|
|
||||||
servers.value = data;
|
servers.value = data;
|
||||||
sortServers();
|
sortServers();
|
||||||
|
servers.value.forEach((srv) => sortTopics(srv));
|
||||||
setupListeners();
|
setupListeners();
|
||||||
|
|
||||||
} catch (e) {
|
} catch (e) {
|
||||||
@@ -355,6 +368,7 @@ export function useMqttStore() {
|
|||||||
let data = await window.api.importServers(serverList);
|
let data = await window.api.importServers(serverList);
|
||||||
servers.value = data;
|
servers.value = data;
|
||||||
sortServers();
|
sortServers();
|
||||||
|
servers.value.forEach((srv) => sortTopics(srv));
|
||||||
if (servers.value.length > 0 && !activeServerId.value) {
|
if (servers.value.length > 0 && !activeServerId.value) {
|
||||||
activeServerId.value = servers.value[0].id;
|
activeServerId.value = servers.value[0].id;
|
||||||
}
|
}
|
||||||
@@ -396,6 +410,7 @@ export function useMqttStore() {
|
|||||||
let srv = servers.value.find((s) => s.id === serverId);
|
let srv = servers.value.find((s) => s.id === serverId);
|
||||||
if (srv) {
|
if (srv) {
|
||||||
srv.topics.push(result);
|
srv.topics.push(result);
|
||||||
|
sortTopics(srv);
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
@@ -417,6 +432,7 @@ export function useMqttStore() {
|
|||||||
|
|
||||||
if (srv) {
|
if (srv) {
|
||||||
srv.topics = srv.topics.filter((t) => t.topic !== topic);
|
srv.topics = srv.topics.filter((t) => t.topic !== topic);
|
||||||
|
sortTopics(srv);
|
||||||
}
|
}
|
||||||
|
|
||||||
}
|
}
|
||||||
|
|||||||
Reference in New Issue
Block a user