Lire l'add-on EAN-2 et proposer le numéro de la revue scannée
Découverte à la mesure : l'EAN-2 est DÉSACTIVÉ par défaut dans zbar. Il ne suffisait donc pas de cesser de le filtrer — il n'était jamais produit. Vérifié sur un EAN-13 + EAN-2 rendus en canvas : un symbole par défaut, deux après setConfig(ZBAR_EAN2, ZBAR_CFG_ENABLE, 1). L'EAN-5 reste désactivé : il porte un prix, pas un numéro. Ce qui reste non vérifié — que les magazines réels y mettent bien leur numéro de parution — est dit à l'utilisateur : le numéro est proposé dans un champ modifiable, sous une invitation à le comparer à la couverture. Co-Authored-By: Claude Opus 5 <noreply@anthropic.com>
This commit is contained in:
@@ -0,0 +1,23 @@
|
||||
namespace MaBibli.Client.Composants;
|
||||
|
||||
/// <summary>
|
||||
/// Ce qu'un coup de scanner a produit : le code du livre ou de la revue, et son add-on éventuel.
|
||||
/// </summary>
|
||||
/// <param name="Code">EAN-13 normalisé, seul code qui identifie l'ouvrage.</param>
|
||||
/// <param name="Parution">
|
||||
/// Contenu de l'add-on <b>EAN-2</b>, imprimé à côté du code principal sur les périodiques.
|
||||
/// </param>
|
||||
/// <remarks>
|
||||
/// ⚠️ <b>L'EAN-2 est une indication, jamais une donnée acquise.</b> Il porte le numéro de
|
||||
/// parution d'une revue — c'est sa raison d'être normative — mais rien n'a pu être vérifié sur
|
||||
/// des magazines réels : la vérification demande un exemplaire devant la caméra. Il est donc
|
||||
/// <b>proposé</b> à l'utilisateur dans un champ qu'il corrige, jamais enregistré tel quel.
|
||||
/// <para>
|
||||
/// L'add-on <b>EAN-5</b> n'est pas remonté : il porte un <i>prix</i>, et le confondre avec un
|
||||
/// numéro créerait des numéros « 00595 » que personne ne comprendrait.
|
||||
/// </para>
|
||||
/// </remarks>
|
||||
public readonly record struct CodeScanne(string Code, string? Parution);
|
||||
|
||||
/// <summary>Forme brute renvoyée par <c>scanner-camera.js</c>, avant validation de l'ISBN.</summary>
|
||||
internal sealed record LectureCodeBarres(string? Code, string? Parution);
|
||||
@@ -61,7 +61,7 @@
|
||||
|
||||
@code {
|
||||
/// <summary>Appelé avec l'ISBN-13 dès qu'un code-barres exploitable est décodé.</summary>
|
||||
[Parameter] public EventCallback<string> OnCodeDetecte { get; set; }
|
||||
[Parameter] public EventCallback<CodeScanne> OnCodeDetecte { get; set; }
|
||||
|
||||
/// <summary>Appelé quand l'utilisateur renonce au scan.</summary>
|
||||
[Parameter] public EventCallback OnAnnuler { get; set; }
|
||||
@@ -168,7 +168,8 @@
|
||||
}
|
||||
|
||||
var depart = Stopwatch.GetTimestamp();
|
||||
var code = await _module.InvokeAsync<string?>("decoder", LargeurMax);
|
||||
var lecture = await _module.InvokeAsync<LectureCodeBarres?>("decoder", LargeurMax);
|
||||
var code = lecture?.Code;
|
||||
_totalMs += Stopwatch.GetElapsedTime(depart).TotalMilliseconds;
|
||||
_framesDecodees++;
|
||||
|
||||
@@ -192,7 +193,7 @@
|
||||
}
|
||||
|
||||
await ArreterCameraAsync();
|
||||
await OnCodeDetecte.InvokeAsync(isbn);
|
||||
await OnCodeDetecte.InvokeAsync(new CodeScanne(isbn, lecture?.Parution));
|
||||
return;
|
||||
}
|
||||
}
|
||||
|
||||
Reference in New Issue
Block a user