diff --git a/.gitignore b/.gitignore index e69de29b..07e6e472 100644 --- a/.gitignore +++ b/.gitignore @@ -0,0 +1 @@ +/node_modules diff --git a/tareas/clase-1/index.html b/tareas/clase-1/index.html deleted file mode 100644 index 29a6327b..00000000 --- a/tareas/clase-1/index.html +++ /dev/null @@ -1,12 +0,0 @@ - - - - - - r/Argentina programa | Intro a JavaScript | Tarea Clase 1 - - - - - - diff --git a/tareas/clase-1/tarea-clase-1.js b/tareas/clase-1/tarea-clase-1.js deleted file mode 100644 index 0ce39143..00000000 --- a/tareas/clase-1/tarea-clase-1.js +++ /dev/null @@ -1,105 +0,0 @@ -// crear una función que tome como parámetro el año actual y el año de nacimiento -// y calcule la edad del usuario (más o menos). -// Preguntarle estos datos al usuario y guardarlos en 2 variables -// Ejecutar la función con estos datos -// Impriman el resultado en la consola -function calcularEdad(anioActual, anioNacimiento) { - return anioActual - anioNacimiento; -} - -const anioActual = Number(prompt("Cuál es el año actual?")); -const anioNacimiento = Number(prompt("En qué año naciste?")); - -console.log('Tenés ' + calcularEdad(anioActual, anioNacimiento) + ' años'); - -// Preguntar el salario anual y calcular el salario mensual -// Preguntar el salario mensual y calcular el anual -// diario... semanal, por hora. etc. - -function calcularSalarioAnual(salarioMensual) { - const cantidadMesesEnUnAnio = 12; - return salarioMensual * cantidadMesesEnUnAnio; -} - -function calcularSalarioMensual(salarioAnual) { - const cantidadMesesEnUnAnio = 12; - return salarioAnual / cantidadMesesEnUnAnio; -} - -function calcularSalarioSemanal(salarioAnual) { - const cantidadSemanasEnUnAnio = 52; - return salarioAnual / cantidadSemanasEnUnAnio; -} - -function calcularSalarioDiario(salarioAnual) { - const cantidadDiasEnUnAnio = 365; - return salarioAnual / cantidadDiasEnUnAnio; -} - -const salarioMensual = Number(prompt('Cuál es tu salario mensual?')); -console.log('Tu salario anual es ' + calcularSalarioAnual(salarioMensual)); - -const salarioAnual = Number(prompt('Cuál es tu salario mensual?')); -console.log('Tu salario mensual es ' + calcularSalarioMensual(salarioAnual)); -console.log('Tu salario semanal es ' + calcularSalarioSemanal(salarioAnual)); -console.log('Tu salario diario es ' + calcularSalarioDiario(salarioAnual)); - -/// SCOPE - -// Variable hoisting -> izar -// console.log(hola); //Falla porque no está definida - -// console.log(mensaje); //No falla, pero muestra undefined... por qué? -// var mensaje = 'Hola, mundo'; -// console.log(mensaje); //Hola, mundo - -// Y con let? -// let mensaje = 'Hola, mundo'; -// console.log(mensaje); //error - -// function hoisting - -/* -pruebaHoisting(); //funciona! -function pruebaHoisting(){ - console.log('prueba'); -} -//pruebaHoisting(); -*/ - -/* -var a = 1; //global -let b = 2; //global - -function prueba(c) { //c es un parámetro de la función prueba. LOCAL. - let d = 4; //local a la función - - if(c === 3){ - var e = 5; // por hoisting termina siendo local a la función - let f = 6; // local al IF - - console.log('a dentro del if vale: ' + a); // 1 - console.log('b dentro del if vale: ' + b); // 2 - console.log('c dentro del if vale: ' + c); // lo que sea que le pasen a prueba - console.log('d dentro del if vale: ' + d); // 4 - console.log('e dentro del if vale: ' + e); // 5 - console.log('f dentro del if vale: ' + f); // 6 - } - - console.log('a dentro de la funcion pero fuera del if, vale: ' + a); // 1 - console.log('b dentro de la funcion pero fuera del if, vale: ' + b); // 2 - console.log('c dentro de la funcion pero fuera del if, vale: ' + c); // lo que sea que le pasen a prueba - console.log('d dentro de la funcion pero fuera del if, vale: ' + d); // 4 - console.log('e dentro de la funcion pero fuera del if, vale: ' + e); // 5 - // console.log('f dentro de la funcion pero fuera del if, vale: ' + f); // error -} - -prueba(3); - -console.log('a vale: ' + a); // 1 -console.log('b vale: ' + b); // 2 -// console.log('c vale: ' + c); // error -// console.log('d vale: ' + d); // error -// console.log('e vale: ' + e); // error -// console.log('f vale: ' + f); // error -*/ diff --git a/tareas/clase-2/index.html b/tareas/clase-2/index.html deleted file mode 100644 index f000bd76..00000000 --- a/tareas/clase-2/index.html +++ /dev/null @@ -1,12 +0,0 @@ - - - - - - r/Argentina programa | Intro a JavaScript | Tarea Clase 2 - - - - - - diff --git a/tareas/clase-2/tarea-clase-2.js b/tareas/clase-2/tarea-clase-2.js deleted file mode 100644 index 1299b468..00000000 --- a/tareas/clase-2/tarea-clase-2.js +++ /dev/null @@ -1,44 +0,0 @@ -// TAREA: Tenemos 2 funciones de la tarea anterior -- 'sumar' y 'restar' -// Vamos a decirle a la máquina qué función tiene que correr, -// dependiendo del operador artmético (+, -, /, *, etc.) -// -// Si el (IF) operador es '+', vamos a usar la función para sumar. -// Si no (ELSE), vamos a usar la función para restar. -// -// Paso 1 - Crear una variable llamada 'operador' y asignarle el valor '+'. -// Paso 2 - Crear 2 variables que contengan 2 números cualquiera. -// Paso 3 - Crear una condición if/else basada en el operador que tenemos. -// -// Si (if) tenemos un operador igual a '+', llamamos (ejecutamos. sumar(1,2)) la función -// 'sumar' con nuestros números (las variables del paso 2). -// Si no (else), tenemos que llamar la función 'restar', con nuestros números (las variables del paso 2). -// -// No se olviden de hacer un console.log para ver el resultado! -// - -// TAREA: Cambiar el operador a '-', y fijarse que llame a la función 'restar' en vez de a la de 'sumar'. - -function sumar(numero1, numero2) { - return numero1 + numero2; -} - -function restar(numero1, numero2) { - return numero1 - numero2; -} - -const operador = prompt('Ingrese + o -'); -const numero1 = 1; -const numero2 = 2; - -let resultado; -if (operador === '+') { - resultado = sumar(numero1, numero2); -} else { - resultado = restar(numero1, numero2); -} - -//https://developer.mozilla.org/es/docs/Web/JavaScript/Referencia/template_strings -console.log( - `El resultado de ${numero1} ${operador} ${numero2} es ${resultado}` -); - diff --git a/tareas/clase-3/index.html b/tareas/clase-3/index.html deleted file mode 100644 index f607bd35..00000000 --- a/tareas/clase-3/index.html +++ /dev/null @@ -1,12 +0,0 @@ - - - - - - r/Argentina programa | Intro a JavaScript | Tarea Clase 3 - - - - - - diff --git a/tareas/clase-3/tarea-clase-3.js b/tareas/clase-3/tarea-clase-3.js deleted file mode 100644 index cbc989b9..00000000 --- a/tareas/clase-3/tarea-clase-3.js +++ /dev/null @@ -1,21 +0,0 @@ -// Tarea 1: -// Preguntarle al usuario su nombre. -// Si el nombre del usuario es el mismo que el de ustedes -// Imprimir "Hola, Tocayo! Yo también me llamo " y su nombre. -// Elijan otro nombre, puede ser de un pariente, amigo, conocido. -// Si el nombe del usuario es el mismo que el que nombre que eligieron -// Imprimir "Hola " y el nombre, " te llamás igual que mi ..." -// Si no, simplemente imprimir "Hola " + nombre! - -//Tarea 2: -// Preguntar la edad del usuario -// Hacerle saber si tiene más, menos ó la misma edad que nosotros. - -//Tarea 3: -// Preguntarle al usuario si tiene documento, y que conteste con "si" o "no". -// Si dice si, preguntarle la edad. -// Si la edad es mayor a 18, dejarlo entrar al bar. -// Si la edad es menor a 18, no dejarlo entrar al bar. -// Si no tiene documento, no dejarlo entrar al bar. -// Si no entendemos la respuesta, le decimos que no entendimos la respuesta. -// Punto bonus: SI, NO, Si, No, si, no. diff --git a/tareas/clase-4/index.html b/tareas/clase-4/index.html deleted file mode 100644 index 57e8ba0a..00000000 --- a/tareas/clase-4/index.html +++ /dev/null @@ -1,12 +0,0 @@ - - - - - - r/Argentina programa | Intro a JavaScript | Tarea Clase 4 - - - - - - diff --git a/tareas/clase-4/tarea-clase-4-algoritmos.js b/tareas/clase-4/tarea-clase-4-algoritmos.js deleted file mode 100644 index 185ec86b..00000000 --- a/tareas/clase-4/tarea-clase-4-algoritmos.js +++ /dev/null @@ -1,155 +0,0 @@ -//Link original y créditos a https://github.com/CodeGuppyPrograms/CodingChallenges (contiene las respuestas). - -/* -Estos desafíos de coding están enfocados para los principiantes, por lo tanto las soluciones fueron implementadas -usando elementos de programación simples y clásicos. -*/ - -/* -Desafío de programación #1: Imprimí los números del 1 al 10 - - Resultado: 10 9 8 7 6 5 4 3 2 1 - - Desafìo de programación #2: Imprimí los números impares del 1 al 100 - - 1 3 5 ... 99 - -Desafío de programación #3: Imprimí la tabla de multiplicación del 7 - - 7x0 = 0 - 7x1 = 7 - ... - 7x9 = 63 - -Desafío de programación #4: Imprimí todas las tablas de multiplicación del 1 al 9 - - 1x0 = 0 - ... - 1x9 = 9 - 2x0 = 0 - ... - 2x9 = 18 - ... - ... - 9x9 = 81 - -Desafío de programación #5: Calcula el resultado de la suma de los numeros del 1 al 10 en un array. - [1,2,3,4,5,6,7,8,9,10] - - 1 + 2 + 3 + ... + 10 = ? //hacerlo con un array y un bucle - -Desafío de programación #6: Calcula 10! (10 factorial) - - 10 * 9 * 8 * ... * 1 - -Desafío de programación #7: Calcula la suma de todos los números impares mayores que 10 y menores que 30 - -Desafío de programación #8: Crea una función que convierta de Celsius a Fahrenheit - -Desafío de programación #9: Crea una función que convierta de Fahrenheit a Celsius - -Desafío de programación #10: Calcula la suma de todos los números en un array de números - -Desafío de programación #11: Calcula el promedio de todos los números en un array de números. (en una función) - -Desafío de programación #12: Crea una función que reciba un array de números y devuelva un array conteniendo solo los números positivos - -Desafío de programación #13: Find the maximum number in an array of numbers - -Desafío de programación #14: Imprimir los primeros 10 dígitos de Fibonacci sin recursión - -Fibonacci (lo buscan en google si no lo saben o no se acuerdan) -El resultado debería ser: 0, 1, 1, 2, 3, 5, 8, 13, 21, 34, 55 - -Desafío de programación #15: Crear una función que encuentre el número n de Fibonacci usando recursión - -Desafío de programación #16: Crear una función que dado un número retorne un Boolean (true/false) dependiendo si es primo o no. - -Desafío de programación #17: Calcular la suma de los dígitos positivos de un número entero positivo -Ejemplo: - 123 = 1 + 2 + 3 = 6 - 2 = 2 - 1234 = 1 + 2 + 3 + 4 = 10 - -Desafío de programación #18: Imprimir los primeros 100 números primos - -Desafío de programación #19: Crear una función que retorne un array con los primeros números "n-primos" mayores que un número particular definido "alComienzo" -Ejemplo: - Quiero los primeros 4 números primos mayores que 5, el resultado debería ser: [7,11,13,17,19] - -Desafío de programación #20: Rotar un array hacia la izquierda una posición -Ejemplo: - [9,1,2,3,4] debería quedar como [1,2,3,4,9] - [5] debería quedar como [5] - [4,3,2,1] debería quedar como [3,2,1,4] - -Desafío de programación #21: Rotar un array a la derecha una posición -Ejemplo: - [2,3,4,1] debería quedar como [1,2,3,4] - [2,3] debería quedar como [3,2] - -Desafío de programación #22: Invertir un array -Ejemplo: - [1,2,3,4] debería quedar como [4,3,2,1] - [6,5,4,3,2,1] debería quedar como [1,2,3,4,5,6] - [5,6,3] debería quedar como [3,6,5] - -Desafío de programación #23: Invertir una cadena de caracteres -Ejemplo: - "dabale arroz a la zorra el abad" debería quedar como "daba le arroz al a zorra elabad" - "bienvenido" debería quedar como "odinevneib" - -Desafío de programación #24: Crear una función que reciba dos dos arrays (arreglos) como argumentos y returne el resultado en un nuevo arreglo -Ejemplo: - [1,2,3] con ["a","b","c"] debería quedar como [1,2,3,"a","b","c"] - - -Desafío de programación #25: Crear una función que reciba dos arrays (arreglos) de números como argumentos y retorne un array con números que estén en uno u otro array, pero NO en ambos. -Nota: Esto se llama "diferencia simétrica" entre conjuntos - -Desafío de programación #25: Crear una función que reciba dos arrays (arreglos) de números como argumentos y retorne un array con números que estén en uno u otro array, pero NO en ambos. -Ejemplo: - [1,2,3] y [3,7,11] debería devolver [1,2,7,11] - [5,10,3] y [10,1] debería quedar como [5,3,1] - -Desafío de programación #26: Crear una función que reciba dos arrays de números y retorne un nuevo array con los elementos que se encuentren en el primer array, pero no en el segundo -Nota; Esto se llama "resta" entre conjuntos -Ejemplo: - [5,1,2,3,4] y [3,4] debería devolver [5,1,2] - -Desafío de programación #27: Crear una función que reciba un array de números como argumento y retorne un array con los elementos distintos -Ejemplo: - [1,2,3,4,5,4,3,2,1,0] debería retornar [1,2,3,4,5,0] - - -==== FALTAN TRADUCIR -Desafío de programación #28: Calculate the sum of first 100 prime numbers -Desafío de programación #29: Print the distance between the first 100 prime numbers -Desafío de programación #30-a: Create a function that will add two positive numbers of indefinite size. The numbers are received as strings and the result should be also provided as string. -Desafío de programación #30-b: Create a function that will add two positive numbers of indefinite size. The numbers are received as strings and the result should be also provided as string. -Desafío de programación #31-a. Create a function that will return the number of words in a text -Desafío de programación #31-b. Create a function that will return the number of words in a text -Desafío de programación #32. Create a function that will capitalize the first letter of each word in a text -Desafío de programación #33. Calculate the sum of numbers received in a comma delimited string -Desafío de programación #34. Create a function that will return an array with words inside a text -Desafío de programación #35. Create a function to convert a CSV text to a “bi-dimensional” array -Desafío de programación #36. Create a function that converts a string to an array of characters -Desafío de programación #37. Create a function that will convert a string in an array containing the ASCII codes of each character -Desafío de programación #38. Create a function that will convert an array containing ASCII codes in a string -Desafío de programación #39. Implement the Caesar cypher -Desafío de programación #40. Implement the bubble sort algorithm for an array of numbers -Desafío de programación #41. Create a function to calculate the distance between two points defined by their x, y coordinates -Desafío de programación #42. Create a function that will return a Boolean value indicating if two circles defined by center coordinates and radius are intersecting -Desafío de programación 43. Create a function that will receive a bi-dimensional array as argument and a number and will extract as a unidimensional array the column specified by the number -Desafío de programación #44. Create a function that will convert a string containing a binary number into a number -Desafío de programación #45. Create a function to calculate the sum of all the numbers in a jagged array (array contains numbers or other arrays of numbers on an unlimited number of levels) -Desafío de programación #46-a. Find the maximum number in a jagged array of numbers or array of numbers -Desafío de programación #46-b. Find the maximum number in a jagged array of numbers or array of numbers -Desafío de programación #47. Deep copy a jagged array with numbers or other arrays in a new array -Desafío de programación #48. Create a function to return the longest word(s) in a string -Desafío de programación #49. Shuffle an array of strings -Desafío de programación #50. Create a function that will receive n as argument and return an array of n unique random numbers from 1 to n. -Desafío de programación #51. Find the frequency of characters inside a string. Return the result as an array of objects. Each object has 2 fields: character and number of occurrences. -Desafío de programación #52. Calculate Fibonacci(500) with high precision (all decimals) -Desafío de programación #53. Calculate 70! with high precision (all decimals) - */ diff --git a/tareas/clase-4/tarea-clase-4.js b/tareas/clase-4/tarea-clase-4.js deleted file mode 100644 index 0cec85a7..00000000 --- a/tareas/clase-4/tarea-clase-4.js +++ /dev/null @@ -1,21 +0,0 @@ -// TAREA: Imprimí cada 3er número del 3 al 22 usando un 'bucle for'. - - -// TAREA: Usando un bucle 'while', decile a tu computadora que registre los números de -// diez a uno. - - -// TAREA: Ha llegado el momento de un ejercicio clásico: 'FizzBuzz'. -// Cuenta del 1 al 50 e imprime los números: -// * Si un número es múltiplo de tres, imprime 'Fizz'. -// * Si es un múltiplo de 5, imprime 'Buzz'. -// * Si es un múltiplo de 3 y 5, imprime 'FizzBuzz'. -// * Para todo lo demás, imprime el número mismo. -// NOTA: Es posible que desees utilizar el operador aritmético modulo (%): -// Calcula el resto al dividir. -// 10% 3 = 1 - en 10 tenemos 3 * 3 + 1 -// 16% 4 = 0 - en 16 tenemos 4 * 4 -// 19% 4 = 3 - en 19 tenemos 4 * 4 + 3, etc. - -// Calcular el promedio de todos los números en un array de números. (y ponerlo en una función) -// ej.: calcularPromedio([10,5,4,2,8]) \ No newline at end of file diff --git a/tareas/clase-5/.vscode/launch.json b/tareas/clase-5/.vscode/launch.json new file mode 100644 index 00000000..822e5d1e --- /dev/null +++ b/tareas/clase-5/.vscode/launch.json @@ -0,0 +1,17 @@ +{ + // Use IntelliSense to learn about possible attributes. + // Hover to view descriptions of existing attributes. + // For more information, visit: https://go.microsoft.com/fwlink/?linkid=830387 + "version": "0.2.0", + "configurations": [ + { + "type": "node", + "request": "launch", + "name": "Launch Program", + "skipFiles": [ + "/**" + ], + "program": "${file}" + } + ] +} \ No newline at end of file diff --git a/tareas/clase-5/05. tarea 01/index.html b/tareas/clase-5/05. tarea 01/index.html new file mode 100644 index 00000000..1a96cf11 --- /dev/null +++ b/tareas/clase-5/05. tarea 01/index.html @@ -0,0 +1,135 @@ + + + + + + + + + + Clase 5 + + +

Monthly salary calculator

+
+ + + +
+ + + +

+
+ + +
+ + + + + + \ No newline at end of file diff --git a/tareas/clase-5/tarea-clase-5.js b/tareas/clase-5/05. tarea 01/tarea-clase-5.js similarity index 84% rename from tareas/clase-5/tarea-clase-5.js rename to tareas/clase-5/05. tarea 01/tarea-clase-5.js index ecece12f..690e629e 100644 --- a/tareas/clase-5/tarea-clase-5.js +++ b/tareas/clase-5/05. tarea 01/tarea-clase-5.js @@ -1,3 +1,15 @@ + +const $botonCalcular = document.querySelector("#boton-calcular"); + +$botonCalcular.onclick = function() { + const salarioAnual = Number(document.querySelector("#salarioanual").value); + const salarioMensual = salarioAnual / 12 + console.log(salarioMensual) + document.getElementById("salario-mensual").value = salarioMensual; + // document.getElementById("salario-mensual").innerHTML = salarioMensual; + return false; +} + /* Cosas a tener en cuenta: 1. Los no tienen .innerText, en vez de eso, usan .value. https://developer.mozilla.org/es/docs/Web/HTML/Elemento/input @@ -17,11 +29,17 @@ $botonCalcular.onclick = function() } */ -//TAREA: completar tareas/clase-5/index.html para que incluya tarea-clase-5.js + +// PRIMERA TAREA - DONE +//TAREA: completar tareas/clase-5/index.html para que incluya tarea-clase-5.js * //TAREA: crear un formulario donde un usuario pueda ingresar su salario anual. //cuando el usuario haga click en el botón "calcular", mostrar el salario mensual // en una caja de texto deshabilitada. --> + + + +// SEGUNDA TAREA //TAREA: En otro archivo html (no Index) y otro archivo js (no tarea-clase-5.js), // creá un formulario que capture el primer nombre, segundo nombre, apellido/s y edad del usuario // también vamos a crear un

que diga Bienvenido! @@ -41,6 +59,7 @@ Ejemplo form: * * */ +// TERCERA TAREA //TAREA: En otro archivo distinto, // Por cada clase de r/argentina programa existente, vamos a pedir: // horas, minutos y segundos de cada video. Ej. Si un video dura @@ -49,6 +68,8 @@ Ejemplo form: // al apretar el botón "Calcular tiempo total", debe mostrar en un // pre-creado el tiempo total de los videos. + +// CUARTA TAREA //TAREA: En otro archivo distinto, // Crear una lista de
    y
  1. que contengan sólo números. // Convertir esos números a un array y: diff --git a/tareas/clase-5/05. tarea 02/css/styles.css b/tareas/clase-5/05. tarea 02/css/styles.css new file mode 100644 index 00000000..6b2201db --- /dev/null +++ b/tareas/clase-5/05. tarea 02/css/styles.css @@ -0,0 +1,147 @@ +body { + text-align: center; + background-image: url(https://images.unsplash.com/photo-1473093295043-cdd812d0e601?ixlib=rb-1.2.1&ixid=eyJhcHBfaWQiOjEyMDd9&auto=format&fit=crop&w=1750&q=270) +} + +.box{ + position: relative; + width: 562px; +} + +.box .text{ + position: absolute; + z-index: 999; + margin: 0 auto; + left: 0; + right: 0; + top: 18%; + text-align: center; + width: 80%; +} + +#pasta-header { + font-size: 50px; + font-family:Georgia, 'Times New Roman', Times, serif; + color: #c63202; + box-shadow: white; + text-shadow: 0 0 6px #fff; + margin-top: 8%; + font-weight: bold; +} +strong { + text-align: center; + font-size: 20px; + font-family:Georgia, 'Times New Roman', Times, serif; + font-weight: bold; +} +form { + text-align: left; + display: inline-block; + font-family:Arial, Helvetica, sans-serif; + width: 700px; + background-color: rgba(185, 250, 124, 0.838); + padding: 20px; + border-radius: 8px; +} + +#age { + width: 150px; +} + +label{ + font-family: Georgia, 'Times New Roman', Times, serif; + font-size: 18px; + text-align:left; + font-weight: bold; +} + +input, +textarea{ + font-family: Georgia, 'Times New Roman', Times, serif; + font-size: 18px; + border-radius: 4px; + width: 150px; + height: 22px; + box-sizing: border-box; + border: 1px solid #999; + margin-left: 30px; + padding-left: 10px; +} + +input#email { + width: 300px; +} + +#join-button { + font-family: Georgia, 'Times New Roman', Times, serif; + font-size: 20px; + /*background-color: rgba(185, 250, 124, 0.838);*/ + border: none; + border-radius: 8px; + /*width: 70px; + height: 30px;*/ + border: 2px solid white; + transition-duration: 0.2s; +} + + +#join-button:hover { + font-weight: bold; + background-color: #c63202; + +} + +#two { + background-color: white; +} + +#reveal-text{ + display: none; +} +#welcome-text{ + vertical-align: middle; + font-size: 20px; + font-family: Georgia, 'Times New Roman', Times, serif; + +} +#under-18{ + display: none; +} + +#text-under-18{ + vertical-align: middle; + font-size: 20px; + font-family: Georgia, 'Times New Roman', Times, serif; +} + +table { + background-color:rgb(239, 226, 210, 0.838); + margin-top: 30px; + width: 700px; + height: 460px; + padding: 20px; + margin: 50px; + border-radius: 8px; + text-align: center; +} +th { + font-family: Georgia, 'Times New Roman', Times, serif; + font-size: 20px; + margin-top: 50px; + padding-bottom: 10px; +} +td { + padding: 10px; +} +td, +img { + border-radius: 6px; +} + +.member-img { + transition-duration: 0.2s; +} + +.member-img:hover { + opacity: 0.500; +} \ No newline at end of file diff --git a/tareas/clase-5/05. tarea 02/index.html b/tareas/clase-5/05. tarea 02/index.html new file mode 100644 index 00000000..155f6529 --- /dev/null +++ b/tareas/clase-5/05. tarea 02/index.html @@ -0,0 +1,131 @@ + + + + + + + + + + + The Pasta Club + + +
    +
    + Frame +

    Welcome to
    the Pasta Club!

    +
    +

    +
    + Please fill in the form if you'd like to join: +

    +
    +
    + +
    +
    + +
    +
    + +
    +
    +
    + + +
    + +
    +
    + +
    +
    + +
    +
    +
    @
    +
    + +
    +
    +
    +
    +
    +
    +
    +
    +
    Hey there,

    ! +We are pleased to announce you are now a member of our club! We will log you in with an assigned username:

    -

    +
    You may change your username and password only after verifying your e-mail address. An e-mail with a secret link should be waiting for you in your inbox! +
    +
    + + + + + + + + + + + + + + + + +
    Meanwhile, you can take a peek at
    what our wonderful members are doing...
    + + summer-squash-vegan-mac-n-cheese-with-herb-pesto + + + + simplest-zucchini-parmesan-pasta + + + + the-best-weeknight-pasta-sauce + + + + stovetop-mac-and-cheese + +
    + + arrabiata-pasta-with-shrimp + + + + cashew-pesto-pasta + + + + garlic-herb-spaghetti-with-baked-chicken-meatballs + + + + fusilli-alfredo-with-mushrooms + +
    +
    + +
    You are under 18, thus, you are not allowed to join. Thank you so much for your interest. + You might want to check out our Kids Pasta Club! Where fun is what counts
    + + + + + + + \ No newline at end of file diff --git a/tareas/clase-5/05. tarea 02/pasta.js b/tareas/clase-5/05. tarea 02/pasta.js new file mode 100644 index 00000000..54938810 --- /dev/null +++ b/tareas/clase-5/05. tarea 02/pasta.js @@ -0,0 +1,78 @@ +// SEGUNDA TAREA +//TAREA: En otro archivo html (no Index) y otro archivo js (no tarea-clase-5.js), +// creá un formulario que capture el primer nombre, segundo nombre, apellido/s y edad del usuario +// también vamos a crear un

    que diga Bienvenido! +// vas a crear un botón de acción que una vez que lo apretás, va a +// mostrar toda la información junta en un campo de texto +// Y va a cambiar el

    para decir "Bienvenido, nombreDeUsuario"! +/* +const $botonCalcular = document.querySelector("#boton-calcular"); + +$botonCalcular.onclick = function() { + const salarioAnual = Number(document.querySelector("#salarioanual").value); + const salarioMensual = salarioAnual / 12 + console.log(salarioMensual) + document.getElementById("salario-mensual").value = salarioMensual; + // document.getElementById("salario-mensual").innerHTML = salarioMensual; + return false; +} +*/ + + + +function getInputIntoText() { + userName = document.getElementById('name').value; + const userSecondName = document.getElementById('second_name').value; + const userSurname = document.getElementById('surname').value; + const userAge = Number(document.getElementById('age').value); + document.getElementById('usernameText').replaceWith(userName) + document.getElementById('userSecondNameText').replaceWith(userSecondName) + document.getElementById('userSurnameText').replaceWith(userSurname) + document.getElementById('userAgeText').replaceWith(userAge) + document.getElementById('assignedUsernameText').replaceWith(userName) +}; + +var userName; +const $joinButton = document.querySelector("#join-button"); + +$joinButton.onclick = function() { + + getInputIntoText(); +if (Number(document.getElementById('age').value) > 18){ +// get the element +var div1 = document.getElementById('form-hide'); + +// set an event listener for it + div1.addEventListener('click',function(){ + + this.parentNode.removeChild(this); + + document.querySelector("#reveal-text").style.display = "block"; + + const newPastaHeader = `Welcome to
    the Pasta Club, ${userName}!` + document.getElementById('pasta-header').innerHTML = newPastaHeader + document.querySelector("h1").style.marginTop = "3%"; +}); + +} +else{ + var div1 = document.getElementById('form-hide'); + +// set an event listener for it + div1.addEventListener('click',function(){ + + this.parentNode.removeChild(this); + + document.querySelector("#under-18").style.display = "block"; + + const newPastaHeader = `We are sorry...` + document.getElementById('pasta-header').innerHTML = newPastaHeader + document.querySelector("h1").style.marginTop = "15%"; +}); +} + + + + + +} \ No newline at end of file diff --git a/tareas/clase-5/05. tarea 03/argprogcalculator.js b/tareas/clase-5/05. tarea 03/argprogcalculator.js new file mode 100644 index 00000000..75c6ea5e --- /dev/null +++ b/tareas/clase-5/05. tarea 03/argprogcalculator.js @@ -0,0 +1,82 @@ +// TERCERA TAREA +//TAREA: En otro archivo distinto, +// Por cada clase de r/argentina programa existente, vamos a pedir: +// horas, minutos y segundos de cada video. Ej. Si un video dura +// 2 horas, 38 minutos y 20 segundos, vamos a rellenar 3 campos de texto con +// cada dato. +// al apretar el botón "Calcular tiempo total", debe mostrar en un +// pre-creado el tiempo total de los videos. + +const $calculateButton = document.querySelector('#calculate-button'); + +let hoursSum; +let minutesSum; +let secondsSum; + + +function sumHours () { + hoursSum = 0; + let n = 0; + for (let i = 0; i < (document.getElementsByClassName('hours').length); i++) { + let hoursClass = Number(document.getElementsByClassName('hours').item(n).value) + hoursSum += hoursClass + n += 1 + + + }; +}; + +function sumMinutes () { + minutesSum = 0; + let n = 0; + for (let i = 0; i < (document.getElementsByClassName('minutes').length); i++) { + let minutesClass = Number(document.getElementsByClassName('minutes').item(n).value) + minutesSum += minutesClass + n += 1 + + + } +}; + +function sumSeconds () { + secondsSum = 0; + let n = 0; + for (let i = 0; i < (document.getElementsByClassName('seconds').length);i++) { + let secondsClass = Number(document.getElementsByClassName('seconds').item(n).value) + secondsSum += secondsClass + n += 1 + } +} + +function moreSecondsThanSixty () { +while (secondsSum >= 60) { + secondsSum -= 60; + minutesSum+=1; +}; +}; + +function moreMinutesThanSixty () { +while (minutesSum >= 60) { + minutesSum -= 60; + hoursSum += 1; +}; +}; + +function showResult () { + const result = `${hoursSum} : ${minutesSum} : ${secondsSum}` + document.getElementById('total-time').innerHTML = result; + // document.getElementById('total-time').replaceWith(result) +} + + +$calculateButton.onclick = function() { + document.querySelector('#reveal-result').style.display = 'block'; + sumHours(); + sumMinutes(); + sumSeconds(); + moreSecondsThanSixty(); + moreMinutesThanSixty(); + showResult(); + console.log(`${hoursSum} : ${minutesSum} : ${secondsSum}`) + return false; +} \ No newline at end of file diff --git a/tareas/clase-5/05. tarea 03/css/styles.css b/tareas/clase-5/05. tarea 03/css/styles.css new file mode 100644 index 00000000..ca0e5c34 --- /dev/null +++ b/tareas/clase-5/05. tarea 03/css/styles.css @@ -0,0 +1,102 @@ +body { + background-image: url(https://i.imgur.com/1SJe2wM.png) +} +form { + background-color: rgba(231, 237, 240, 0.811); + display: inline-block; + text-align: center; + font-family: 'Gill Sans', 'Gill Sans MT', Calibri, 'Trebuchet MS', sans-serif; + border-radius: 8px; + width: 950px; + margin-left: 20%; + margin-right: 20%; + padding-bottom: 10px; + padding-left: 30px; + padding-right: 30px; + +} + +h1 { + text-align: center; + font-size: 35px; +} + +.clases { + font-family: SFMono-Regular, Menlo, Monaco, Consolas, "Liberation Mono", "Courier New", monospace; + font-weight: bold; + color: rgb(25, 159, 204); +} + +#boxed-title { + background-color: rgb(91, 214, 255); + width: 100%; + height: 55px; +} + +.boxed-classes { + background-color: rgb(255, 255, 255); + width: 100%; + height: 32px; + padding-top: 5px; + margin-bottom: 15px; +} + +label { + font-size: 17px; + margin-right: 10px; +} + +input { + margin-right: 30px; +} + +input, +textarea { + border-radius: 2px; + border: 2px solid rgb(91, 214, 255); + padding: 3px; +} + +.calculate-button { + text-align:center; + width: 10%; + height: 50px; + margin-left: 45%; + margin-right: 45%; + background-color: rgb(91, 214, 255); + border: none; + border-radius: 3px; + margin-top: 20px; + transition-duration: 0.2s; +} + +button:hover { + background-color: rgb(255, 255, 255, 0.600); + font-size: 23px; +} + +button, +text { + font-size: 25px; + font-family: 'Gill Sans', 'Gill Sans MT', Calibri, 'Trebuchet MS', sans-serif; + font-weight: bold; +} + +#reveal-result { + display: none; + text-align: center; +} + +#result-box { + margin-top: 40px; + background-color: rgb(91, 214, 255); + width: 750px; + height: 120px; + border-radius: 8px; + text-align: center; + font-size: 25px; + font-family: Arial, Helvetica, sans-serif; + padding-top: 30px; + display: inline-block; + margin-bottom: 40px; +} \ No newline at end of file diff --git a/tareas/clase-5/05. tarea 03/index.html b/tareas/clase-5/05. tarea 03/index.html new file mode 100644 index 00000000..3ba7bcaf --- /dev/null +++ b/tareas/clase-5/05. tarea 03/index.html @@ -0,0 +1,95 @@ + + + + Calculadora para el estudiante de r/ Argentina Programa + + + + +
    +

    Bienvenido a r/ Argentina Programa

    +
    +

    ¿Cuántas horas llevas estudiadas? ¡Nosotros te ayudamos a saber!

    + +
    CLASE 1
    +
    +
    + +
    +
    + +
    +
    + +
    +
    + +
    + +
    CLASE 2
    +
    +
    + +
    +
    + +
    +
    + +
    +
    +
    + +
    CLASE 3
    +
    +
    + +
    +
    + +
    +
    + +
    +
    +
    + +
    CLASE 4
    +
    +
    + +
    +
    + +
    +
    + +
    +
    +
    + +
    CLASE 5
    +
    +
    + +
    +
    + +
    +
    + +
    +
    +
    +
    + + + +
    +Tu tiempo total de estudio:
    +
    + + + + + \ No newline at end of file diff --git a/tareas/clase-5/05. tarea 04/css/styles.css b/tareas/clase-5/05. tarea 04/css/styles.css new file mode 100644 index 00000000..335ca12e --- /dev/null +++ b/tareas/clase-5/05. tarea 04/css/styles.css @@ -0,0 +1,172 @@ +body { + background-image: url(https://i.imgur.com/JJUiNqt.jpg); + text-align: center; +} + +.header-box{ + position: relative; + display: inline-block; + width: 657px; +} + +.header-box .text{ + position: absolute; + z-index: 999; + margin: 0 auto; + left: 0; + right: 5%; + top:40%; + text-align: center; + width: 80%; +} + +h1 { + font-family: Georgia, 'Times New Roman', Times, serif; + font-size: 50px; + color: rgb(24, 24, 24); + text-shadow: 0 0 6px #fff; +} + +h2 { + font-family: Georgia, 'Times New Roman', Times, serif; + font-size: 20px; + color: rgb(86, 197, 236); + text-shadow: 0 0 6px #fff; + margin-bottom: 30px; +} + +#grade-box { + background-color: rgba(255, 255, 255, 0.69); + padding-top: 20px; + padding-bottom: 20px; + width: 70%; + border-radius: 8px; + margin-bottom: 30px; +} + +input { + margin-left: 10px; + margin-right: 10px; + margin-top: 10px; + margin-bottom: 10px; +} + +input, +textarea { + border-radius: 4px; + border: 1px solid rgb(86, 197, 236); + padding: 4px; +} + +button { + border: none; + border-radius: 0.25rem; + width: 250px; + height: 50px; + font-size: 16px; + font-family: Georgia, 'Times New Roman', Times, serif; + font-weight: bold; + margin-left: 10px; + margin-right: 10px; + transition-duration: 0.4s; +} + +#add-grade { + border: 2px solid rgb(86, 197, 236); +} + +#add-grade:hover { + background-color: rgb(86, 197, 236); +} + +#average-button { + background-color: rgb(247, 228, 132); +} + +#lowest-button { + background-color: rgb(245, 160, 181); +} + +#highest-button { + background-color: rgb(86, 197, 236); +} + +#frequent-button { + background-color: rgb(141, 193, 181); +} + +#average-button:hover { + background-color: rgba(255, 255, 255, 0.69); +} + +#lowest-button:hover { + background-color: rgba(255, 255, 255, 0.69); +} +#highest-button:hover { + background-color: rgba(255, 255, 255, 0.69); +} +#frequent-button:hover { + background-color: rgba(255, 255, 255, 0.69); +} + +#reveal-average { + display: none +} +#reveal-lowest { + display: none +} +#reveal-highest { + display: none +} +#reveal-frequent { + display: none +} + +#average-box { + margin-top: 30px; + background-color: rgb(247, 228, 132); + width: 700px; + height: 120px; + border-radius: 6px; + padding-top: 30px; + margin-bottom: 20px; +} + +#lowest-box { + margin-top: 30px; + background-color: rgb(245, 160, 181); + width: 700px; + height: 120px; + border-radius: 6px; + padding-top: 30px; + margin-bottom: 20px; +} + +#highest-box { + margin-top: 30px; + background-color: rgb(86, 197, 236); + width: 700px; + height: 120px; + border-radius: 6px; + padding-top: 30px; + margin-bottom: 20px; +} + +#frequent-box { + margin-top: 30px; + background-color: rgb(141, 193, 181); + width: 700px; + height: 120px; + border-radius: 6px; + padding-top: 30px; + margin-bottom: 20px; +} + +label { + font-size: 20px; +} + +.result { + margin-top: 10px; + font-size: 30px; +} \ No newline at end of file diff --git a/tareas/clase-5/05. tarea 04/index.html b/tareas/clase-5/05. tarea 04/index.html new file mode 100644 index 00000000..8fc05c50 --- /dev/null +++ b/tareas/clase-5/05. tarea 04/index.html @@ -0,0 +1,68 @@ + + + + Grade data + + + + + +
    +
    + Frame +

    YOUR GRADE DATA

    +

    +
    +

    Insert your grades below to obtain info about them!

    + +
      +
    1. + +
    2. +
      +
    3. + +
    4. +
      +
    5. + +
    6. +
      +
    7. + +
    8. +
      +
      + +
    + + + + +
    +
    +
    + + + + +
    +
    +
    + +
    + +
    +
    + +
    +
    +
    +
    +
    + + + + \ No newline at end of file diff --git a/tareas/clase-5/05. tarea 04/number-list.js b/tareas/clase-5/05. tarea 04/number-list.js new file mode 100644 index 00000000..aa920736 --- /dev/null +++ b/tareas/clase-5/05. tarea 04/number-list.js @@ -0,0 +1,162 @@ +// CUARTA TAREA +//TAREA: En otro archivo distinto, +// Crear una lista de
      y
    1. que contengan sólo números. +// Convertir esos números a un array y: +// 1. calcular el promedio y mostrarlo en un pre-creado con el texto "El promedio es..." +// 2. obtener el número más pequeño y mostrarlo en un pre-creado con el texto "El número más pequeño es..." +// 3. obtener el número más grande y mostrarlo en un pre-creado con el texto "El número más grande es..." +// 4. obtener el número que más se repite y mostrarlo en un pre-creado con el texto "El número más frecuente es..." + +const $addGradeButton = document.querySelector('#add-grade'); +const $averageButton = document.querySelector('#average-button'); +const $lowestButton = document.querySelector('#lowest-button'); +const $highestButton = document.querySelector('#highest-button'); +const $frequentButton = document.querySelector('#frequent-button'); + +$addGradeButton.onclick = function() { +let tag = document.createElement("li") +let text = document.createElement("input") +text.setAttribute("type","number") +text.setAttribute("class","grades") +tag.appendChild(text) +const div = document.getElementById('add-rows'); +const br = document.createElement('br') +div.appendChild(tag); +div.appendChild(br); +}; +/* + +1) First, create a div section and add some text to it using

      tags. + +2) Create an element

      using document.createElement("p"). + +3) Create a text, using document.createTextNode(), so as to insert it in the above-created element("p"). + +4) Using appendChild() try to append the created element, along with text, to the existing div tag. + +Thus a new element is created(

      ) and appended to the existing element(

      ). +
    2. + +
    3. +*/ + +let array = []; +let average; +let min; +let max; +let mostFrequent; + +function HTMLCollectionToArray () { + let n = 0; + for (let i = 0; i < (document.getElementsByClassName('grades').length); i++) { + let item = Number(document.getElementsByClassName('grades').item(n).value) + array.push(item); + n += 1 + }; +}; + +function calculateAverage () { + let arraySum = 0; + let n = 0; + for (let i = 0; i < array.length; i++) { + let arrayItem = Number(array[n]); + arraySum += arrayItem; + n += 1 + } + + average = arraySum / array.length + + return average; +}; + +function lowestGrade () { + min = Math.min.apply(Math, array); + + return min; +}; + +function highestGrade () { + max = Math.max.apply(Math, array); + + return max; +}; + +function frequentGrade () { + let times = 1; + let m = 0; + let item; + for (let i=0; i < array.length; i++) + { + for (let j=i; j < array.length; j++) + { + if (array[i] == array[j]) + m++; + if (times - - - - - - Clase 5 - - - - - \ No newline at end of file diff --git a/tareas/clase-5/tarea1.html b/tareas/clase-5/tarea1.html deleted file mode 100644 index 85fa5b1d..00000000 --- a/tareas/clase-5/tarea1.html +++ /dev/null @@ -1,21 +0,0 @@ - - - - - - - Clase 5 - - -
      - - - - - - -
      - - - \ No newline at end of file diff --git a/tareas/clase-5/tarea1.js b/tareas/clase-5/tarea1.js deleted file mode 100644 index 5c714b92..00000000 --- a/tareas/clase-5/tarea1.js +++ /dev/null @@ -1,12 +0,0 @@ -document.querySelector('#calcular-salario-mensual').onclick = function(){ - const salarioAnual = Number(document.querySelector('#salario-anual').value); - const salarioMensual = calcularSalarioMensual(salarioAnual); - - document.querySelector('#salario-mensual').value = salarioMensual; - - return false; -} - -function calcularSalarioMensual(salarioAnual){ - return salarioAnual / 12; -} diff --git a/tareas/clase-6/06. tarea 01/functions01.js b/tareas/clase-6/06. tarea 01/functions01.js new file mode 100644 index 00000000..dce90d9d --- /dev/null +++ b/tareas/clase-6/06. tarea 01/functions01.js @@ -0,0 +1,260 @@ +function hideFirstForm (){ + document.getElementById('number-of-members').style.display = 'none'; +} + +function showSecondForm () { + document.getElementById('reveal-after').style.display = 'inline'; +} + +function createARowForEachMember () { + const numberOfFamilyMembers = Number(document.getElementById('family-members').value); + const $forRows = document.getElementById('add-rows'); + + for (let i = 0; i < numberOfFamilyMembers; i++) { + let index = i + 1; + const label = document.createElement('label'); + label.textContent = 'Member ' + index; + $forRows.appendChild(label); + + const li = document.createElement('li'); + const input = document.createElement('input'); + input.type = 'text'; + input.className = 'age'; + input.classList.add('form-control'); + input.name = i; + li.appendChild(input); + + + const br = document.createElement('br'); + $forRows.appendChild(br); + + const forErrors = document.createElement('div'); + forErrors.classList.add('error-hide'); + //forErrors.classList.add('invalid-feedback'); + forErrors.setAttribute("id", `error-container${i}`); + + li.appendChild(forErrors); + + console.log(forErrors); + + $forRows.appendChild(li); + $forRows.appendChild(br); + + //$forRows.appendChild(forErrors); + } + +} + +function clearForm() { + const invalidFields = document.querySelectorAll('.is-invalid'); + const invalidFeedback = document.querySelectorAll('.invalid-feedback'); + + for (let i = 0; i < invalidFields.length; i++){ + invalidFields[i].classList.remove('is-invalid'); + } + + for (let i = 0; i < invalidFields.length; i++){ + invalidFeedback[i].classList.remove('invalid-feedback'); + invalidFeedback[i].innerHTML = ''; + } +} + +function HTMLCollectionIntoArray(HTMLCollection) { + let array = []; +for (let i = 0; i < (HTMLCollection.length); i++) { + let item = Number(HTMLCollection.item(i).value) + array.push(item); +} + + return array; +} + +function getOldestMember(array) { + const oldest = Math.max.apply(Math, array); + return oldest; +} + +function getYoungestMember(array) { + const youngest = Math.min.apply(Math, array); + return youngest; +} + +function getAgeAverage(array) { + let arraySum = 0; + for (let i = 0; i < array.length; i++) { + let arrayItem = Number(array[i]); + arraySum += arrayItem; + } + + average = (arraySum / array.length).toFixed(0); + + return average; + +} + +function showResults(oldest, youngest, average) { + document.getElementById('oldest-member').value = oldest; + document.getElementById('youngest-member').value = youngest; + document.getElementById('age-average').value = average; +} + +function clearDataForNewCalculation (array) { + array = []; +} + + +// VALIDATION FUNCTIONS: + +function validarCantidadMiembros (cantidad) { + if(cantidad.trim().length === 0){ + return 'This field cannot be empty'; + }; + + if(cantidad === '0'){ + return 'This field cannot be equal to 0'; + }; + + const regexpDecimalEnglish = /^\d+\.\d{0,2}$/; + if(regexpDecimalEnglish.test(cantidad)) { + return 'This field cannot accept decimal numbers'; + }; + + const regexpDecimalEsp = /^\d+\,\d{0,2}$/; + if(regexpDecimalEsp.test(cantidad)) { + return 'This field cannot accept decimal numbers'; + }; + + if(!/^[0-9]*$/.test(cantidad)) { + return 'This field can only contain numbers'; + }; + + if(cantidad > 15) { + return 'This field cannot contain numbers over 15'; + }; + + return ''; +}; + +function validarEdadesDeMiembros (edad) { + + if(edad === 0){ + return 'This field cannot be empty or equal to 0'; + }; + + const regexpDecimalEnglish = /^\d+\.\d{0,2}$/; + if(regexpDecimalEnglish.test(edad)) { + return 'This field cannot accept decimal numbers'; + }; + + if(isNaN(edad)) { + return 'This field can only contain numbers'; + }; + + if(edad > 99) { + return 'This field cannot contain numbers over 99'; + }; + + return ''; + +}; + +function validarPrimerFormulario () { + const $form = document.querySelector('#number-of-members'); + clearErrors('01'); + let cantidad = $form.members.value; + + const errorCantidad = validarCantidadMiembros(cantidad); + const errors = { + members: errorCantidad + }; + + const success = manejarErrores(errors, $form) === 0; + + if(success){ + hideFirstForm(); + showSecondForm(); + createARowForEachMember(); + } + +}; + +function manejarErrores(errors, form) { + const keys = Object.keys(errors); + + + let cantidadErrores = 0; + + keys.forEach(function(key){ + const error = errors[key]; + + if(error){ + cantidadErrores ++, + form[key].classList.add('error'); + //console.log(error); + const $errors = document.querySelector('#errors01'); + $errors.classList.remove('error-hide'); + $errors.innerHTML = error; + form.style.height = '250px'; + form.members.classList.add('is-invalid') + } else { + form[key].className = ''; + } + }); + + return cantidadErrores; +} + +function manejarErrores02(errors, form) { + const keys = Object.keys(errors); + + + let cantidadErrores = 0; + + keys.forEach(function(key){ + const error = errors[key]; + + if(error){ + cantidadErrores ++, + form[key].classList.add('is-invalid'); + //console.log(form[key].classList); + const $forErrors = document.getElementById('error-container' + key); + $forErrors.classList.remove('error-hide'); + $forErrors.classList.add('invalid-feedback'); + $forErrors.innerText = error; + //console.log($forErrors); + + } else { + form[key].classList.add('correct'); + form[key].classList.remove('is-invalid'); + const $forErrors = document.getElementById('error-container' + key); + $forErrors.classList.add('error-hide'); + console.log($forErrors); + } + }); + + return cantidadErrores; +} + +function clearErrors(formnumber) { + document.querySelector(`#errors${formnumber}`).innerHTML = ''; +} + +function validarSegundoFormulario (array) { + const $form = document.querySelector('#family-ages'); + //clearErrors('02'); + let errorArray = []; + //console.log(array); + for (let i = 0; i < array.length; i++) { + errorArray.push(validarEdadesDeMiembros(array[i])); + }; + + const errors = Object.assign({}, errorArray); + + //console.log(errors); + + const success = manejarErrores02(errors, $form) === 0; + + if(success){ + return ''; + } +}; \ No newline at end of file diff --git a/tareas/clase-6/06. tarea 01/household01.js b/tareas/clase-6/06. tarea 01/household01.js new file mode 100644 index 00000000..ae81e0c7 --- /dev/null +++ b/tareas/clase-6/06. tarea 01/household01.js @@ -0,0 +1,38 @@ +const $nextStepButton = document.getElementById('next-step'); + +const $clearFormButton = document.getElementById('clear-form'); + +const $goBackButton = document.getElementById('go-back'); + +const $calculateButton = document.getElementById('calculate'); + + +$nextStepButton.onclick = function () { + validarPrimerFormulario(); + return false; +} + +$goBackButton.onclick = function() { + location.reload(); +} + +$clearFormButton.onclick = function() { + clearForm(); +} + +$calculateButton.onclick = function () { + + let array = HTMLCollectionIntoArray(document.getElementsByClassName('age')); + + if(validarSegundoFormulario(array) === ''){ + const oldest = getOldestMember(array); + const youngest = getYoungestMember(array); + const average = getAgeAverage(array); + showResults(oldest, youngest, average); + + clearDataForNewCalculation(array); + }; + + return false; +} + diff --git a/tareas/clase-6/06. tarea 01/index01.html b/tareas/clase-6/06. tarea 01/index01.html new file mode 100644 index 00000000..c2fe012b --- /dev/null +++ b/tareas/clase-6/06. tarea 01/index01.html @@ -0,0 +1,46 @@ + + + Household data + + + + + +
      +
      +
      How many people are there in your household?
      +
      + +
      +
      + +
      + +
      + +
      Please fill in the following boxes with the ages of your family members

      +
      +
      + + +
      + + +
      + + + + + + +
      + + +
      + +
      + + + + + diff --git a/tareas/clase-6/06. tarea 01/pruebas01.js b/tareas/clase-6/06. tarea 01/pruebas01.js new file mode 100644 index 00000000..d63cf763 --- /dev/null +++ b/tareas/clase-6/06. tarea 01/pruebas01.js @@ -0,0 +1,94 @@ +function probarGetOldestMember () { + console.assert( + getOldestMember([5, 7, 80]) === 80, + 'Get Oldest Member no devolvió el miembro con mayor edad', + ); +}; + +function probarGetYoungestMember () { + console.assert( + getYoungestMember([5, 7, 80]) === 5, + 'Get Youngest Member no devolvió el miembro con menor edad', + ); +}; + +function probarGetAgeAverage () { + console.assert( + getAgeAverage([5, 7, 80]) == 31, + 'Get Age Average no devolvió el promedio entre las edades de los miembros', + ); +}; + +probarGetOldestMember(); +probarGetYoungestMember(); +probarGetAgeAverage(); + +function probarValidarCantidadDeMiembros () { + console.assert( + validarCantidadMiembros('') === 'This field cannot be empty', + 'Validar Cantidad Miembros no validó que el campo no estuviera vacío' + ); + + console.assert( + validarCantidadMiembros('0') === 'This field cannot be equal to 0', + 'Validar Cantidad Miembros no validó que el campo no fuera igual a 0' + ); + + console.assert( + validarCantidadMiembros('1.2') === 'This field cannot accept decimal numbers', + 'Validar Cantidad Miembros no validó que el campo no contuviera números decimales' + ); + + console.assert( + validarCantidadMiembros('1,2') === 'This field cannot accept decimal numbers', + 'Validar Cantidad Miembros no validó que el campo no contuviera números decimales' + ); + + console.assert( + validarCantidadMiembros('asa') === 'This field can only contain numbers', + 'Validar Cantidad Miembros no validó que el campo contuviera únicamente números' + ); + + console.assert( + validarCantidadMiembros('20') === 'This field cannot contain numbers over 15', + 'Validar Cantidad Miembros no validó que el campo no contuviera números mayores a 15' + ); + + console.assert( + validarCantidadMiembros('4') === '', + 'Validar Cantidad Miembros no validó un campo válido' + ); +}; + +function probarValidarEdadesDeMiembros () { + + console.assert( + validarEdadesDeMiembros(0) === 'This field cannot be empty or equal to 0', + 'Validar Edad Miembros no validó que el campo no fuera igual a cero' + ); + + console.assert( + validarEdadesDeMiembros('1.2') === 'This field cannot accept decimal numbers', + 'Validar Edad Miembros no validó que el campo no contuviera decimales' + ); + + console.assert( + validarEdadesDeMiembros('asdas') === 'This field can only contain numbers', + 'Validar Edad Miembros no validó que el campo contuviera únicamente números' + ); + + console.assert( + validarEdadesDeMiembros('200') === 'This field cannot contain numbers over 99', + 'Validar Edad Miembros no validó que el campo no contuviera números mayores a 99' + ); + + console.assert( + validarEdadesDeMiembros('20') === '', + 'Validar Edad Miembros no validó un campo válido' + ); + +}; + +probarValidarCantidadDeMiembros(); +probarValidarEdadesDeMiembros(); + diff --git a/tareas/clase-6/06. tarea 01/styles01.css b/tareas/clase-6/06. tarea 01/styles01.css new file mode 100644 index 00000000..2eba319a --- /dev/null +++ b/tareas/clase-6/06. tarea 01/styles01.css @@ -0,0 +1,89 @@ +body { + background-image: url(https://i.imgur.com/X6n8zAe.jpg); +} + +h3 { + font-size: 20px; +} + +form { + font-family: 'Gill Sans', 'Gill Sans MT', Calibri, 'Trebuchet MS', sans-serif; + background-color: rgba(255, 255, 255, 0.774); + border-radius: 3px; + padding: 20px; + transition-duration: 0.4s; + margin: 40px; +} + +#number-of-members { + margin-top: 15%; + height: 200px; + width: 300px; + display: block; + transition-duration: 0.4s; +} + +#family-ages { + text-align: center; + width: 400px; + +} + +#results { + width: 1000px; +} + +.result-labels { + margin-left: 30px; +} + +input, +textarea { + border: 2px solid rgb(132, 241, 205); + text-align: center; + border-radius: 3px; + height: 30px; + margin: 10px; +} + +input:disabled, +textarea { + background-color: white; +} + +button { + font-size: 15px; + background-color: rgb(132, 241, 205); + border: none; + border-radius: 8px; + height: 30px; + width: 100px; + transition-duration: 0.1s; +} + +button:hover { + border: 2px solid rgb(132, 241, 205); + background-color: white; + + + +} + +#reveal-after { + display: none; +} + +ol, +li +{ + list-style-type: none; + margin: none; +} + +.error { + border: 2px solid red; +} + +.error-hide { + display: none; +} \ No newline at end of file diff --git a/tareas/clase-6/06. tarea 02/functions02.js b/tareas/clase-6/06. tarea 02/functions02.js new file mode 100644 index 00000000..3bf3ed43 --- /dev/null +++ b/tareas/clase-6/06. tarea 02/functions02.js @@ -0,0 +1,246 @@ +function createMembers(numberOfMembers) { + addMember(i, n); + i += 1; + n += 1; + +} + +function addMember (index, n) { + const div = document.createElement('div'); + + + const label = document.createElement('label'); + label.textContent = 'Annual salary of member ' + index; + + const input = document.createElement('input'); + input.type = 'text' + input.className = 'salary'; + input.classList.add('form-control'); + input.name = i; + + const br = document.createElement('br'); + + div.appendChild(label) + div.appendChild(input) + + + + const forErrors = document.createElement('div'); + forErrors.classList.add('error-hide'); + forErrors.setAttribute("id", `error-container${n}`); + + //div.appendChild(br); + div.appendChild(forErrors); + div.appendChild(br); + + + $rowsManipulation.appendChild(div); + //$rowsManipulation.appendChild(forErrors); + + +} + +function removeDinamicallyAddedRows () { + /*const lastDiv = document.getElementById(`error-container${n}`); + const lastField = document.getElementById*/ + + + const lastChild = $rowsManipulation.lastChild; + lastChild.remove(); + i = i - 1; + n = i - 1; + +} + +function HTMLCollectionIntoArray (HTMLCollection) { + let array = []; + for (let i = 0; i < (HTMLCollection.length); i++) { + let item = Number(HTMLCollection.item(i).value) + array.push(item); + /*if (HTMLCollection.item(i).value.length !== 0) { + array.push(item); + } */ + } + + return array; +} + +function getHighestAnnualSalary (array) { + const highest = Math.max.apply(Math, array); + + return highest; +} + +function getLowestAnnualSalary (array) { + const lowest = Math.min.apply(Math, array); + return lowest; +} + +function getAverage (array) { + + let arraySum = 0; + for (let i = 0; i < array.length; i++) { + let arrayItem = Number(array[i]); + arraySum += arrayItem; + } + + average = Number((arraySum / array.length).toFixed(2)); + + return average; +} + +function getMonthlyAverage (array) { + + let monthlyArray = []; + for (let i = 0; i < array.length; i++) { + let arrayItem = Number(array[i]); + let monthlyArrayItem = arrayItem / 12; + monthlyArray.push(monthlyArrayItem); + } + + let monthlyArraySum = 0; + for (let i = 0; i < monthlyArray.length;i++) { + let monthlyArrayItem = Number(monthlyArray[i]); + monthlyArraySum += monthlyArrayItem; + } + + monthlyAverage = Number((monthlyArraySum / monthlyArray.length).toFixed(2)); + + return monthlyAverage; + +} + +function showResults (highest, lowest, average, monthlyAverage) { + document.getElementById('highest-annual-salary').value = highest; + document.getElementById('lowest-annual-salary').value = lowest; + document.getElementById('annual-salary-average').value = average; + document.getElementById('monthly-salary-average').value = monthlyAverage; +} + +function clearDataForNewCalculation () { + annualSalaries = []; +} + + +// VALIDATION FUNCTIONS + +function validarSalarioAnual(salarioAnual) { + + if(salarioAnual === 0){ + return 'This field cannot be empty or equal to 0'; + }; + + const regexpDecimalEnglish = /^\d+\.\d{0,2}$/; + if(regexpDecimalEnglish.test(salarioAnual)) { + return 'This field cannot accept decimal numbers'; + }; + + if(isNaN(salarioAnual)) { + return 'This field can only contain numbers'; + }; + + return ''; +}; +/* +function clearErrors() { + document.querySelector('#errors').innerHTML = ''; +}*/ + +function manejarErrores(errors, form) { + const keys = Object.keys(errors); + + let cantidadErrores = 0; + + keys.forEach(function(key){ + const error = errors[key]; + + if(error){ + cantidadErrores ++; + form[key].classList.add('is-invalid'); + form[key].classList.add('error'); + const $forErrors = document.getElementById('error-container' + key); + console.log(key); + console.log($forErrors); + $forErrors.classList.remove('error-hide'); + $forErrors.classList.add('invalid-feedback'); + $forErrors.innerText = error; + console.log(error); + } else { + form[key].classList.add('correct'); + form[key].classList.remove('is-invalid'); + const $forErrors = document.getElementById('error-container' + key); + $forErrors.classList.add('error-hide'); + console.log($forErrors); + }; + + /* if(error){ + cantidadErrores ++, + form[key].classList.add('is-invalid'); + //console.log(form[key].classList); + const $forErrors = document.getElementById('error-container' + key); + $forErrors.classList.remove('error-hide'); + $forErrors.classList.add('invalid-feedback'); + $forErrors.innerText = error; + //console.log($forErrors); + + } else { + form[key].classList.add('correct'); + form[key].classList.remove('is-invalid'); + const $forErrors = document.getElementById('error-container' + key); + $forErrors.classList.add('error-hide'); + console.log($forErrors); + } */ + }); + + return cantidadErrores; +/* function manejarErrores02(errors, form) { + const keys = Object.keys(errors); + + + let cantidadErrores = 0; + + keys.forEach(function(key){ + const error = errors[key]; + + if(error){ + cantidadErrores ++, + form[key].classList.add('error'); + //console.log(error); + const $errors = document.querySelector('#errors02'); + $errors.classList.remove('error-hide'); + const errorContainer = document.createElement('li'); + const space = document.createElement('br'); + errorContainer.innerText = error; + $errors.appendChild(errorContainer); + $errors.appendChild(space); + //console.log($errors) + } else { + form[key].classList.add('correct'); + form[key].classList.remove('error'); + } + }); + + return cantidadErrores; +} */ +} + +function validarFormulario(array) { + const $form = document.querySelector('#income-form'); + // clearErrors(); + let errorArray = []; + for (let i = 0; i < array.length; i++) { + errorArray.push(validarSalarioAnual(array[i])); + }; + + console.log(errorArray); + console.log(array); + + const errors = Object.assign({}, errorArray); + + const success = manejarErrores(errors, $form) === 0; + + if(success){ + return ''; + }; + +}; \ No newline at end of file diff --git a/tareas/clase-6/06. tarea 02/household02.js b/tareas/clase-6/06. tarea 02/household02.js new file mode 100644 index 00000000..0dba1c70 --- /dev/null +++ b/tareas/clase-6/06. tarea 02/household02.js @@ -0,0 +1,48 @@ +/*TAREA: +Crear una interfaz que permita agregar ó quitar (botones agregar y quitar) inputs+labels para completar el +salario anual de cada integrante de la familia que trabaje. +Al hacer click en "calcular", mostrar en un elemento pre-existente el mayor salario anual, menor salario anual, +salario anual promedio y salario mensual promedio. + +Punto bonus: si hay inputs vacíos, ignorarlos en el cálculo (no contarlos como 0). +*/ + +const $addRowsButton = document.getElementById('add-rows-button') +const $removeRowsButton = document.getElementById('remove-rows-button') +const $rowsManipulation = document.getElementById('add-rows'); + + +let i = 2; +let n = 1; +$addRowsButton.onclick = function () { + const numberOfMembers = 1; + createMembers(numberOfMembers); + return false; +} + +$removeRowsButton.onclick = function () { + removeDinamicallyAddedRows(); + return false; +} + +const $calculateButton = document.getElementById('calculate-button') + + +$calculateButton.onclick = function() { + let annualSalaries = HTMLCollectionIntoArray(document.getElementsByClassName('salary')); + + if(validarFormulario(annualSalaries) === ''){ + const highest = getHighestAnnualSalary(annualSalaries); + const lowest = getLowestAnnualSalary(annualSalaries); + const average = getAverage(annualSalaries); + const monthlyAverage = getMonthlyAverage(annualSalaries); + + showResults (highest, lowest, average, monthlyAverage); + + clearDataForNewCalculation(); + } + + return false; + +}; + diff --git a/tareas/clase-6/06. tarea 02/index02.html b/tareas/clase-6/06. tarea 02/index02.html new file mode 100644 index 00000000..76700f1a --- /dev/null +++ b/tareas/clase-6/06. tarea 02/index02.html @@ -0,0 +1,45 @@ + + + Household income data + + + + + + +
      +
      +

      Please fill the following boxes with the annual salary of each of your family members

      + +
      +
      +
      +
      + + + + +
      + + + +
      +
      + +

      +
      + +

      +
      + +

      +
      + +
      +
      + + + + + + diff --git a/tareas/clase-6/06. tarea 02/pruebas02.js b/tareas/clase-6/06. tarea 02/pruebas02.js new file mode 100644 index 00000000..c4b884eb --- /dev/null +++ b/tareas/clase-6/06. tarea 02/pruebas02.js @@ -0,0 +1,58 @@ +function probarGetHighestAnnualSalary () { + console.assert( + getHighestAnnualSalary([5, 7, 80]) === 80, + 'Get Highest Annual Salary no devolvió el mayor salario anual', + ); +}; + +function probarGetLowestAnnualSalary () { + console.assert( + getLowestAnnualSalary([5, 7, 80]) === 5, + 'Get Lowest Annual Salary no devolvió el menor salario anual', + ); +}; + +function probarGetAverage () { + console.assert( + getAverage([5, 7, 80]) === 30.67, + 'Get Average no devolvió el promedio entre los salarios anuales', + ); +}; + +function probarGetMonthlyAverage () { + console.assert( + getMonthlyAverage([5, 7, 80]) === 2.56, + 'Get Montly Average no devolvió el promedio entre los salarios mensuales', + ); +}; + +probarGetHighestAnnualSalary(); +probarGetLowestAnnualSalary(); +probarGetAverage(); +probarGetMonthlyAverage(); + +function probarValidarSalarioAnual () { + console.assert( + validarSalarioAnual(0) === 'This field cannot be empty or equal to 0', + 'Validar Salario Anual no validó que el campo no estuviera vacío o fuera igual a 0' + ); + + console.assert( + validarSalarioAnual(1.6) === 'This field cannot accept decimal numbers', + 'Validar Salario Anual no validó que el campo no contuviera números decimales' + ); + + console.assert( + validarSalarioAnual('asdas') === 'This field can only contain numbers', + 'Validar Salario Anual no validó que el campo contuviera únicamente números' + ); + + console.assert( + validarSalarioAnual(10000) === '', + 'Validar Salario Anual no validó un campo válido' + ); +}; + +probarValidarSalarioAnual(); + + diff --git a/tareas/clase-6/06. tarea 02/styles02.css b/tareas/clase-6/06. tarea 02/styles02.css new file mode 100644 index 00000000..22b6e202 --- /dev/null +++ b/tareas/clase-6/06. tarea 02/styles02.css @@ -0,0 +1,69 @@ +body { + background-image: url(https://i.imgur.com/X6n8zAe.jpg); +} + +h3 { + font-size: 20px; +} + +form { + font-family: 'Gill Sans', 'Gill Sans MT', Calibri, 'Trebuchet MS', sans-serif; + background-color: rgba(255, 255, 255, 0.774); + border-radius: 3px; + padding: 20px; + transition-duration: 0.4s; + margin: 40px; + text-align: center; +} + +#income-form { + width: 600px; +} + +#results-form { + width: 800px; + text-align: center; +} + + +input, +textarea { + border: 2px solid rgb(132, 241, 205); + text-align: center; + border-radius: 3px; + height: 30px; + margin: 10px; +} + +input:disabled, +textarea { + background-color: white; +} + +button { + font-size: 15px; + background-color: rgb(132, 241, 205); + border: none; + border-radius: 8px; + height: 30px; + width: 100px; + transition-duration: 0.1s; +} + +button:hover { + border: 2px solid rgb(132, 241, 205); + background-color: white; + font-weight: bold; +} + +.error-hide { + display: none; +} + +.error { + border: 2px solid red; +} + +label { + font-size: 17px; +} \ No newline at end of file diff --git a/tareas/clase-6/calculos-mio.js b/tareas/clase-6/calculos-mio.js deleted file mode 100644 index 4423cae9..00000000 --- a/tareas/clase-6/calculos-mio.js +++ /dev/null @@ -1,30 +0,0 @@ -function obtenerMayorNumero(numeros) { - let mayorNumero = numeros[0]; - for (let i = 1; i < numeros.length; i++) { - if (numeros[i] > mayorNumero) { - mayorNumero = numeros[i]; - } - } - - return mayorNumero; -} - -function obtenerMenorNumero(numeros) { - let menorNumero = numeros[0]; - for (let i = 1; i < numeros.length; i++) { - if (numeros[i] < menorNumero) { - menorNumero = numeros[i]; - } - } - - return menorNumero; -} - -function obtenerPromedio(numeros) { - let acumulador = 0; - for (let i = 0; i < numeros.length; i++) { - acumulador += numeros[i]; - } - - return (acumulador / numeros.length).toFixed(2); -} diff --git a/tareas/clase-6/index-mio.html b/tareas/clase-6/index-mio.html deleted file mode 100644 index e04c7076..00000000 --- a/tareas/clase-6/index-mio.html +++ /dev/null @@ -1,36 +0,0 @@ - - - - - - - - Tarea 6 - - - -
      - - - - -
      - -
      - - - -
      -

      La edad mayor es:

      -

      La menor edad es:

      -

      El promedio de edad es:

      -
      - - -
      - - - - - diff --git a/tareas/clase-6/index.html b/tareas/clase-6/index.html deleted file mode 100644 index e69de29b..00000000 diff --git a/tareas/clase-6/main-mio.css b/tareas/clase-6/main-mio.css deleted file mode 100644 index c582365b..00000000 --- a/tareas/clase-6/main-mio.css +++ /dev/null @@ -1,3 +0,0 @@ -.oculto { - display: none; -} diff --git a/tareas/clase-6/tarea-clase-6-mio.js b/tareas/clase-6/tarea-clase-6-mio.js deleted file mode 100644 index 689916da..00000000 --- a/tareas/clase-6/tarea-clase-6-mio.js +++ /dev/null @@ -1,110 +0,0 @@ -/* -TAREA: Empezar preguntando cuánta gente hay en el grupo familiar. -Crear tantos inputs+labels como gente haya para completar la edad de cada integrante. -Al hacer click en "calcular", mostrar en un elemento pre-existente la mayor edad, -la menor edad y el promedio del grupo familiar. - -Punto bonus: Crear un botón para "empezar de nuevo" que empiece el proceso nuevamente, - borrando los inputs ya creados (investigar cómo en MDN). -*/ - -document.querySelector('#siguiente-paso').onclick = function(event) { - const $cantidadIntegrantes = document.querySelector('#cantidad-integrantes'); - const cantidadIntegrantes = Number($cantidadIntegrantes.value); - - borrarIntegrantesAnteriores(); - crearIntegrantes(cantidadIntegrantes); - - event.preventDefault(); -}; - -document.querySelector('#calcular').onclick = function(event) { - const numeros = obtenerEdadesIntegrantes(); - mostrarEdad('mayor', obtenerMayorNumero(numeros)); - mostrarEdad('menor', obtenerMenorNumero(numeros)); - mostrarEdad('promedio', obtenerPromedio(numeros)); - mostrarResultados(); - - event.preventDefault(); -}; - -document.querySelector('#resetear').onclick = resetear; - -function borrarIntegrantesAnteriores() { - const $integrantes = document.querySelectorAll('.integrante'); - for (let i = 0; i < $integrantes.length; i++) { - $integrantes[i].remove(); - } -} - -function crearIntegrantes(cantidadIntegrantes) { - - if (cantidadIntegrantes > 0) { - mostrarBotonCalculo(); - } else { - resetear(); - } - - for (let i = 0; i < cantidadIntegrantes; i++) { - crearIntegrante(i); - } -} - -function crearIntegrante(indice) { - const $div = document.createElement('div'); - $div.className = 'integrante'; - - const $label = document.createElement('label'); - $label.textContent = 'Edad del integrante #: ' + (indice + 1); - const $input = document.createElement('input'); - $input.type = 'number'; - - $div.appendChild($label); - $div.appendChild($input); - - const $integrantes = document.querySelector('#integrantes'); - $integrantes.appendChild($div); -} - -function resetear() { - borrarIntegrantesAnteriores(); - ocultarBotonCalculo(); - ocultarResultados(); -} - -function ocultarBotonCalculo() { - document.querySelector('#calcular').className = 'oculto'; -} - -function mostrarBotonCalculo() { - document.querySelector('#calcular').className = ''; -} - -function ocultarResultados() { - document.querySelector('#analisis').className = 'oculto'; -} - -function mostrarResultados() { - document.querySelector('#analisis').className = ''; -} - -function mostrarEdad(tipo, valor) { - document.querySelector(`#${tipo}-edad`).textContent = valor; -} - -function obtenerEdadesIntegrantes() { - const $integrantes = document.querySelectorAll('.integrante input'); - const edades = []; - for (let i = 0; i < $integrantes.length; i++) { - edades.push(Number($integrantes[i].value)); - } - return edades; -} - -/* -TAREA: -Crear una interfaz que permita agregar ó quitar (botones agregar y quitar) inputs+labels para completar el salario anual de cada integrante de la familia que trabaje. -Al hacer click en "calcular", mostrar en un elemento pre-existente el mayor salario anual, menor salario anual, salario anual promedio y salario mensual promedio. - -Punto bonus: si hay inputs vacíos, ignorarlos en el cálculo (no contarlos como 0). -*/ diff --git a/tareas/clase-6/tarea-clase-6.js b/tareas/clase-6/tarea-clase-6.js deleted file mode 100644 index dc058824..00000000 --- a/tareas/clase-6/tarea-clase-6.js +++ /dev/null @@ -1,16 +0,0 @@ -/* -TAREA: Empezar preguntando cuánta gente hay en el grupo familiar. -Crear tantos inputs+labels como gente haya para completar la edad de cada integrante. -Al hacer click en "calcular", mostrar en un elemento pre-existente la mayor edad, la menor edad y el promedio del grupo familiar. - -Punto bonus: Crear un botón para "empezar de nuevo" que empiece el proceso nuevamente, borrando los inputs ya creados (investigar cómo en MDN). -*/ - - -/* -TAREA: -Crear una interfaz que permita agregar ó quitar (botones agregar y quitar) inputs+labels para completar el salario anual de cada integrante de la familia que trabaje. -Al hacer click en "calcular", mostrar en un elemento pre-existente el mayor salario anual, menor salario anual, salario anual promedio y salario mensual promedio. - -Punto bonus: si hay inputs vacíos, ignorarlos en el cálculo (no contarlos como 0). -*/ diff --git a/tareas/package-lock.json b/tareas/package-lock.json new file mode 100644 index 00000000..ea5f2086 --- /dev/null +++ b/tareas/package-lock.json @@ -0,0 +1,13 @@ +{ + "name": "tareas-argentina-programa", + "version": "1.0.0", + "lockfileVersion": 1, + "requires": true, + "dependencies": { + "bootstrap": { + "version": "4.4.1", + "resolved": "https://registry.npmjs.org/bootstrap/-/bootstrap-4.4.1.tgz", + "integrity": "sha512-tbx5cHubwE6e2ZG7nqM3g/FZ5PQEDMWmMGNrCUBVRPHXTJaH7CBDdsLeu3eCh3B1tzAxTnAbtmrzvWEvT2NNEA==" + } + } +} diff --git a/tareas/package.json b/tareas/package.json new file mode 100644 index 00000000..8390f2d0 --- /dev/null +++ b/tareas/package.json @@ -0,0 +1,14 @@ +{ + "name": "tareas-argentina-programa", + "version": "1.0.0", + "description": "Tareas de la clase 5 y 6 de r/ Argentina Programa", + "main": "index.js", + "scripts": { + "test": "echo \"Error: no test specified\" && exit 1" + }, + "author": "", + "license": "ISC", + "dependencies": { + "bootstrap": "^4.4.1" + } +}