67// Show input error message
8function showError(input, message) {
9const formControl = input.parentElement;
10formControl.className = 'form-control error';
1415// Show success outline
16function showSuccess(input) {
17const formControl = input.parentElement;
18formControl.className = 'form-control success';
2021// Check email is valid
22function checkEmail(input) {
23const re = /^(([^<>()\[\]\\.,;:\s@"]+(\.[^<>()\[\]\\.,;:\s@"]+)*)|(".+"))@((\[[0-9]{1,3}\.[0-9]{1,3}\.[0-9]{1,3}\.[0-9]{1,3}\])|(([a-zA-Z\-0-9]+\.)+[a-zA-Z]{2,}))$/;
24if (re.test(input.value.trim())) {
3031// Check required fields
32function checkRequired(inputArr) {
33let isRequired = false;
34inputArr.forEach(function(input) {
35if (input.value.trim() === '') {
36showError(input, `${getFieldName(input)} is required`);
4546// Check input length
47function checkLength(input, min, max) {
48if (input.value.length < min) {
49showError(
6263// Check passwords match
64function checkPasswordsMatch(input1, input2) {
65if (input1.value !== input2.value) {
66showError(input2, 'Passwords do not match');
6970// Get fieldname
71function getFieldName(input) {
72return input.id.charAt(0).toUpperCase() + input.id.slice(1);
73}
7475// Event listeners
76form.addEventListener('submit', function(e) {
77e.preventDefault();
78
1export default function server(request: Request): Response {
2return new Response(
3`<!DOCTYPE html>
2223// Add transaction
24function addTransaction(e) {
25e.preventDefault();
264849// Generate random ID
50function generateID() {
51return Math.floor(Math.random() * 100000000);
52}
5354// Add transactions to DOM list
55function addTransactionDOM(transaction) {
56// Get sign
57const sign = transaction.amount < 0 ? '-' : '+';
7475// Update the balance, income and expense
76function updateValues() {
77const amounts = transactions.map(transaction => transaction.amount);
789596// Remove transaction by ID
97function removeTransaction(id) {
98transactions = transactions.filter(transaction => transaction.id !== id);
99104105// Update local storage transactions
106function updateLocalStorage() {
107localStorage.setItem('transactions', JSON.stringify(transactions));
108}
109110// Init app
111function init() {
112list.innerHTML = '';
113
1export default function server(request: Request): Response {
2return new Response(
3`<!DOCTYPE html>
6const swap = document.getElementById('swap');
7
8function calculate() {
9const currency_one = currencyEl_one.value;
10const currency_two = currencyEl_two.value;
1export default function server(request: Request): Response {
2return new Response(
3`<!DOCTYPE html>
1314// Fetch random user and add money
15async function getRandomUser() {
16const res = await fetch('https://randomuser.me/api');
17const data = await res.json();
2829// Double eveyones money
30function doubleMoney() {
31data = data.map(user => {
32return { ...user, money: user.money * 2 };
3738// Sort users by richest
39function sortByRichest() {
40console.log(123);
41data.sort((a, b) => b.money - a.money);
4546// Filter only millionaires
47function showMillionaires() {
48data = data.filter(user => user.money > 1000000);
495253// Calculate the total wealth
54function calculateWealth() {
55const wealth = data.reduce((acc, user) => (acc += user.money), 0);
566364// Add new obj to data arr
65function addData(obj) {
66data.push(obj);
677071// Update DOM
72function updateDOM(providedData = data) {
73// Clear main div
74main.innerHTML = '<h2><strong>Person</strong> Wealth</h2>';
8586// Format number as money - https://stackoverflow.com/questions/149055/how-to-format-numbers-as-currency-string
87function formatMoney(number) {
88return '$' + number.toFixed(2).replace(/\d(?=(\d{3})+\.)/g, '$&,');
89}
1export default function server(request: Request): Response {
2return new Response(
3`<!DOCTYPE html>
67// Play & pause video
8function toggleVideoStatus() {
9if (video.paused) {
10video.play();
1516// update play/pause icon
17function updatePlayIcon() {
18if (video.paused) {
19play.innerHTML = '<i class="fa fa-play fa-2x"></i>';
2425// Update progress & timestamp
26function updateProgress() {
27progress.value = (video.currentTime / video.duration) * 100;
284344// Set video time to progress
45function setVideoProgress() {
46video.currentTime = (+progress.value * video.duration) / 100;
47}
4849// Stop video
50function stopVideo() {
51video.currentTime = 0;
52video.pause();
1export default function server(request: Request): Response {
2return new Response(
3`<!DOCTYPE html>