Files
cgm-remote-monitor/lib/plugins/virtAsstBase.js
T
Sulka HaroandGitHub 3a0629578e Refactor moment to be loaded from ctx (#7331)
* Experimental branch that replaces momentjs with dayjs in the client

* Revert unintentional change

* feat

* Turns out dayjs is a no-go, but this has some good restructuring so submitting that
2023-01-01 19:14:59 +02:00

93 lines
2.9 KiB
JavaScript

'use strict';
var _each = require('lodash/each');
function init(env, ctx) {
var moment = ctx.moment;
function virtAsstBase() {
return virtAsstBase;
}
var entries = ctx.entries;
var translate = ctx.language.translate;
virtAsstBase.setupMutualIntents = function (configuredPlugin) {
// full status
configuredPlugin.addToRollup('Status', function (slots, sbx, callback) {
entries.list({count: 1}, function (err, records) {
var direction;
if (translate(records[0].direction)) {
direction = translate(records[0].direction);
} else {
direction = records[0].direction;
}
var status = translate('virtAsstStatus', {
params: [
sbx.scaleMgdl(records[0].sgv),
direction,
moment(records[0].date).from(moment(sbx.time))
]
});
callback(null, {results: status, priority: -1});
});
}, 'BG Status');
configuredPlugin.configureIntentHandler('NSStatus', function (callback, slots, sbx, locale) {
configuredPlugin.getRollup('Status', sbx, slots, locale, function (status) {
callback(translate('virtAsstTitleFullStatus'), status);
});
});
// blood sugar and direction
configuredPlugin.configureIntentHandler('MetricNow', function (callback, slots, sbx) {
entries.list({count: 1}, function(err, records) {
var direction;
if(translate(records[0].direction)){
direction = translate(records[0].direction);
} else {
direction = records[0].direction;
}
var status = translate('virtAsstStatus', {
params: [
sbx.scaleMgdl(records[0].sgv),
direction,
moment(records[0].date).from(moment(sbx.time))]
});
callback(translate('virtAsstTitleCurrentBG'), status);
});
}, ['bg', 'blood glucose', 'number']);
};
virtAsstBase.setupVirtAsstHandlers = function (configuredPlugin) {
ctx.plugins.eachEnabledPlugin(function (plugin) {
if (plugin.virtAsst) {
if (plugin.virtAsst.intentHandlers) {
console.log('Plugin "' + plugin.name + '" supports Virtual Assistants');
_each(plugin.virtAsst.intentHandlers, function (route) {
if (route) {
configuredPlugin.configureIntentHandler(route.intent, route.intentHandler, route.metrics);
}
});
}
if (plugin.virtAsst.rollupHandlers) {
console.log('Plugin "' + plugin.name + '" supports rollups for Virtual Assistants');
_each(plugin.virtAsst.rollupHandlers, function (route) {
if (route) {
configuredPlugin.addToRollup(route.rollupGroup, route.rollupHandler, route.rollupName);
}
});
}
} else {
console.log('Plugin "' + plugin.name + '" does not support Virtual Assistants');
}
});
};
return virtAsstBase;
}
module.exports = init;