Skip to content

Commit

Permalink
Review changes
Browse files Browse the repository at this point in the history
  • Loading branch information
danieljames-dj committed Jan 26, 2025
1 parent f0412cb commit 23cbc3e
Show file tree
Hide file tree
Showing 11 changed files with 115 additions and 272 deletions.
46 changes: 0 additions & 46 deletions app/controllers/admin_controller.rb
Original file line number Diff line number Diff line change
Expand Up @@ -36,62 +36,16 @@ def new_results
def check_competition_results
with_results_validator do
@competition = competition_from_params
@result_validation.competition_ids = @competition.id
end
end

def compute_validation_competitions
validation_form = ResultValidationForm.new(
competition_start_date: params[:start_date],
competition_end_date: params[:end_date],
competition_selection: ResultValidationForm::COMP_VALIDATION_ALL,
)

render json: {
competitions: validation_form.competitions,
}
end

def with_results_validator
@result_validation = ResultValidationForm.new(
competition_ids: params[:competition_ids] || "",
competition_start_date: params[:competition_start_date] || "",
competition_end_date: params[:competition_end_date] || "",
validator_classes: params[:validator_classes] || ResultValidationForm::ALL_VALIDATOR_NAMES.join(","),
competition_selection: params[:competition_selection] || ResultValidationForm::COMP_VALIDATION_MANUAL,
apply_fixes: params[:apply_fixes] || false,
)

# For this view, we just build an empty validator: the WRT will decide what
# to actually run (by default all validators will be selected).
@results_validator = ResultsValidators::CompetitionsResultsValidator.new(check_real_results: true)
yield if block_given?
end

def do_check_competition_results
running_validators do
uniq_id = @result_validation.competitions.first
@competition = Competition.find(uniq_id)

render :check_competition_results
end
end

def running_validators
action_params = params.require(:result_validation_form)
.permit(:competition_ids, :validator_classes, :apply_fixes, :competition_selection, :competition_start_date, :competition_end_date)

@result_validation = ResultValidationForm.new(action_params)

if @result_validation.valid?
@results_validator = @result_validation.build_and_run
else
@results_validator = ResultsValidators::CompetitionsResultsValidator.new(check_real_results: true)
end

yield if block_given?
end

def clear_results_submission
# Just clear the "results_submitted_at" field to let the Delegate submit
# the results again. We don't actually want to clear InboxResult and InboxPerson.
Expand Down
8 changes: 8 additions & 0 deletions app/controllers/api/v0/competitions_controller.rb
Original file line number Diff line number Diff line change
Expand Up @@ -37,6 +37,14 @@ def competition_index
include: serial_includes
end

def competition_count
start_date = params.require(:startDate)
end_date = params.require(:endDate)

count = Competition.where("start_date >= ? AND end_date <= ?", start_date, end_date).count
render json: { count: count }
end

def show
competition = competition_from_params

Expand Down
8 changes: 5 additions & 3 deletions app/controllers/panel_controller.rb
Original file line number Diff line number Diff line change
Expand Up @@ -72,9 +72,11 @@ def generate_db_token
private def competition_ids_in_range(range)
start_date = range[:startDate]
end_date = range[:endDate]
ResultValidationForm.competitions_between(start_date, end_date)
.order(:start_date)
.ids
Competition.over.not_cancelled
.where(start_date: start_date..)
.where(start_date: ..end_date)
.order(:start_date)
.ids
end

def validators_for_competition_list
Expand Down
128 changes: 0 additions & 128 deletions app/models/result_validation_form.rb

This file was deleted.

Original file line number Diff line number Diff line change
@@ -1,35 +1,24 @@
import React, { useEffect, useState } from 'react';
import React from 'react';
import { Form } from 'semantic-ui-react';
import { QueryClient, useQuery } from '@tanstack/react-query';
import UtcDatePicker from '../../../wca/UtcDatePicker';
import getCompetitionList from './api/getCompetitionList';
import getCompetitionCount from './api/getCompetitionCount';
import Loading from '../../../Requests/Loading';
import Errored from '../../../Requests/Errored';

const RUN_VALIDATORS_QUERY_CLIENT = new QueryClient();
const MAX_COMPETITIONS_PER_QUERY = 50;

export default function CompetitionRangeSelector({ range, setRange }) {
const [startDate, setStartDate] = useState(range?.startDate);
const [endDate, setEndDate] = useState(range?.endDate);

const enableCompetitionListFetch = Boolean(startDate && endDate);
const enableCompetitionCountFetch = Boolean(range?.startDate && range?.endDate);

const {
data: competitionList, isLoading, isError, refetch,
data: competitionCount, isLoading, isError,
} = useQuery({
queryKey: ['competitionCountInRange'],
queryFn: () => getCompetitionList(startDate, endDate, MAX_COMPETITIONS_PER_QUERY),
enabled: enableCompetitionListFetch,
queryKey: ['competitionCountInRange', range?.startDate, range?.endDate],
queryFn: () => getCompetitionCount(range?.startDate, range?.endDate),
enabled: enableCompetitionCountFetch,
}, RUN_VALIDATORS_QUERY_CLIENT);

useEffect(() => {
setRange({ startDate, endDate });
if (enableCompetitionListFetch) {
refetch();
}
}, [startDate, endDate, setRange, enableCompetitionListFetch, refetch]);

return (
<>
<Form.Field
Expand All @@ -38,31 +27,41 @@ export default function CompetitionRangeSelector({ range, setRange }) {
showYearDropdown
dateFormatOverride="yyyy-MM-dd"
dropdownMode="select"
isoDate={startDate}
onChange={setStartDate}
isoDate={range?.startDate}
onChange={(date) => {
setRange({
...range,
startDate: date,
});
}}
/>
<Form.Field
label="End Date"
control={UtcDatePicker}
showYearDropdown
dateFormatOverride="yyyy-MM-dd"
dropdownMode="select"
isoDate={endDate}
onChange={setEndDate}
isoDate={range?.endDate}
onChange={(date) => {
setRange({
...range,
endDate: date,
});
}}
/>
{enableCompetitionListFetch && (
<>
{isLoading && (<Loading />)}
{isError && <Errored />}
{!isLoading && !isError && (
<div>
{`The checks will run for ${competitionList.length}${
competitionList.length >= MAX_COMPETITIONS_PER_QUERY ? '+' : ''
} competitions`}
</div>
)}
</>
{enableCompetitionCountFetch && (
<CompetitionCountViewer
isLoading={isLoading}
isError={isError}
competitionCount={competitionCount}
/>
)}
</>
);
}

function CompetitionCountViewer({ isLoading, isError, competitionCount }) {
if (isLoading) return <Loading />;
if (isError) return <Errored />;
return `The checks will run for ${competitionCount} competitions`;
}
Loading

0 comments on commit 23cbc3e

Please sign in to comment.