Skip to content

Commit

Permalink
feat(core): CurrentStatisticsCapability
Browse files Browse the repository at this point in the history
  • Loading branch information
Hypfer committed Nov 8, 2021
1 parent c39ad93 commit 8e4e183
Show file tree
Hide file tree
Showing 7 changed files with 122 additions and 50 deletions.
26 changes: 26 additions & 0 deletions backend/lib/core/capabilities/CurrentStatisticsCapability.js
Original file line number Diff line number Diff line change
@@ -0,0 +1,26 @@
const Capability = require("./Capability");
const NotImplementedError = require("../NotImplementedError");
const ValetudoDataPoint = require("../../entities/core/ValetudoDataPoint");

/**
* @template {import("../ValetudoRobot")} T
* @extends Capability<T>
*/
class CurrentStatisticsCapability extends Capability {
/**
* The amount and type of stuff returned here depends on the robots implementation
*
* @return {Promise<Array<ValetudoDataPoint>>}
*/
async getStatistics() {
throw new NotImplementedError();
}

getType() {
return CurrentStatisticsCapability.TYPE;
}
}

CurrentStatisticsCapability.TYPE = "CurrentStatisticsCapability";

module.exports = CurrentStatisticsCapability;
1 change: 1 addition & 0 deletions backend/lib/core/capabilities/index.js
Original file line number Diff line number Diff line change
Expand Up @@ -5,6 +5,7 @@ module.exports = {
CarpetModeControlCapability: require("./CarpetModeControlCapability"),
CombinedVirtualRestrictionsCapability: require("./CombinedVirtualRestrictionsCapability"),
ConsumableMonitoringCapability: require("./ConsumableMonitoringCapability"),
CurrentStatisticsCapability: require("./CurrentStatisticsCapability"),
DebugCapability: require("./DebugCapability"),
DoNotDisturbCapability: require("./DoNotDisturbCapability"),
FanSpeedControlCapability: require("./FanSpeedControlCapability"),
Expand Down
3 changes: 2 additions & 1 deletion backend/lib/webserver/CapabilitiesRouter.js
Original file line number Diff line number Diff line change
Expand Up @@ -87,7 +87,8 @@ const CAPABILITY_TYPE_TO_ROUTER_MAPPING = {
[capabilities.ObstacleAvoidanceControlCapability.TYPE]: capabilityRouters.SimpleToggleCapabilityRouter,
[capabilities.AutoEmptyDockAutoEmptyControlCapability.TYPE]: capabilityRouters.SimpleToggleCapabilityRouter,
[capabilities.AutoEmptyDockManualTriggerCapability.TYPE]: capabilityRouters.AutoEmptyDockManualTriggerCapabilityRouter,
[capabilities.TotalStatisticsCapability.TYPE]: capabilityRouters.TotalStatisticsCapabilityRouter
[capabilities.TotalStatisticsCapability.TYPE]: capabilityRouters.StatisticsCapabilityRouter,
[capabilities.CurrentStatisticsCapability.TYPE]: capabilityRouters.StatisticsCapabilityRouter
};

module.exports = CapabilitiesRouter;
Original file line number Diff line number Diff line change
@@ -1,17 +1,17 @@
const CapabilityRouter = require("./CapabilityRouter");
const Logger = require("../../Logger");

class TotalStatisticsCapabilityRouter extends CapabilityRouter {
class StatisticsCapabilityRouter extends CapabilityRouter {
initRoutes() {
this.router.get("/", async (req, res) => {
try {
res.json(await this.capability.getStatistics());
} catch (e) {
Logger.warn("Error while fetching total statistics", e);
Logger.warn("Error while fetching statistics", e);
res.status(500).json(e.message);
}
});
}
}

module.exports = TotalStatisticsCapabilityRouter;
module.exports = StatisticsCapabilityRouter;
Original file line number Diff line number Diff line change
@@ -0,0 +1,89 @@
{
"/api/v2/robot/capabilities/TotalStatisticsCapability": {
"get": {
"tags": [
"TotalStatisticsCapability"
],
"summary": "Get total statistics",
"responses": {
"200": {
"description": "Ok",
"content": {
"application/json": {
"schema": {
"type": "array",
"items": {
"$ref": "#/components/schemas/ValetudoDataPoint"
}
}
}
}
}
}
}
},
"/api/v2/robot/capabilities/TotalStatisticsCapability/properties": {
"get": {
"tags": [
"TotalStatisticsCapability"
],
"summary": "Get various capability-related properties",
"responses": {
"200": {
"description": "Ok",
"content": {
"application/json": {
"schema": {
"type": "object"
}
}
}
}
}
}
},

"/api/v2/robot/capabilities/CurrentStatisticsCapability": {
"get": {
"tags": [
"CurrentStatisticsCapability"
],
"summary": "Get statistics about the current (or last) task",
"responses": {
"200": {
"description": "Ok",
"content": {
"application/json": {
"schema": {
"type": "array",
"items": {
"$ref": "#/components/schemas/ValetudoDataPoint"
}
}
}
}
}
}
}
},
"/api/v2/robot/capabilities/CurrentStatisticsCapability/properties": {
"get": {
"tags": [
"CurrentStatisticsCapability"
],
"summary": "Get various capability-related properties",
"responses": {
"200": {
"description": "Ok",
"content": {
"application/json": {
"schema": {
"type": "object"
}
}
}
}
}
}
}
}

This file was deleted.

2 changes: 1 addition & 1 deletion backend/lib/webserver/capabilityRouters/index.js
Original file line number Diff line number Diff line change
Expand Up @@ -21,7 +21,7 @@ module.exports = {
SimpleToggleCapabilityRouter: require("./SimpleToggleCapabilityRouter"),
SpeakerTestCapabilityRouter: require("./SpeakerTestCapabilityRouter"),
SpeakerVolumeControlCapabilityRouter: require("./SpeakerVolumeControlCapabilityRouter"),
TotalStatisticsCapabilityRouter: require("./TotalStatisticsCapabilityRouter"),
StatisticsCapabilityRouter: require("./StatisticsCapabilityRouter"),
VoicePackManagementCapabilityRouter: require("./VoicePackManagementCapabilityRouter"),
WifiConfigurationCapabilityRouter: require("./WifiConfigurationCapabilityRouter"),
ZoneCleaningCapabilityRouter: require("./ZoneCleaningCapabilityRouter")
Expand Down

0 comments on commit 8e4e183

Please sign in to comment.