@aesys/ngx-rating
Version:
Angular Library for creating RATING elements.
71 lines • 10.2 kB
JavaScript
export function getColorScale(items) {
if (!checkIntegrity(items)) {
console.error("ALL RGB VALUES MUST BE BETWEEN 0 AND 255");
return items.map(item => {
return Object.assign(Object.assign({}, item), { color: getColor(255, 0, 0) });
});
}
if (!items[0].color) {
console.error("SET FIRST ITEM'S COLOR FIELD");
let toReturn = items;
toReturn[0].color = getColor(255, 0, 0);
}
if (items[0].color && !items[items.length - 1].color) {
const color = items[0].color;
return items.map(item => { return Object.assign(Object.assign({}, item), { color: color }); });
}
else {
let toReturn = [items[0]];
while (toReturn.length !== items.length) {
let toCalculate = [];
let first = toReturn[toReturn.length - 1].color || {};
for (let i = toReturn.length; !items[i].color && i < items.length; i++) {
toCalculate.push(items[i]);
}
let last = items[toReturn.length + toCalculate.length].color || {};
toReturn = toReturn.concat(calculateColors(first, last, toCalculate));
toReturn.push(items[toReturn.length]);
}
return toReturn;
}
}
function getColor(red, green, blue) {
return {
red: red,
green: green,
blue: blue
};
}
function calculateColors(first, last, items) {
const difference = getColor(last.red - first.red, last.green - first.green, last.blue - first.blue);
return items.map((item, idx) => {
return Object.assign(Object.assign({}, item), { color: getColor(first.red + ((difference.red / (items.length + 1)) * (idx + 1)), first.green + ((difference.green / (items.length + 1)) * (idx + 1)), first.blue + ((difference.blue / (items.length + 1)) * (idx + 1))) });
});
}
export function toColorString(color) {
return `rgb(${color.red},${color.green},${color.blue})`;
}
function checkIntegrity(items) {
let integrity = true;
items.forEach(item => {
if (item.color) {
if (!checkItem(item.color)) {
integrity = false;
}
}
});
return integrity;
}
function checkItem(color) {
if (color.red < 0 || color.red > 255) {
return false;
}
if (color.green < 0 || color.green > 255) {
return false;
}
if (color.blue < 0 || color.blue > 255) {
return false;
}
return true;
}
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiY29sb3ItZ2VuZXJhdG9yLmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vLi4vcHJvamVjdHMvbmd4LXJhdGluZy9zcmMvbGliL2NvbG9yLWdlbmVyYXRvci50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFFQSxNQUFNLFVBQVUsYUFBYSxDQUFDLEtBQWE7SUFFekMsSUFBRyxDQUFDLGNBQWMsQ0FBQyxLQUFLLENBQUMsRUFBQztRQUN4QixPQUFPLENBQUMsS0FBSyxDQUFDLDBDQUEwQyxDQUFDLENBQUM7UUFDMUQsT0FBTyxLQUFLLENBQUMsR0FBRyxDQUFDLElBQUksQ0FBQyxFQUFFO1lBQ3RCLHVDQUNLLElBQUksS0FDUCxLQUFLLEVBQUUsUUFBUSxDQUFDLEdBQUcsRUFBRSxDQUFDLEVBQUUsQ0FBQyxDQUFDLElBQzNCO1FBQ0gsQ0FBQyxDQUFDLENBQUM7S0FDSjtJQUVELElBQUcsQ0FBQyxLQUFLLENBQUMsQ0FBQyxDQUFDLENBQUMsS0FBSyxFQUFFO1FBQ2xCLE9BQU8sQ0FBQyxLQUFLLENBQUMsOEJBQThCLENBQUMsQ0FBQztRQUM5QyxJQUFJLFFBQVEsR0FBRyxLQUFLLENBQUM7UUFDckIsUUFBUSxDQUFDLENBQUMsQ0FBQyxDQUFDLEtBQUssR0FBRyxRQUFRLENBQUMsR0FBRyxFQUFFLENBQUMsRUFBRSxDQUFDLENBQUMsQ0FBQztLQUN6QztJQUNELElBQUcsS0FBSyxDQUFDLENBQUMsQ0FBQyxDQUFDLEtBQUssSUFBSSxDQUFDLEtBQUssQ0FBQyxLQUFLLENBQUMsTUFBTSxHQUFDLENBQUMsQ0FBQyxDQUFDLEtBQUssRUFBRTtRQUNqRCxNQUFNLEtBQUssR0FBRyxLQUFLLENBQUMsQ0FBQyxDQUFDLENBQUMsS0FBSyxDQUFDO1FBQzdCLE9BQU8sS0FBSyxDQUFDLEdBQUcsQ0FBQyxJQUFJLENBQUMsRUFBRSxHQUFFLHVDQUFXLElBQUksS0FBRSxLQUFLLEVBQUUsS0FBSyxJQUFDLENBQUEsQ0FBQyxDQUFDLENBQUM7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QyxFQUFFO1FBQ25CLElBQUcsSUFBSSxDQUFDLEtBQUssRUFBRTtZQUNiLElBQUcsQ0FBQyxTQUFTLENBQUMsSUFBSSxDQUFDLEtBQUssQ0FBQyxFQUFFO2dCQUN6QixTQUFTLEdBQUcsS0FBSyxDQUFDO2FBQ25CO1NBQ0Y7SUFDSCxDQUFDLENBQUMsQ0FBQztJQUVILE9BQU8sU0FBUyxDQUFDO0FBQ25CLENBQUM7QUFFRCxTQUFTLFNBQVMsQ0FBQyxLQUFZO0lBQzdCLElBQUcsS0FBSyxDQUFDLEdBQUcsR0FBRyxDQUFDLElBQUksS0FBSyxDQUFDLEdBQUcsR0FBRyxHQUFHLEVBQUM7UUFDbEMsT0FBTyxLQUFLLENBQUM7S0FDZDtJQUNELElBQUcsS0FBSyxDQUFDLEtBQUssR0FBRyxDQUFDLElBQUksS0FBSyxDQUFDLEtBQUssR0FBRyxHQUFHLEVBQUM7UUFDdEMsT0FBTyxLQUFLLENBQUM7S0FDZDtJQUNELElBQUcsS0FBSyxDQUFDLElBQUksR0FBRyxDQUFDLElBQUksS0FBSyxDQUFDLElBQUksR0FBRyxHQUFHLEVBQUM7UUFDcEMsT0FBTyxLQUFLLENBQUM7S0FDZDtJQUVELE9BQU8sSUFBSSxDQUFDO0FBQ2QsQ0FBQyIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7IENvbG9yLCBJdGVtIH0gZnJvbSBcIi4vbW9kZWxcIjtcblxuZXhwb3J0IGZ1bmN0aW9uIGdldENvbG9yU2NhbGUoaXRlbXM6IEl0ZW1bXSk6IEl0ZW1bXSB7XG5cbiAgaWYoIWNoZWNrSW50ZWdyaXR5KGl0ZW1zKSl7XG4gICAgY29uc29sZS5lcnJvcihcIkFMTCBSR0IgVkFMVUVTIE1VU1QgQkUgQkVUV0VFTiAwIEFORCAyNTVcIik7XG4gICAgcmV0dXJuIGl0ZW1zLm1hcChpdGVtID0+IHtcbiAgICAgIHJldHVybiB7XG4gICAgICAgIC4uLml0ZW0sXG4gICAgICAgIGNvbG9yOiBnZXRDb2xvcigyNTUsIDAsIDApXG4gICAgICB9XG4gICAgfSk7XG4gIH1cblxuICBpZighaXRlbXNbMF0uY29sb3IpIHtcbiAgICBjb25zb2xlLmVycm9yKFwiU0VUIEZJUlNUIElURU0nUyBDT0xPUiBGSUVMRFwiKTtcbiAgICBsZXQgdG9SZXR1cm4gPSBpdGVtcztcbiAgICB0b1JldHVyblswXS5jb2xvciA9IGdldENvbG9yKDI1NSwgMCwgMCk7XG4gIH1cbiAgaWYoaXRlbXNbMF0uY29sb3IgJiYgIWl0ZW1zW2l0ZW1zLmxlbmd0aC0xXS5jb2xvcikge1xuICAgIGNvbnN0IGNvbG9yID0gaXRlbXNbMF0uY29sb3I7XG4gICAgcmV0dXJuIGl0ZW1zLm1hcChpdGVtID0+IHtyZXR1cm4gey4uLml0ZW0sIGNvbG9yOiBjb2xvcn19KTtcbiAgfSBlbHNlIHtcbiAgICBsZXQgdG9SZXR1cm46IEl0ZW1bXSA9IFtpdGVtc1swXV07XG4gICAgd2hpbGUodG9SZXR1cm4ubGVuZ3RoICE9PSBpdGVtcy5sZW5ndGgpIHtcbiAgICAgIGxldCB0b0NhbGN1bGF0ZSA9IFtdO1xuICAgICAgbGV0IGZpcnN0OiBDb2xvciA9IHRvUmV0dXJuW3RvUmV0dXJuLmxlbmd0aCAtIDFdLmNvbG9yIHx8IHt9IGFzIENvbG9yO1xuICAgICAgZm9yKGxldCBpID0gdG9SZXR1cm4ubGVuZ3RoOyAhaXRlbXNbaV0uY29sb3IgJiYgaSA8IGl0ZW1zLmxlbmd0aDsgaSsrKSB7XG4gICAgICAgIHRvQ2FsY3VsYXRlLnB1c2goaXRlbXNbaV0pO1xuICAgICAgfVxuICAgICAgbGV0IGxhc3Q6IENvbG9yID0gaXRlbXNbdG9SZXR1cm4ubGVuZ3RoICsgdG9DYWxjdWxhdGUubGVuZ3RoXS5jb2xvciAgfHwge30gYXMgQ29sb3I7XG4gICAgICB0b1JldHVybiA9IHRvUmV0dXJuLmNvbmNhdChjYWxjdWxhdGVDb2xvcnMoZmlyc3QsIGxhc3QsIHRvQ2FsY3VsYXRlKSk7XG4gICAgICB0b1JldHVybi5wdXNoKGl0ZW1zW3RvUmV0dXJuLmxlbmd0aF0pO1xuICAgIH1cbiAgICByZXR1cm4gdG9SZXR1cm47XG4gIH1cbn1cblxuZnVuY3Rpb24gZ2V0Q29sb3IocmVkOiBudW1iZXIsIGdyZWVuOiBudW1iZXIsIGJsdWU6IG51bWJlcik6IENvbG9yIHtcbiAgcmV0dXJuIHtcbiAgICByZWQ6IHJlZCxcbiAgICBncmVlbjogZ3JlZW4sXG4gICAgYmx1ZTogYmx1ZVxuICB9XG59XG5cbmZ1bmN0aW9uIGNhbGN1bGF0ZUNvbG9ycyhmaXJzdDogQ29sb3IsIGxhc3Q6IENvbG9yLCBpdGVtczogSXRlbVtdKTogSXRlbVtdIHtcbiAgY29uc3QgZGlmZmVyZW5jZSA9IGdldENvbG9yKFxuICAgIGxhc3QucmVkIC0gZmlyc3QucmVkLFxuICAgIGxhc3QuZ3JlZW4gLSBmaXJzdC5ncmVlbixcbiAgICBsYXN0LmJsdWUgLSBmaXJzdC5ibHVlXG4gICk7XG4gIHJldHVybiBpdGVtcy5tYXAoKGl0ZW0sIGlkeCkgPT4ge1xuICAgIHJldHVybiB7XG4gICAgICAuLi5pdGVtLFxuICAgICAgY29sb3I6IGdldENvbG9yKFxuICAgICAgICBmaXJzdC5yZWQgKyAoKGRpZmZlcmVuY2UucmVkLyhpdGVtcy5sZW5ndGgrMSkpKihpZHgrMSkpLFxuICAgICAgICBmaXJzdC5ncmVlbiArICgoZGlmZmVyZW5jZS5ncmVlbi8oaXRlbXMubGVuZ3RoKzEpKSooaWR4KzEpKSxcbiAgICAgICAgZmlyc3QuYmx1ZSArICgoZGlmZmVyZW5jZS5ibHVlLyhpdGVtcy5sZW5ndGgrMSkpKihpZHgrMSkpXG4gICAgICApXG4gICAgfVxuICB9KTtcbn1cblxuZXhwb3J0IGZ1bmN0aW9uIHRvQ29sb3JTdHJpbmcoY29sb3I6IENvbG9yKTogc3RyaW5nIHtcbiAgcmV0dXJuIGByZ2IoJHtjb2xvci5yZWR9LCR7Y29sb3IuZ3JlZW59LCR7Y29sb3IuYmx1ZX0pYDtcbn1cblxuZnVuY3Rpb24gY2hlY2tJbnRlZ3JpdHkoaXRlbXM6IEl0ZW1bXSk6IGJvb2xlYW4ge1xuICBsZXQgaW50ZWdyaXR5ID0gdHJ1ZTtcbiAgaXRlbXMuZm9yRWFjaChpdGVtID0+IHtcbiAgICBpZihpdGVtLmNvbG9yKSB7XG4gICAgICBpZighY2hlY2tJdGVtKGl0ZW0uY29sb3IpKSB7XG4gICAgICAgIGludGVncml0eSA9IGZhbHNlO1xuICAgICAgfVxuICAgIH1cbiAgfSk7XG5cbiAgcmV0dXJuIGludGVncml0eTtcbn1cblxuZnVuY3Rpb24gY2hlY2tJdGVtKGNvbG9yOiBDb2xvcik6IGJvb2xlYW4ge1xuICBpZihjb2xvci5yZWQgPCAwIHx8IGNvbG9yLnJlZCA+IDI1NSl7XG4gICAgcmV0dXJuIGZhbHNlO1xuICB9XG4gIGlmKGNvbG9yLmdyZWVuIDwgMCB8fCBjb2xvci5ncmVlbiA+IDI1NSl7XG4gICAgcmV0dXJuIGZhbHNlO1xuICB9XG4gIGlmKGNvbG9yLmJsdWUgPCAwIHx8IGNvbG9yLmJsdWUgPiAyNTUpe1xuICAgIHJldHVybiBmYWxzZTtcbiAgfVxuXG4gIHJldHVybiB0cnVlO1xufVxuIl19