fix(apk): retour depuis le formulaire = revenir a l'entree, pas a la liste

Le formulaire se declare comme une vue ('state?view=edit') : la fleche de
l'en-tete et la touche retour du telephone le referment d'abord.

Co-Authored-By: Claude Opus 5 <noreply@anthropic.com>
This commit is contained in:
r-zakarya
2026-09-25 15:27:14 +01:00
parent 29f737b831
commit 49738d0b74
2 changed files with 21 additions and 1 deletions
+12 -1
View File
@@ -1565,6 +1565,8 @@ function openEditEntry() {
renderDetail(lastDetail); renderDetail(lastDetail);
}); });
document.getElementById('eSave').addEventListener('click', saveEditEntry); document.getElementById('eSave').addEventListener('click', saveEditEntry);
view = 'edit';
send('state?view=edit');
if (editAgain) { if (editAgain) {
var ins = document.querySelectorAll('#fields [data-ef]'), i, f; var ins = document.querySelectorAll('#fields [data-ef]'), i, f;
for (i = 0; i < ins.length; i++) { for (i = 0; i < ins.length; i++) {
@@ -1957,7 +1959,13 @@ function goList() {
document.getElementById('fields').innerHTML = ''; document.getElementById('fields').innerHTML = '';
send('state?view=list'); send('state?view=list');
} }
document.getElementById('back').addEventListener('click', goList); // LA FLECHE REFERME D'ABORD LE FORMULAIRE. Elle ramenait a la liste, donc une
// modification en cours disparaissait sans qu'on ait vu l'entree.
document.getElementById('back').addEventListener('click', function () {
if (view === 'edit') { renderDetail(lastDetail); return; }
goList();
});
// --- appele par Delphi ----------------------------------------------------- // --- appele par Delphi -----------------------------------------------------
var PM = { var PM = {
@@ -2202,6 +2210,9 @@ var PM = {
document.body.classList.toggle('is-busy', !!on); document.body.classList.toggle('is-busy', !!on);
}, },
back: function () { if (view === 'detail') goList(); }, back: function () { if (view === 'detail') goList(); },
// Touche retour du telephone pendant une modification : on revient a
// l'entree, pas a la liste.
cancelEdit: function () { renderDetail(lastDetail); },
/// La touche retour annule la selection avant de verrouiller le coffre. /// La touche retour annule la selection avant de verrouiller le coffre.
/// Sans cela, un geste d'annulation fermait le coffre - le contraire de ce /// Sans cela, un geste d'annulation fermait le coffre - le contraire de ce
/// qu'il veut dire. /// qu'il veut dire.
+9
View File
@@ -720,6 +720,15 @@ begin
FWebView := 'list'; FWebView := 'list';
Key := 0; Key := 0;
end end
// LE FORMULAIRE D'ABORD, l'entree ensuite. Il occupe la meme vue que le
// detail, mais il se referme sur lui - sinon une modification en cours
// sautait d'un coup jusqu'a la liste.
else if FWebView = 'edit' then
begin
WebCall('PM.cancelEdit()');
FWebView := 'detail';
Key := 0;
end
else if FWebView = 'detail' then else if FWebView = 'detail' then
begin begin
WebCall('PM.back()'); WebCall('PM.back()');