@xcpcio/board-app 0.28.0 → 0.30.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.
- package/dist/assets/Board-1cb5a052.js +3 -0
- package/dist/assets/Board-3c31679a.css +1 -0
- package/dist/assets/{DataSourceInput.vue_vue_type_script_setup_true_lang-983c0ef5.js → DataSourceInput.vue_vue_type_script_setup_true_lang-c6907218.js} +1 -1
- package/dist/assets/{TheInput.vue_vue_type_script_setup_true_lang-6ed50735.js → TheInput.vue_vue_type_script_setup_true_lang-bd490116.js} +1 -1
- package/dist/assets/{_...all_-51e55631.js → _...all_-b2ba251c.js} +1 -1
- package/dist/assets/{_name_-735452d1.js → _name_-abd07bc1.js} +1 -1
- package/dist/assets/{about-c67fc7ea.js → about-64b5108b.js} +1 -1
- package/dist/assets/{board-55f2cfd1.js → board-85ce205a.js} +1 -1
- package/dist/assets/{board-layout-9c68b45b.js → board-layout-1eaf73df.js} +1 -1
- package/dist/assets/{headless-a3c0debd.js → headless-e800ef5b.js} +1 -1
- package/dist/assets/{home-45ae8111.js → home-2a74cabc.js} +1 -1
- package/dist/assets/{index-a0a089d2.css → index-184e36da.css} +1 -1
- package/dist/assets/{index-1418cfa7.js → index-6578287f.js} +5 -5
- package/dist/assets/{index-65e6de07.js → index-78001918.js} +1 -1
- package/dist/assets/{index-layout-3ce68075.js → index-layout-a0249ba4.js} +1 -1
- package/dist/assets/{test-09be4a74.js → test-c0da21d8.js} +1 -1
- package/dist/assets/{useQueryBoardData-5ec632a5.js → useQueryBoardData-3b8a91d5.js} +1 -1
- package/dist/assets/{user-901b4c74.js → user-69e7d90e.js} +1 -1
- package/dist/assets/{virtual_pwa-register-033c41ee.js → virtual_pwa-register-7796129c.js} +1 -1
- package/dist/index.html +3 -3
- package/dist/sw.js +1 -1
- package/package.json +3 -3
- package/src/components/board/Board.vue +6 -0
- package/src/components/board/ProblemBlock.vue +57 -0
- package/src/components/board/ProblemInfoModal.vue +117 -0
- package/src/components/board/Standings.vue +7 -13
- package/src/components/board/SubmissionsTable.vue +260 -58
- package/src/components/board/TeamInfoModal.vue +23 -7
- package/src/components/flowbite/Tooltip.vue +1 -1
- package/src/components.d.ts +2 -0
- package/src/composables/statistics.ts +3 -3
- package/src/styles/submission-status-filter.css +123 -0
- package/dist/assets/Board-96bc5ecc.css +0 -1
- package/dist/assets/Board-ebc7d2d2.js +0 -3
|
@@ -1,23 +1,210 @@
|
|
|
1
1
|
<script setup lang="ts">
|
|
2
|
-
import
|
|
2
|
+
import { MultiSelect } from "vue-search-select";
|
|
3
|
+
|
|
4
|
+
import type { Rank, SelectOptionItem, Submissions } from "@xcpcio/core";
|
|
3
5
|
import { Submission } from "@xcpcio/core";
|
|
6
|
+
import type { SubmissionStatus } from "@xcpcio/types";
|
|
4
7
|
import { SubmissionStatusToString } from "@xcpcio/types";
|
|
5
8
|
|
|
6
9
|
import { Pagination } from "~/composables/pagination";
|
|
7
10
|
|
|
11
|
+
import "~/styles/submission-status-filter.css";
|
|
12
|
+
|
|
13
|
+
interface FilterOptions {
|
|
14
|
+
orgNames: string[];
|
|
15
|
+
teamIds: string[];
|
|
16
|
+
languages: string[];
|
|
17
|
+
statuses: SubmissionStatus[];
|
|
18
|
+
}
|
|
19
|
+
|
|
20
|
+
interface EnableFilterOptions {
|
|
21
|
+
organization?: boolean,
|
|
22
|
+
team?: boolean,
|
|
23
|
+
language?: boolean,
|
|
24
|
+
status?: boolean,
|
|
25
|
+
}
|
|
26
|
+
|
|
8
27
|
const props = defineProps<{
|
|
9
28
|
rank: Rank,
|
|
10
29
|
submissions: Submissions,
|
|
11
30
|
pageSize?: number,
|
|
12
31
|
removeBorder?: boolean,
|
|
32
|
+
enableFilter?: EnableFilterOptions,
|
|
13
33
|
}>();
|
|
14
34
|
|
|
15
35
|
const rank = computed(() => props.rank);
|
|
36
|
+
const enableFilter = computed(() => props.enableFilter);
|
|
37
|
+
const enableFilterButton = computed(() => {
|
|
38
|
+
if (!enableFilter.value) {
|
|
39
|
+
return false;
|
|
40
|
+
}
|
|
41
|
+
|
|
42
|
+
for (const [_k, v] of Object.entries(enableFilter.value)) {
|
|
43
|
+
if (v === true) {
|
|
44
|
+
return true;
|
|
45
|
+
}
|
|
46
|
+
}
|
|
47
|
+
|
|
48
|
+
return false;
|
|
49
|
+
});
|
|
50
|
+
|
|
51
|
+
const filterOptions = ref<FilterOptions>({
|
|
52
|
+
orgNames: [],
|
|
53
|
+
teamIds: [],
|
|
54
|
+
languages: [],
|
|
55
|
+
statuses: [],
|
|
56
|
+
});
|
|
57
|
+
|
|
58
|
+
const orgOptions = computed(() => {
|
|
59
|
+
const res = rank.value.organizations.map((o) => {
|
|
60
|
+
return {
|
|
61
|
+
value: o,
|
|
62
|
+
text: o,
|
|
63
|
+
};
|
|
64
|
+
});
|
|
65
|
+
|
|
66
|
+
return res;
|
|
67
|
+
});
|
|
68
|
+
|
|
69
|
+
const orgSelectedItems = ref<Array<SelectOptionItem>>([]);
|
|
70
|
+
const orgLastSelectItem = ref({});
|
|
71
|
+
|
|
72
|
+
function orgOnSelect(selectedItems: Array<SelectOptionItem>, lastSelectItem: SelectOptionItem) {
|
|
73
|
+
orgSelectedItems.value = selectedItems;
|
|
74
|
+
orgLastSelectItem.value = lastSelectItem;
|
|
75
|
+
}
|
|
76
|
+
|
|
77
|
+
const teamsOptions = computed(() => {
|
|
78
|
+
const res = rank.value.originTeams.map((t) => {
|
|
79
|
+
return {
|
|
80
|
+
value: t.id,
|
|
81
|
+
text: t.organization ? `${t.name} - ${t.organization}` : t.name,
|
|
82
|
+
};
|
|
83
|
+
});
|
|
84
|
+
|
|
85
|
+
return res;
|
|
86
|
+
});
|
|
87
|
+
|
|
88
|
+
const teamsSelectedItems = ref<Array<SelectOptionItem>>([]);
|
|
89
|
+
const teamsLastSelectItem = ref({});
|
|
90
|
+
|
|
91
|
+
function teamsOnSelect(selectedItems: Array<SelectOptionItem>, lastSelectItem: SelectOptionItem) {
|
|
92
|
+
teamsSelectedItems.value = selectedItems;
|
|
93
|
+
teamsLastSelectItem.value = lastSelectItem;
|
|
94
|
+
}
|
|
95
|
+
|
|
96
|
+
const languageOptions = computed(() => {
|
|
97
|
+
const languages = rank.value.languages;
|
|
98
|
+
|
|
99
|
+
const res = languages.map((l) => {
|
|
100
|
+
return {
|
|
101
|
+
value: l,
|
|
102
|
+
text: l,
|
|
103
|
+
};
|
|
104
|
+
});
|
|
105
|
+
|
|
106
|
+
return res;
|
|
107
|
+
});
|
|
108
|
+
|
|
109
|
+
const languageSelectedItems = ref<Array<SelectOptionItem>>([]);
|
|
110
|
+
const languageLastSelectItem = ref({});
|
|
111
|
+
|
|
112
|
+
function languageOnSelect(selectedItems: Array<SelectOptionItem>, lastSelectItem: SelectOptionItem) {
|
|
113
|
+
languageSelectedItems.value = selectedItems;
|
|
114
|
+
languageLastSelectItem.value = lastSelectItem;
|
|
115
|
+
}
|
|
116
|
+
|
|
117
|
+
const statusOptions = computed(() => {
|
|
118
|
+
const statuses = rank.value.statuses;
|
|
119
|
+
|
|
120
|
+
const res = statuses.map((s) => {
|
|
121
|
+
return {
|
|
122
|
+
value: s,
|
|
123
|
+
text: SubmissionStatusToString[s],
|
|
124
|
+
};
|
|
125
|
+
});
|
|
126
|
+
|
|
127
|
+
return res;
|
|
128
|
+
});
|
|
129
|
+
|
|
130
|
+
const statusSelectedItems = ref<Array<SelectOptionItem>>([]);
|
|
131
|
+
const statusLastSelectItem = ref({});
|
|
132
|
+
|
|
133
|
+
function statusOnSelect(selectedItems: Array<SelectOptionItem>, lastSelectItem: SelectOptionItem) {
|
|
134
|
+
statusSelectedItems.value = selectedItems;
|
|
135
|
+
statusLastSelectItem.value = lastSelectItem;
|
|
136
|
+
}
|
|
137
|
+
|
|
138
|
+
function statusCustomAttr(option: SelectOptionItem) {
|
|
139
|
+
return option.value.toString();
|
|
140
|
+
}
|
|
141
|
+
|
|
16
142
|
const submissions = computed(() => {
|
|
17
|
-
const
|
|
18
|
-
return
|
|
143
|
+
const ss = props.submissions;
|
|
144
|
+
return ss.filter((s) => {
|
|
145
|
+
const o = filterOptions.value;
|
|
146
|
+
|
|
147
|
+
if (o.orgNames.length === 0
|
|
148
|
+
&& o.teamIds.length === 0
|
|
149
|
+
&& o.languages.length === 0
|
|
150
|
+
&& o.statuses.length === 0
|
|
151
|
+
) {
|
|
152
|
+
return true;
|
|
153
|
+
}
|
|
154
|
+
|
|
155
|
+
if (o.teamIds.length > 0) {
|
|
156
|
+
for (const t of o.teamIds) {
|
|
157
|
+
if (t === s.teamId) {
|
|
158
|
+
return true;
|
|
159
|
+
}
|
|
160
|
+
}
|
|
161
|
+
}
|
|
162
|
+
|
|
163
|
+
if (o.orgNames.length > 0) {
|
|
164
|
+
const team = rank.value.teamsMap.get(s.teamId);
|
|
165
|
+
for (const n of o.orgNames) {
|
|
166
|
+
if (n === team?.organization) {
|
|
167
|
+
return true;
|
|
168
|
+
}
|
|
169
|
+
}
|
|
170
|
+
}
|
|
171
|
+
|
|
172
|
+
if (o.languages.length > 0) {
|
|
173
|
+
for (const l of o.languages) {
|
|
174
|
+
if (l === s.language) {
|
|
175
|
+
return true;
|
|
176
|
+
}
|
|
177
|
+
}
|
|
178
|
+
}
|
|
179
|
+
|
|
180
|
+
if (o.statuses.length > 0) {
|
|
181
|
+
for (const sta of o.statuses) {
|
|
182
|
+
if (sta === s.status) {
|
|
183
|
+
return true;
|
|
184
|
+
}
|
|
185
|
+
}
|
|
186
|
+
}
|
|
187
|
+
|
|
188
|
+
return false;
|
|
189
|
+
}).sort(Submission.compare).reverse();
|
|
19
190
|
});
|
|
20
191
|
|
|
192
|
+
function onFilter() {
|
|
193
|
+
const newFilterOptions: FilterOptions = {
|
|
194
|
+
orgNames: [],
|
|
195
|
+
teamIds: [],
|
|
196
|
+
languages: [],
|
|
197
|
+
statuses: [],
|
|
198
|
+
};
|
|
199
|
+
|
|
200
|
+
newFilterOptions.orgNames = orgSelectedItems.value.map(o => o.value);
|
|
201
|
+
newFilterOptions.teamIds = teamsSelectedItems.value.map(t => t.value);
|
|
202
|
+
newFilterOptions.languages = languageSelectedItems.value.map(l => l.value);
|
|
203
|
+
newFilterOptions.statuses = statusSelectedItems.value.map(s => s.value as SubmissionStatus);
|
|
204
|
+
|
|
205
|
+
filterOptions.value = newFilterOptions;
|
|
206
|
+
}
|
|
207
|
+
|
|
21
208
|
const p = ref(new Pagination());
|
|
22
209
|
|
|
23
210
|
p.value.currentPage = 0;
|
|
@@ -69,79 +256,94 @@ function getProblemLabelColorStyle(s: Submission) {
|
|
|
69
256
|
<template>
|
|
70
257
|
<section>
|
|
71
258
|
<div
|
|
72
|
-
|
|
259
|
+
mx-auto w-full
|
|
73
260
|
px-4
|
|
74
261
|
>
|
|
75
262
|
<div
|
|
76
|
-
|
|
263
|
+
relative overflow-hidden
|
|
264
|
+
bg-white dark:bg-gray-800
|
|
77
265
|
:class="{
|
|
78
266
|
'shadow-md': props.removeBorder !== true,
|
|
79
267
|
'sm:rounded-sm': props.removeBorder !== true,
|
|
80
268
|
}"
|
|
81
269
|
>
|
|
82
270
|
<div
|
|
83
|
-
|
|
271
|
+
space-y-3
|
|
84
272
|
flex flex-col
|
|
85
273
|
px-4 py-3
|
|
274
|
+
lg:flex-row lg:items-center lg:justify-between
|
|
275
|
+
lg:space-x-4 lg:space-y-0
|
|
86
276
|
>
|
|
87
277
|
<div
|
|
88
|
-
|
|
278
|
+
flex flex-shrink-0 flex-col
|
|
279
|
+
md:flex-row md:items-center
|
|
280
|
+
lg:justify-end space-y-3
|
|
281
|
+
md:space-x-3 md:space-y-0
|
|
89
282
|
>
|
|
90
|
-
<
|
|
91
|
-
v-if="
|
|
92
|
-
|
|
93
|
-
class="flex items-center justify-center rounded-lg bg-primary-700 px-4 py-2 text-sm font-medium text-white dark:bg-primary-600 hover:bg-primary-800 focus:outline-none focus:ring-4 focus:ring-primary-300 dark:hover:bg-primary-700 dark:focus:ring-primary-800"
|
|
283
|
+
<div
|
|
284
|
+
v-if="rank.contest.organization && enableFilter?.organization"
|
|
285
|
+
w-48
|
|
94
286
|
>
|
|
95
|
-
<
|
|
96
|
-
|
|
97
|
-
|
|
98
|
-
|
|
99
|
-
|
|
100
|
-
|
|
101
|
-
|
|
102
|
-
|
|
103
|
-
|
|
104
|
-
|
|
105
|
-
|
|
106
|
-
/>
|
|
107
|
-
</svg>
|
|
108
|
-
Add new product
|
|
109
|
-
</button>
|
|
110
|
-
|
|
111
|
-
<button
|
|
112
|
-
v-if="notShowing"
|
|
113
|
-
type="button"
|
|
114
|
-
class="flex flex-shrink-0 items-center justify-center border border-gray-200 rounded-lg bg-white px-3 py-2 text-sm font-medium text-gray-900 focus:z-10 dark:border-gray-600 dark:bg-gray-800 hover:bg-gray-100 dark:text-gray-400 hover:text-primary-700 focus:outline-none focus:ring-4 focus:ring-gray-200 dark:hover:bg-gray-700 dark:hover:text-white dark:focus:ring-gray-700"
|
|
287
|
+
<MultiSelect
|
|
288
|
+
:options="orgOptions"
|
|
289
|
+
:selected-options="orgSelectedItems"
|
|
290
|
+
:placeholder="rank.contest.organization"
|
|
291
|
+
@select="orgOnSelect"
|
|
292
|
+
/>
|
|
293
|
+
</div>
|
|
294
|
+
|
|
295
|
+
<div
|
|
296
|
+
v-if="enableFilter?.team"
|
|
297
|
+
w-48
|
|
115
298
|
>
|
|
116
|
-
<
|
|
117
|
-
|
|
118
|
-
|
|
119
|
-
|
|
120
|
-
|
|
121
|
-
|
|
122
|
-
|
|
123
|
-
|
|
124
|
-
|
|
125
|
-
|
|
126
|
-
|
|
127
|
-
|
|
128
|
-
|
|
129
|
-
|
|
130
|
-
|
|
131
|
-
|
|
132
|
-
|
|
133
|
-
|
|
134
|
-
|
|
135
|
-
|
|
136
|
-
|
|
137
|
-
|
|
299
|
+
<MultiSelect
|
|
300
|
+
:options="teamsOptions"
|
|
301
|
+
:selected-options="teamsSelectedItems"
|
|
302
|
+
placeholder="Team"
|
|
303
|
+
@select="teamsOnSelect"
|
|
304
|
+
/>
|
|
305
|
+
</div>
|
|
306
|
+
|
|
307
|
+
<div
|
|
308
|
+
v-if="enableFilter?.status"
|
|
309
|
+
w-64
|
|
310
|
+
>
|
|
311
|
+
<MultiSelect
|
|
312
|
+
:options="statusOptions"
|
|
313
|
+
:selected-options="statusSelectedItems"
|
|
314
|
+
placeholder="Status"
|
|
315
|
+
:custom-attr="statusCustomAttr"
|
|
316
|
+
@select="statusOnSelect"
|
|
317
|
+
/>
|
|
318
|
+
</div>
|
|
319
|
+
|
|
320
|
+
<div
|
|
321
|
+
v-if="enableFilter?.language && languageOptions.length > 0"
|
|
322
|
+
w-48
|
|
138
323
|
>
|
|
139
|
-
<
|
|
140
|
-
|
|
141
|
-
|
|
324
|
+
<MultiSelect
|
|
325
|
+
:options="languageOptions"
|
|
326
|
+
:selected-options="languageSelectedItems"
|
|
327
|
+
placeholder="Language"
|
|
328
|
+
@select="languageOnSelect"
|
|
142
329
|
/>
|
|
143
|
-
|
|
144
|
-
|
|
330
|
+
</div>
|
|
331
|
+
|
|
332
|
+
<div
|
|
333
|
+
v-if="enableFilterButton"
|
|
334
|
+
>
|
|
335
|
+
<button
|
|
336
|
+
type="button"
|
|
337
|
+
class="flex flex-shrink-0 items-center justify-center border border-gray-200 rounded-lg bg-white px-3 py-2 text-sm font-medium text-gray-900 focus:z-10 dark:border-gray-600 dark:bg-gray-800 hover:bg-gray-100 dark:text-gray-400 hover:text-primary-700 focus:outline-none focus:ring-4 focus:ring-gray-200 dark:hover:bg-gray-700 dark:hover:text-white dark:focus:ring-gray-700"
|
|
338
|
+
@click="onFilter"
|
|
339
|
+
>
|
|
340
|
+
<div
|
|
341
|
+
i-material-symbols-search
|
|
342
|
+
mr-1 h-5 w-5
|
|
343
|
+
/>
|
|
344
|
+
Filter
|
|
345
|
+
</button>
|
|
346
|
+
</div>
|
|
145
347
|
</div>
|
|
146
348
|
</div>
|
|
147
349
|
|
|
@@ -80,13 +80,29 @@ const types = [TYPE_SUBMISSIONS, TYPE_STATISTICS, TYPE_AWARDS];
|
|
|
80
80
|
width-class="h-8 w-8"
|
|
81
81
|
/>
|
|
82
82
|
|
|
83
|
-
<
|
|
84
|
-
|
|
85
|
-
|
|
86
|
-
|
|
87
|
-
|
|
88
|
-
|
|
89
|
-
|
|
83
|
+
<Tooltip>
|
|
84
|
+
<h3
|
|
85
|
+
text-gray-900 dark:text-white
|
|
86
|
+
text-2xl
|
|
87
|
+
font-sans font-semibold italic
|
|
88
|
+
>
|
|
89
|
+
{{ headerTitle }}
|
|
90
|
+
</h3>
|
|
91
|
+
|
|
92
|
+
<template #popper>
|
|
93
|
+
<div
|
|
94
|
+
flex flex-col
|
|
95
|
+
justify-start items-start
|
|
96
|
+
>
|
|
97
|
+
<div>
|
|
98
|
+
TeamID: {{ team.id }}
|
|
99
|
+
</div>
|
|
100
|
+
<div>
|
|
101
|
+
ddd: f22
|
|
102
|
+
</div>
|
|
103
|
+
</div>
|
|
104
|
+
</template>
|
|
105
|
+
</Tooltip>
|
|
90
106
|
</div>
|
|
91
107
|
|
|
92
108
|
<ModalMenu
|
|
@@ -42,7 +42,7 @@ onMounted(() => {
|
|
|
42
42
|
ref="tooltipTargetEl"
|
|
43
43
|
role="tooltip"
|
|
44
44
|
class="tooltip inline-block absolute invisible px-3 py-2 transition-opacity duration-300 shadow-sm opacity-0"
|
|
45
|
-
z-
|
|
45
|
+
z-99999
|
|
46
46
|
rounded
|
|
47
47
|
text-base text-white font-medium
|
|
48
48
|
bg-gray-900 dark:bg-gray-700
|
package/src/components.d.ts
CHANGED
|
@@ -26,6 +26,8 @@ declare module 'vue' {
|
|
|
26
26
|
ModalMenu: typeof import('./components/board/ModalMenu.vue')['default']
|
|
27
27
|
NavBar: typeof import('./components/NavBar.vue')['default']
|
|
28
28
|
OptionsModal: typeof import('./components/board/OptionsModal.vue')['default']
|
|
29
|
+
ProblemBlock: typeof import('./components/board/ProblemBlock.vue')['default']
|
|
30
|
+
ProblemInfoModal: typeof import('./components/board/ProblemInfoModal.vue')['default']
|
|
29
31
|
Progress: typeof import('./components/board/Progress.vue')['default']
|
|
30
32
|
RightArrowIcon: typeof import('./components/icon/RightArrowIcon.vue')['default']
|
|
31
33
|
RouterLink: typeof import('vue-router')['RouterLink']
|
|
@@ -119,7 +119,7 @@ export function getProblemChart(rank: Rank) {
|
|
|
119
119
|
return { cat, series, colors };
|
|
120
120
|
})();
|
|
121
121
|
|
|
122
|
-
return getChartObj("
|
|
122
|
+
return getChartObj("题目通过数", "题目编号", "通过数", cat, series, colors);
|
|
123
123
|
}
|
|
124
124
|
|
|
125
125
|
export function getTeamChart(rank: Rank) {
|
|
@@ -151,7 +151,7 @@ export function getTeamChart(rank: Rank) {
|
|
|
151
151
|
return { cat, series, colors };
|
|
152
152
|
})();
|
|
153
153
|
|
|
154
|
-
return getChartObj("
|
|
154
|
+
return getChartObj("队伍过题数", "过题数", "队伍数", cat, series, colors);
|
|
155
155
|
}
|
|
156
156
|
|
|
157
157
|
export function getSubmitChart(rank: Rank) {
|
|
@@ -190,7 +190,7 @@ export function getSubmitChart(rank: Rank) {
|
|
|
190
190
|
return { cat, series, colors };
|
|
191
191
|
})();
|
|
192
192
|
|
|
193
|
-
return getChartObj("
|
|
193
|
+
return getChartObj("提交分类", "题目编号", "提交数", cat, series, colors);
|
|
194
194
|
}
|
|
195
195
|
|
|
196
196
|
export function getTeamPlaceChart(_rank: Rank, team: Team) {
|
|
@@ -0,0 +1,123 @@
|
|
|
1
|
+
.item[data-vss-custom-attr="PENDING"] {
|
|
2
|
+
color: var(--theme-status-pending) !important;
|
|
3
|
+
}
|
|
4
|
+
|
|
5
|
+
.item[data-vss-custom-attr="WAITING"] {
|
|
6
|
+
color: var(--theme-status-waiting) !important;
|
|
7
|
+
}
|
|
8
|
+
|
|
9
|
+
.item[data-vss-custom-attr="PREPARING"] {
|
|
10
|
+
color: var(--theme-status-preparing) !important;
|
|
11
|
+
}
|
|
12
|
+
|
|
13
|
+
.item[data-vss-custom-attr="COMPILING"] {
|
|
14
|
+
color: var(--theme-status-compiling) !important;
|
|
15
|
+
}
|
|
16
|
+
|
|
17
|
+
.item[data-vss-custom-attr="RUNNING"] {
|
|
18
|
+
color: var(--theme-status-running) !important;
|
|
19
|
+
}
|
|
20
|
+
|
|
21
|
+
.item[data-vss-custom-attr="JUDGING"] {
|
|
22
|
+
color: var(--theme-status-running) !important;
|
|
23
|
+
}
|
|
24
|
+
|
|
25
|
+
.item[data-vss-custom-attr="FROZEN"] {
|
|
26
|
+
color: var(--theme-status-pending) !important;
|
|
27
|
+
}
|
|
28
|
+
|
|
29
|
+
|
|
30
|
+
.item[data-vss-custom-attr="ACCEPTED"] {
|
|
31
|
+
color: var(--theme-status-accepted) !important;
|
|
32
|
+
}
|
|
33
|
+
|
|
34
|
+
.item[data-vss-custom-attr="CORRECT"] {
|
|
35
|
+
color: var(--theme-status-accepted) !important;
|
|
36
|
+
}
|
|
37
|
+
|
|
38
|
+
.item[data-vss-custom-attr="PARTIALLY_CORRECT"] {
|
|
39
|
+
color: var(--theme-status-partially-correct) !important;
|
|
40
|
+
}
|
|
41
|
+
|
|
42
|
+
|
|
43
|
+
.item[data-vss-custom-attr="REJECTED"] {
|
|
44
|
+
color: var(--theme-status-wrong-answer) !important;
|
|
45
|
+
}
|
|
46
|
+
|
|
47
|
+
.item[data-vss-custom-attr="WRONG_ANSWER"] {
|
|
48
|
+
color: var(--theme-status-wrong-answer) !important;
|
|
49
|
+
}
|
|
50
|
+
|
|
51
|
+
|
|
52
|
+
.item[data-vss-custom-attr="COMPILATION_ERROR"] {
|
|
53
|
+
color: var(--theme-status-compilation-error) !important;
|
|
54
|
+
}
|
|
55
|
+
|
|
56
|
+
.item[data-vss-custom-attr="PRESENTATION_ERROR"] {
|
|
57
|
+
color: var(--theme-status-compilation-error) !important;
|
|
58
|
+
}
|
|
59
|
+
|
|
60
|
+
|
|
61
|
+
.item[data-vss-custom-attr="RUNTIME_ERROR"] {
|
|
62
|
+
color: var(--theme-status-runtime-error) !important;
|
|
63
|
+
}
|
|
64
|
+
|
|
65
|
+
.item[data-vss-custom-attr="TIME_LIMIT_EXCEEDED"] {
|
|
66
|
+
color: var(--theme-status-time-limit-exceeded) !important;
|
|
67
|
+
}
|
|
68
|
+
|
|
69
|
+
.item[data-vss-custom-attr="MEMORY_LIMIT_EXCEEDED"] {
|
|
70
|
+
color: var(--theme-status-memory-limit-exceeded) !important;
|
|
71
|
+
}
|
|
72
|
+
|
|
73
|
+
.item[data-vss-custom-attr="OUTPUT_LIMIT_EXCEEDED"] {
|
|
74
|
+
color: var(--theme-status-output-limit-exceeded) !important;
|
|
75
|
+
}
|
|
76
|
+
|
|
77
|
+
.item[data-vss-custom-attr="IDLENESS_LIMIT_EXCEEDED"] {
|
|
78
|
+
color: var(--theme-status-output-limit-exceeded) !important;
|
|
79
|
+
}
|
|
80
|
+
|
|
81
|
+
.item[data-vss-custom-attr="HACKED"] {
|
|
82
|
+
color: var(--theme-status-wrong-answer) !important;
|
|
83
|
+
}
|
|
84
|
+
|
|
85
|
+
.item[data-vss-custom-attr="JUDGEMENT_FAILED"] {
|
|
86
|
+
color: var(--theme-status-judgement-failed) !important;
|
|
87
|
+
}
|
|
88
|
+
|
|
89
|
+
.item[data-vss-custom-attr="CONFIGURATION_ERROR"] {
|
|
90
|
+
color: var(--theme-status-configuration-error) !important;
|
|
91
|
+
}
|
|
92
|
+
|
|
93
|
+
.item[data-vss-custom-attr="FILE_ERROR"] {
|
|
94
|
+
color: var(--theme-status-file-error) !important;
|
|
95
|
+
}
|
|
96
|
+
|
|
97
|
+
.item[data-vss-custom-attr="SYSTEM_ERROR"] {
|
|
98
|
+
color: var(--theme-status-system-error) !important;
|
|
99
|
+
}
|
|
100
|
+
|
|
101
|
+
.item[data-vss-custom-attr="CANCELED"] {
|
|
102
|
+
color: var(--theme-status-canceled) !important;
|
|
103
|
+
}
|
|
104
|
+
|
|
105
|
+
.item[data-vss-custom-attr="SKIPPED"] {
|
|
106
|
+
color: var(--theme-status-skipped) !important;
|
|
107
|
+
}
|
|
108
|
+
|
|
109
|
+
.item[data-vss-custom-attr="SECURITY_VIOLATED"] {
|
|
110
|
+
color: var(--theme-status-judgement-failed) !important;
|
|
111
|
+
}
|
|
112
|
+
|
|
113
|
+
.item[data-vss-custom-attr="DENIAL_OF_JUDGEMENT"] {
|
|
114
|
+
color: var(--theme-status-judgement-failed) !important;
|
|
115
|
+
}
|
|
116
|
+
|
|
117
|
+
.item[data-vss-custom-attr="UNKNOWN"] {
|
|
118
|
+
color: var(--theme-status-unknown) !important;
|
|
119
|
+
}
|
|
120
|
+
|
|
121
|
+
.item[data-vss-custom-attr="UNDEFINED"] {
|
|
122
|
+
color: var(--theme-status-undefined) !important;
|
|
123
|
+
}
|