fitbit-frosted/common/digits.js

125 lines
2.9 KiB
JavaScript

import document from "document";
import * as characters from "characters";
function getSquares(character) {
return characters.numbers[character];
}
function splitNumber(number) {
let numberString = number.toString();
return splitString(numberString);
}
function splitString(input) {
let chars = [];
for (let i = 0; i < input.length; i += 1) {
chars.push(input.charAt(i));
}
return chars;
}
const smallDigits = ['0','1','2','3','4','5','6','7','8','9','/'];
export function setSmallDigits(name, input, rightJustify) {
let chars = [];
let smallNumElem = document.getElementById(name);
if (typeof input === 'number') {
chars = splitNumber(input);
} else if (typeof input === 'string') {
chars = splitString(input);
}
if (rightJustify) {
chars = chars.reverse();
}
for (let i=0; i<6; i++) {
let digitElem = smallNumElem.getElementById('digit'+(i+1));
let char = chars[i];
if (rightJustify) {
char = chars[5-i];
}
if (typeof char === 'number') {
char = char.toString();
}
if (typeof char !== 'undefined' && smallDigits.indexOf(char) > -1) {
if (char == "/") {
char = "slash";
}
digitElem.href="img/"+char+".png";
} else {
digitElem.href="";
}
}
}
export function setDigits(chars, colors) {
let matrix = [
[0,0,0,0,0,0,0],
[0,0,0,0,0,0,0],
[0,0,0,0,0,0,0],
[0,0,0,0,0,0,0],
[0,0,0,0,0,0,0],
[0,0,0,0,0,0,0],
[0,0,0,0,0,0,0],
];
for (let char = 0; char < 4; char++) {
let squares = getSquares(chars[char]);
let offsX = 0;
let offsY = 0;
let color = 0;
switch (char) {
case 0:
color = 1;
break;
case 1:
color = 1;
offsX = 4;
break;
case 2:
color = 2;
offsY = 2;
break;
case 3:
color = 2;
offsX = 4;
offsY = 2;
break;
}
for (let i = 0; i < (characters.charwidth*characters.charheight); i++) {
let row = Math.floor(i/characters.charwidth);
let col = i%characters.charwidth;
matrix[row+offsY][col+offsX] += color*squares[row][col];
}
}
for (let i = 0; i < (7*7); i++) {
let col = i%7;
let row = Math.floor(i/7);
let square = matrix[row][col];
let locationCode = (row+1)+'-'+(col+1);
let squareElem = document.getElementById('squares').getElementById(locationCode);
if (square >= 1) {
squareElem.style.display = 'inline';
squareElem.href = "img/"+locationCode+".png";
switch (square) {
case 1:
squareElem.layer = 1;
squareElem.style.fill = colors[0];
break;
case 2:
squareElem.layer = 2;
squareElem.style.fill = colors[1];
break;
case 3:
squareElem.layer = 3;
squareElem.style.fill = colors[2];
break;
}
} else {
squareElem.style.display = 'none';
squareElem.href = "";
}
}
}