@@ -796,6 +796,70 @@ export class ACLPracticeProvider extends ContestTableProviderBase {
796796 }
797797}
798798
799+ export class ACLBeginnerProvider extends ContestTableProviderBase {
800+ protected setFilterCondition ( ) : ( taskResult : TaskResult ) => boolean {
801+ return ( taskResult : TaskResult ) => {
802+ if ( classifyContest ( taskResult . contest_id ) !== this . contestType ) {
803+ return false ;
804+ }
805+ return taskResult . contest_id === 'abl' ;
806+ } ;
807+ }
808+
809+ getMetadata ( ) : ContestTableMetaData {
810+ return {
811+ title : 'ACL Beginner Contest' ,
812+ abbreviationName : 'ABL' ,
813+ } ;
814+ }
815+
816+ getDisplayConfig ( ) : ContestTableDisplayConfig {
817+ return {
818+ isShownHeader : false ,
819+ isShownRoundLabel : false ,
820+ roundLabelWidth : '' ,
821+ tableBodyCellsWidth : 'w-1/2 xs:w-1/3 sm:w-1/4 md:w-1/5 lg:w-1/6 px-1 py-2' ,
822+ isShownTaskIndex : true ,
823+ } ;
824+ }
825+
826+ getContestRoundLabel ( _contestId : string ) : string {
827+ return '' ;
828+ }
829+ }
830+
831+ export class ACLProvider extends ContestTableProviderBase {
832+ protected setFilterCondition ( ) : ( taskResult : TaskResult ) => boolean {
833+ return ( taskResult : TaskResult ) => {
834+ if ( classifyContest ( taskResult . contest_id ) !== this . contestType ) {
835+ return false ;
836+ }
837+ return taskResult . contest_id === 'acl1' ;
838+ } ;
839+ }
840+
841+ getMetadata ( ) : ContestTableMetaData {
842+ return {
843+ title : 'ACL Contest 1' ,
844+ abbreviationName : 'ACL' ,
845+ } ;
846+ }
847+
848+ getDisplayConfig ( ) : ContestTableDisplayConfig {
849+ return {
850+ isShownHeader : false ,
851+ isShownRoundLabel : false ,
852+ roundLabelWidth : '' ,
853+ tableBodyCellsWidth : 'w-1/2 xs:w-1/3 sm:w-1/4 md:w-1/5 lg:w-1/6 px-1 py-2' ,
854+ isShownTaskIndex : true ,
855+ } ;
856+ }
857+
858+ getContestRoundLabel ( _contestId : string ) : string {
859+ return '' ;
860+ }
861+ }
862+
799863const regexForJoiFirstQualRound = / ^ ( j o i ) ( \d { 4 } ) ( y o 1 ) ( a | b | c ) $ / i;
800864
801865export class JOIFirstQualRoundProvider extends ContestTableProviderBase {
@@ -1209,13 +1273,18 @@ export const prepareContestProviderPresets = () => {
12091273 ) ,
12101274
12111275 /**
1212- * Single group for ACL Practice Contest
1276+ * Group for AtCoder Library Contests (ACL)
1277+ * Includes ACL Practice, ACL Beginner, and ACL Contest 1
12131278 */
1214- AclPractice : ( ) =>
1215- new ContestTableProviderGroup ( `AtCoder Library Practice Contest` , {
1216- buttonLabel : 'ACL Practice' ,
1217- ariaLabel : 'Filter ACL Practice Contest' ,
1218- } ) . addProvider ( new ACLPracticeProvider ( ContestType . ACL_PRACTICE ) ) ,
1279+ Acl : ( ) =>
1280+ new ContestTableProviderGroup ( `AtCoder Library Contests` , {
1281+ buttonLabel : 'ACL' ,
1282+ ariaLabel : 'Filter ACL Contests' ,
1283+ } ) . addProviders (
1284+ new ACLPracticeProvider ( ContestType . ACL_PRACTICE ) ,
1285+ new ACLBeginnerProvider ( ContestType . ABC_LIKE ) ,
1286+ new ACLProvider ( ContestType . ARC_LIKE ) ,
1287+ ) ,
12191288
12201289 JOIFirstQualRound : ( ) =>
12211290 new ContestTableProviderGroup ( `JOI 一次予選` , {
@@ -1251,7 +1320,7 @@ export const contestTableProviderGroups = {
12511320 tessokuBook : prepareContestProviderPresets ( ) . TessokuBook ( ) ,
12521321 mathAndAlgorithm : prepareContestProviderPresets ( ) . MathAndAlgorithm ( ) ,
12531322 dps : prepareContestProviderPresets ( ) . dps ( ) , // Dynamic Programming (DP) Contests
1254- aclPractice : prepareContestProviderPresets ( ) . AclPractice ( ) ,
1323+ acl : prepareContestProviderPresets ( ) . Acl ( ) ,
12551324 joiFirstQualRound : prepareContestProviderPresets ( ) . JOIFirstQualRound ( ) ,
12561325 joiSecondQualAndSemiFinalRound : prepareContestProviderPresets ( ) . JOISecondQualAndSemiFinalRound ( ) ,
12571326} ;
0 commit comments