Compare commits

...

7 Commits

Author SHA1 Message Date
c2c08db342 Add saveFailCounter
Fix bug with not clearing noteId
Refactor a class removal and additions
Add script.min.js
2024-06-09 20:26:54 -04:00
4d55711190 Adding new reference type retrieval 2024-06-09 20:24:44 -04:00
164ed62a48 add method for retrieving 39 articles 2024-06-09 20:18:54 -04:00
bdc67942ea Add validation for email registration 2024-06-09 20:18:27 -04:00
4a6191e287 Add link to markdown cheat sheet 2024-06-09 20:17:40 -04:00
d809e7eb38 Add new reference types 2024-06-09 20:17:20 -04:00
83709509f2 Move markdown cheat sheet 2024-06-09 20:16:42 -04:00
9 changed files with 68 additions and 10 deletions

View File

@ -1358,5 +1358,25 @@
"lbc": [
1,
32
],
"39a": [
1,
39
],
"1hc": [
1,
10
],
"2hc": [
1,
30
],
"sd": [
1,
32
],
"agc": [
1,
28
]
}

View File

@ -8,6 +8,7 @@ let saveTimeout = 15000;
var to = null;
let controller;
var BOOKS = {};
let saveFailCounter = 0;
$(function () {
setHeight();
@ -160,6 +161,7 @@ function newNote() {
document.querySelector('#template').value = 0;
document.querySelector('#passage').value = '';
document.querySelector('#recording').value = '';
document.querySelector('#noteId').value = '';
document.querySelector('#ref-list').innerHTML = '';
document.querySelector('#ref').innerHTML = '';
@ -209,8 +211,7 @@ function saveNote(event) {
})
.done(function (data) {
if (data.msg == 'saved' && !saved) {
saveCheck.classList.remove('saving');
saveCheck.classList.remove('error');
saveCheck.classList.remove('saving', 'error', 'fa-times', 'fa-check');
showSave();
if (noteText == document.querySelector('#notes').value) {
saved = true;
@ -224,17 +225,22 @@ function saveNote(event) {
}
})
.fail(function (xhr, status, error) {
saveCheck.classList.remove('saving');
saveCheck.classList.add('error');
saveFailCounter++;
saveCheck.classList.remove('saving', 'fa-check');
saveCheck.classList.add('fa-times', 'error');
console.error(error);
})
.always(function (xhr, status) {
if (status == 'timeout') {
saveCheck.classList.remove('saving');
saveCheck.classList.add('error');
saveCheck.classList.remove('saving', 'fa-check');
saveCheck.classList.add('error', 'fa-times');
}
clearTimeout(to);
to = setTimeout(saveNote, saveTimeout);
if (saveFailCounter < 5) {
to = setTimeout(saveNote, saveTimeout);
} else {
saveFailCounter = 0;
}
});
}
@ -262,7 +268,8 @@ function isUuidValid(uuid) {
}
function startSave() {
document.querySelector('#save-check').classList.add('saving');
document.querySelector('#save-check').classList.remove('error', 'fa-times', 'fa-check');
document.querySelector('#save-check').classList.add('saving', 'fa-check');
document.querySelector('#save-check').style.opacity = 1;
}
@ -276,6 +283,7 @@ function showSave() {
if (saved) { return; }
var checkmark = document.getElementById("save-check");
checkmark.classList.add('fa-check');
// Schedule the animation to run every 1 second (which is equivalent to a 1-second delay between each iteration)
var si = setInterval(function () {

1
public/js/script.min.js vendored Normal file

File diff suppressed because one or more lines are too long

View File

@ -178,6 +178,11 @@ class AjaxController extends AbstractController
'wlc' => ReferenceController::retrieveWLC($ref),
'lbc' => ReferenceController::retrieveLBC($ref),
'creed' => ReferenceController::retrieveCreed($data->book),
'39a' => ReferenceController::retrieve39a($ref),
'1hc' => ReferenceController::retrieve1HC($ref),
'2hc' => ReferenceController::retrieve2HC($ref),
'sd' => ReferenceController::retrieveSD($ref),
'agc' => ReferenceController::retrieveAGC($ref),
'note' => ReferenceController::retrieveNote($user)
};
@ -220,7 +225,13 @@ class AjaxController extends AbstractController
'cd' => 'Dort',
'wcf' => 'Westminster/Confessions',
'wsc' => 'Westminster/Shorter Catechism',
'wlc' => 'Westminster/Larger Catechism'
'wlc' => 'Westminster/Larger Catechism',
'lbc' => 'London',
'39a' => '39 Articles',
'1hc' => '1 Helvetic Catechism',
'2hc' => '2 Helvetic Catechism',
'sd' => 'Savor Declaration',
'agc' => 'Augsburg Confession'
};
$ret = file_put_contents(dirname(dirname(__DIR__))."/references/{$path}/{$data->file}", $data->text);

View File

@ -202,6 +202,15 @@ class ReferenceController extends AbstractController
return $r[0];
}
public static function retrieve39a($ref): Reference
{
$r = self::$emi->getRepository(Reference::class)->findBy(['type' => '39a', 'ndx' => $ref->getNdx()]);
if (!$r) {
return new Reference();
}
return $r[0];
}
public static function retrieve1HC($ref): Reference
{
$r = self::$emi->getRepository(Reference::class)->findBy(['type' => '1hc', 'ndx' => $ref->getNdx()]);

View File

@ -11,6 +11,7 @@ use Symfony\Bridge\Doctrine\Types\UuidType;
use Symfony\Component\Security\Core\User\PasswordAuthenticatedUserInterface;
use Symfony\Component\Security\Core\User\UserInterface;
use Symfony\Component\Uid\Uuid;
use Symfony\Component\Validator\Constraints as Assert;
#[ORM\Entity(repositoryClass: UserRepository::class)]
#[ORM\UniqueConstraint(name: 'UNIQ_IDENTIFIER_EMAIL', fields: ['email'])]
@ -23,6 +24,9 @@ class User implements UserInterface, PasswordAuthenticatedUserInterface, JsonSer
private ?Uuid $id = null;
#[ORM\Column(length: 180)]
#[Assert\Email(
message: 'The email {{ value }} is not a valid email.',
)]
private ?string $email = null;
/**

View File

@ -127,7 +127,11 @@
<option value='wsc'>Westminster Shorter Catechism</option>
<option value='wlc'>Westminster Larger Catechism</option>
<option value='lbc'>London Baptist Confession</option>
<option value='note'>Note</option>
<option value='39a'>Thirty-Nine Articles</option>
<option value='1hc'>First Helvetic Confession</option>
<option value='2hc'>Second Helvetic Confession</option>
<option value='sd'>Savoy Declaration</option>
<option value='agc'>Augsburg Confession</option>
</select>
<select id='referenceBook' onchange='filterBooks()'>
</select>

View File

@ -29,6 +29,7 @@
{% endif %}
<li><a href='#' onclick="openRef()">Open Reference</a></li>
<li><a href='/index.php/template-editor'>Template Editor</a></li>
<li><a href='/docs/markdown-cheat-sheet.md' target='_blank'>Markdown Cheat Sheet</a></li>
{% else %}
<li><a href="/index.php/">Home</a></li>
<li><a href='/index.php/register'>Register</a></li>