@ -1,107 +0,0 @@ | |||
var util = require('../util'); | |||
/** | |||
* @class Groups | |||
* This class can store groups and options specific for groups. | |||
*/ | |||
function Groups() { | |||
this.clear(); | |||
this.defaultIndex = 0; | |||
this.groupsArray = []; | |||
this.groupIndex = 0; | |||
this.useDefaultGroups = true; | |||
} | |||
/** | |||
* default constants for group colors | |||
*/ | |||
Groups.DEFAULT = [ | |||
{border: "#2B7CE9", background: "#97C2FC", highlight: {border: "#2B7CE9", background: "#D2E5FF"}, hover: {border: "#2B7CE9", background: "#D2E5FF"}}, // 0: blue | |||
{border: "#FFA500", background: "#FFFF00", highlight: {border: "#FFA500", background: "#FFFFA3"}, hover: {border: "#FFA500", background: "#FFFFA3"}}, // 1: yellow | |||
{border: "#FA0A10", background: "#FB7E81", highlight: {border: "#FA0A10", background: "#FFAFB1"}, hover: {border: "#FA0A10", background: "#FFAFB1"}}, // 2: red | |||
{border: "#41A906", background: "#7BE141", highlight: {border: "#41A906", background: "#A1EC76"}, hover: {border: "#41A906", background: "#A1EC76"}}, // 3: green | |||
{border: "#E129F0", background: "#EB7DF4", highlight: {border: "#E129F0", background: "#F0B3F5"}, hover: {border: "#E129F0", background: "#F0B3F5"}}, // 4: magenta | |||
{border: "#7C29F0", background: "#AD85E4", highlight: {border: "#7C29F0", background: "#D3BDF0"}, hover: {border: "#7C29F0", background: "#D3BDF0"}}, // 5: purple | |||
{border: "#C37F00", background: "#FFA807", highlight: {border: "#C37F00", background: "#FFCA66"}, hover: {border: "#C37F00", background: "#FFCA66"}}, // 6: orange | |||
{border: "#4220FB", background: "#6E6EFD", highlight: {border: "#4220FB", background: "#9B9BFD"}, hover: {border: "#4220FB", background: "#9B9BFD"}}, // 7: darkblue | |||
{border: "#FD5A77", background: "#FFC0CB", highlight: {border: "#FD5A77", background: "#FFD1D9"}, hover: {border: "#FD5A77", background: "#FFD1D9"}}, // 8: pink | |||
{border: "#4AD63A", background: "#C2FABC", highlight: {border: "#4AD63A", background: "#E6FFE3"}, hover: {border: "#4AD63A", background: "#E6FFE3"}}, // 9: mint | |||
{border: "#990000", background: "#EE0000", highlight: {border: "#BB0000", background: "#FF3333"}, hover: {border: "#BB0000", background: "#FF3333"}}, // 10:bright red | |||
{border: "#FF6000", background: "#FF6000", highlight: {border: "#FF6000", background: "#FF6000"}, hover: {border: "#FF6000", background: "#FF6000"}}, // 12: real orange | |||
{border: "#97C2FC", background: "#2B7CE9", highlight: {border: "#D2E5FF", background: "#2B7CE9"}, hover: {border: "#D2E5FF", background: "#2B7CE9"}}, // 13: blue | |||
{border: "#399605", background: "#255C03", highlight: {border: "#399605", background: "#255C03"}, hover: {border: "#399605", background: "#255C03"}}, // 14: green | |||
{border: "#B70054", background: "#FF007E", highlight: {border: "#B70054", background: "#FF007E"}, hover: {border: "#B70054", background: "#FF007E"}}, // 15: magenta | |||
{border: "#AD85E4", background: "#7C29F0", highlight: {border: "#D3BDF0", background: "#7C29F0"}, hover: {border: "#D3BDF0", background: "#7C29F0"}}, // 16: purple | |||
{border: "#4557FA", background: "#000EA1", highlight: {border: "#6E6EFD", background: "#000EA1"}, hover: {border: "#6E6EFD", background: "#000EA1"}}, // 17: darkblue | |||
{border: "#FFC0CB", background: "#FD5A77", highlight: {border: "#FFD1D9", background: "#FD5A77"}, hover: {border: "#FFD1D9", background: "#FD5A77"}}, // 18: pink | |||
{border: "#C2FABC", background: "#74D66A", highlight: {border: "#E6FFE3", background: "#74D66A"}, hover: {border: "#E6FFE3", background: "#74D66A"}}, // 19: mint | |||
{border: "#EE0000", background: "#990000", highlight: {border: "#FF3333", background: "#BB0000"}, hover: {border: "#FF3333", background: "#BB0000"}}, // 20:bright red | |||
]; | |||
/** | |||
* Clear all groups | |||
*/ | |||
Groups.prototype.clear = function () { | |||
this.groups = {}; | |||
this.groups.length = function() | |||
{ | |||
var i = 0; | |||
for ( var p in this ) { | |||
if (this.hasOwnProperty(p)) { | |||
i++; | |||
} | |||
} | |||
return i; | |||
} | |||
}; | |||
/** | |||
* get group options of a groupname. If groupname is not found, a new group | |||
* is added. | |||
* @param {*} groupname Can be a number, string, Date, etc. | |||
* @return {Object} group The created group, containing all group options | |||
*/ | |||
Groups.prototype.get = function (groupname) { | |||
var group = this.groups[groupname]; | |||
if (group == undefined) { | |||
if (this.useDefaultGroups === false && this.groupsArray.length > 0) { | |||
// create new group | |||
var index = this.groupIndex % this.groupsArray.length; | |||
this.groupIndex++; | |||
group = {}; | |||
group.color = this.groups[this.groupsArray[index]]; | |||
this.groups[groupname] = group; | |||
} | |||
else { | |||
// create new group | |||
var index = this.defaultIndex % Groups.DEFAULT.length; | |||
this.defaultIndex++; | |||
group = {}; | |||
group.color = Groups.DEFAULT[index]; | |||
this.groups[groupname] = group; | |||
} | |||
} | |||
return group; | |||
}; | |||
/** | |||
* Add a custom group style | |||
* @param {String} groupName | |||
* @param {Object} style An object containing borderColor, | |||
* backgroundColor, etc. | |||
* @return {Object} group The created group object | |||
*/ | |||
Groups.prototype.add = function (groupName, style) { | |||
this.groups[groupName] = style; | |||
this.groupsArray.push(groupName); | |||
return style; | |||
}; | |||
module.exports = Groups; |
@ -0,0 +1,116 @@ | |||
let util = require('../../util'); | |||
/** | |||
* @class Groups | |||
* This class can store groups and options specific for groups. | |||
*/ | |||
class Groups { | |||
constructor() { | |||
this.clear(); | |||
this.defaultIndex = 0; | |||
this.groupsArray = []; | |||
this.groupIndex = 0; | |||
this.defaultGroups = [ | |||
{border: "#2B7CE9", background: "#97C2FC", highlight: {border: "#2B7CE9", background: "#D2E5FF"}, hover: {border: "#2B7CE9", background: "#D2E5FF"}}, // 0: blue | |||
{border: "#FFA500", background: "#FFFF00", highlight: {border: "#FFA500", background: "#FFFFA3"}, hover: {border: "#FFA500", background: "#FFFFA3"}}, // 1: yellow | |||
{border: "#FA0A10", background: "#FB7E81", highlight: {border: "#FA0A10", background: "#FFAFB1"}, hover: {border: "#FA0A10", background: "#FFAFB1"}}, // 2: red | |||
{border: "#41A906", background: "#7BE141", highlight: {border: "#41A906", background: "#A1EC76"}, hover: {border: "#41A906", background: "#A1EC76"}}, // 3: green | |||
{border: "#E129F0", background: "#EB7DF4", highlight: {border: "#E129F0", background: "#F0B3F5"}, hover: {border: "#E129F0", background: "#F0B3F5"}}, // 4: magenta | |||
{border: "#7C29F0", background: "#AD85E4", highlight: {border: "#7C29F0", background: "#D3BDF0"}, hover: {border: "#7C29F0", background: "#D3BDF0"}}, // 5: purple | |||
{border: "#C37F00", background: "#FFA807", highlight: {border: "#C37F00", background: "#FFCA66"}, hover: {border: "#C37F00", background: "#FFCA66"}}, // 6: orange | |||
{border: "#4220FB", background: "#6E6EFD", highlight: {border: "#4220FB", background: "#9B9BFD"}, hover: {border: "#4220FB", background: "#9B9BFD"}}, // 7: darkblue | |||
{border: "#FD5A77", background: "#FFC0CB", highlight: {border: "#FD5A77", background: "#FFD1D9"}, hover: {border: "#FD5A77", background: "#FFD1D9"}}, // 8: pink | |||
{border: "#4AD63A", background: "#C2FABC", highlight: {border: "#4AD63A", background: "#E6FFE3"}, hover: {border: "#4AD63A", background: "#E6FFE3"}}, // 9: mint | |||
{border: "#990000", background: "#EE0000", highlight: {border: "#BB0000", background: "#FF3333"}, hover: {border: "#BB0000", background: "#FF3333"}}, // 10:bright red | |||
{border: "#FF6000", background: "#FF6000", highlight: {border: "#FF6000", background: "#FF6000"}, hover: {border: "#FF6000", background: "#FF6000"}}, // 12: real orange | |||
{border: "#97C2FC", background: "#2B7CE9", highlight: {border: "#D2E5FF", background: "#2B7CE9"}, hover: {border: "#D2E5FF", background: "#2B7CE9"}}, // 13: blue | |||
{border: "#399605", background: "#255C03", highlight: {border: "#399605", background: "#255C03"}, hover: {border: "#399605", background: "#255C03"}}, // 14: green | |||
{border: "#B70054", background: "#FF007E", highlight: {border: "#B70054", background: "#FF007E"}, hover: {border: "#B70054", background: "#FF007E"}}, // 15: magenta | |||
{border: "#AD85E4", background: "#7C29F0", highlight: {border: "#D3BDF0", background: "#7C29F0"}, hover: {border: "#D3BDF0", background: "#7C29F0"}}, // 16: purple | |||
{border: "#4557FA", background: "#000EA1", highlight: {border: "#6E6EFD", background: "#000EA1"}, hover: {border: "#6E6EFD", background: "#000EA1"}}, // 17: darkblue | |||
{border: "#FFC0CB", background: "#FD5A77", highlight: {border: "#FFD1D9", background: "#FD5A77"}, hover: {border: "#FFD1D9", background: "#FD5A77"}}, // 18: pink | |||
{border: "#C2FABC", background: "#74D66A", highlight: {border: "#E6FFE3", background: "#74D66A"}, hover: {border: "#E6FFE3", background: "#74D66A"}}, // 19: mint | |||
{border: "#EE0000", background: "#990000", highlight: {border: "#FF3333", background: "#BB0000"}, hover: {border: "#FF3333", background: "#BB0000"}}, // 20:bright red | |||
]; | |||
this.options = {}; | |||
this.defaultOptions = { | |||
useDefaultGroups: true | |||
} | |||
util.extend(this.options, this.defaultOptions); | |||
} | |||
setOptions(options) { | |||
let optionFields = ['useDefaultGroups']; | |||
if (options !== undefined) { | |||
for (let groupname in options) { | |||
if (options.hasOwnProperty(groupname)) { | |||
if (optionFields.indexOf(groupName) == -1) { | |||
let group = options[groupname]; | |||
this.add(groupname, group); | |||
} | |||
} | |||
} | |||
} | |||
} | |||
/** | |||
* Clear all groups | |||
*/ | |||
clear() { | |||
this.groups = {}; | |||
this.groupsArray = []; | |||
} | |||
/** | |||
* get group options of a groupname. If groupname is not found, a new group | |||
* is added. | |||
* @param {*} groupname Can be a number, string, Date, etc. | |||
* @return {Object} group The created group, containing all group options | |||
*/ | |||
get(groupname) { | |||
let group = this.groups[groupname]; | |||
if (group == undefined) { | |||
if (this.options.useDefaultGroups === false && this.groupsArray.length > 0) { | |||
// create new group | |||
let index = this.groupIndex % this.groupsArray.length; | |||
this.groupIndex++; | |||
group = {}; | |||
group.color = this.groups[this.groupsArray[index]]; | |||
this.groups[groupname] = group; | |||
} | |||
else { | |||
// create new group | |||
let index = this.defaultIndex % this.defaultGroups.length; | |||
this.defaultIndex++; | |||
group = {}; | |||
group.color = this.defaultGroups[index]; | |||
this.groups[groupname] = group; | |||
} | |||
} | |||
return group; | |||
} | |||
/** | |||
* Add a custom group style | |||
* @param {String} groupName | |||
* @param {Object} style An object containing borderColor, | |||
* backgroundColor, etc. | |||
* @return {Object} group The created group object | |||
*/ | |||
add(groupName, style) { | |||
this.groups[groupName] = style; | |||
this.groupsArray.push(groupName); | |||
return style; | |||
} | |||
} | |||
export default Groups; |