Skip to content

Commit

Permalink
feat: toggle for dynamic submissions
Browse files Browse the repository at this point in the history
Signed-off-by: Dup4 <lyuzhi.pan@gmail.com>
  • Loading branch information
Dup4 committed Nov 4, 2023
1 parent b2cb798 commit 985811c
Show file tree
Hide file tree
Showing 6 changed files with 49 additions and 5 deletions.
2 changes: 1 addition & 1 deletion packages/apps/board/src/components.d.ts
Original file line number Diff line number Diff line change
Expand Up @@ -21,6 +21,7 @@ declare module 'vue' {
CustomBoard: typeof import('./components/CustomBoard.vue')['default']
CustomCountdown: typeof import('./components/CustomCountdown.vue')['default']
DataSourceInput: typeof import('./components/DataSourceInput.vue')['default']
DynamicSubmissionsModal: typeof import('./components/board/DynamicSubmissionsModal.vue')['default']
Export: typeof import('./components/board/Export.vue')['default']
Footer: typeof import('./components/Footer.vue')['default']
GirlIcon: typeof import('./components/icon/GirlIcon.vue')['default']
Expand All @@ -41,7 +42,6 @@ declare module 'vue' {
StandingsAnnotate: typeof import('./components/board/StandingsAnnotate.vue')['default']
StarIcon: typeof import('./components/icon/StarIcon.vue')['default']
Statistics: typeof import('./components/board/Statistics.vue')['default']
SubmissionsModal: typeof import('./components/board/SubmissionsModal.vue')['default']
SubmissionsTable: typeof import('./components/board/SubmissionsTable.vue')['default']
SubmissionsTableModal: typeof import('./components/board/SubmissionsTableModal.vue')['default']
TablePagination: typeof import('./components/table/TablePagination.vue')['default']
Expand Down
10 changes: 7 additions & 3 deletions packages/apps/board/src/components/board/Board.vue
Original file line number Diff line number Diff line change
Expand Up @@ -459,9 +459,13 @@ const widthClass = "sm:w-[1260px] xl:w-screen";
</div>
</div>
<SubmissionsModal
:rank="rank"
/>
<div
v-if="rankOptions.enableDynamicSubmissions"
>
<DynamicSubmissionsModal
:rank="rank"
/>
</div>
<OptionsModal
v-if="!isHiddenOptionsModal"
Expand Down
30 changes: 30 additions & 0 deletions packages/apps/board/src/components/board/OptionsModal.vue
Original file line number Diff line number Diff line change
Expand Up @@ -40,6 +40,8 @@ const title = computed(() => {
return t("type_menu.options");
});
const enableDynamicSubmissions = ref(rankOptions.value.enableDynamicSubmissions);
const orgOptions = computed(() => {
const res = rank.value.organizations.map((o) => {
return {
Expand Down Expand Up @@ -93,6 +95,8 @@ function onConfirm() {
localStorage.setItem(localStorageKeyForFilterOrganizations, JSON.stringify(orgSelectedItems.value));
localStorage.setItem(localStorageKeyForFilterTeams, JSON.stringify(teamsSelectedItems.value));
rankOptions.value.enableDynamicSubmissions = enableDynamicSubmissions.value;
onCancel();
}
</script>
Expand Down Expand Up @@ -150,6 +154,32 @@ function onConfirm() {
</div>
</div>

<div
flex flex-col
w-full
>
<div
flex
mb-2
>
Feature
</div>

<div
flex flex-row
>
<label class="relative inline-flex items-center cursor-pointer">
<input
v-model="enableDynamicSubmissions"
type="checkbox"
class="sr-only peer"
>
<div class="w-11 h-6 bg-gray-200 peer-focus:outline-none peer-focus:ring-4 peer-focus:ring-blue-300 dark:peer-focus:ring-blue-800 rounded-full peer dark:bg-gray-700 peer-checked:after:translate-x-full peer-checked:after:border-white after:content-[''] after:absolute after:top-[2px] after:left-[2px] after:bg-white after:border-gray-300 after:border after:rounded-full after:h-5 after:w-5 after:transition-all dark:border-gray-600 peer-checked:bg-blue-600" />
<span class="ml-3 text-sm font-medium text-gray-900 dark:text-gray-300">Dynamic Submissions</span>
</label>
</div>
</div>

<div
mt-2
w-full
Expand Down
4 changes: 4 additions & 0 deletions packages/libs/core/src/rank.ts
Original file line number Diff line number Diff line change
Expand Up @@ -29,6 +29,8 @@ export class RankOptions {
filterTeams: Array<SelectOptionItem>;
filterTeamMap: Map<string, SelectOptionItem>;

enableDynamicSubmissions: boolean;

constructor() {
this.enableFilterSubmissionsByTimestamp = false;
this.width = 0;
Expand All @@ -42,6 +44,8 @@ export class RankOptions {

this.filterTeams = [];
this.filterTeamMap = new Map<string, SelectOptionItem>();

this.enableDynamicSubmissions = false;
}

setWidth(width: number, contest: Contest) {
Expand Down
8 changes: 7 additions & 1 deletion packages/libs/core/src/submission.ts
Original file line number Diff line number Diff line change
Expand Up @@ -118,7 +118,13 @@ export class Submission {
}
}

return 0;
if (lhs.id < rhs.id) {
return -1;
} else if (lhs.id === rhs.id) {
return 0;
} else {
return 1;
}
}
}

Expand Down

0 comments on commit 985811c

Please sign in to comment.