feat(master/device-detail && alarm): Enhance device detail page with alarm list and binary sensors integration, update iconfont URLs, and improve alarm confirmation handling

This commit is contained in:
Tran Anh Tuan
2026-01-27 20:56:54 +07:00
parent ed5751002b
commit ea07d0c99e
16 changed files with 497 additions and 104 deletions

View File

@@ -111,21 +111,20 @@ export function transformRawNodeConfig(
};
}
export async function apiQueryMessage(
export async function apiQueryNodeConfigMessage(
dataChanelId: string,
authorization: string,
params: MasterModel.SearchMessagePaginationBody,
) {
const resp = await request<MasterModel.MesageReaderResponse>(
`${API_READER}/${dataChanelId}/messages`,
{
method: 'GET',
headers: {
Authorization: authorization,
},
params: params,
const resp = await request<
MasterModel.MesageReaderResponse<MasterModel.NodeConfig[]>
>(`${API_READER}/${dataChanelId}/messages`, {
method: 'GET',
headers: {
Authorization: authorization,
},
);
params: params,
});
// Process messages to add string_value_parsed
if (resp.messages) {

View File

@@ -8,7 +8,7 @@ declare namespace MasterModel {
type LogTypeRequest = 'user_logs' | undefined;
interface MesageReaderResponse {
interface MesageReaderResponse<T = MessageDataType> {
offset?: number;
limit?: number;
publisher?: string;
@@ -16,10 +16,17 @@ declare namespace MasterModel {
to?: number;
format?: string;
total?: number;
messages?: Message[];
messages?: Message<T>[];
}
interface Message {
// Response types cho từng domain
type CameraMessageResponse = MesageReaderResponse<CameraV5>;
type CameraV6MessageResponse = MesageReaderResponse<CameraV6>;
type NodeConfigMessageResponse = MesageReaderResponse<NodeConfig[]>;
type MessageDataType = NodeConfig[] | CameraV5 | CameraV6;
interface Message<T = MessageDataType> {
channel?: string;
subtopic?: string;
publisher?: string;
@@ -27,6 +34,32 @@ declare namespace MasterModel {
name?: string;
time?: number;
string_value?: string;
string_value_parsed?: NodeConfig[];
string_value_parsed?: T;
}
// Message types cho từng domain
type CameraMessage = Message<CameraV5>;
type CameraV6Message = Message<CameraV6>;
type NodeConfigMessage = Message<NodeConfig[]>;
interface CameraV5 {
cams?: Camera[];
}
interface CameraV6 extends CameraV5 {
record_type?: string;
record_alarm_list?: string[];
}
interface Camera {
id?: string;
name?: string;
cate_id?: string;
username?: string;
password?: string;
rtsp_port?: number;
http_port?: number;
channel?: number;
ip?: string;
stream?: number;
}
}