63 lines
1.7 KiB
JavaScript
63 lines
1.7 KiB
JavaScript
/*
|
|
Copyright (c) 2023-forever Douglas Malnati. All rights reserved.
|
|
|
|
See the /faq/tos page for details.
|
|
|
|
(If this generated header is stamped on a file which is a 3rd party file or under a different license or copyright, then ignore this copyright statement and use that file's terms.)
|
|
*/
|
|
|
|
import { CandidateFilterBase } from './CandidateFilterBase.js';
|
|
import { NonRejectedOnlyFilter } from './WsprMessageCandidate.js';
|
|
|
|
|
|
///////////////////////////////////////////////////////////////////////////
|
|
// Candidate Filter - Confirmed
|
|
//
|
|
// If a slot contains one or more confirmed messages, reject any remaining
|
|
// non-confirmed candidates in that same slot.
|
|
///////////////////////////////////////////////////////////////////////////
|
|
|
|
export class CandidateFilterConfirmed
|
|
extends CandidateFilterBase
|
|
{
|
|
constructor(t)
|
|
{
|
|
super("ByConfirmed", t);
|
|
}
|
|
|
|
OnFilterStart()
|
|
{
|
|
this.t.Event(`CandidateFilterConfirmed Start`);
|
|
}
|
|
|
|
OnFilterEnd()
|
|
{
|
|
this.t.Event(`CandidateFilterConfirmed End`);
|
|
}
|
|
|
|
FilterWindowAlgorithm(msgListList)
|
|
{
|
|
for (let slot = 0; slot < 5; ++slot)
|
|
{
|
|
let msgList = NonRejectedOnlyFilter(msgListList[slot]);
|
|
let hasConfirmed = msgList.some(msg => msg.IsConfirmed());
|
|
|
|
if (!hasConfirmed)
|
|
{
|
|
continue;
|
|
}
|
|
|
|
for (let msg of msgList)
|
|
{
|
|
if (msg.IsCandidate())
|
|
{
|
|
msg.Reject(
|
|
this.type,
|
|
`Confirmed message found in slot ${slot}, rejecting unconfirmed candidates in same slot.`
|
|
);
|
|
}
|
|
}
|
|
}
|
|
}
|
|
}
|