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": { "blueiris": {
"serverName": "Server Name", "serverName": "Server Name",
"numberOfActiveCams": "Active Cameras", "numberOfActiveCams": "Active Cameras",
"numberOfAlerts": "Total Alerts" "numberOfAlerts": "Total Alerts",
"numberOfNewAlerts": "New Alerts"
}, },
"stash": { "stash": {
"scenes": "Scenes", "scenes": "Scenes",

View File

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

View File

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