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": [ "lbc": [
1, 1,
32 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; var to = null;
let controller; let controller;
var BOOKS = {}; var BOOKS = {};
let saveFailCounter = 0;
$(function () { $(function () {
setHeight(); setHeight();
@ -160,6 +161,7 @@ function newNote() {
document.querySelector('#template').value = 0; document.querySelector('#template').value = 0;
document.querySelector('#passage').value = ''; document.querySelector('#passage').value = '';
document.querySelector('#recording').value = ''; document.querySelector('#recording').value = '';
document.querySelector('#noteId').value = '';
document.querySelector('#ref-list').innerHTML = ''; document.querySelector('#ref-list').innerHTML = '';
document.querySelector('#ref').innerHTML = ''; document.querySelector('#ref').innerHTML = '';
@ -209,8 +211,7 @@ function saveNote(event) {
}) })
.done(function (data) { .done(function (data) {
if (data.msg == 'saved' && !saved) { if (data.msg == 'saved' && !saved) {
saveCheck.classList.remove('saving'); saveCheck.classList.remove('saving', 'error', 'fa-times', 'fa-check');
saveCheck.classList.remove('error');
showSave(); showSave();
if (noteText == document.querySelector('#notes').value) { if (noteText == document.querySelector('#notes').value) {
saved = true; saved = true;
@ -224,17 +225,22 @@ function saveNote(event) {
} }
}) })
.fail(function (xhr, status, error) { .fail(function (xhr, status, error) {
saveCheck.classList.remove('saving'); saveFailCounter++;
saveCheck.classList.add('error'); saveCheck.classList.remove('saving', 'fa-check');
saveCheck.classList.add('fa-times', 'error');
console.error(error); console.error(error);
}) })
.always(function (xhr, status) { .always(function (xhr, status) {
if (status == 'timeout') { if (status == 'timeout') {
saveCheck.classList.remove('saving'); saveCheck.classList.remove('saving', 'fa-check');
saveCheck.classList.add('error'); saveCheck.classList.add('error', 'fa-times');
} }
clearTimeout(to); 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() { 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; document.querySelector('#save-check').style.opacity = 1;
} }
@ -276,6 +283,7 @@ function showSave() {
if (saved) { return; } if (saved) { return; }
var checkmark = document.getElementById("save-check"); 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) // Schedule the animation to run every 1 second (which is equivalent to a 1-second delay between each iteration)
var si = setInterval(function () { 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), 'wlc' => ReferenceController::retrieveWLC($ref),
'lbc' => ReferenceController::retrieveLBC($ref), 'lbc' => ReferenceController::retrieveLBC($ref),
'creed' => ReferenceController::retrieveCreed($data->book), '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) 'note' => ReferenceController::retrieveNote($user)
}; };
@ -220,7 +225,13 @@ class AjaxController extends AbstractController
'cd' => 'Dort', 'cd' => 'Dort',
'wcf' => 'Westminster/Confessions', 'wcf' => 'Westminster/Confessions',
'wsc' => 'Westminster/Shorter Catechism', '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); $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]; 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 public static function retrieve1HC($ref): Reference
{ {
$r = self::$emi->getRepository(Reference::class)->findBy(['type' => '1hc', 'ndx' => $ref->getNdx()]); $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\PasswordAuthenticatedUserInterface;
use Symfony\Component\Security\Core\User\UserInterface; use Symfony\Component\Security\Core\User\UserInterface;
use Symfony\Component\Uid\Uuid; use Symfony\Component\Uid\Uuid;
use Symfony\Component\Validator\Constraints as Assert;
#[ORM\Entity(repositoryClass: UserRepository::class)] #[ORM\Entity(repositoryClass: UserRepository::class)]
#[ORM\UniqueConstraint(name: 'UNIQ_IDENTIFIER_EMAIL', fields: ['email'])] #[ORM\UniqueConstraint(name: 'UNIQ_IDENTIFIER_EMAIL', fields: ['email'])]
@ -23,6 +24,9 @@ class User implements UserInterface, PasswordAuthenticatedUserInterface, JsonSer
private ?Uuid $id = null; private ?Uuid $id = null;
#[ORM\Column(length: 180)] #[ORM\Column(length: 180)]
#[Assert\Email(
message: 'The email {{ value }} is not a valid email.',
)]
private ?string $email = null; private ?string $email = null;
/** /**

View File

@ -127,7 +127,11 @@
<option value='wsc'>Westminster Shorter Catechism</option> <option value='wsc'>Westminster Shorter Catechism</option>
<option value='wlc'>Westminster Larger Catechism</option> <option value='wlc'>Westminster Larger Catechism</option>
<option value='lbc'>London Baptist Confession</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>
<select id='referenceBook' onchange='filterBooks()'> <select id='referenceBook' onchange='filterBooks()'>
</select> </select>

View File

@ -29,6 +29,7 @@
{% endif %} {% endif %}
<li><a href='#' onclick="openRef()">Open Reference</a></li> <li><a href='#' onclick="openRef()">Open Reference</a></li>
<li><a href='/index.php/template-editor'>Template Editor</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 %} {% else %}
<li><a href="/index.php/">Home</a></li> <li><a href="/index.php/">Home</a></li>
<li><a href='/index.php/register'>Register</a></li> <li><a href='/index.php/register'>Register</a></li>