Primer commit. Coodigo escrito en el añoo 2021
This commit is contained in:
344
index.js
Executable file
344
index.js
Executable file
@@ -0,0 +1,344 @@
|
||||
const chalk = require('chalk');
|
||||
const language = require('./app/module/language');
|
||||
|
||||
var display = [
|
||||
[
|
||||
{
|
||||
palabra: "It",
|
||||
estado: 1,
|
||||
id:"it"
|
||||
},
|
||||
{
|
||||
palabra: " ",
|
||||
estado: 1,
|
||||
id:""
|
||||
},
|
||||
{
|
||||
palabra: "is",
|
||||
estado: 1,
|
||||
id:"is"
|
||||
},
|
||||
{
|
||||
palabra: " ",
|
||||
estado: 0,
|
||||
id:""
|
||||
},
|
||||
{
|
||||
palabra: "twenty",
|
||||
estado: 0,
|
||||
id:"m_20"
|
||||
}
|
||||
],
|
||||
[
|
||||
{
|
||||
palabra: "quarter",
|
||||
estado: 0,
|
||||
id:"m_15"
|
||||
},
|
||||
{
|
||||
palabra: " ",
|
||||
estado: 0,
|
||||
id:""
|
||||
},
|
||||
{
|
||||
palabra: "half",
|
||||
estado: 0,
|
||||
id:"m_30"
|
||||
}
|
||||
],
|
||||
[
|
||||
{
|
||||
palabra: "ten",
|
||||
estado: 0,
|
||||
id:"m_10"
|
||||
},
|
||||
{
|
||||
palabra: "five",
|
||||
estado: 0,
|
||||
id:"m_5"
|
||||
},
|
||||
{
|
||||
palabra: " ",
|
||||
estado: 0,
|
||||
id:""
|
||||
},
|
||||
{
|
||||
palabra: "past",
|
||||
estado: 0,
|
||||
id:"past"
|
||||
}
|
||||
],
|
||||
[
|
||||
{
|
||||
palabra: "to",
|
||||
estado: 0,
|
||||
id:"to"
|
||||
},
|
||||
{
|
||||
palabra: " ",
|
||||
estado: 0,
|
||||
id:""
|
||||
},
|
||||
{
|
||||
palabra: "twelve",
|
||||
estado: 0,
|
||||
id:"h_0"
|
||||
},
|
||||
{
|
||||
palabra: "one",
|
||||
estado: 0,
|
||||
id:"h_1"
|
||||
}
|
||||
],
|
||||
[
|
||||
{
|
||||
palabra: "two",
|
||||
estado: 0,
|
||||
id:"h_2"
|
||||
},
|
||||
{
|
||||
palabra: "three",
|
||||
estado: 0,
|
||||
id:"h_3"
|
||||
},
|
||||
{
|
||||
palabra: "four",
|
||||
estado: 0,
|
||||
id:"h_4"
|
||||
}
|
||||
],
|
||||
[
|
||||
{
|
||||
palabra: "five",
|
||||
estado: 0,
|
||||
id:"h_5"
|
||||
},
|
||||
{
|
||||
palabra: "six",
|
||||
estado: 0,
|
||||
id:"h_6"
|
||||
},
|
||||
{
|
||||
palabra: "seven",
|
||||
estado: 0,
|
||||
id:"h_7"
|
||||
}
|
||||
],
|
||||
[
|
||||
{
|
||||
palabra: "eight",
|
||||
estado: 0,
|
||||
id:"h_8"
|
||||
},
|
||||
{
|
||||
palabra: "nine",
|
||||
estado: 0,
|
||||
id:"h_9"
|
||||
},
|
||||
{
|
||||
palabra: "ten",
|
||||
estado: 0,
|
||||
id:"h_10"
|
||||
}
|
||||
],
|
||||
[
|
||||
{
|
||||
palabra: " ",
|
||||
estado: 0,
|
||||
id:""
|
||||
},
|
||||
{
|
||||
palabra: " ",
|
||||
estado: 0,
|
||||
id:""
|
||||
},
|
||||
{
|
||||
palabra: " ",
|
||||
estado: 0,
|
||||
id:""
|
||||
},
|
||||
{
|
||||
palabra: "eleven",
|
||||
estado: 0,
|
||||
id:"h_11"
|
||||
},
|
||||
{
|
||||
palabra: " ",
|
||||
estado: 0,
|
||||
id:""
|
||||
},
|
||||
{
|
||||
palabra: " ",
|
||||
estado: 0,
|
||||
id:""
|
||||
},
|
||||
{
|
||||
palabra: " ",
|
||||
estado: 0,
|
||||
id:""
|
||||
}
|
||||
],
|
||||
[
|
||||
{
|
||||
palabra: " ",
|
||||
estado: 0,
|
||||
id:""
|
||||
},
|
||||
{
|
||||
palabra: "O'Clock",
|
||||
estado: 0,
|
||||
id:"m_0"
|
||||
},
|
||||
{
|
||||
palabra: " ",
|
||||
estado: 0,
|
||||
id:""
|
||||
},
|
||||
{
|
||||
palabra: "now",
|
||||
estado: 1,
|
||||
id:"now"
|
||||
}
|
||||
],
|
||||
]
|
||||
|
||||
|
||||
console.log(chalk.greenBright("---WordClock---"))
|
||||
|
||||
/**
|
||||
* Reinicia el display a sus valores por defecto
|
||||
*
|
||||
*/
|
||||
function resetDisplay(){
|
||||
display.map(fila=>{
|
||||
fila.map(columna=>{
|
||||
if(columna.id=="it"||columna.id=="is"||columna.id=="now"){
|
||||
display[display.indexOf(fila)][fila.indexOf(columna)].estado=1
|
||||
}else{
|
||||
display[display.indexOf(fila)][fila.indexOf(columna)].estado=0
|
||||
}
|
||||
})
|
||||
})
|
||||
return display
|
||||
}
|
||||
|
||||
/**
|
||||
* Crea la presentacion por pantalla y actualiza segun el estado del objeto display
|
||||
*/
|
||||
function actualizar_display() {
|
||||
console.clear()
|
||||
display.map(fila => {
|
||||
var show = []
|
||||
fila.map(columna => {
|
||||
//evaluar si la columna tiene un estado activo o inactivo y guardar el estado
|
||||
if (columna.estado == 0) {
|
||||
show.push(chalk.gray(columna.palabra))
|
||||
}else{
|
||||
show.push(chalk.yellowBright(columna.palabra))
|
||||
}
|
||||
})
|
||||
console.log(show.join(""))
|
||||
})
|
||||
return display
|
||||
}
|
||||
|
||||
/**
|
||||
* Actualiza el estado a activo
|
||||
* @param {string} id Recibe el id del elemento a actualizar
|
||||
*/
|
||||
function cambiar_estado(id){
|
||||
display.map(fila=>{
|
||||
fila.map(columna=>{
|
||||
//buscar la hora correspondiente mediante el id y cambiar su estado a 1
|
||||
if(columna.id==id){
|
||||
display[display.indexOf(fila)][fila.indexOf(columna)].estado=1
|
||||
}
|
||||
})
|
||||
})
|
||||
return display
|
||||
}
|
||||
|
||||
/**
|
||||
* Funcion de inicio. Configura la hora y los minutos y llama a las funciones que cambian los estados de cada palabra
|
||||
* @param {*}
|
||||
* @return {*}
|
||||
*/
|
||||
function hora() {
|
||||
resetDisplay()
|
||||
var now = new Date();
|
||||
var hour = now.getHours();
|
||||
var minute = now.getMinutes();
|
||||
var offset;
|
||||
var next;
|
||||
|
||||
hour = hour % 12;
|
||||
minute = minute - minute % 5;
|
||||
|
||||
if (minute > 30) {//si hay mas de 30 minutos
|
||||
//activa la hora pasada tanto
|
||||
cambiar_estado("h_"+(hour+1))
|
||||
|
||||
//activa el to
|
||||
cambiar_estado("to")
|
||||
|
||||
} else {
|
||||
//activa la hora correspondiente
|
||||
cambiar_estado("h_"+hour)
|
||||
if (minute !== 0) {
|
||||
//activa la palabra pasado /past
|
||||
cambiar_estado("past")
|
||||
}
|
||||
}
|
||||
|
||||
|
||||
offset = (minute > 30) ? (60 - minute) : minute;
|
||||
|
||||
minutes = {
|
||||
0: "m_0",
|
||||
5: "m_5",
|
||||
10:"m_10",
|
||||
15:"m_15",
|
||||
20:"m_20",
|
||||
30:"m_30",
|
||||
};
|
||||
|
||||
if (offset in minutes) {
|
||||
//activa los minutos
|
||||
cambiar_estado("m_"+offset)
|
||||
|
||||
} else if (offset === 25) {
|
||||
cambiar_estado("m_20")
|
||||
cambiar_estado("m_25")
|
||||
}
|
||||
|
||||
now.setTime(Date.now());
|
||||
next = new Date(now.getTime());
|
||||
next.setMinutes(minute + 5);
|
||||
next.setSeconds(0);
|
||||
next.setMilliseconds(0);
|
||||
actualizar_display()
|
||||
|
||||
return display
|
||||
}
|
||||
|
||||
/**
|
||||
* Permite reemplazar el array de display por el correspondiente segun el idioma seleccionado
|
||||
* @param {string} lang idioma a cambiar
|
||||
*/
|
||||
function cambiar_idioma(lang){
|
||||
if(lang=="es"||lang=="en"||lang=="eo"){
|
||||
display=language[lang]
|
||||
return lang
|
||||
}else{
|
||||
console.log("argumento desconocido, usando idioma por defecto")
|
||||
return "en"
|
||||
}
|
||||
|
||||
|
||||
}
|
||||
|
||||
cambiar_idioma(process.argv[2])
|
||||
hora()
|
||||
setInterval(hora,60000)
|
||||
|
||||
exports.cambiar_idioma=cambiar_idioma
|
||||
Reference in New Issue
Block a user