feat(confirmations): a Club Log received default, No out of the box
The Confirmations page's Club Log row gains its received side, applied to every new QSO the way QRZ.com's already is — so the match download's Y stands out against a ledger of explicit Ns.
This commit is contained in:
@@ -357,6 +357,7 @@ const (
|
|||||||
keyQSLDefaultEQSLSent = "qsl.eqsl_sent"
|
keyQSLDefaultEQSLSent = "qsl.eqsl_sent"
|
||||||
keyQSLDefaultEQSLRcvd = "qsl.eqsl_rcvd"
|
keyQSLDefaultEQSLRcvd = "qsl.eqsl_rcvd"
|
||||||
keyQSLDefaultClublogStatus = "qsl.clublog_status"
|
keyQSLDefaultClublogStatus = "qsl.clublog_status"
|
||||||
|
keyQSLDefaultClublogCfm = "qsl.clublog_confirmed"
|
||||||
keyQSLDefaultHRDLogStatus = "qsl.hrdlog_status"
|
keyQSLDefaultHRDLogStatus = "qsl.hrdlog_status"
|
||||||
keyQSLDefaultQRZComStatus = "qsl.qrzcom_status"
|
keyQSLDefaultQRZComStatus = "qsl.qrzcom_status"
|
||||||
keyQSLDefaultQRZComCfm = "qsl.qrzcom_confirmed"
|
keyQSLDefaultQRZComCfm = "qsl.qrzcom_confirmed"
|
||||||
@@ -439,6 +440,7 @@ type QSLDefaults struct {
|
|||||||
EQSLSent string `json:"eqsl_sent"`
|
EQSLSent string `json:"eqsl_sent"`
|
||||||
EQSLRcvd string `json:"eqsl_rcvd"`
|
EQSLRcvd string `json:"eqsl_rcvd"`
|
||||||
ClublogStatus string `json:"clublog_status"`
|
ClublogStatus string `json:"clublog_status"`
|
||||||
|
ClublogCfm string `json:"clublog_confirmed"` // Club Log match/download status
|
||||||
HRDLogStatus string `json:"hrdlog_status"`
|
HRDLogStatus string `json:"hrdlog_status"`
|
||||||
QRZComStatus string `json:"qrzcom_status"`
|
QRZComStatus string `json:"qrzcom_status"`
|
||||||
QRZComCfm string `json:"qrzcom_confirmed"` // QRZ.com download/confirmed status
|
QRZComCfm string `json:"qrzcom_confirmed"` // QRZ.com download/confirmed status
|
||||||
@@ -10938,7 +10940,7 @@ func defaultQSLDefaults() QSLDefaults {
|
|||||||
QSLSent: "N", QSLRcvd: "N",
|
QSLSent: "N", QSLRcvd: "N",
|
||||||
EQSLSent: "R", EQSLRcvd: "N",
|
EQSLSent: "R", EQSLRcvd: "N",
|
||||||
LOTWSent: "R", LOTWRcvd: "N",
|
LOTWSent: "R", LOTWRcvd: "N",
|
||||||
ClublogStatus: "R", HRDLogStatus: "R",
|
ClublogStatus: "R", ClublogCfm: "N", HRDLogStatus: "R",
|
||||||
QRZComStatus: "R", QRZComCfm: "N",
|
QRZComStatus: "R", QRZComCfm: "N",
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
@@ -10957,7 +10959,7 @@ func (a *App) GetQSLDefaults() (QSLDefaults, error) {
|
|||||||
keyQSLDefaultQSLSent, keyQSLDefaultQSLRcvd,
|
keyQSLDefaultQSLSent, keyQSLDefaultQSLRcvd,
|
||||||
keyQSLDefaultLOTWSent, keyQSLDefaultLOTWRcvd,
|
keyQSLDefaultLOTWSent, keyQSLDefaultLOTWRcvd,
|
||||||
keyQSLDefaultEQSLSent, keyQSLDefaultEQSLRcvd,
|
keyQSLDefaultEQSLSent, keyQSLDefaultEQSLRcvd,
|
||||||
keyQSLDefaultClublogStatus, keyQSLDefaultHRDLogStatus,
|
keyQSLDefaultClublogStatus, keyQSLDefaultClublogCfm, keyQSLDefaultHRDLogStatus,
|
||||||
keyQSLDefaultQRZComStatus, keyQSLDefaultQRZComCfm,
|
keyQSLDefaultQRZComStatus, keyQSLDefaultQRZComCfm,
|
||||||
keyQSLDefaultHamlogStatus, keyQSLDefaultHamlogCfm,
|
keyQSLDefaultHamlogStatus, keyQSLDefaultHamlogCfm,
|
||||||
)
|
)
|
||||||
@@ -10971,6 +10973,7 @@ func (a *App) GetQSLDefaults() (QSLDefaults, error) {
|
|||||||
out.EQSLSent = m[keyQSLDefaultEQSLSent]
|
out.EQSLSent = m[keyQSLDefaultEQSLSent]
|
||||||
out.EQSLRcvd = m[keyQSLDefaultEQSLRcvd]
|
out.EQSLRcvd = m[keyQSLDefaultEQSLRcvd]
|
||||||
out.ClublogStatus = m[keyQSLDefaultClublogStatus]
|
out.ClublogStatus = m[keyQSLDefaultClublogStatus]
|
||||||
|
out.ClublogCfm = m[keyQSLDefaultClublogCfm]
|
||||||
out.HRDLogStatus = m[keyQSLDefaultHRDLogStatus]
|
out.HRDLogStatus = m[keyQSLDefaultHRDLogStatus]
|
||||||
out.QRZComStatus = m[keyQSLDefaultQRZComStatus]
|
out.QRZComStatus = m[keyQSLDefaultQRZComStatus]
|
||||||
out.QRZComCfm = m[keyQSLDefaultQRZComCfm]
|
out.QRZComCfm = m[keyQSLDefaultQRZComCfm]
|
||||||
@@ -10994,6 +10997,7 @@ func (a *App) SaveQSLDefaults(d QSLDefaults) error {
|
|||||||
keyQSLDefaultEQSLSent: strings.ToUpper(strings.TrimSpace(d.EQSLSent)),
|
keyQSLDefaultEQSLSent: strings.ToUpper(strings.TrimSpace(d.EQSLSent)),
|
||||||
keyQSLDefaultEQSLRcvd: strings.ToUpper(strings.TrimSpace(d.EQSLRcvd)),
|
keyQSLDefaultEQSLRcvd: strings.ToUpper(strings.TrimSpace(d.EQSLRcvd)),
|
||||||
keyQSLDefaultClublogStatus: strings.ToUpper(strings.TrimSpace(d.ClublogStatus)),
|
keyQSLDefaultClublogStatus: strings.ToUpper(strings.TrimSpace(d.ClublogStatus)),
|
||||||
|
keyQSLDefaultClublogCfm: strings.ToUpper(strings.TrimSpace(d.ClublogCfm)),
|
||||||
keyQSLDefaultHRDLogStatus: strings.ToUpper(strings.TrimSpace(d.HRDLogStatus)),
|
keyQSLDefaultHRDLogStatus: strings.ToUpper(strings.TrimSpace(d.HRDLogStatus)),
|
||||||
keyQSLDefaultQRZComStatus: strings.ToUpper(strings.TrimSpace(d.QRZComStatus)),
|
keyQSLDefaultQRZComStatus: strings.ToUpper(strings.TrimSpace(d.QRZComStatus)),
|
||||||
keyQSLDefaultQRZComCfm: strings.ToUpper(strings.TrimSpace(d.QRZComCfm)),
|
keyQSLDefaultQRZComCfm: strings.ToUpper(strings.TrimSpace(d.QRZComCfm)),
|
||||||
@@ -11046,6 +11050,7 @@ func applyQSLDefaultsTo(q *qso.QSO, d QSLDefaults) {
|
|||||||
fill(&q.EQSLSent, d.EQSLSent)
|
fill(&q.EQSLSent, d.EQSLSent)
|
||||||
fill(&q.EQSLRcvd, d.EQSLRcvd)
|
fill(&q.EQSLRcvd, d.EQSLRcvd)
|
||||||
fill(&q.ClublogUploadStatus, d.ClublogStatus)
|
fill(&q.ClublogUploadStatus, d.ClublogStatus)
|
||||||
|
fill(&q.ClublogDownloadStatus, d.ClublogCfm)
|
||||||
fill(&q.HRDLogUploadStatus, d.HRDLogStatus)
|
fill(&q.HRDLogUploadStatus, d.HRDLogStatus)
|
||||||
fill(&q.QRZComUploadStatus, d.QRZComStatus)
|
fill(&q.QRZComUploadStatus, d.QRZComStatus)
|
||||||
fill(&q.QRZComDownloadStatus, d.QRZComCfm)
|
fill(&q.QRZComDownloadStatus, d.QRZComCfm)
|
||||||
|
|||||||
+4
-2
@@ -8,7 +8,8 @@
|
|||||||
"Fixed: opening the app could silently stop at startup (settings showing as default, “db not initialized”) when a database migration targeted a table that database no longer holds — migrations now skip what does not apply, and a startup failure is written to the log.",
|
"Fixed: opening the app could silently stop at startup (settings showing as default, “db not initialized”) when a database migration targeted a table that database no longer holds — migrations now skip what does not apply, and a startup failure is written to the log.",
|
||||||
"FT Map / Grid squares: the map no longer floats above the menus and the Preferences dialog.",
|
"FT Map / Grid squares: the map no longer floats above the menus and the Preferences dialog.",
|
||||||
"KPA500: saving ANY settings page no longer power-cycles the amplifier. A save rebuilt every amplifier connection, and closing the COM port drops DTR/RTS — the KPA500’s power switch. An unchanged amplifier now keeps its running connection across saves.",
|
"KPA500: saving ANY settings page no longer power-cycles the amplifier. A save rebuilt every amplifier connection, and closing the COM port drops DTR/RTS — the KPA500’s power switch. An unchanged amplifier now keeps its running connection across saves.",
|
||||||
"Column picker: columns are listed alphabetically inside each group."
|
"Column picker: columns are listed alphabetically inside each group.",
|
||||||
|
"Confirmations: a “Club Log received” default for new QSOs, set to No out of the box — the match download flips it to Y."
|
||||||
],
|
],
|
||||||
"fr": [
|
"fr": [
|
||||||
"QSL Manager : confirmations Club Log — télécharge vos matches de log (API getmatches) et remplit deux nouvelles colonnes, statut et date de match ClubLog, disponibles partout : colonnes du tableau, filtres, édition groupée et éditeur de QSO.",
|
"QSL Manager : confirmations Club Log — télécharge vos matches de log (API getmatches) et remplit deux nouvelles colonnes, statut et date de match ClubLog, disponibles partout : colonnes du tableau, filtres, édition groupée et éditeur de QSO.",
|
||||||
@@ -16,7 +17,8 @@
|
|||||||
"Corrigé : l’application pouvait se figer silencieusement au démarrage (réglages par défaut, « db not initialized ») quand une migration visait une table absente de cette base — les migrations ignorent désormais ce qui ne s’applique pas, et un échec de démarrage est écrit dans le log.",
|
"Corrigé : l’application pouvait se figer silencieusement au démarrage (réglages par défaut, « db not initialized ») quand une migration visait une table absente de cette base — les migrations ignorent désormais ce qui ne s’applique pas, et un échec de démarrage est écrit dans le log.",
|
||||||
"FT Map / Grid squares : la carte ne passe plus au-dessus des menus et de la fenêtre Préférences.",
|
"FT Map / Grid squares : la carte ne passe plus au-dessus des menus et de la fenêtre Préférences.",
|
||||||
"KPA500 : sauvegarder n’importe quelle page des réglages n’éteint plus l’ampli. Une sauvegarde reconstruisait chaque connexion d’ampli, et fermer le port COM relâche DTR/RTS — l’interrupteur d’alimentation du KPA500. Un ampli inchangé garde désormais sa connexion à travers les sauvegardes.",
|
"KPA500 : sauvegarder n’importe quelle page des réglages n’éteint plus l’ampli. Une sauvegarde reconstruisait chaque connexion d’ampli, et fermer le port COM relâche DTR/RTS — l’interrupteur d’alimentation du KPA500. Un ampli inchangé garde désormais sa connexion à travers les sauvegardes.",
|
||||||
"Sélecteur de colonnes : les colonnes sont triées alphabétiquement dans chaque groupe."
|
"Sélecteur de colonnes : les colonnes sont triées alphabétiquement dans chaque groupe.",
|
||||||
|
"Confirmations : un défaut « Club Log reçu » pour les nouveaux QSO, à Non par défaut — le téléchargement des matches le passe à Y."
|
||||||
]
|
]
|
||||||
},
|
},
|
||||||
{
|
{
|
||||||
|
|||||||
@@ -1822,7 +1822,7 @@ function SettingsModalImpl({ onClose, onSaved, initialSection, onMainPaneChanged
|
|||||||
qsl_sent: string; qsl_rcvd: string;
|
qsl_sent: string; qsl_rcvd: string;
|
||||||
lotw_sent: string; lotw_rcvd: string;
|
lotw_sent: string; lotw_rcvd: string;
|
||||||
eqsl_sent: string; eqsl_rcvd: string;
|
eqsl_sent: string; eqsl_rcvd: string;
|
||||||
clublog_status: string; hrdlog_status: string; qrzcom_status: string;
|
clublog_status: string; clublog_confirmed: string; hrdlog_status: string; qrzcom_status: string;
|
||||||
qrzcom_confirmed: string;
|
qrzcom_confirmed: string;
|
||||||
hamlog_status: string; hamlog_confirmed: string;
|
hamlog_status: string; hamlog_confirmed: string;
|
||||||
};
|
};
|
||||||
@@ -1830,7 +1830,7 @@ function SettingsModalImpl({ onClose, onSaved, initialSection, onMainPaneChanged
|
|||||||
qsl_sent: '', qsl_rcvd: '',
|
qsl_sent: '', qsl_rcvd: '',
|
||||||
lotw_sent: '', lotw_rcvd: '',
|
lotw_sent: '', lotw_rcvd: '',
|
||||||
eqsl_sent: '', eqsl_rcvd: '',
|
eqsl_sent: '', eqsl_rcvd: '',
|
||||||
clublog_status: '', hrdlog_status: '', qrzcom_status: '',
|
clublog_status: '', clublog_confirmed: '', hrdlog_status: '', qrzcom_status: '',
|
||||||
qrzcom_confirmed: '',
|
qrzcom_confirmed: '',
|
||||||
hamlog_status: '', hamlog_confirmed: '',
|
hamlog_status: '', hamlog_confirmed: '',
|
||||||
});
|
});
|
||||||
@@ -5709,7 +5709,10 @@ function SettingsModalImpl({ onClose, onSaved, initialSection, onMainPaneChanged
|
|||||||
<Label className="text-[10px] text-muted-foreground uppercase tracking-wider mb-1 block">{t('conf.sent')}</Label>
|
<Label className="text-[10px] text-muted-foreground uppercase tracking-wider mb-1 block">{t('conf.sent')}</Label>
|
||||||
{renderSelect('clublog_status', FULL_OPTIONS)}
|
{renderSelect('clublog_status', FULL_OPTIONS)}
|
||||||
</div>
|
</div>
|
||||||
<div />
|
<div>
|
||||||
|
<Label className="text-[10px] text-muted-foreground uppercase tracking-wider mb-1 block">{t('conf.rcvd')}</Label>
|
||||||
|
{renderSelect('clublog_confirmed', FULL_OPTIONS)}
|
||||||
|
</div>
|
||||||
</div>
|
</div>
|
||||||
{/* HRDLog */}
|
{/* HRDLog */}
|
||||||
<div className="grid grid-cols-[150px_1fr_1fr] gap-3 items-end">
|
<div className="grid grid-cols-[150px_1fr_1fr] gap-3 items-end">
|
||||||
|
|||||||
@@ -3294,6 +3294,7 @@ export namespace main {
|
|||||||
eqsl_sent: string;
|
eqsl_sent: string;
|
||||||
eqsl_rcvd: string;
|
eqsl_rcvd: string;
|
||||||
clublog_status: string;
|
clublog_status: string;
|
||||||
|
clublog_confirmed: string;
|
||||||
hrdlog_status: string;
|
hrdlog_status: string;
|
||||||
qrzcom_status: string;
|
qrzcom_status: string;
|
||||||
qrzcom_confirmed: string;
|
qrzcom_confirmed: string;
|
||||||
@@ -3313,6 +3314,7 @@ export namespace main {
|
|||||||
this.eqsl_sent = source["eqsl_sent"];
|
this.eqsl_sent = source["eqsl_sent"];
|
||||||
this.eqsl_rcvd = source["eqsl_rcvd"];
|
this.eqsl_rcvd = source["eqsl_rcvd"];
|
||||||
this.clublog_status = source["clublog_status"];
|
this.clublog_status = source["clublog_status"];
|
||||||
|
this.clublog_confirmed = source["clublog_confirmed"];
|
||||||
this.hrdlog_status = source["hrdlog_status"];
|
this.hrdlog_status = source["hrdlog_status"];
|
||||||
this.qrzcom_status = source["qrzcom_status"];
|
this.qrzcom_status = source["qrzcom_status"];
|
||||||
this.qrzcom_confirmed = source["qrzcom_confirmed"];
|
this.qrzcom_confirmed = source["qrzcom_confirmed"];
|
||||||
|
|||||||
Reference in New Issue
Block a user