summaryrefslogtreecommitdiff
path: root/app/static/js/record.js
blob: 8f898c8696c9603ddcb20b30defe65faa334b426 (plain)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
// Register 'Enter' listeners on all inputs
allInputs = Array.from(document.getElementsByClassName('input'))
	.filter(e => e.type == 'number');
allInputs.forEach(e => e.addEventListener('keydown', handleEnterKey));

// Register onsubmit handler for form
document.getElementById("form").addEventListener('submit', (el) => {
	Array.from(event.target.getElementsByTagName('input')).forEach(i => i.disabled = false);
});

function handleEnterKey(event) {
	if (event.key === "Enter" || event.key === "Tab") {
		event.preventDefault();

		//Isolate the node that we're after
		const currentNode = event.target;
		//Find the current tab index.
		currentIndex = [...allInputs].findIndex(el => currentNode.isEqualNode(el));

		//focus the following element
		const targetIndex = (currentIndex + 1) % allInputs.length;
		const targetNode = allInputs[targetIndex];

		if (!targetNode.parentElement.parentElement.isEqualNode(currentNode.parentElement.parentElement)) {
			// going to new row
			if (currentNode.value != "" && allInputs[currentIndex-1].value != "") {
				onClickSetCheck(currentNode.parentElement.parentElement.children[3].children[0]);
			}
		}

		targetNode.focus();
	}
}

function setReset(row, index, values=true) {
	let lbsInput = row.children[1].children[0];
	let repsInput = row.children[2].children[0];
	let doneButton = row.children[3].children[0];

	// Enable inputs
	lbsInput.disabled = false;
	repsInput.disabled = false;

	// Remove classes
	lbsInput.classList.remove('is-success');
	lbsInput.classList.remove('is-danger');
	repsInput.classList.remove('is-success');
	repsInput.classList.remove('is-danger');

	// update id/classes to new row index
	current = lbsInput.id;
	updated = current.substring(0, current.length - 5);
	lbs = updated + index + '-lbs';
	lbsInput.id = lbs;
	lbsInput.name = lbs;
	reps = updated + index + '-reps'
	repsInput.id = reps;
	repsInput.name = reps;

	doneButton.classList.remove('is-success');

	if (values) {
		lbsInput.value = '';
		repsInput.value = '';
	}
}

function setSetid(row, id) {
	let setNumber = row.children[0];
	let lbsInput = row.children[1].children[0];
	let repsInput = row.children[2].children[0];
	let doneButton = row.children[3].children[0];

	setNumber.textContent = id + 1;
}

function setCheck(row) {
	// Disable input editing
	row.children[1].firstChild.disabled = true;
	row.children[2].firstChild.disabled = true;

	// Add is-success to inputs
	row.children[1].firstChild.classList.add('is-success')
	row.children[2].firstChild.classList.add('is-success')
}

// Called when the check at the end of a set line is clicked
function onClickSetCheck(elem) {
	if (elem.classList.contains('is-success')) {
		setReset(elem.parentElement.parentElement, elem.parentElement.parentElement.parentElement.children.length - 1, false);
	} else {
		elem.classList.add('is-success');

		setCheck(elem.parentElement.parentElement);
	}
}

function onClickAddSet(elem) {
	// Create the new row
	let tableBody = elem.parentElement.parentElement.children[0].children[1];
	let row = tableBody.children[0].cloneNode(true);

	// Add new row to table
	setReset(row, tableBody.children.length, false);
	setSetid(row, tableBody.children.length)
	row.addEventListener('keydown', handleEnterKey)
	tableBody.appendChild(row)
}

function loadTimerTimes() {

}

function onClickPausePlayTimer(elem) {
	if (elem.children[0].children[0].classList.contains('fa-play')) {
		paused = false;
		elem.children[0].children[0].classList.remove('fa-play');
		elem.children[0].children[0].classList.add('fa-pause');
	} else {
		paused = true;
		elem.children[0].children[0].classList.add('fa-play');
		elem.children[0].children[0].classList.remove('fa-pause');
	}
}