jive-sdk
Version:
Node.js SDK for Jive Software to assist with the development of add-ons
111 lines (93 loc) • 3.1 kB
JavaScript
/*
* Copyright 2013 Jive Software
*
* Licensed under the Apache License, Version 2.0 (the "License");
* you may not use this file except in compliance with the License.
* You may obtain a copy of the License at
*
* http://www.apache.org/licenses/LICENSE-2.0
*
* Unless required by applicable law or agreed to in writing, software
* distributed under the License is distributed on an "AS IS" BASIS,
* WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
* See the License for the specific language governing permissions and
* limitations under the License.
*/
var jive = require("jive-sdk");
function processTileInstance(instance) {
var statusNames = [ "Poor", "Fair", "Good", "Excellent", "Outstanding" ];
jive.logger.debug('running pusher for ', instance.name, 'instance', instance.id);
var level = Number(instance.config.level);
var dataToPush = {
data: {
"message": "Simple Gauge",
"sections": createSections(5),
"activeIndex": level,
"status": statusNames[level]
}
};
jive.tiles.pushData(instance, dataToPush);
}
function pushData() {
jive.tiles.findByDefinitionName( '{{{TILE_NAME}}}' ).then( function(instances) {
if ( instances ) {
instances.forEach( function( instance ) {
processTileInstance(instance);
});
}
});
}
function createSections(numSections) {
var sections = [];
for (var i = 0; i < numSections; i++) {
sections.push({
"label": "dummy",
"color": getSectionColor(i, numSections)
});
}
return sections;
}
function getSectionColor(secIndex, numSections) {
var maxGreen = 187,
blueString = "00",
red, green;
if (secIndex < ((numSections - 1) / 2)) {
red = 255;
green = Math.round((255 * ((secIndex) / ((numSections - 1) / 2))));
}
else if (secIndex > ((numSections - 1) / 2)) {
green = maxGreen;
red = Math.round((255 * (1 - ((secIndex - ((numSections - 1) / 2)) / ((numSections - 1) / 2)))));
}
else {
red = 220;
green = 220;
}
var redString = (red < 16 ? "0" + red.toString(16) : red.toString(16)),
greenString = (green < 16 ? "0" + green.toString(16) : green.toString(16));
return '#' + redString + greenString + blueString;
}
/**
* Schedules the tile update task to automatically fire every 10 seconds
*/
exports.task = [
{
'interval' : 10000,
'handler' : pushData
}
];
/**
* Defines event handlers for the tile life cycle events
*/
exports.eventHandlers = [
// process tile instance whenever a new one is registered with the service
{
'event' : jive.constants.globalEventNames.NEW_INSTANCE,
'handler' : processTileInstance
},
// process tile instance whenever an existing tile instance is updated
{
'event' : jive.constants.globalEventNames.INSTANCE_UPDATED,
'handler' : processTileInstance
}
];