@xcpcio/board-app 0.52.0 → 0.53.0

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (146) hide show
  1. package/dist/404.html +1 -1
  2. package/dist/assets/{Board-f05c0366.css → Board--Fj0eIxn.css} +1 -1
  3. package/dist/assets/Board-DVycq7Hb.js +1 -0
  4. package/dist/assets/ContestStateBadge-SaSIRVZw.js +1 -0
  5. package/dist/assets/ContestStateBadge-yOXRkC0c.css +1 -0
  6. package/dist/assets/DataSourceInput.vue_vue_type_script_setup_true_lang-ButnX5NG.js +1 -0
  7. package/dist/assets/Footer.vue_vue_type_script_setup_true_lang-DtriOyxw.js +1 -0
  8. package/dist/assets/NavBar-CTO09sVc.js +1 -0
  9. package/dist/assets/NavBar-K1-1c5jR.css +1 -0
  10. package/dist/assets/RightArrowIcon-93I3m1Dg.js +1 -0
  11. package/dist/assets/TheInput.vue_vue_type_script_setup_true_lang-Bstp0Uq6.js +1 -0
  12. package/dist/assets/Tooltip-VVqtpO6L.css +1 -0
  13. package/dist/assets/Tooltip.vue_vue_type_script_setup_true_lang-IVJ6kO8Y.js +27 -0
  14. package/dist/assets/{_...all_-85910c2a.js → _...all_-CajB1u6j.js} +2 -2
  15. package/dist/assets/_...all_-DkFLHLY4.js +1 -0
  16. package/dist/assets/_name_-CKcXFscu.js +1 -0
  17. package/dist/assets/_plugin-vue_export-helper-DlAUqK2U.js +1 -0
  18. package/dist/assets/about-Bt1E61e1.js +5 -0
  19. package/dist/assets/board-BuZxK-RS.js +1 -0
  20. package/dist/assets/board-layout-BDGSSQnD.js +1 -0
  21. package/dist/assets/constant-D5AETBoS.js +1 -0
  22. package/dist/assets/default-g2FZdb_E.js +1 -0
  23. package/dist/assets/en-DDlXf_8q.js +1 -0
  24. package/dist/assets/headless-AGI21K3d.js +1 -0
  25. package/dist/assets/home-CIo2SGx9.js +1 -0
  26. package/dist/assets/index-B0AiC33S.js +1 -0
  27. package/dist/assets/index-BJlHNlHk.js +198 -0
  28. package/dist/assets/{index-241beb5a.css → index-BP90wE2A.css} +1 -1
  29. package/dist/assets/index-BVqqkkh8.js +25 -0
  30. package/dist/assets/index-BerApwlM.css +1 -0
  31. package/dist/assets/index-Bqug296L.js +50 -0
  32. package/dist/assets/index-ByBDbX-Q.js +1 -0
  33. package/dist/assets/index-CDb5YJlm.js +1 -0
  34. package/dist/assets/index-Ci3FURub.css +5 -0
  35. package/dist/assets/index-CsD1PvIl.js +5 -0
  36. package/dist/assets/{index-c827bc8f.css → index-DRiWpQTB.css} +1 -1
  37. package/dist/assets/index-De6dfmWB.css +1 -0
  38. package/dist/assets/index-DtIE9gnq.js +1 -0
  39. package/dist/assets/index-eEOWm26O.js +1 -0
  40. package/dist/assets/index-layout-B9ZsHAPN.js +1 -0
  41. package/dist/assets/pagination-SF0231GF.js +3 -0
  42. package/dist/assets/route-block-B_A1xBdJ.js +1 -0
  43. package/dist/assets/test-BmgsMNrG.js +1 -0
  44. package/dist/assets/use-vmodel-DKmkNt1c.js +1 -0
  45. package/dist/assets/useQueryBoardData-MYqwKv9X.js +1 -0
  46. package/dist/assets/user-DVMgLOCG.js +1 -0
  47. package/dist/assets/virtual_pwa-register-G08q8i_v.js +1 -0
  48. package/dist/assets/workbox-window.prod.es5-D5gOYdM7.js +2 -0
  49. package/dist/assets/zh-CN-CNJkghp4.js +1 -0
  50. package/dist/index.html +1 -1
  51. package/dist/sw.js +1 -1
  52. package/package.json +51 -49
  53. package/src/auto-imports.d.ts +4 -2
  54. package/src/components/Balloon.vue +3 -2
  55. package/src/components/BalloonBlock.vue +1 -1
  56. package/src/components/ContestIndexUI.vue +3 -3
  57. package/src/components/Countdown.vue +3 -3
  58. package/src/components/NavBar.vue +1 -1
  59. package/src/components/Resolver.vue +112 -27
  60. package/src/components/SearchInput.vue +1 -1
  61. package/src/components/TheCheckbox.vue +1 -1
  62. package/src/components/TheCounter.vue +1 -1
  63. package/src/components/TheInput.vue +3 -3
  64. package/src/components/battle-of-giants/GiantsOptions.vue +5 -5
  65. package/src/components/battle-of-giants/GiantsScoreBoard.vue +1 -1
  66. package/src/components/board/AnimatedSubmissionBlock.vue +2 -2
  67. package/src/components/board/AnimatedSubmissionsModal.vue +1 -1
  68. package/src/components/board/Badge.vue +2 -2
  69. package/src/components/board/Board.vue +8 -8
  70. package/src/components/board/BoardTab.vue +1 -1
  71. package/src/components/board/BottomStatistics.vue +1 -1
  72. package/src/components/board/ContestStateBadge.vue +3 -3
  73. package/src/components/board/Export.vue +5 -5
  74. package/src/components/board/Modal.vue +4 -4
  75. package/src/components/board/ModalMenu.vue +2 -2
  76. package/src/components/board/OptionsModal.vue +4 -4
  77. package/src/components/board/ProblemBlock.vue +2 -2
  78. package/src/components/board/ProblemInfoModal.vue +3 -3
  79. package/src/components/board/Progress.vue +12 -9
  80. package/src/components/board/SecondLevelMenu.vue +2 -2
  81. package/src/components/board/Standings.vue +5 -5
  82. package/src/components/board/Statistics.vue +3 -3
  83. package/src/components/board/SubmissionsTable.vue +15 -15
  84. package/src/components/board/SubmissionsTableModal.vue +4 -4
  85. package/src/components/board/TeamAwards.vue +3 -3
  86. package/src/components/board/TeamInfoModal.vue +5 -5
  87. package/src/components/board/TeamProblemBlock.vue +5 -5
  88. package/src/components/board/TeamUI.vue +3 -3
  89. package/src/components/flowbite/Tooltip.vue +2 -2
  90. package/src/components/rating/Rating.vue +1 -1
  91. package/src/components/rating/RatingBadge.vue +1 -1
  92. package/src/components/rating/RatingIndexUI.vue +3 -3
  93. package/src/components/rating/RatingInfoModal.vue +4 -4
  94. package/src/components/rating/RatingTable.vue +4 -4
  95. package/src/components/rating/RatingUserUI.vue +2 -2
  96. package/src/components/table/TablePagination.vue +1 -1
  97. package/src/components.d.ts +1 -1
  98. package/src/composables/color.ts +2 -2
  99. package/src/composables/logo/index.ts +1 -1
  100. package/src/composables/pagination.ts +2 -2
  101. package/src/composables/rating.ts +1 -1
  102. package/src/composables/statistics.ts +1 -1
  103. package/src/composables/type.ts +4 -4
  104. package/src/composables/useQueryBoardData.ts +3 -2
  105. package/src/main.ts +9 -8
  106. package/src/modules/README.md +1 -1
  107. package/src/modules/i18n.ts +1 -1
  108. package/src/modules/nprogress.ts +1 -1
  109. package/src/modules/pinia.ts +1 -1
  110. package/src/modules/pwa.ts +1 -1
  111. package/src/modules/toast.ts +2 -2
  112. package/src/pages/index.vue +6 -6
  113. package/src/pages/rating/index.vue +2 -2
  114. package/src/shims.d.ts +10 -8
  115. package/src/styles/markdown.css +8 -11
  116. package/src/typed-router.d.ts +33 -0
  117. package/src/types.ts +1 -1
  118. package/tsconfig.json +18 -19
  119. package/vite.config.ts +32 -30
  120. package/dist/assets/Board-04b0589d.js +0 -1
  121. package/dist/assets/DataSourceInput.vue_vue_type_script_setup_true_lang-11e5a08c.js +0 -1
  122. package/dist/assets/TheInput.vue_vue_type_script_setup_true_lang-f91fd6e0.js +0 -1
  123. package/dist/assets/_...all_-905784b3.js +0 -1
  124. package/dist/assets/_name_-203db09f.js +0 -1
  125. package/dist/assets/about-d9d865e0.js +0 -11
  126. package/dist/assets/board-3f91f491.js +0 -1
  127. package/dist/assets/board-layout-967802f4.js +0 -1
  128. package/dist/assets/en-c9a8dbb5.js +0 -1
  129. package/dist/assets/headless-f3f3253c.js +0 -1
  130. package/dist/assets/home-3d9e3102.js +0 -1
  131. package/dist/assets/index-0095f855.js +0 -1
  132. package/dist/assets/index-1e2a1259.js +0 -236
  133. package/dist/assets/index-43f8e0d3.css +0 -5
  134. package/dist/assets/index-86ef642b.js +0 -1
  135. package/dist/assets/index-accb347c.css +0 -1
  136. package/dist/assets/index-b97b2d45.js +0 -1
  137. package/dist/assets/index-d51c6c02.js +0 -1
  138. package/dist/assets/index-layout-5a67cc99.js +0 -1
  139. package/dist/assets/pagination-6eac914a.js +0 -3
  140. package/dist/assets/query-ff21040c.js +0 -1
  141. package/dist/assets/test-5dd32cac.js +0 -1
  142. package/dist/assets/user-cd9a56f6.js +0 -1
  143. package/dist/assets/virtual_pwa-register-ff5720d1.js +0 -1
  144. package/dist/assets/workbox-window.prod.es5-c46a1faa.js +0 -2
  145. package/dist/assets/zh-CN-8e545f66.js +0 -1
  146. /package/dist/assets/{_...all_-c60acc8c.css → _..-8Wh-Y8sB.css} +0 -0
@@ -6,8 +6,8 @@ import type { AnimatedSubmissionBlockItem } from "~/composables/type";
6
6
  import { LastBlockDisplayType } from "~/composables/type";
7
7
 
8
8
  const props = defineProps<{
9
- item: AnimatedSubmissionBlockItem,
10
- lastBlockDisplayType: LastBlockDisplayType,
9
+ item: AnimatedSubmissionBlockItem;
10
+ lastBlockDisplayType: LastBlockDisplayType;
11
11
  }>();
12
12
 
13
13
  const item = computed(() => props.item);
@@ -6,7 +6,7 @@ import type { AnimatedSubmissionBlockItem } from "~/composables/type";
6
6
  import { LastBlockDisplayType } from "~/composables/type";
7
7
 
8
8
  const props = defineProps<{
9
- rank: Rank,
9
+ rank: Rank;
10
10
  }>();
11
11
 
12
12
  const rank = computed(() => props.rank);
@@ -3,8 +3,8 @@ import type { Image } from "@xcpcio/types";
3
3
  import { getImageSource } from "@xcpcio/core";
4
4
 
5
5
  const props = defineProps<{
6
- image: Image
7
- widthClass?: string
6
+ image: Image;
7
+ widthClass?: string;
8
8
  }>();
9
9
 
10
10
  const image = computed(() => {
@@ -1,17 +1,17 @@
1
1
  <script setup lang="ts">
2
- import _ from "lodash";
3
- import { useRouteQuery } from "@vueuse/router";
2
+ import type { Contest, Submissions, Teams } from "@xcpcio/core";
4
3
  import { onKeyStroke, useDocumentVisibility, useIntervalFn, useNow } from "@vueuse/core";
4
+ import { useRouteQuery } from "@vueuse/router";
5
5
 
6
- import { Rank, RankOptions, createContest, createSubmissions, createTeams, getImageSource, getTimeDiff } from "@xcpcio/core";
7
- import type { Contest, Submissions, Teams } from "@xcpcio/core";
6
+ import { createContest, createSubmissions, createTeams, getImageSource, getTimeDiff, Rank, RankOptions } from "@xcpcio/core";
8
7
  import { ContestState, type Contest as IContest, type Submissions as ISubmissions, type Teams as ITeams } from "@xcpcio/types";
8
+ import _ from "lodash";
9
9
 
10
- import { TITLE_SUFFIX } from "~/composables/constant";
11
10
  import type { Item } from "~/components/board/SecondLevelMenu.vue";
11
+ import { TITLE_SUFFIX } from "~/composables/constant";
12
12
 
13
13
  const props = defineProps<{
14
- dataSourceUrl?: string,
14
+ dataSourceUrl?: string;
15
15
  }>();
16
16
 
17
17
  const route = useRoute();
@@ -45,7 +45,7 @@ const enableAutoScroll = ref(false);
45
45
  const routeQueryForBattleOfGiants = useRouteQueryForBattleOfGiants();
46
46
  if (
47
47
  routeQueryForBattleOfGiants.value !== null
48
- && routeQueryForBattleOfGiants.value !== undefined
48
+ && routeQueryForBattleOfGiants.value !== undefined
49
49
  ) {
50
50
  rankOptions.value.battleOfGiants.FromBase64(routeQueryForBattleOfGiants.value);
51
51
  }
@@ -187,7 +187,7 @@ const group = computed(() => {
187
187
  });
188
188
 
189
189
  const groupMenuList = computed(() => {
190
- const res = Array<Item>();
190
+ const res = new Array<Item>();
191
191
 
192
192
  for (const [k, v] of group.value) {
193
193
  const item = {
@@ -6,7 +6,7 @@ import { Dropdown } from "flowbite";
6
6
  import { useToast } from "vue-toast-notification";
7
7
 
8
8
  const props = defineProps<{
9
- rank: Rank,
9
+ rank: Rank;
10
10
  }>();
11
11
 
12
12
  const rank = computed(() => props.rank);
@@ -2,7 +2,7 @@
2
2
  import type { ProblemStatistics, Rank } from "@xcpcio/core";
3
3
 
4
4
  const props = defineProps<{
5
- rank: Rank,
5
+ rank: Rank;
6
6
  }>();
7
7
 
8
8
  const { t } = useI18n();
@@ -2,9 +2,9 @@
2
2
  import { ContestState } from "@xcpcio/types";
3
3
 
4
4
  const props = defineProps<{
5
- state: ContestState,
6
- pendingTime?: string,
7
- pausedTime?: string,
5
+ state: ContestState;
6
+ pendingTime?: string;
7
+ pausedTime?: string;
8
8
  }>();
9
9
  </script>
10
10
 
@@ -1,14 +1,14 @@
1
1
  <script setup lang="ts">
2
- import { ModelSelect } from "vue-search-select";
3
- import { useToast } from "vue-toast-notification";
2
+ import type { Rank } from "@xcpcio/core";
3
+ import { CodeforcesGymGhostDATConverter, GeneralExcelConverter, ICPCStandingsCsvConverter } from "@xcpcio/core";
4
4
  import FileSaver from "file-saver";
5
5
  import sleep from "sleep-promise";
6
6
 
7
- import type { Rank } from "@xcpcio/core";
8
- import { CodeforcesGymGhostDATConverter, GeneralExcelConverter, ICPCStandingsCsvConverter } from "@xcpcio/core";
7
+ import { ModelSelect } from "vue-search-select";
8
+ import { useToast } from "vue-toast-notification";
9
9
 
10
10
  const props = defineProps<{
11
- rank: Rank,
11
+ rank: Rank;
12
12
  }>();
13
13
 
14
14
  const $toast = useToast();
@@ -2,11 +2,11 @@
2
2
  import { useMagicKeys } from "@vueuse/core";
3
3
 
4
4
  const props = defineProps<{
5
- isHidden: boolean,
5
+ isHidden: boolean;
6
6
 
7
- title?: string,
8
- width?: string,
9
- mt?: string,
7
+ title?: string;
8
+ width?: string;
9
+ mt?: string;
10
10
  }>();
11
11
 
12
12
  const emit = defineEmits(["update:isHidden"]);
@@ -1,7 +1,7 @@
1
1
  <script setup lang="ts">
2
2
  const props = defineProps<{
3
- currentType: string,
4
- types: Array<string>,
3
+ currentType: string;
4
+ types: Array<string>;
5
5
  }>();
6
6
 
7
7
  const emit = defineEmits(["update:currentType"]);
@@ -1,13 +1,13 @@
1
1
  <script setup lang="ts">
2
+ import type { Rank, RankOptions, SelectOptionItem } from "@xcpcio/core";
2
3
  import _ from "lodash";
3
4
  import { MultiSelect } from "vue-search-select";
4
- import type { Rank, RankOptions, SelectOptionItem } from "@xcpcio/core";
5
5
 
6
6
  const props = defineProps<{
7
- isHidden: boolean,
7
+ isHidden: boolean;
8
8
 
9
- rank: Rank,
10
- rankOptions: RankOptions,
9
+ rank: Rank;
10
+ rankOptions: RankOptions;
11
11
  }>();
12
12
 
13
13
  const emit = defineEmits([
@@ -2,8 +2,8 @@
2
2
  import type { Problem, Rank } from "@xcpcio/core";
3
3
 
4
4
  const props = defineProps<{
5
- rank: Rank,
6
- problem: Problem
5
+ rank: Rank;
6
+ problem: Problem;
7
7
  }>();
8
8
 
9
9
  const hiddenModal = ref(true);
@@ -2,10 +2,10 @@
2
2
  import type { Problem, Rank } from "@xcpcio/core";
3
3
 
4
4
  const props = defineProps<{
5
- isHidden: boolean,
5
+ isHidden: boolean;
6
6
 
7
- rank: Rank,
8
- problem: Problem
7
+ rank: Rank;
8
+ problem: Problem;
9
9
  }>();
10
10
 
11
11
  const emit = defineEmits(["update:isHidden"]);
@@ -1,16 +1,16 @@
1
1
  <script setup lang="ts">
2
- import { ContestState } from "@xcpcio/types";
3
- import { useRouteQuery } from "@vueuse/router";
4
2
  import type { Rank, RankOptions } from "@xcpcio/core";
3
+ import { useRouteQuery } from "@vueuse/router";
5
4
  import { createDayJS, getTimeDiff } from "@xcpcio/core";
5
+ import { ContestState } from "@xcpcio/types";
6
6
 
7
7
  const props = defineProps<{
8
- width: number,
9
- state: ContestState,
10
- needScroll?: boolean,
11
- rank?: Rank,
12
- rankOptions?: RankOptions,
13
- elapsedTime?: string,
8
+ width: number;
9
+ state: ContestState;
10
+ needScroll?: boolean;
11
+ rank?: Rank;
12
+ rankOptions?: RankOptions;
13
+ elapsedTime?: string;
14
14
  }>();
15
15
  const emit = defineEmits(["update:rank-options"]);
16
16
 
@@ -33,7 +33,10 @@ const barClass = computed(() => {
33
33
  return "am-progress-bar-danger";
34
34
  case ContestState.FINISHED:
35
35
  return "am-progress-bar-primary";
36
+ case ContestState.PAUSED:
37
+ return "am-progress-bar-danger";
36
38
  }
39
+ return "";
37
40
  });
38
41
 
39
42
  const pauseUpdate = ref(false);
@@ -105,7 +108,7 @@ function startDrag(event: MouseEvent) {
105
108
  progressRatio.value = dragWidth.value;
106
109
  rankOptions.value?.setWidth(dragWidth.value, props.rank!.contest);
107
110
  } else {
108
- // eslint-disable-next-line @typescript-eslint/ban-ts-comment
111
+ // eslint-disable-next-line ts/ban-ts-comment
109
112
  // @ts-expect-error
110
113
  progressRatio.value = undefined;
111
114
  rankOptions.value?.disableFilterSubmissionByTimestamp();
@@ -1,6 +1,6 @@
1
1
  <script setup lang="ts">
2
- import { useRouteQuery } from "@vueuse/router";
3
2
  import type { Lang } from "@xcpcio/types";
3
+ import { useRouteQuery } from "@vueuse/router";
4
4
 
5
5
  export interface Item {
6
6
  title?: string;
@@ -21,7 +21,7 @@ const props = defineProps<{
21
21
  currentItem: string;
22
22
  queryParamName: string;
23
23
  reverseOrder?: boolean;
24
- // eslint-disable-next-line unused-imports/no-unused-vars
24
+
25
25
  onChange?: (current: string) => void;
26
26
  }>();
27
27
 
@@ -3,7 +3,7 @@ import type { Rank } from "@xcpcio/core";
3
3
  import { GiantsType, Team } from "@xcpcio/core";
4
4
 
5
5
  const props = defineProps<{
6
- rank: Rank,
6
+ rank: Rank;
7
7
  }>();
8
8
 
9
9
  const { t } = useI18n();
@@ -31,8 +31,8 @@ const filterTeams = computed(() => {
31
31
  });
32
32
 
33
33
  interface GiantTeam {
34
- team: Team,
35
- giantsType: GiantsType,
34
+ team: Team;
35
+ giantsType: GiantsType;
36
36
  }
37
37
 
38
38
  const giantTeams = computed(() => {
@@ -49,7 +49,7 @@ const giantTeams = computed(() => {
49
49
  const giantsType = (() => {
50
50
  if (
51
51
  blueTeam.filterOrganizationMap.has(t.organization)
52
- || blueTeam.filterTeamMap.has(t.id)
52
+ || blueTeam.filterTeamMap.has(t.id)
53
53
  ) {
54
54
  if (blueCnt >= battleOfGiants.topX) {
55
55
  return null;
@@ -61,7 +61,7 @@ const giantTeams = computed(() => {
61
61
 
62
62
  if (
63
63
  redTeam.filterOrganizationMap.has(t.organization)
64
- || redTeam.filterTeamMap.has(t.id)
64
+ || redTeam.filterTeamMap.has(t.id)
65
65
  ) {
66
66
  if (redCnt >= battleOfGiants.topX) {
67
67
  return null;
@@ -1,10 +1,10 @@
1
1
  <script setup lang="ts">
2
- import { Chart } from "highcharts-vue";
3
-
4
2
  import type { Rank } from "@xcpcio/core";
5
3
 
4
+ import { Chart } from "highcharts-vue";
5
+
6
6
  const props = defineProps<{
7
- rank: Rank,
7
+ rank: Rank;
8
8
  }>();
9
9
 
10
10
  const { t } = useI18n();
@@ -1,10 +1,10 @@
1
1
  <script setup lang="ts">
2
- import { MultiSelect } from "vue-search-select";
3
-
4
2
  import type { Rank, SelectOptionItem, Submissions } from "@xcpcio/core";
5
- import { Submission } from "@xcpcio/core";
3
+
6
4
  import type { SubmissionReaction, SubmissionStatus } from "@xcpcio/types";
5
+ import { Submission } from "@xcpcio/core";
7
6
  import { SubmissionStatusToString } from "@xcpcio/types";
7
+ import { MultiSelect } from "vue-search-select";
8
8
 
9
9
  import { Pagination } from "~/composables/pagination";
10
10
 
@@ -18,18 +18,18 @@ interface FilterOptions {
18
18
  }
19
19
 
20
20
  interface EnableFilterOptions {
21
- organization?: boolean,
22
- team?: boolean,
23
- language?: boolean,
24
- status?: boolean,
21
+ organization?: boolean;
22
+ team?: boolean;
23
+ language?: boolean;
24
+ status?: boolean;
25
25
  }
26
26
 
27
27
  const props = defineProps<{
28
- rank: Rank,
29
- submissions: Submissions,
30
- pageSize?: number,
31
- removeBorder?: boolean,
32
- enableFilter?: EnableFilterOptions,
28
+ rank: Rank;
29
+ submissions: Submissions;
30
+ pageSize?: number;
31
+ removeBorder?: boolean;
32
+ enableFilter?: EnableFilterOptions;
33
33
  }>();
34
34
 
35
35
  const rank = computed(() => props.rank);
@@ -145,9 +145,9 @@ const submissions = computed(() => {
145
145
  const o = filterOptions.value;
146
146
 
147
147
  if (o.orgNames.length === 0
148
- && o.teamIds.length === 0
149
- && o.languages.length === 0
150
- && o.statuses.length === 0
148
+ && o.teamIds.length === 0
149
+ && o.languages.length === 0
150
+ && o.statuses.length === 0
151
151
  ) {
152
152
  return true;
153
153
  }
@@ -2,11 +2,11 @@
2
2
  import type { Rank, Team, TeamProblemStatistics } from "@xcpcio/core";
3
3
 
4
4
  const props = defineProps<{
5
- isHidden: boolean,
5
+ isHidden: boolean;
6
6
 
7
- rank: Rank,
8
- team: Team,
9
- p: TeamProblemStatistics,
7
+ rank: Rank;
8
+ team: Team;
9
+ p: TeamProblemStatistics;
10
10
  }>();
11
11
 
12
12
  const emit = defineEmits(["update:isHidden"]);
@@ -1,10 +1,10 @@
1
1
  <script setup lang="ts">
2
- import { MedalType } from "@xcpcio/core";
3
2
  import type { Rank, Team } from "@xcpcio/core";
3
+ import { MedalType } from "@xcpcio/core";
4
4
 
5
5
  const props = defineProps<{
6
- team: Team,
7
- rank: Rank,
6
+ team: Team;
7
+ rank: Rank;
8
8
  }>();
9
9
 
10
10
  const team = computed(() => props.team);
@@ -1,13 +1,13 @@
1
1
  <script setup lang="ts">
2
- import { Chart } from "highcharts-vue";
3
-
4
2
  import type { Rank, Team } from "@xcpcio/core";
5
3
 
4
+ import { Chart } from "highcharts-vue";
5
+
6
6
  const props = defineProps<{
7
- isHidden: boolean,
7
+ isHidden: boolean;
8
8
 
9
- rank: Rank,
10
- team: Team,
9
+ rank: Rank;
10
+ team: Team;
11
11
  }>();
12
12
 
13
13
  const emit = defineEmits(["update:isHidden"]);
@@ -2,9 +2,9 @@
2
2
  import type { Rank, Team, TeamProblemStatistics } from "@xcpcio/core";
3
3
 
4
4
  const props = defineProps<{
5
- rank: Rank,
6
- team: Team,
7
- p: TeamProblemStatistics,
5
+ rank: Rank;
6
+ team: Team;
7
+ p: TeamProblemStatistics;
8
8
  }>();
9
9
 
10
10
  const hiddenModal = ref(true);
@@ -40,8 +40,8 @@ function getProblemShow(p: TeamProblemStatistics): string {
40
40
  }
41
41
 
42
42
  if ((p.isSolved && rank.value.contest.statusTimeDisplay.correct)
43
- || (p.isPending && rank.value.contest.statusTimeDisplay.pending)
44
- || (p.isWrongAnswer && rank.value.contest.statusTimeDisplay.incorrect)) {
43
+ || (p.isPending && rank.value.contest.statusTimeDisplay.pending)
44
+ || (p.isWrongAnswer && rank.value.contest.statusTimeDisplay.incorrect)) {
45
45
  res += `/${Math.floor(p.lastSubmitTimestamp / 60)}`;
46
46
  }
47
47
 
@@ -3,9 +3,9 @@ import type { Rank, Team } from "@xcpcio/core";
3
3
  import { GiantsType, MedalType } from "@xcpcio/core";
4
4
 
5
5
  const props = defineProps<{
6
- ix: number,
7
- rank: Rank,
8
- team: Team,
6
+ ix: number;
7
+ rank: Rank;
8
+ team: Team;
9
9
  isFilter?: boolean;
10
10
  giantsType?: GiantsType;
11
11
  }>();
@@ -1,11 +1,11 @@
1
1
  <script setup lang="ts">
2
- import { Tooltip } from "flowbite";
3
2
  import type { TooltipInterface, TooltipOptions } from "flowbite";
3
+ import { Tooltip } from "flowbite";
4
4
 
5
5
  import "./Tooltip.css";
6
6
 
7
7
  const props = defineProps<{
8
- placement?: "left" | "right" | "top" | "bottom" | "auto",
8
+ placement?: "left" | "right" | "top" | "bottom" | "auto";
9
9
  }>();
10
10
 
11
11
  const tooltipTargetEl = ref(null);
@@ -3,7 +3,7 @@ import { useFetch } from "@vueuse/core";
3
3
  import { Rating } from "@xcpcio/core";
4
4
 
5
5
  const props = defineProps<{
6
- id: string
6
+ id: string;
7
7
  }>();
8
8
 
9
9
  const id = computed(() => props.id);
@@ -4,7 +4,7 @@ import { RatingLevelToString, RatingUtility } from "@xcpcio/core";
4
4
  import "./rating.less";
5
5
 
6
6
  const props = defineProps<{
7
- rating: number
7
+ rating: number;
8
8
  }>();
9
9
 
10
10
  const rating = computed(() => props.rating);
@@ -1,10 +1,10 @@
1
1
  <script setup lang="ts">
2
- import { useElementVisibility } from "@vueuse/core";
3
-
4
2
  import type { IRatingIndex } from "@xcpcio/types/index";
5
3
 
4
+ import { useElementVisibility } from "@vueuse/core";
5
+
6
6
  const props = defineProps<{
7
- ratingIndex: IRatingIndex
7
+ ratingIndex: IRatingIndex;
8
8
  }>();
9
9
 
10
10
  const ratingIndex = computed(() => props.ratingIndex);
@@ -1,14 +1,14 @@
1
1
  <script setup lang="ts">
2
- import { Chart } from "highcharts-vue";
3
-
4
2
  import type { RatingUser } from "@xcpcio/core";
5
3
 
4
+ import { Chart } from "highcharts-vue";
5
+
6
6
  import "./rating.less";
7
7
 
8
8
  const props = defineProps<{
9
- isHidden: boolean,
9
+ isHidden: boolean;
10
10
 
11
- ratingUser: RatingUser,
11
+ ratingUser: RatingUser;
12
12
  }>();
13
13
 
14
14
  const emit = defineEmits(["update:isHidden"]);
@@ -1,8 +1,8 @@
1
1
  <script setup lang="ts">
2
- import { MultiSelect } from "vue-search-select";
3
-
4
2
  import type { Rating, SelectOptionItem } from "@xcpcio/core";
5
3
 
4
+ import { MultiSelect } from "vue-search-select";
5
+
6
6
  import { Pagination } from "~/composables/pagination";
7
7
 
8
8
  interface FilterOptions {
@@ -11,7 +11,7 @@ interface FilterOptions {
11
11
  }
12
12
 
13
13
  const props = defineProps<{
14
- rating: Rating,
14
+ rating: Rating;
15
15
  pageSize?: number;
16
16
  removeBorder?: boolean;
17
17
  }>();
@@ -75,7 +75,7 @@ const users = computed(() => {
75
75
  const o = filterOptions.value;
76
76
 
77
77
  if (o.organizations.length === 0
78
- && o.members.length === 0) {
78
+ && o.members.length === 0) {
79
79
  return true;
80
80
  }
81
81
 
@@ -5,8 +5,8 @@ import { RatingUtility } from "@xcpcio/core";
5
5
  import "./rating.less";
6
6
 
7
7
  const props = defineProps<{
8
- ix: number,
9
- ratingUser: RatingUser,
8
+ ix: number;
9
+ ratingUser: RatingUser;
10
10
  }>();
11
11
 
12
12
  const u = computed(() => props.ratingUser);
@@ -2,7 +2,7 @@
2
2
  import type { Pagination } from "~/composables/pagination";
3
3
 
4
4
  const props = defineProps<{
5
- pagination: Pagination,
5
+ pagination: Pagination;
6
6
  }>();
7
7
  const emit = defineEmits(["update:pagination"]);
8
8
 
@@ -1,10 +1,10 @@
1
1
  /* eslint-disable */
2
- /* prettier-ignore */
3
2
  // @ts-nocheck
4
3
  // Generated by unplugin-vue-components
5
4
  // Read more: https://github.com/vuejs/core/pull/3399
6
5
  export {}
7
6
 
7
+ /* prettier-ignore */
8
8
  declare module 'vue' {
9
9
  export interface GlobalComponents {
10
10
  AnimatedSubmissionBlock: typeof import('./components/board/AnimatedSubmissionBlock.vue')['default']
@@ -1,7 +1,7 @@
1
- import { MedalType } from "@xcpcio/core";
2
1
  import type { Submission, Team } from "@xcpcio/core";
2
+ import { MedalType } from "@xcpcio/core";
3
3
 
4
- export function getMedalColor(team: Team): { backgroundColor: string, color: string } | undefined {
4
+ export function getMedalColor(team: Team): { backgroundColor: string; color: string } | undefined {
5
5
  const color = {
6
6
  backgroundColor: "#fff",
7
7
  color: "#000",
@@ -1,8 +1,8 @@
1
1
  import type { Image } from "@xcpcio/types";
2
2
 
3
- import { GET_LOGO_ICPC } from "./icpc";
4
3
  import { GET_LOGO_CCPC } from "./ccpc";
5
4
  import { GET_LOGO_HUNAN_CPC } from "./hunan-cpc";
5
+ import { GET_LOGO_ICPC } from "./icpc";
6
6
 
7
7
  export function getLogoFromPreset(image: Image): Image {
8
8
  if (!image.preset) {
@@ -56,8 +56,8 @@ export class Pagination {
56
56
  }
57
57
 
58
58
  onPageChange(options: {
59
- to?: number,
60
- diff?: number,
59
+ to?: number;
60
+ diff?: number;
61
61
  }) {
62
62
  const totalPage = this.totalPage;
63
63
 
@@ -1,5 +1,5 @@
1
- import { RatingLevelToString, RatingUtility } from "@xcpcio/core";
2
1
  import type { RatingUser } from "@xcpcio/core";
2
+ import { RatingLevelToString, RatingUtility } from "@xcpcio/core";
3
3
 
4
4
  interface RatingGraphData {
5
5
  x: number;
@@ -1,4 +1,4 @@
1
- import { type Rank, type Team, getTimeDiff } from "@xcpcio/core";
1
+ import { getTimeDiff, type Rank, type Team } from "@xcpcio/core";
2
2
 
3
3
  function getChartObj(title: string, xText: string, yText: string, cat: any, series: any, colors: any) {
4
4
  return {