mirror of
https://gitcode.com/gh_mirrors/hy/Hydro.git
synced 2026-10-17 09:36:08 +08:00
core: move permission constants to common
This commit is contained in:
5 files changed
+237
-267
No files matched your search
@@ -1,4 +1,5 @@
|
||||
export * from './lang';
|
||||
export * from './permission';
|
||||
export * from './status';
|
||||
export * from './subtask';
|
||||
export * from './types';
|
||||
@@ -0,0 +1,189 @@
|
||||
export const PERM = {
|
||||
PERM_NONE: 0n,
|
||||
|
||||
// Domain Settings
|
||||
PERM_VIEW: 1n << 0n,
|
||||
PERM_EDIT_DOMAIN: 1n << 1n,
|
||||
/** @deprecated use PERM_VIEW_USER_PRIVATE_INFO instead */
|
||||
PERM_VIEW_DISPLAYNAME: 1n << 67n,
|
||||
PERM_VIEW_USER_PRIVATE_INFO: 1n << 67n,
|
||||
PERM_MOD_BADGE: 1n << 2n,
|
||||
|
||||
// Problem
|
||||
PERM_CREATE_PROBLEM: 1n << 4n,
|
||||
PERM_EDIT_PROBLEM: 1n << 5n,
|
||||
PERM_EDIT_PROBLEM_SELF: 1n << 6n,
|
||||
PERM_VIEW_PROBLEM: 1n << 7n,
|
||||
PERM_VIEW_PROBLEM_HIDDEN: 1n << 8n,
|
||||
PERM_SUBMIT_PROBLEM: 1n << 9n,
|
||||
PERM_READ_PROBLEM_DATA: 1n << 10n,
|
||||
|
||||
// Record
|
||||
PERM_VIEW_RECORD: 1n << 70n,
|
||||
PERM_READ_RECORD_CODE: 1n << 12n,
|
||||
PERM_READ_RECORD_CODE_ACCEPT: 1n << 66n,
|
||||
PERM_REJUDGE_PROBLEM: 1n << 13n,
|
||||
PERM_REJUDGE: 1n << 14n,
|
||||
|
||||
// Problem Solution
|
||||
PERM_VIEW_PROBLEM_SOLUTION: 1n << 15n,
|
||||
PERM_VIEW_PROBLEM_SOLUTION_ACCEPT: 1n << 65n,
|
||||
PERM_CREATE_PROBLEM_SOLUTION: 1n << 16n,
|
||||
PERM_VOTE_PROBLEM_SOLUTION: 1n << 17n,
|
||||
PERM_EDIT_PROBLEM_SOLUTION: 1n << 18n,
|
||||
PERM_EDIT_PROBLEM_SOLUTION_SELF: 1n << 19n,
|
||||
PERM_DELETE_PROBLEM_SOLUTION: 1n << 20n,
|
||||
PERM_DELETE_PROBLEM_SOLUTION_SELF: 1n << 21n,
|
||||
PERM_REPLY_PROBLEM_SOLUTION: 1n << 22n,
|
||||
PERM_EDIT_PROBLEM_SOLUTION_REPLY_SELF: 1n << 24n,
|
||||
PERM_DELETE_PROBLEM_SOLUTION_REPLY: 1n << 25n,
|
||||
PERM_DELETE_PROBLEM_SOLUTION_REPLY_SELF: 1n << 26n,
|
||||
|
||||
// Discussion
|
||||
PERM_VIEW_DISCUSSION: 1n << 27n,
|
||||
PERM_CREATE_DISCUSSION: 1n << 28n,
|
||||
PERM_HIGHLIGHT_DISCUSSION: 1n << 29n,
|
||||
PERM_PIN_DISCUSSION: 1n << 61n,
|
||||
PERM_EDIT_DISCUSSION: 1n << 30n,
|
||||
PERM_EDIT_DISCUSSION_SELF: 1n << 31n,
|
||||
PERM_DELETE_DISCUSSION: 1n << 32n,
|
||||
PERM_DELETE_DISCUSSION_SELF: 1n << 33n,
|
||||
PERM_REPLY_DISCUSSION: 1n << 34n,
|
||||
PERM_ADD_REACTION: 1n << 62n,
|
||||
PERM_EDIT_DISCUSSION_REPLY_SELF: 1n << 36n,
|
||||
PERM_DELETE_DISCUSSION_REPLY: 1n << 38n,
|
||||
PERM_DELETE_DISCUSSION_REPLY_SELF: 1n << 39n,
|
||||
PERM_DELETE_DISCUSSION_REPLY_SELF_DISCUSSION: 1n << 40n,
|
||||
PERM_LOCK_DISCUSSION: 1n << 64n,
|
||||
|
||||
// Contest
|
||||
PERM_VIEW_CONTEST: 1n << 41n,
|
||||
PERM_VIEW_CONTEST_SCOREBOARD: 1n << 42n,
|
||||
PERM_VIEW_CONTEST_HIDDEN_SCOREBOARD: 1n << 43n,
|
||||
PERM_CREATE_CONTEST: 1n << 44n,
|
||||
PERM_ATTEND_CONTEST: 1n << 45n,
|
||||
PERM_EDIT_CONTEST: 1n << 50n,
|
||||
PERM_EDIT_CONTEST_SELF: 1n << 51n,
|
||||
PERM_VIEW_HIDDEN_CONTEST: 1n << 68n,
|
||||
|
||||
// Homework
|
||||
PERM_VIEW_HOMEWORK: 1n << 52n,
|
||||
PERM_VIEW_HOMEWORK_SCOREBOARD: 1n << 53n,
|
||||
PERM_VIEW_HOMEWORK_HIDDEN_SCOREBOARD: 1n << 54n,
|
||||
PERM_CREATE_HOMEWORK: 1n << 55n,
|
||||
PERM_ATTEND_HOMEWORK: 1n << 56n,
|
||||
PERM_EDIT_HOMEWORK: 1n << 57n,
|
||||
PERM_EDIT_HOMEWORK_SELF: 1n << 58n,
|
||||
PERM_VIEW_HIDDEN_HOMEWORK: 1n << 69n,
|
||||
|
||||
// Training
|
||||
PERM_VIEW_TRAINING: 1n << 46n,
|
||||
PERM_CREATE_TRAINING: 1n << 47n,
|
||||
PERM_EDIT_TRAINING: 1n << 48n,
|
||||
PERM_PIN_TRAINING: 1n << 63n,
|
||||
PERM_EDIT_TRAINING_SELF: 1n << 49n,
|
||||
|
||||
// Ranking
|
||||
PERM_VIEW_RANKING: 1n << 59n,
|
||||
|
||||
// Placeholder
|
||||
PERM_ALL: -1n,
|
||||
PERM_BASIC: 0n,
|
||||
PERM_DEFAULT: 0n,
|
||||
PERM_ADMIN: -1n,
|
||||
|
||||
PERM_NEVER: 1n << 60n,
|
||||
};
|
||||
|
||||
PERM.PERM_BASIC = PERM.PERM_VIEW
|
||||
| PERM.PERM_VIEW_PROBLEM
|
||||
| PERM.PERM_VIEW_PROBLEM_SOLUTION
|
||||
| PERM.PERM_VIEW_PROBLEM_SOLUTION_ACCEPT
|
||||
| PERM.PERM_VIEW_DISCUSSION
|
||||
| PERM.PERM_VIEW_CONTEST
|
||||
| PERM.PERM_VIEW_CONTEST_SCOREBOARD
|
||||
| PERM.PERM_VIEW_HOMEWORK
|
||||
| PERM.PERM_VIEW_HOMEWORK_SCOREBOARD
|
||||
| PERM.PERM_VIEW_TRAINING
|
||||
| PERM.PERM_VIEW_RANKING
|
||||
| PERM.PERM_VIEW_RECORD;
|
||||
|
||||
PERM.PERM_DEFAULT = PERM.PERM_VIEW
|
||||
| PERM.PERM_VIEW_USER_PRIVATE_INFO
|
||||
| PERM.PERM_VIEW_PROBLEM
|
||||
| PERM.PERM_EDIT_PROBLEM_SELF
|
||||
| PERM.PERM_SUBMIT_PROBLEM
|
||||
| PERM.PERM_VIEW_PROBLEM_SOLUTION
|
||||
| PERM.PERM_VIEW_PROBLEM_SOLUTION_ACCEPT
|
||||
| PERM.PERM_CREATE_PROBLEM_SOLUTION
|
||||
| PERM.PERM_VOTE_PROBLEM_SOLUTION
|
||||
| PERM.PERM_EDIT_PROBLEM_SOLUTION_SELF
|
||||
| PERM.PERM_DELETE_PROBLEM_SOLUTION_SELF
|
||||
| PERM.PERM_REPLY_PROBLEM_SOLUTION
|
||||
| PERM.PERM_EDIT_PROBLEM_SOLUTION_REPLY_SELF
|
||||
| PERM.PERM_DELETE_PROBLEM_SOLUTION_REPLY_SELF
|
||||
| PERM.PERM_VIEW_DISCUSSION
|
||||
| PERM.PERM_CREATE_DISCUSSION
|
||||
| PERM.PERM_EDIT_DISCUSSION_SELF
|
||||
| PERM.PERM_REPLY_DISCUSSION
|
||||
| PERM.PERM_ADD_REACTION
|
||||
| PERM.PERM_EDIT_DISCUSSION_REPLY_SELF
|
||||
| PERM.PERM_DELETE_DISCUSSION_REPLY_SELF
|
||||
| PERM.PERM_DELETE_DISCUSSION_REPLY_SELF_DISCUSSION
|
||||
| PERM.PERM_VIEW_CONTEST
|
||||
| PERM.PERM_VIEW_CONTEST_SCOREBOARD
|
||||
| PERM.PERM_ATTEND_CONTEST
|
||||
| PERM.PERM_EDIT_CONTEST_SELF
|
||||
| PERM.PERM_VIEW_HOMEWORK
|
||||
| PERM.PERM_VIEW_HOMEWORK_SCOREBOARD
|
||||
| PERM.PERM_ATTEND_HOMEWORK
|
||||
| PERM.PERM_EDIT_HOMEWORK_SELF
|
||||
| PERM.PERM_VIEW_TRAINING
|
||||
| PERM.PERM_CREATE_TRAINING
|
||||
| PERM.PERM_EDIT_TRAINING_SELF
|
||||
| PERM.PERM_SUBMIT_PROBLEM
|
||||
| PERM.PERM_CREATE_PROBLEM_SOLUTION
|
||||
| PERM.PERM_VOTE_PROBLEM_SOLUTION
|
||||
| PERM.PERM_REPLY_PROBLEM_SOLUTION
|
||||
| PERM.PERM_CREATE_DISCUSSION
|
||||
| PERM.PERM_REPLY_DISCUSSION
|
||||
| PERM.PERM_ATTEND_CONTEST
|
||||
| PERM.PERM_CREATE_TRAINING
|
||||
| PERM.PERM_ATTEND_HOMEWORK
|
||||
| PERM.PERM_VIEW_RANKING
|
||||
| PERM.PERM_VIEW_RECORD;
|
||||
|
||||
PERM.PERM_ADMIN = PERM.PERM_ALL;
|
||||
|
||||
export const PRIV = {
|
||||
PRIV_NONE: 0,
|
||||
PRIV_MOD_BADGE: 1 << 25,
|
||||
PRIV_EDIT_SYSTEM: 1 << 0, // renamed from PRIV_SET_PRIV
|
||||
PRIV_SET_PERM: 1 << 1,
|
||||
PRIV_USER_PROFILE: 1 << 2,
|
||||
PRIV_REGISTER_USER: 1 << 3,
|
||||
PRIV_READ_PROBLEM_DATA: 1 << 4,
|
||||
PRIV_READ_RECORD_CODE: 1 << 7,
|
||||
PRIV_VIEW_HIDDEN_RECORD: 1 << 8,
|
||||
PRIV_JUDGE: 1 << 9, // (renamed)
|
||||
PRIV_CREATE_DOMAIN: 1 << 10,
|
||||
PRIV_VIEW_ALL_DOMAIN: 1 << 11,
|
||||
PRIV_MANAGE_ALL_DOMAIN: 1 << 12,
|
||||
PRIV_REJUDGE: 1 << 13,
|
||||
PRIV_VIEW_USER_SECRET: 1 << 14,
|
||||
PRIV_VIEW_JUDGE_STATISTICS: 1 << 15,
|
||||
PRIV_UNLIMITED_ACCESS: 1 << 22,
|
||||
PRIV_VIEW_SYSTEM_NOTIFICATION: 1 << 23,
|
||||
PRIV_SEND_MESSAGE: 1 << 24,
|
||||
PRIV_CREATE_FILE: 1 << 16,
|
||||
PRIV_UNLIMITED_QUOTA: 1 << 17,
|
||||
PRIV_DELETE_FILE: 1 << 18,
|
||||
|
||||
PRIV_ALL: -1,
|
||||
PRIV_DEFAULT: 0,
|
||||
PRIV_NEVER: 1 << 20,
|
||||
};
|
||||
|
||||
PRIV.PRIV_DEFAULT = PRIV.PRIV_USER_PROFILE
|
||||
+ PRIV.PRIV_CREATE_FILE
|
||||
+ PRIV.PRIV_SEND_MESSAGE;
|
||||
@@ -1,108 +1,12 @@
|
||||
import {
|
||||
getScoreColor, NORMAL_STATUS, STATUS, STATUS_CODES, STATUS_SHORT_TEXTS,
|
||||
getScoreColor, NORMAL_STATUS, PERM, PRIV, STATUS, STATUS_CODES, STATUS_SHORT_TEXTS,
|
||||
STATUS_TEXTS, USER_GENDER_FEMALE, USER_GENDER_ICONS, USER_GENDER_MALE,
|
||||
USER_GENDER_OTHER, USER_GENDER_RANGE, USER_GENDERS,
|
||||
} from '@hydrooj/common';
|
||||
|
||||
export * from '@hydrooj/common/permission';
|
||||
export * from '@hydrooj/common/status';
|
||||
|
||||
export const PERM = {
|
||||
PERM_NONE: 0n,
|
||||
|
||||
// Domain Settings
|
||||
PERM_VIEW: 1n << 0n,
|
||||
PERM_EDIT_DOMAIN: 1n << 1n,
|
||||
/** @deprecated use PERM_VIEW_USER_PRIVATE_INFO instead */
|
||||
PERM_VIEW_DISPLAYNAME: 1n << 67n,
|
||||
PERM_VIEW_USER_PRIVATE_INFO: 1n << 67n,
|
||||
PERM_MOD_BADGE: 1n << 2n,
|
||||
|
||||
// Problem
|
||||
PERM_CREATE_PROBLEM: 1n << 4n,
|
||||
PERM_EDIT_PROBLEM: 1n << 5n,
|
||||
PERM_EDIT_PROBLEM_SELF: 1n << 6n,
|
||||
PERM_VIEW_PROBLEM: 1n << 7n,
|
||||
PERM_VIEW_PROBLEM_HIDDEN: 1n << 8n,
|
||||
PERM_SUBMIT_PROBLEM: 1n << 9n,
|
||||
PERM_READ_PROBLEM_DATA: 1n << 10n,
|
||||
|
||||
// Record
|
||||
PERM_VIEW_RECORD: 1n << 70n,
|
||||
PERM_READ_RECORD_CODE: 1n << 12n,
|
||||
PERM_READ_RECORD_CODE_ACCEPT: 1n << 66n,
|
||||
PERM_REJUDGE_PROBLEM: 1n << 13n,
|
||||
PERM_REJUDGE: 1n << 14n,
|
||||
|
||||
// Problem Solution
|
||||
PERM_VIEW_PROBLEM_SOLUTION: 1n << 15n,
|
||||
PERM_VIEW_PROBLEM_SOLUTION_ACCEPT: 1n << 65n,
|
||||
PERM_CREATE_PROBLEM_SOLUTION: 1n << 16n,
|
||||
PERM_VOTE_PROBLEM_SOLUTION: 1n << 17n,
|
||||
PERM_EDIT_PROBLEM_SOLUTION: 1n << 18n,
|
||||
PERM_EDIT_PROBLEM_SOLUTION_SELF: 1n << 19n,
|
||||
PERM_DELETE_PROBLEM_SOLUTION: 1n << 20n,
|
||||
PERM_DELETE_PROBLEM_SOLUTION_SELF: 1n << 21n,
|
||||
PERM_REPLY_PROBLEM_SOLUTION: 1n << 22n,
|
||||
PERM_EDIT_PROBLEM_SOLUTION_REPLY_SELF: 1n << 24n,
|
||||
PERM_DELETE_PROBLEM_SOLUTION_REPLY: 1n << 25n,
|
||||
PERM_DELETE_PROBLEM_SOLUTION_REPLY_SELF: 1n << 26n,
|
||||
|
||||
// Discussion
|
||||
PERM_VIEW_DISCUSSION: 1n << 27n,
|
||||
PERM_CREATE_DISCUSSION: 1n << 28n,
|
||||
PERM_HIGHLIGHT_DISCUSSION: 1n << 29n,
|
||||
PERM_PIN_DISCUSSION: 1n << 61n,
|
||||
PERM_EDIT_DISCUSSION: 1n << 30n,
|
||||
PERM_EDIT_DISCUSSION_SELF: 1n << 31n,
|
||||
PERM_DELETE_DISCUSSION: 1n << 32n,
|
||||
PERM_DELETE_DISCUSSION_SELF: 1n << 33n,
|
||||
PERM_REPLY_DISCUSSION: 1n << 34n,
|
||||
PERM_ADD_REACTION: 1n << 62n,
|
||||
PERM_EDIT_DISCUSSION_REPLY_SELF: 1n << 36n,
|
||||
PERM_DELETE_DISCUSSION_REPLY: 1n << 38n,
|
||||
PERM_DELETE_DISCUSSION_REPLY_SELF: 1n << 39n,
|
||||
PERM_DELETE_DISCUSSION_REPLY_SELF_DISCUSSION: 1n << 40n,
|
||||
PERM_LOCK_DISCUSSION: 1n << 64n,
|
||||
|
||||
// Contest
|
||||
PERM_VIEW_CONTEST: 1n << 41n,
|
||||
PERM_VIEW_CONTEST_SCOREBOARD: 1n << 42n,
|
||||
PERM_VIEW_CONTEST_HIDDEN_SCOREBOARD: 1n << 43n,
|
||||
PERM_CREATE_CONTEST: 1n << 44n,
|
||||
PERM_ATTEND_CONTEST: 1n << 45n,
|
||||
PERM_EDIT_CONTEST: 1n << 50n,
|
||||
PERM_EDIT_CONTEST_SELF: 1n << 51n,
|
||||
PERM_VIEW_HIDDEN_CONTEST: 1n << 68n,
|
||||
|
||||
// Homework
|
||||
PERM_VIEW_HOMEWORK: 1n << 52n,
|
||||
PERM_VIEW_HOMEWORK_SCOREBOARD: 1n << 53n,
|
||||
PERM_VIEW_HOMEWORK_HIDDEN_SCOREBOARD: 1n << 54n,
|
||||
PERM_CREATE_HOMEWORK: 1n << 55n,
|
||||
PERM_ATTEND_HOMEWORK: 1n << 56n,
|
||||
PERM_EDIT_HOMEWORK: 1n << 57n,
|
||||
PERM_EDIT_HOMEWORK_SELF: 1n << 58n,
|
||||
PERM_VIEW_HIDDEN_HOMEWORK: 1n << 69n,
|
||||
|
||||
// Training
|
||||
PERM_VIEW_TRAINING: 1n << 46n,
|
||||
PERM_CREATE_TRAINING: 1n << 47n,
|
||||
PERM_EDIT_TRAINING: 1n << 48n,
|
||||
PERM_PIN_TRAINING: 1n << 63n,
|
||||
PERM_EDIT_TRAINING_SELF: 1n << 49n,
|
||||
|
||||
// Ranking
|
||||
PERM_VIEW_RANKING: 1n << 59n,
|
||||
|
||||
// Placeholder
|
||||
PERM_ALL: -1n,
|
||||
PERM_BASIC: 0n,
|
||||
PERM_DEFAULT: 0n,
|
||||
PERM_ADMIN: -1n,
|
||||
|
||||
PERM_NEVER: 1n << 60n,
|
||||
};
|
||||
|
||||
export const Permission = (family: string, key: bigint, desc: string) => ({ family, key, desc });
|
||||
|
||||
export const PERMS = [
|
||||
@@ -179,99 +83,6 @@ for (const p of PERMS) {
|
||||
else PERMS_BY_FAMILY[p.family].push(p);
|
||||
}
|
||||
|
||||
PERM.PERM_BASIC = PERM.PERM_VIEW
|
||||
| PERM.PERM_VIEW_PROBLEM
|
||||
| PERM.PERM_VIEW_PROBLEM_SOLUTION
|
||||
| PERM.PERM_VIEW_PROBLEM_SOLUTION_ACCEPT
|
||||
| PERM.PERM_VIEW_DISCUSSION
|
||||
| PERM.PERM_VIEW_CONTEST
|
||||
| PERM.PERM_VIEW_CONTEST_SCOREBOARD
|
||||
| PERM.PERM_VIEW_HOMEWORK
|
||||
| PERM.PERM_VIEW_HOMEWORK_SCOREBOARD
|
||||
| PERM.PERM_VIEW_TRAINING
|
||||
| PERM.PERM_VIEW_RANKING
|
||||
| PERM.PERM_VIEW_RECORD;
|
||||
|
||||
PERM.PERM_DEFAULT = PERM.PERM_VIEW
|
||||
| PERM.PERM_VIEW_USER_PRIVATE_INFO
|
||||
| PERM.PERM_VIEW_PROBLEM
|
||||
| PERM.PERM_EDIT_PROBLEM_SELF
|
||||
| PERM.PERM_SUBMIT_PROBLEM
|
||||
| PERM.PERM_VIEW_PROBLEM_SOLUTION
|
||||
| PERM.PERM_VIEW_PROBLEM_SOLUTION_ACCEPT
|
||||
| PERM.PERM_CREATE_PROBLEM_SOLUTION
|
||||
| PERM.PERM_VOTE_PROBLEM_SOLUTION
|
||||
| PERM.PERM_EDIT_PROBLEM_SOLUTION_SELF
|
||||
| PERM.PERM_DELETE_PROBLEM_SOLUTION_SELF
|
||||
| PERM.PERM_REPLY_PROBLEM_SOLUTION
|
||||
| PERM.PERM_EDIT_PROBLEM_SOLUTION_REPLY_SELF
|
||||
| PERM.PERM_DELETE_PROBLEM_SOLUTION_REPLY_SELF
|
||||
| PERM.PERM_VIEW_DISCUSSION
|
||||
| PERM.PERM_CREATE_DISCUSSION
|
||||
| PERM.PERM_EDIT_DISCUSSION_SELF
|
||||
| PERM.PERM_REPLY_DISCUSSION
|
||||
| PERM.PERM_ADD_REACTION
|
||||
| PERM.PERM_EDIT_DISCUSSION_REPLY_SELF
|
||||
| PERM.PERM_DELETE_DISCUSSION_REPLY_SELF
|
||||
| PERM.PERM_DELETE_DISCUSSION_REPLY_SELF_DISCUSSION
|
||||
| PERM.PERM_VIEW_CONTEST
|
||||
| PERM.PERM_VIEW_CONTEST_SCOREBOARD
|
||||
| PERM.PERM_ATTEND_CONTEST
|
||||
| PERM.PERM_EDIT_CONTEST_SELF
|
||||
| PERM.PERM_VIEW_HOMEWORK
|
||||
| PERM.PERM_VIEW_HOMEWORK_SCOREBOARD
|
||||
| PERM.PERM_ATTEND_HOMEWORK
|
||||
| PERM.PERM_EDIT_HOMEWORK_SELF
|
||||
| PERM.PERM_VIEW_TRAINING
|
||||
| PERM.PERM_CREATE_TRAINING
|
||||
| PERM.PERM_EDIT_TRAINING_SELF
|
||||
| PERM.PERM_SUBMIT_PROBLEM
|
||||
| PERM.PERM_CREATE_PROBLEM_SOLUTION
|
||||
| PERM.PERM_VOTE_PROBLEM_SOLUTION
|
||||
| PERM.PERM_REPLY_PROBLEM_SOLUTION
|
||||
| PERM.PERM_CREATE_DISCUSSION
|
||||
| PERM.PERM_REPLY_DISCUSSION
|
||||
| PERM.PERM_ATTEND_CONTEST
|
||||
| PERM.PERM_CREATE_TRAINING
|
||||
| PERM.PERM_ATTEND_HOMEWORK
|
||||
| PERM.PERM_VIEW_RANKING
|
||||
| PERM.PERM_VIEW_RECORD;
|
||||
|
||||
PERM.PERM_ADMIN = PERM.PERM_ALL;
|
||||
|
||||
export const PRIV = {
|
||||
PRIV_NONE: 0,
|
||||
PRIV_MOD_BADGE: 1 << 25,
|
||||
PRIV_EDIT_SYSTEM: 1 << 0, // renamed from PRIV_SET_PRIV
|
||||
PRIV_SET_PERM: 1 << 1,
|
||||
PRIV_USER_PROFILE: 1 << 2,
|
||||
PRIV_REGISTER_USER: 1 << 3,
|
||||
PRIV_READ_PROBLEM_DATA: 1 << 4,
|
||||
PRIV_READ_RECORD_CODE: 1 << 7,
|
||||
PRIV_VIEW_HIDDEN_RECORD: 1 << 8,
|
||||
PRIV_JUDGE: 1 << 9, // (renamed)
|
||||
PRIV_CREATE_DOMAIN: 1 << 10,
|
||||
PRIV_VIEW_ALL_DOMAIN: 1 << 11,
|
||||
PRIV_MANAGE_ALL_DOMAIN: 1 << 12,
|
||||
PRIV_REJUDGE: 1 << 13,
|
||||
PRIV_VIEW_USER_SECRET: 1 << 14,
|
||||
PRIV_VIEW_JUDGE_STATISTICS: 1 << 15,
|
||||
PRIV_UNLIMITED_ACCESS: 1 << 22,
|
||||
PRIV_VIEW_SYSTEM_NOTIFICATION: 1 << 23,
|
||||
PRIV_SEND_MESSAGE: 1 << 24,
|
||||
PRIV_CREATE_FILE: 1 << 16,
|
||||
PRIV_UNLIMITED_QUOTA: 1 << 17,
|
||||
PRIV_DELETE_FILE: 1 << 18,
|
||||
|
||||
PRIV_ALL: -1,
|
||||
PRIV_DEFAULT: 0,
|
||||
PRIV_NEVER: 1 << 20,
|
||||
};
|
||||
|
||||
PRIV.PRIV_DEFAULT = PRIV.PRIV_USER_PROFILE
|
||||
+ PRIV.PRIV_CREATE_FILE
|
||||
+ PRIV.PRIV_SEND_MESSAGE;
|
||||
|
||||
// people whose rank is less than 1% will get Level 10
|
||||
export const LEVELS = [100, 90, 70, 55, 40, 30, 20, 10, 5, 2, 1];
|
||||
|
||||
|
||||
@@ -4,30 +4,30 @@ import moment from 'moment';
|
||||
import React from 'react';
|
||||
import { connect } from 'react-redux';
|
||||
import TimeAgo from 'timeago-react';
|
||||
import * as recordEnum from 'vj/constant/record';
|
||||
import { STATUS_CODES, STATUS_SCRATCHPAD_SHORT_TEXTS, STATUS_SCRATCHPAD_SHOW_DETAIL_FLAGS, STATUS_TEXTS } from 'vj/constant/record';
|
||||
import {
|
||||
emulateAnchorClick, i18n, mongoId, substitute,
|
||||
} from 'vj/utils';
|
||||
|
||||
const shouldShowDetail = (data) => recordEnum.STATUS_SCRATCHPAD_SHOW_DETAIL_FLAGS[data.status] && data.testCases?.length;
|
||||
const shouldShowDetail = (data) => STATUS_SCRATCHPAD_SHOW_DETAIL_FLAGS[data.status] && data.testCases?.length;
|
||||
|
||||
const getRecordDetail = (data) => {
|
||||
if (!shouldShowDetail(data)) {
|
||||
return (
|
||||
<span className={`record-status--text ${recordEnum.STATUS_CODES[data.status]}`}>
|
||||
{recordEnum.STATUS_TEXTS[data.status]}
|
||||
<span className={`record-status--text ${STATUS_CODES[data.status]}`}>
|
||||
{STATUS_TEXTS[data.status]}
|
||||
</span>
|
||||
);
|
||||
}
|
||||
const stat = _.pick(
|
||||
_.groupBy(data.testCases || [], 'status'),
|
||||
_.keys(recordEnum.STATUS_SCRATCHPAD_SHORT_TEXTS),
|
||||
_.keys(STATUS_SCRATCHPAD_SHORT_TEXTS),
|
||||
);
|
||||
return _.map(recordEnum.STATUS_SCRATCHPAD_SHORT_TEXTS, (text, status) => {
|
||||
return _.map(STATUS_SCRATCHPAD_SHORT_TEXTS, (text, status) => {
|
||||
const count = (stat[status] && stat[status].length) || 0;
|
||||
const cn = classNames('icol icol--stat', {
|
||||
'record-status--text': count > 0,
|
||||
[recordEnum.STATUS_CODES[data.status]]: count > 0,
|
||||
[STATUS_CODES[data.status]]: count > 0,
|
||||
});
|
||||
return (
|
||||
<span key={text} className={cn}>
|
||||
@@ -62,8 +62,8 @@ export default connect(mapStateToProps, null, mergeProps)(class ScratchpadRecord
|
||||
// Is pretest
|
||||
return data.contest?.toString() === '000000000000000000000000' ? null : (
|
||||
<tr onClick={(ev) => this.handleRowClick(ev, data._id)}>
|
||||
<td className={`col--detail record-status--border ${recordEnum.STATUS_CODES[data.status]}`}>
|
||||
<span className={`icon record-status--icon ${recordEnum.STATUS_CODES[data.status]}`}></span>
|
||||
<td className={`col--detail record-status--border ${STATUS_CODES[data.status]}`}>
|
||||
<span className={`icon record-status--icon ${STATUS_CODES[data.status]}`}></span>
|
||||
<span className="icol icol--pretest"></span>
|
||||
{getRecordDetail(data)}
|
||||
</td>
|
||||
|
||||
@@ -1,83 +1,52 @@
|
||||
// Please note that accepted < others, rp system uses this feature.
|
||||
export const STATUS_WAITING = 0;
|
||||
export const STATUS_ACCEPTED = 1;
|
||||
export const STATUS_WRONG_ANSWER = 2;
|
||||
export const STATUS_TIME_LIMIT_EXCEEDED = 3;
|
||||
export const STATUS_MEMORY_LIMIT_EXCEEDED = 4;
|
||||
export const STATUS_OUTPUT_LIMIT_EXCEEDED = 5;
|
||||
export const STATUS_RUNTIME_ERROR = 6;
|
||||
export const STATUS_COMPILE_ERROR = 7;
|
||||
export const STATUS_SYSTEM_ERROR = 8;
|
||||
export const STATUS_CANCELED = 9;
|
||||
export const STATUS_ETC = 10;
|
||||
export const STATUS_JUDGING = 20;
|
||||
export const STATUS_COMPILING = 21;
|
||||
export const STATUS_FETCHED = 22;
|
||||
export const STATUS_IGNORED = 30;
|
||||
|
||||
export const STATUS_TEXTS = {
|
||||
[STATUS_WAITING]: 'Waiting',
|
||||
[STATUS_ACCEPTED]: 'Accepted',
|
||||
[STATUS_WRONG_ANSWER]: 'Wrong Answer',
|
||||
[STATUS_TIME_LIMIT_EXCEEDED]: 'Time Exceeded',
|
||||
[STATUS_MEMORY_LIMIT_EXCEEDED]: 'Memory Exceeded',
|
||||
[STATUS_OUTPUT_LIMIT_EXCEEDED]: 'Output Exceeded',
|
||||
[STATUS_RUNTIME_ERROR]: 'Runtime Error',
|
||||
[STATUS_COMPILE_ERROR]: 'Compile Error',
|
||||
[STATUS_SYSTEM_ERROR]: 'System Error',
|
||||
[STATUS_CANCELED]: 'Cancelled',
|
||||
[STATUS_ETC]: 'Unknown Error',
|
||||
[STATUS_JUDGING]: 'Running',
|
||||
[STATUS_COMPILING]: 'Compiling',
|
||||
[STATUS_FETCHED]: 'Fetched',
|
||||
[STATUS_IGNORED]: 'Ignored',
|
||||
};
|
||||
import { STATUS } from '@hydrooj/common';
|
||||
export { STATUS, STATUS_TEXTS } from '@hydrooj/common';
|
||||
|
||||
export const STATUS_CODES = {
|
||||
[STATUS_WAITING]: 'pending',
|
||||
[STATUS_ACCEPTED]: 'pass',
|
||||
[STATUS_WRONG_ANSWER]: 'fail',
|
||||
[STATUS_TIME_LIMIT_EXCEEDED]: 'fail',
|
||||
[STATUS_MEMORY_LIMIT_EXCEEDED]: 'fail',
|
||||
[STATUS_OUTPUT_LIMIT_EXCEEDED]: 'fail',
|
||||
[STATUS_RUNTIME_ERROR]: 'fail',
|
||||
[STATUS_COMPILE_ERROR]: 'fail',
|
||||
[STATUS_SYSTEM_ERROR]: 'fail',
|
||||
[STATUS_CANCELED]: 'ignored',
|
||||
[STATUS_ETC]: 'fail',
|
||||
[STATUS_JUDGING]: 'progress',
|
||||
[STATUS_COMPILING]: 'progress',
|
||||
[STATUS_FETCHED]: 'progress',
|
||||
[STATUS_IGNORED]: 'ignored',
|
||||
[STATUS.STATUS_WAITING]: 'pending',
|
||||
[STATUS.STATUS_ACCEPTED]: 'pass',
|
||||
[STATUS.STATUS_WRONG_ANSWER]: 'fail',
|
||||
[STATUS.STATUS_TIME_LIMIT_EXCEEDED]: 'fail',
|
||||
[STATUS.STATUS_MEMORY_LIMIT_EXCEEDED]: 'fail',
|
||||
[STATUS.STATUS_OUTPUT_LIMIT_EXCEEDED]: 'fail',
|
||||
[STATUS.STATUS_RUNTIME_ERROR]: 'fail',
|
||||
[STATUS.STATUS_COMPILE_ERROR]: 'fail',
|
||||
[STATUS.STATUS_SYSTEM_ERROR]: 'fail',
|
||||
[STATUS.STATUS_CANCELED]: 'ignored',
|
||||
[STATUS.STATUS_ETC]: 'fail',
|
||||
[STATUS.STATUS_JUDGING]: 'progress',
|
||||
[STATUS.STATUS_COMPILING]: 'progress',
|
||||
[STATUS.STATTUS_FETCHED]: 'progress',
|
||||
[STATUS.STATUS_IGNORED]: 'ignored',
|
||||
};
|
||||
|
||||
/**
|
||||
* Whether to show detail about each test case for a submission status
|
||||
*/
|
||||
export const STATUS_SCRATCHPAD_SHOW_DETAIL_FLAGS = {
|
||||
[STATUS_WAITING]: false,
|
||||
[STATUS_ACCEPTED]: true,
|
||||
[STATUS_WRONG_ANSWER]: true,
|
||||
[STATUS_TIME_LIMIT_EXCEEDED]: true,
|
||||
[STATUS_MEMORY_LIMIT_EXCEEDED]: true,
|
||||
[STATUS_RUNTIME_ERROR]: true,
|
||||
[STATUS_COMPILE_ERROR]: false,
|
||||
[STATUS_SYSTEM_ERROR]: false,
|
||||
[STATUS_CANCELED]: false,
|
||||
[STATUS_ETC]: false,
|
||||
[STATUS_JUDGING]: false,
|
||||
[STATUS_COMPILING]: false,
|
||||
[STATUS_FETCHED]: false,
|
||||
[STATUS_IGNORED]: false,
|
||||
[STATUS.STATUS_WAITING]: false,
|
||||
[STATUS.STATUS_ACCEPTED]: true,
|
||||
[STATUS.STATUS_WRONG_ANSWER]: true,
|
||||
[STATUS.STATUS_TIME_LIMIT_EXCEEDED]: true,
|
||||
[STATUS.STATUS_MEMORY_LIMIT_EXCEEDED]: true,
|
||||
[STATUS.STATUS_RUNTIME_ERROR]: true,
|
||||
[STATUS.STATUS_COMPILE_ERROR]: false,
|
||||
[STATUS.STATUS_SYSTEM_ERROR]: false,
|
||||
[STATUS.STATUS_CANCELED]: false,
|
||||
[STATUS.STATUS_ETC]: false,
|
||||
[STATUS.STATUS_JUDGING]: false,
|
||||
[STATUS.STATUS_COMPILING]: false,
|
||||
[STATUS.STATUS_FETCHED]: false,
|
||||
[STATUS.STATUS_IGNORED]: false,
|
||||
};
|
||||
|
||||
/**
|
||||
* Short text to show in Scratchpad mode
|
||||
*/
|
||||
export const STATUS_SCRATCHPAD_SHORT_TEXTS = {
|
||||
[STATUS_ACCEPTED]: 'AC',
|
||||
[STATUS_WRONG_ANSWER]: 'WA',
|
||||
[STATUS_TIME_LIMIT_EXCEEDED]: 'TLE',
|
||||
[STATUS_MEMORY_LIMIT_EXCEEDED]: 'MLE',
|
||||
[STATUS_RUNTIME_ERROR]: 'RTE',
|
||||
[STATUS.STATUS_ACCEPTED]: 'AC',
|
||||
[STATUS.STATUS_WRONG_ANSWER]: 'WA',
|
||||
[STATUS.STATUS_TIME_LIMIT_EXCEEDED]: 'TLE',
|
||||
[STATUS.STATUS_MEMORY_LIMIT_EXCEEDED]: 'MLE',
|
||||
[STATUS.STATUS_RUNTIME_ERROR]: 'RTE',
|
||||
};
|
||||
Reference in new issue
Block a user