extend blueiris widget

This commit is contained in:
Karl Hudgell 2024-06-19 12:53:05 +01:00
parent 7ac5f55d74
commit 4b4bde142c
3 changed files with 16 additions and 4 deletions

View File

@ -872,7 +872,8 @@
"blueiris": {
"serverName": "Server Name",
"numberOfActiveCams": "Active Cameras",
"numberOfAlerts": "Total Alerts"
"numberOfAlerts": "Total Alerts",
"numberOfNewAlerts": "New Alerts"
},
"stash": {
"scenes": "Scenes",

View File

@ -23,6 +23,7 @@ export default function Component({ service }) {
<Block label="blueiris.serverName" />
<Block label="blueiris.numberOfActiveCams" />
<Block label="blueiris.numberOfAlerts" />
<Block label="blueiris.numberOfNewAlerts" />
</Container>
);
}
@ -32,6 +33,7 @@ export default function Component({ service }) {
<Block label="blueiris.serverName" value= {blueirisData.serverName} />
<Block label="blueiris.numberOfActiveCams" value={t("common.number", { value: blueirisData.numberOfActiveCams })} />
<Block label="blueiris.numberOfAlerts" value={t("common.number", { value: blueirisData.totalNumberOfAlerts })} />
<Block label="blueiris.numberOfNewAlerts" value={t("common.number", { value: blueirisData.totalNumberOfNewAlerts })} />
</Container>
);
}

View File

@ -61,7 +61,7 @@ const activeCamCount = async (widget, session) => {
return cameraList;
};
const numberOfAlerts = async (widget, session) => {
const getAllAlerts = async (widget, session) => {
const res = await activeCamCount(widget, session);
const promises = res.map(item => executeCMD(widget.url, `{"cmd":"alertlist", "camera":"${item.optionDisplay}", "session":"${session}"}`));
const results = await Promise.all(promises);
@ -69,16 +69,25 @@ const numberOfAlerts = async (widget, session) => {
return alerts;
};
const getNewAlerts = async (widget, session) => {
const res = await activeCamCount(widget, session);
const promises = res.map(item => executeCMD(widget.url, `{"cmd":"alertlist", "camera":"${item.optionDisplay}", "session":"${session}", "view":"new"}`));
const results = await Promise.all(promises);
const alerts = results.reduce((acc, r) => acc + r.data.length, 0);
return alerts;
};
export default async function blueirisProxyHandler(req, res) {
const widget = await getWidget(req);
const globalUserData = await userLogin(widget);
const activeCams = await activeCamCount(widget, globalUserData.session);
const alerts = await numberOfAlerts(widget, globalUserData.session);
const allAlerts = await getAllAlerts(widget, globalUserData.session);
const newAlerts = await getNewAlerts(widget, globalUserData.session);
const data = {
"serverName":globalUserData.serverName,
"numberOfActiveCams":activeCams.length,
"totalNumberOfAlerts":alerts,
"totalNumberOfAlerts":allAlerts,
"totalNumberOfNewAlerts":newAlerts
};
return res.status(200).send(data);