From c80352b245bb46cf46f146d9f6b08267404ef23b Mon Sep 17 00:00:00 2001 From: xuyue <517252939@qq.com> Date: Fri, 10 Feb 2023 10:19:43 +0800 Subject: [PATCH] add rank. --- src/auto-imports.d.ts | 560 +++++++++--------- src/components.d.ts | 2 +- src/learn/step-1/index.md | 222 +++---- src/learn/step-2/index.md | 2 +- src/oj/composables/code.ts | 12 +- src/oj/contest/components/AcAndSubmission.vue | 19 +- src/oj/contest/components/ContestTitle.vue | 44 +- src/oj/contest/components/ContestType.vue | 40 +- src/oj/contest/detail.vue | 1 - src/oj/contest/pages/helper.vue | 10 +- src/oj/contest/pages/problems.vue | 92 +-- src/oj/contest/pages/rank.vue | 342 +++++------ src/oj/problem/components/ProblemStatus.vue | 56 +- src/oj/problem/components/Submit.vue | 466 +++++++-------- src/oj/problem/list.vue | 7 +- src/oj/rank/components/Chart.vue | 176 +++--- src/oj/store/contest.ts | 145 ++--- src/oj/submission/list.vue | 15 +- src/shared/Copy.vue | 60 +- src/shared/composables/chart.ts | 56 +- src/shared/composables/learn.ts | 2 +- src/shared/composables/monaco.ts | 38 +- 22 files changed, 1197 insertions(+), 1170 deletions(-) diff --git a/src/auto-imports.d.ts b/src/auto-imports.d.ts index cb5cc35..08b6b76 100644 --- a/src/auto-imports.d.ts +++ b/src/auto-imports.d.ts @@ -1,284 +1,284 @@ // Generated by 'unplugin-auto-import' export {} declare global { - const EffectScope: typeof import('vue')['EffectScope'] - const acceptHMRUpdate: typeof import('pinia')['acceptHMRUpdate'] - const asyncComputed: typeof import('@vueuse/core')['asyncComputed'] - const autoResetRef: typeof import('@vueuse/core')['autoResetRef'] - const computed: typeof import('vue')['computed'] - const computedAsync: typeof import('@vueuse/core')['computedAsync'] - const computedEager: typeof import('@vueuse/core')['computedEager'] - const computedInject: typeof import('@vueuse/core')['computedInject'] - const computedWithControl: typeof import('@vueuse/core')['computedWithControl'] - const controlledComputed: typeof import('@vueuse/core')['controlledComputed'] - const controlledRef: typeof import('@vueuse/core')['controlledRef'] - const createApp: typeof import('vue')['createApp'] - const createEventHook: typeof import('@vueuse/core')['createEventHook'] - const createGlobalState: typeof import('@vueuse/core')['createGlobalState'] - const createInjectionState: typeof import('@vueuse/core')['createInjectionState'] - const createPinia: typeof import('pinia')['createPinia'] - const createReactiveFn: typeof import('@vueuse/core')['createReactiveFn'] - const createSharedComposable: typeof import('@vueuse/core')['createSharedComposable'] - const createUnrefFn: typeof import('@vueuse/core')['createUnrefFn'] - const customRef: typeof import('vue')['customRef'] - const debouncedRef: typeof import('@vueuse/core')['debouncedRef'] - const debouncedWatch: typeof import('@vueuse/core')['debouncedWatch'] - const defineAsyncComponent: typeof import('vue')['defineAsyncComponent'] - const defineComponent: typeof import('vue')['defineComponent'] - const defineStore: typeof import('pinia')['defineStore'] - const eagerComputed: typeof import('@vueuse/core')['eagerComputed'] - const effectScope: typeof import('vue')['effectScope'] - const extendRef: typeof import('@vueuse/core')['extendRef'] - const getActivePinia: typeof import('pinia')['getActivePinia'] - const getCurrentInstance: typeof import('vue')['getCurrentInstance'] - const getCurrentScope: typeof import('vue')['getCurrentScope'] - const h: typeof import('vue')['h'] - const ignorableWatch: typeof import('@vueuse/core')['ignorableWatch'] - const inject: typeof import('vue')['inject'] - const isDefined: typeof import('@vueuse/core')['isDefined'] - const isProxy: typeof import('vue')['isProxy'] - const isReactive: typeof import('vue')['isReactive'] - const isReadonly: typeof import('vue')['isReadonly'] - const isRef: typeof import('vue')['isRef'] - const makeDestructurable: typeof import('@vueuse/core')['makeDestructurable'] - const mapActions: typeof import('pinia')['mapActions'] - const mapGetters: typeof import('pinia')['mapGetters'] - const mapState: typeof import('pinia')['mapState'] - const mapStores: typeof import('pinia')['mapStores'] - const mapWritableState: typeof import('pinia')['mapWritableState'] - const markRaw: typeof import('vue')['markRaw'] - const nextTick: typeof import('vue')['nextTick'] - const onActivated: typeof import('vue')['onActivated'] - const onBeforeMount: typeof import('vue')['onBeforeMount'] - const onBeforeRouteLeave: typeof import('vue-router')['onBeforeRouteLeave'] - const onBeforeRouteUpdate: typeof import('vue-router')['onBeforeRouteUpdate'] - const onBeforeUnmount: typeof import('vue')['onBeforeUnmount'] - const onBeforeUpdate: typeof import('vue')['onBeforeUpdate'] - const onClickOutside: typeof import('@vueuse/core')['onClickOutside'] - const onDeactivated: typeof import('vue')['onDeactivated'] - const onErrorCaptured: typeof import('vue')['onErrorCaptured'] - const onKeyStroke: typeof import('@vueuse/core')['onKeyStroke'] - const onLongPress: typeof import('@vueuse/core')['onLongPress'] - const onMounted: typeof import('vue')['onMounted'] - const onRenderTracked: typeof import('vue')['onRenderTracked'] - const onRenderTriggered: typeof import('vue')['onRenderTriggered'] - const onScopeDispose: typeof import('vue')['onScopeDispose'] - const onServerPrefetch: typeof import('vue')['onServerPrefetch'] - const onStartTyping: typeof import('@vueuse/core')['onStartTyping'] - const onUnmounted: typeof import('vue')['onUnmounted'] - const onUpdated: typeof import('vue')['onUpdated'] - const pausableWatch: typeof import('@vueuse/core')['pausableWatch'] - const provide: typeof import('vue')['provide'] - const reactify: typeof import('@vueuse/core')['reactify'] - const reactifyObject: typeof import('@vueuse/core')['reactifyObject'] - const reactive: typeof import('vue')['reactive'] - const reactiveComputed: typeof import('@vueuse/core')['reactiveComputed'] - const reactiveOmit: typeof import('@vueuse/core')['reactiveOmit'] - const reactivePick: typeof import('@vueuse/core')['reactivePick'] - const readonly: typeof import('vue')['readonly'] - const ref: typeof import('vue')['ref'] - const refAutoReset: typeof import('@vueuse/core')['refAutoReset'] - const refDebounced: typeof import('@vueuse/core')['refDebounced'] - const refDefault: typeof import('@vueuse/core')['refDefault'] - const refThrottled: typeof import('@vueuse/core')['refThrottled'] - const refWithControl: typeof import('@vueuse/core')['refWithControl'] - const resolveComponent: typeof import('vue')['resolveComponent'] - const resolveDirective: typeof import('vue')['resolveDirective'] - const resolveRef: typeof import('@vueuse/core')['resolveRef'] - const resolveUnref: typeof import('@vueuse/core')['resolveUnref'] - const setActivePinia: typeof import('pinia')['setActivePinia'] - const setMapStoreSuffix: typeof import('pinia')['setMapStoreSuffix'] - const shallowReactive: typeof import('vue')['shallowReactive'] - const shallowReadonly: typeof import('vue')['shallowReadonly'] - const shallowRef: typeof import('vue')['shallowRef'] - const storeToRefs: typeof import('pinia')['storeToRefs'] - const syncRef: typeof import('@vueuse/core')['syncRef'] - const syncRefs: typeof import('@vueuse/core')['syncRefs'] - const templateRef: typeof import('@vueuse/core')['templateRef'] - const throttledRef: typeof import('@vueuse/core')['throttledRef'] - const throttledWatch: typeof import('@vueuse/core')['throttledWatch'] - const toRaw: typeof import('vue')['toRaw'] - const toReactive: typeof import('@vueuse/core')['toReactive'] - const toRef: typeof import('vue')['toRef'] - const toRefs: typeof import('vue')['toRefs'] - const triggerRef: typeof import('vue')['triggerRef'] - const tryOnBeforeMount: typeof import('@vueuse/core')['tryOnBeforeMount'] - const tryOnBeforeUnmount: typeof import('@vueuse/core')['tryOnBeforeUnmount'] - const tryOnMounted: typeof import('@vueuse/core')['tryOnMounted'] - const tryOnScopeDispose: typeof import('@vueuse/core')['tryOnScopeDispose'] - const tryOnUnmounted: typeof import('@vueuse/core')['tryOnUnmounted'] - const unref: typeof import('vue')['unref'] - const unrefElement: typeof import('@vueuse/core')['unrefElement'] - const until: typeof import('@vueuse/core')['until'] - const useActiveElement: typeof import('@vueuse/core')['useActiveElement'] - const useArrayEvery: typeof import('@vueuse/core')['useArrayEvery'] - const useArrayFilter: typeof import('@vueuse/core')['useArrayFilter'] - const useArrayFind: typeof import('@vueuse/core')['useArrayFind'] - const useArrayFindIndex: typeof import('@vueuse/core')['useArrayFindIndex'] - const useArrayJoin: typeof import('@vueuse/core')['useArrayJoin'] - const useArrayMap: typeof import('@vueuse/core')['useArrayMap'] - const useArrayReduce: typeof import('@vueuse/core')['useArrayReduce'] - const useArraySome: typeof import('@vueuse/core')['useArraySome'] - const useArrayUnique: typeof import('@vueuse/core')['useArrayUnique'] - const useAsyncQueue: typeof import('@vueuse/core')['useAsyncQueue'] - const useAsyncState: typeof import('@vueuse/core')['useAsyncState'] - const useAttrs: typeof import('vue')['useAttrs'] - const useBase64: typeof import('@vueuse/core')['useBase64'] - const useBattery: typeof import('@vueuse/core')['useBattery'] - const useBluetooth: typeof import('@vueuse/core')['useBluetooth'] - const useBreakpoints: typeof import('@vueuse/core')['useBreakpoints'] - const useBroadcastChannel: typeof import('@vueuse/core')['useBroadcastChannel'] - const useBrowserLocation: typeof import('@vueuse/core')['useBrowserLocation'] - const useCached: typeof import('@vueuse/core')['useCached'] - const useClipboard: typeof import('@vueuse/core')['useClipboard'] - const useCloned: typeof import('@vueuse/core')['useCloned'] - const useColorMode: typeof import('@vueuse/core')['useColorMode'] - const useConfirmDialog: typeof import('@vueuse/core')['useConfirmDialog'] - const useCounter: typeof import('@vueuse/core')['useCounter'] - const useCssModule: typeof import('vue')['useCssModule'] - const useCssVar: typeof import('@vueuse/core')['useCssVar'] - const useCssVars: typeof import('vue')['useCssVars'] - const useCurrentElement: typeof import('@vueuse/core')['useCurrentElement'] - const useCycleList: typeof import('@vueuse/core')['useCycleList'] - const useDark: typeof import('@vueuse/core')['useDark'] - const useDateFormat: typeof import('@vueuse/core')['useDateFormat'] - const useDebounce: typeof import('@vueuse/core')['useDebounce'] - const useDebounceFn: typeof import('@vueuse/core')['useDebounceFn'] - const useDebouncedRefHistory: typeof import('@vueuse/core')['useDebouncedRefHistory'] - const useDeviceMotion: typeof import('@vueuse/core')['useDeviceMotion'] - const useDeviceOrientation: typeof import('@vueuse/core')['useDeviceOrientation'] - const useDevicePixelRatio: typeof import('@vueuse/core')['useDevicePixelRatio'] - const useDevicesList: typeof import('@vueuse/core')['useDevicesList'] - const useDialog: typeof import('naive-ui')['useDialog'] - const useDisplayMedia: typeof import('@vueuse/core')['useDisplayMedia'] - const useDocumentVisibility: typeof import('@vueuse/core')['useDocumentVisibility'] - const useDraggable: typeof import('@vueuse/core')['useDraggable'] - const useDropZone: typeof import('@vueuse/core')['useDropZone'] - const useElementBounding: typeof import('@vueuse/core')['useElementBounding'] - const useElementByPoint: typeof import('@vueuse/core')['useElementByPoint'] - const useElementHover: typeof import('@vueuse/core')['useElementHover'] - const useElementSize: typeof import('@vueuse/core')['useElementSize'] - const useElementVisibility: typeof import('@vueuse/core')['useElementVisibility'] - const useEventBus: typeof import('@vueuse/core')['useEventBus'] - const useEventListener: typeof import('@vueuse/core')['useEventListener'] - const useEventSource: typeof import('@vueuse/core')['useEventSource'] - const useEyeDropper: typeof import('@vueuse/core')['useEyeDropper'] - const useFavicon: typeof import('@vueuse/core')['useFavicon'] - const useFetch: typeof import('@vueuse/core')['useFetch'] - const useFileDialog: typeof import('@vueuse/core')['useFileDialog'] - const useFileSystemAccess: typeof import('@vueuse/core')['useFileSystemAccess'] - const useFocus: typeof import('@vueuse/core')['useFocus'] - const useFocusWithin: typeof import('@vueuse/core')['useFocusWithin'] - const useFps: typeof import('@vueuse/core')['useFps'] - const useFullscreen: typeof import('@vueuse/core')['useFullscreen'] - const useGamepad: typeof import('@vueuse/core')['useGamepad'] - const useGeolocation: typeof import('@vueuse/core')['useGeolocation'] - const useIdle: typeof import('@vueuse/core')['useIdle'] - const useImage: typeof import('@vueuse/core')['useImage'] - const useInfiniteScroll: typeof import('@vueuse/core')['useInfiniteScroll'] - const useIntersectionObserver: typeof import('@vueuse/core')['useIntersectionObserver'] - const useInterval: typeof import('@vueuse/core')['useInterval'] - const useIntervalFn: typeof import('@vueuse/core')['useIntervalFn'] - const useKeyModifier: typeof import('@vueuse/core')['useKeyModifier'] - const useLastChanged: typeof import('@vueuse/core')['useLastChanged'] - const useLink: typeof import('vue-router')['useLink'] - const useLoadingBar: typeof import('naive-ui')['useLoadingBar'] - const useLocalStorage: typeof import('@vueuse/core')['useLocalStorage'] - const useMagicKeys: typeof import('@vueuse/core')['useMagicKeys'] - const useManualRefHistory: typeof import('@vueuse/core')['useManualRefHistory'] - const useMediaControls: typeof import('@vueuse/core')['useMediaControls'] - const useMediaQuery: typeof import('@vueuse/core')['useMediaQuery'] - const useMemoize: typeof import('@vueuse/core')['useMemoize'] - const useMemory: typeof import('@vueuse/core')['useMemory'] - const useMessage: typeof import('naive-ui')['useMessage'] - const useMounted: typeof import('@vueuse/core')['useMounted'] - const useMouse: typeof import('@vueuse/core')['useMouse'] - const useMouseInElement: typeof import('@vueuse/core')['useMouseInElement'] - const useMousePressed: typeof import('@vueuse/core')['useMousePressed'] - const useMutationObserver: typeof import('@vueuse/core')['useMutationObserver'] - const useNavigatorLanguage: typeof import('@vueuse/core')['useNavigatorLanguage'] - const useNetwork: typeof import('@vueuse/core')['useNetwork'] - const useNotification: typeof import('naive-ui')['useNotification'] - const useNow: typeof import('@vueuse/core')['useNow'] - const useObjectUrl: typeof import('@vueuse/core')['useObjectUrl'] - const useOffsetPagination: typeof import('@vueuse/core')['useOffsetPagination'] - const useOnline: typeof import('@vueuse/core')['useOnline'] - const usePageLeave: typeof import('@vueuse/core')['usePageLeave'] - const useParallax: typeof import('@vueuse/core')['useParallax'] - const usePermission: typeof import('@vueuse/core')['usePermission'] - const usePointer: typeof import('@vueuse/core')['usePointer'] - const usePointerLock: typeof import('@vueuse/core')['usePointerLock'] - const usePointerSwipe: typeof import('@vueuse/core')['usePointerSwipe'] - const usePreferredColorScheme: typeof import('@vueuse/core')['usePreferredColorScheme'] - const usePreferredContrast: typeof import('@vueuse/core')['usePreferredContrast'] - const usePreferredDark: typeof import('@vueuse/core')['usePreferredDark'] - const usePreferredLanguages: typeof import('@vueuse/core')['usePreferredLanguages'] - const usePreferredReducedMotion: typeof import('@vueuse/core')['usePreferredReducedMotion'] - const useRafFn: typeof import('@vueuse/core')['useRafFn'] - const useRefHistory: typeof import('@vueuse/core')['useRefHistory'] - const useResizeObserver: typeof import('@vueuse/core')['useResizeObserver'] - const useRoute: typeof import('vue-router')['useRoute'] - const useRouter: typeof import('vue-router')['useRouter'] - const useScreenOrientation: typeof import('@vueuse/core')['useScreenOrientation'] - const useScreenSafeArea: typeof import('@vueuse/core')['useScreenSafeArea'] - const useScriptTag: typeof import('@vueuse/core')['useScriptTag'] - const useScroll: typeof import('@vueuse/core')['useScroll'] - const useScrollLock: typeof import('@vueuse/core')['useScrollLock'] - const useSessionStorage: typeof import('@vueuse/core')['useSessionStorage'] - const useShare: typeof import('@vueuse/core')['useShare'] - const useSlots: typeof import('vue')['useSlots'] - const useSorted: typeof import('@vueuse/core')['useSorted'] - const useSpeechRecognition: typeof import('@vueuse/core')['useSpeechRecognition'] - const useSpeechSynthesis: typeof import('@vueuse/core')['useSpeechSynthesis'] - const useStepper: typeof import('@vueuse/core')['useStepper'] - const useStorage: typeof import('@vueuse/core')['useStorage'] - const useStorageAsync: typeof import('@vueuse/core')['useStorageAsync'] - const useStyleTag: typeof import('@vueuse/core')['useStyleTag'] - const useSupported: typeof import('@vueuse/core')['useSupported'] - const useSwipe: typeof import('@vueuse/core')['useSwipe'] - const useTemplateRefsList: typeof import('@vueuse/core')['useTemplateRefsList'] - const useTextDirection: typeof import('@vueuse/core')['useTextDirection'] - const useTextSelection: typeof import('@vueuse/core')['useTextSelection'] - const useTextareaAutosize: typeof import('@vueuse/core')['useTextareaAutosize'] - const useThrottle: typeof import('@vueuse/core')['useThrottle'] - const useThrottleFn: typeof import('@vueuse/core')['useThrottleFn'] - const useThrottledRefHistory: typeof import('@vueuse/core')['useThrottledRefHistory'] - const useTimeAgo: typeof import('@vueuse/core')['useTimeAgo'] - const useTimeout: typeof import('@vueuse/core')['useTimeout'] - const useTimeoutFn: typeof import('@vueuse/core')['useTimeoutFn'] - const useTimeoutPoll: typeof import('@vueuse/core')['useTimeoutPoll'] - const useTimestamp: typeof import('@vueuse/core')['useTimestamp'] - const useTitle: typeof import('@vueuse/core')['useTitle'] - const useToNumber: typeof import('@vueuse/core')['useToNumber'] - const useToString: typeof import('@vueuse/core')['useToString'] - const useToggle: typeof import('@vueuse/core')['useToggle'] - const useTransition: typeof import('@vueuse/core')['useTransition'] - const useUrlSearchParams: typeof import('@vueuse/core')['useUrlSearchParams'] - const useUserMedia: typeof import('@vueuse/core')['useUserMedia'] - const useVModel: typeof import('@vueuse/core')['useVModel'] - const useVModels: typeof import('@vueuse/core')['useVModels'] - const useVibrate: typeof import('@vueuse/core')['useVibrate'] - const useVirtualList: typeof import('@vueuse/core')['useVirtualList'] - const useWakeLock: typeof import('@vueuse/core')['useWakeLock'] - const useWebNotification: typeof import('@vueuse/core')['useWebNotification'] - const useWebSocket: typeof import('@vueuse/core')['useWebSocket'] - const useWebWorker: typeof import('@vueuse/core')['useWebWorker'] - const useWebWorkerFn: typeof import('@vueuse/core')['useWebWorkerFn'] - const useWindowFocus: typeof import('@vueuse/core')['useWindowFocus'] - const useWindowScroll: typeof import('@vueuse/core')['useWindowScroll'] - const useWindowSize: typeof import('@vueuse/core')['useWindowSize'] - const watch: typeof import('vue')['watch'] - const watchArray: typeof import('@vueuse/core')['watchArray'] - const watchAtMost: typeof import('@vueuse/core')['watchAtMost'] - const watchDebounced: typeof import('@vueuse/core')['watchDebounced'] - const watchEffect: typeof import('vue')['watchEffect'] - const watchIgnorable: typeof import('@vueuse/core')['watchIgnorable'] - const watchOnce: typeof import('@vueuse/core')['watchOnce'] - const watchPausable: typeof import('@vueuse/core')['watchPausable'] - const watchPostEffect: typeof import('vue')['watchPostEffect'] - const watchSyncEffect: typeof import('vue')['watchSyncEffect'] - const watchThrottled: typeof import('@vueuse/core')['watchThrottled'] - const watchTriggerable: typeof import('@vueuse/core')['watchTriggerable'] - const watchWithFilter: typeof import('@vueuse/core')['watchWithFilter'] - const whenever: typeof import('@vueuse/core')['whenever'] + const EffectScope: typeof import("vue")["EffectScope"] + const acceptHMRUpdate: typeof import("pinia")["acceptHMRUpdate"] + const asyncComputed: typeof import("@vueuse/core")["asyncComputed"] + const autoResetRef: typeof import("@vueuse/core")["autoResetRef"] + const computed: typeof import("vue")["computed"] + const computedAsync: typeof import("@vueuse/core")["computedAsync"] + const computedEager: typeof import("@vueuse/core")["computedEager"] + const computedInject: typeof import("@vueuse/core")["computedInject"] + const computedWithControl: typeof import("@vueuse/core")["computedWithControl"] + const controlledComputed: typeof import("@vueuse/core")["controlledComputed"] + const controlledRef: typeof import("@vueuse/core")["controlledRef"] + const createApp: typeof import("vue")["createApp"] + const createEventHook: typeof import("@vueuse/core")["createEventHook"] + const createGlobalState: typeof import("@vueuse/core")["createGlobalState"] + const createInjectionState: typeof import("@vueuse/core")["createInjectionState"] + const createPinia: typeof import("pinia")["createPinia"] + const createReactiveFn: typeof import("@vueuse/core")["createReactiveFn"] + const createSharedComposable: typeof import("@vueuse/core")["createSharedComposable"] + const createUnrefFn: typeof import("@vueuse/core")["createUnrefFn"] + const customRef: typeof import("vue")["customRef"] + const debouncedRef: typeof import("@vueuse/core")["debouncedRef"] + const debouncedWatch: typeof import("@vueuse/core")["debouncedWatch"] + const defineAsyncComponent: typeof import("vue")["defineAsyncComponent"] + const defineComponent: typeof import("vue")["defineComponent"] + const defineStore: typeof import("pinia")["defineStore"] + const eagerComputed: typeof import("@vueuse/core")["eagerComputed"] + const effectScope: typeof import("vue")["effectScope"] + const extendRef: typeof import("@vueuse/core")["extendRef"] + const getActivePinia: typeof import("pinia")["getActivePinia"] + const getCurrentInstance: typeof import("vue")["getCurrentInstance"] + const getCurrentScope: typeof import("vue")["getCurrentScope"] + const h: typeof import("vue")["h"] + const ignorableWatch: typeof import("@vueuse/core")["ignorableWatch"] + const inject: typeof import("vue")["inject"] + const isDefined: typeof import("@vueuse/core")["isDefined"] + const isProxy: typeof import("vue")["isProxy"] + const isReactive: typeof import("vue")["isReactive"] + const isReadonly: typeof import("vue")["isReadonly"] + const isRef: typeof import("vue")["isRef"] + const makeDestructurable: typeof import("@vueuse/core")["makeDestructurable"] + const mapActions: typeof import("pinia")["mapActions"] + const mapGetters: typeof import("pinia")["mapGetters"] + const mapState: typeof import("pinia")["mapState"] + const mapStores: typeof import("pinia")["mapStores"] + const mapWritableState: typeof import("pinia")["mapWritableState"] + const markRaw: typeof import("vue")["markRaw"] + const nextTick: typeof import("vue")["nextTick"] + const onActivated: typeof import("vue")["onActivated"] + const onBeforeMount: typeof import("vue")["onBeforeMount"] + const onBeforeRouteLeave: typeof import("vue-router")["onBeforeRouteLeave"] + const onBeforeRouteUpdate: typeof import("vue-router")["onBeforeRouteUpdate"] + const onBeforeUnmount: typeof import("vue")["onBeforeUnmount"] + const onBeforeUpdate: typeof import("vue")["onBeforeUpdate"] + const onClickOutside: typeof import("@vueuse/core")["onClickOutside"] + const onDeactivated: typeof import("vue")["onDeactivated"] + const onErrorCaptured: typeof import("vue")["onErrorCaptured"] + const onKeyStroke: typeof import("@vueuse/core")["onKeyStroke"] + const onLongPress: typeof import("@vueuse/core")["onLongPress"] + const onMounted: typeof import("vue")["onMounted"] + const onRenderTracked: typeof import("vue")["onRenderTracked"] + const onRenderTriggered: typeof import("vue")["onRenderTriggered"] + const onScopeDispose: typeof import("vue")["onScopeDispose"] + const onServerPrefetch: typeof import("vue")["onServerPrefetch"] + const onStartTyping: typeof import("@vueuse/core")["onStartTyping"] + const onUnmounted: typeof import("vue")["onUnmounted"] + const onUpdated: typeof import("vue")["onUpdated"] + const pausableWatch: typeof import("@vueuse/core")["pausableWatch"] + const provide: typeof import("vue")["provide"] + const reactify: typeof import("@vueuse/core")["reactify"] + const reactifyObject: typeof import("@vueuse/core")["reactifyObject"] + const reactive: typeof import("vue")["reactive"] + const reactiveComputed: typeof import("@vueuse/core")["reactiveComputed"] + const reactiveOmit: typeof import("@vueuse/core")["reactiveOmit"] + const reactivePick: typeof import("@vueuse/core")["reactivePick"] + const readonly: typeof import("vue")["readonly"] + const ref: typeof import("vue")["ref"] + const refAutoReset: typeof import("@vueuse/core")["refAutoReset"] + const refDebounced: typeof import("@vueuse/core")["refDebounced"] + const refDefault: typeof import("@vueuse/core")["refDefault"] + const refThrottled: typeof import("@vueuse/core")["refThrottled"] + const refWithControl: typeof import("@vueuse/core")["refWithControl"] + const resolveComponent: typeof import("vue")["resolveComponent"] + const resolveDirective: typeof import("vue")["resolveDirective"] + const resolveRef: typeof import("@vueuse/core")["resolveRef"] + const resolveUnref: typeof import("@vueuse/core")["resolveUnref"] + const setActivePinia: typeof import("pinia")["setActivePinia"] + const setMapStoreSuffix: typeof import("pinia")["setMapStoreSuffix"] + const shallowReactive: typeof import("vue")["shallowReactive"] + const shallowReadonly: typeof import("vue")["shallowReadonly"] + const shallowRef: typeof import("vue")["shallowRef"] + const storeToRefs: typeof import("pinia")["storeToRefs"] + const syncRef: typeof import("@vueuse/core")["syncRef"] + const syncRefs: typeof import("@vueuse/core")["syncRefs"] + const templateRef: typeof import("@vueuse/core")["templateRef"] + const throttledRef: typeof import("@vueuse/core")["throttledRef"] + const throttledWatch: typeof import("@vueuse/core")["throttledWatch"] + const toRaw: typeof import("vue")["toRaw"] + const toReactive: typeof import("@vueuse/core")["toReactive"] + const toRef: typeof import("vue")["toRef"] + const toRefs: typeof import("vue")["toRefs"] + const triggerRef: typeof import("vue")["triggerRef"] + const tryOnBeforeMount: typeof import("@vueuse/core")["tryOnBeforeMount"] + const tryOnBeforeUnmount: typeof import("@vueuse/core")["tryOnBeforeUnmount"] + const tryOnMounted: typeof import("@vueuse/core")["tryOnMounted"] + const tryOnScopeDispose: typeof import("@vueuse/core")["tryOnScopeDispose"] + const tryOnUnmounted: typeof import("@vueuse/core")["tryOnUnmounted"] + const unref: typeof import("vue")["unref"] + const unrefElement: typeof import("@vueuse/core")["unrefElement"] + const until: typeof import("@vueuse/core")["until"] + const useActiveElement: typeof import("@vueuse/core")["useActiveElement"] + const useArrayEvery: typeof import("@vueuse/core")["useArrayEvery"] + const useArrayFilter: typeof import("@vueuse/core")["useArrayFilter"] + const useArrayFind: typeof import("@vueuse/core")["useArrayFind"] + const useArrayFindIndex: typeof import("@vueuse/core")["useArrayFindIndex"] + const useArrayJoin: typeof import("@vueuse/core")["useArrayJoin"] + const useArrayMap: typeof import("@vueuse/core")["useArrayMap"] + const useArrayReduce: typeof import("@vueuse/core")["useArrayReduce"] + const useArraySome: typeof import("@vueuse/core")["useArraySome"] + const useArrayUnique: typeof import("@vueuse/core")["useArrayUnique"] + const useAsyncQueue: typeof import("@vueuse/core")["useAsyncQueue"] + const useAsyncState: typeof import("@vueuse/core")["useAsyncState"] + const useAttrs: typeof import("vue")["useAttrs"] + const useBase64: typeof import("@vueuse/core")["useBase64"] + const useBattery: typeof import("@vueuse/core")["useBattery"] + const useBluetooth: typeof import("@vueuse/core")["useBluetooth"] + const useBreakpoints: typeof import("@vueuse/core")["useBreakpoints"] + const useBroadcastChannel: typeof import("@vueuse/core")["useBroadcastChannel"] + const useBrowserLocation: typeof import("@vueuse/core")["useBrowserLocation"] + const useCached: typeof import("@vueuse/core")["useCached"] + const useClipboard: typeof import("@vueuse/core")["useClipboard"] + const useCloned: typeof import("@vueuse/core")["useCloned"] + const useColorMode: typeof import("@vueuse/core")["useColorMode"] + const useConfirmDialog: typeof import("@vueuse/core")["useConfirmDialog"] + const useCounter: typeof import("@vueuse/core")["useCounter"] + const useCssModule: typeof import("vue")["useCssModule"] + const useCssVar: typeof import("@vueuse/core")["useCssVar"] + const useCssVars: typeof import("vue")["useCssVars"] + const useCurrentElement: typeof import("@vueuse/core")["useCurrentElement"] + const useCycleList: typeof import("@vueuse/core")["useCycleList"] + const useDark: typeof import("@vueuse/core")["useDark"] + const useDateFormat: typeof import("@vueuse/core")["useDateFormat"] + const useDebounce: typeof import("@vueuse/core")["useDebounce"] + const useDebounceFn: typeof import("@vueuse/core")["useDebounceFn"] + const useDebouncedRefHistory: typeof import("@vueuse/core")["useDebouncedRefHistory"] + const useDeviceMotion: typeof import("@vueuse/core")["useDeviceMotion"] + const useDeviceOrientation: typeof import("@vueuse/core")["useDeviceOrientation"] + const useDevicePixelRatio: typeof import("@vueuse/core")["useDevicePixelRatio"] + const useDevicesList: typeof import("@vueuse/core")["useDevicesList"] + const useDialog: typeof import("naive-ui")["useDialog"] + const useDisplayMedia: typeof import("@vueuse/core")["useDisplayMedia"] + const useDocumentVisibility: typeof import("@vueuse/core")["useDocumentVisibility"] + const useDraggable: typeof import("@vueuse/core")["useDraggable"] + const useDropZone: typeof import("@vueuse/core")["useDropZone"] + const useElementBounding: typeof import("@vueuse/core")["useElementBounding"] + const useElementByPoint: typeof import("@vueuse/core")["useElementByPoint"] + const useElementHover: typeof import("@vueuse/core")["useElementHover"] + const useElementSize: typeof import("@vueuse/core")["useElementSize"] + const useElementVisibility: typeof import("@vueuse/core")["useElementVisibility"] + const useEventBus: typeof import("@vueuse/core")["useEventBus"] + const useEventListener: typeof import("@vueuse/core")["useEventListener"] + const useEventSource: typeof import("@vueuse/core")["useEventSource"] + const useEyeDropper: typeof import("@vueuse/core")["useEyeDropper"] + const useFavicon: typeof import("@vueuse/core")["useFavicon"] + const useFetch: typeof import("@vueuse/core")["useFetch"] + const useFileDialog: typeof import("@vueuse/core")["useFileDialog"] + const useFileSystemAccess: typeof import("@vueuse/core")["useFileSystemAccess"] + const useFocus: typeof import("@vueuse/core")["useFocus"] + const useFocusWithin: typeof import("@vueuse/core")["useFocusWithin"] + const useFps: typeof import("@vueuse/core")["useFps"] + const useFullscreen: typeof import("@vueuse/core")["useFullscreen"] + const useGamepad: typeof import("@vueuse/core")["useGamepad"] + const useGeolocation: typeof import("@vueuse/core")["useGeolocation"] + const useIdle: typeof import("@vueuse/core")["useIdle"] + const useImage: typeof import("@vueuse/core")["useImage"] + const useInfiniteScroll: typeof import("@vueuse/core")["useInfiniteScroll"] + const useIntersectionObserver: typeof import("@vueuse/core")["useIntersectionObserver"] + const useInterval: typeof import("@vueuse/core")["useInterval"] + const useIntervalFn: typeof import("@vueuse/core")["useIntervalFn"] + const useKeyModifier: typeof import("@vueuse/core")["useKeyModifier"] + const useLastChanged: typeof import("@vueuse/core")["useLastChanged"] + const useLink: typeof import("vue-router")["useLink"] + const useLoadingBar: typeof import("naive-ui")["useLoadingBar"] + const useLocalStorage: typeof import("@vueuse/core")["useLocalStorage"] + const useMagicKeys: typeof import("@vueuse/core")["useMagicKeys"] + const useManualRefHistory: typeof import("@vueuse/core")["useManualRefHistory"] + const useMediaControls: typeof import("@vueuse/core")["useMediaControls"] + const useMediaQuery: typeof import("@vueuse/core")["useMediaQuery"] + const useMemoize: typeof import("@vueuse/core")["useMemoize"] + const useMemory: typeof import("@vueuse/core")["useMemory"] + const useMessage: typeof import("naive-ui")["useMessage"] + const useMounted: typeof import("@vueuse/core")["useMounted"] + const useMouse: typeof import("@vueuse/core")["useMouse"] + const useMouseInElement: typeof import("@vueuse/core")["useMouseInElement"] + const useMousePressed: typeof import("@vueuse/core")["useMousePressed"] + const useMutationObserver: typeof import("@vueuse/core")["useMutationObserver"] + const useNavigatorLanguage: typeof import("@vueuse/core")["useNavigatorLanguage"] + const useNetwork: typeof import("@vueuse/core")["useNetwork"] + const useNotification: typeof import("naive-ui")["useNotification"] + const useNow: typeof import("@vueuse/core")["useNow"] + const useObjectUrl: typeof import("@vueuse/core")["useObjectUrl"] + const useOffsetPagination: typeof import("@vueuse/core")["useOffsetPagination"] + const useOnline: typeof import("@vueuse/core")["useOnline"] + const usePageLeave: typeof import("@vueuse/core")["usePageLeave"] + const useParallax: typeof import("@vueuse/core")["useParallax"] + const usePermission: typeof import("@vueuse/core")["usePermission"] + const usePointer: typeof import("@vueuse/core")["usePointer"] + const usePointerLock: typeof import("@vueuse/core")["usePointerLock"] + const usePointerSwipe: typeof import("@vueuse/core")["usePointerSwipe"] + const usePreferredColorScheme: typeof import("@vueuse/core")["usePreferredColorScheme"] + const usePreferredContrast: typeof import("@vueuse/core")["usePreferredContrast"] + const usePreferredDark: typeof import("@vueuse/core")["usePreferredDark"] + const usePreferredLanguages: typeof import("@vueuse/core")["usePreferredLanguages"] + const usePreferredReducedMotion: typeof import("@vueuse/core")["usePreferredReducedMotion"] + const useRafFn: typeof import("@vueuse/core")["useRafFn"] + const useRefHistory: typeof import("@vueuse/core")["useRefHistory"] + const useResizeObserver: typeof import("@vueuse/core")["useResizeObserver"] + const useRoute: typeof import("vue-router")["useRoute"] + const useRouter: typeof import("vue-router")["useRouter"] + const useScreenOrientation: typeof import("@vueuse/core")["useScreenOrientation"] + const useScreenSafeArea: typeof import("@vueuse/core")["useScreenSafeArea"] + const useScriptTag: typeof import("@vueuse/core")["useScriptTag"] + const useScroll: typeof import("@vueuse/core")["useScroll"] + const useScrollLock: typeof import("@vueuse/core")["useScrollLock"] + const useSessionStorage: typeof import("@vueuse/core")["useSessionStorage"] + const useShare: typeof import("@vueuse/core")["useShare"] + const useSlots: typeof import("vue")["useSlots"] + const useSorted: typeof import("@vueuse/core")["useSorted"] + const useSpeechRecognition: typeof import("@vueuse/core")["useSpeechRecognition"] + const useSpeechSynthesis: typeof import("@vueuse/core")["useSpeechSynthesis"] + const useStepper: typeof import("@vueuse/core")["useStepper"] + const useStorage: typeof import("@vueuse/core")["useStorage"] + const useStorageAsync: typeof import("@vueuse/core")["useStorageAsync"] + const useStyleTag: typeof import("@vueuse/core")["useStyleTag"] + const useSupported: typeof import("@vueuse/core")["useSupported"] + const useSwipe: typeof import("@vueuse/core")["useSwipe"] + const useTemplateRefsList: typeof import("@vueuse/core")["useTemplateRefsList"] + const useTextDirection: typeof import("@vueuse/core")["useTextDirection"] + const useTextSelection: typeof import("@vueuse/core")["useTextSelection"] + const useTextareaAutosize: typeof import("@vueuse/core")["useTextareaAutosize"] + const useThrottle: typeof import("@vueuse/core")["useThrottle"] + const useThrottleFn: typeof import("@vueuse/core")["useThrottleFn"] + const useThrottledRefHistory: typeof import("@vueuse/core")["useThrottledRefHistory"] + const useTimeAgo: typeof import("@vueuse/core")["useTimeAgo"] + const useTimeout: typeof import("@vueuse/core")["useTimeout"] + const useTimeoutFn: typeof import("@vueuse/core")["useTimeoutFn"] + const useTimeoutPoll: typeof import("@vueuse/core")["useTimeoutPoll"] + const useTimestamp: typeof import("@vueuse/core")["useTimestamp"] + const useTitle: typeof import("@vueuse/core")["useTitle"] + const useToNumber: typeof import("@vueuse/core")["useToNumber"] + const useToString: typeof import("@vueuse/core")["useToString"] + const useToggle: typeof import("@vueuse/core")["useToggle"] + const useTransition: typeof import("@vueuse/core")["useTransition"] + const useUrlSearchParams: typeof import("@vueuse/core")["useUrlSearchParams"] + const useUserMedia: typeof import("@vueuse/core")["useUserMedia"] + const useVModel: typeof import("@vueuse/core")["useVModel"] + const useVModels: typeof import("@vueuse/core")["useVModels"] + const useVibrate: typeof import("@vueuse/core")["useVibrate"] + const useVirtualList: typeof import("@vueuse/core")["useVirtualList"] + const useWakeLock: typeof import("@vueuse/core")["useWakeLock"] + const useWebNotification: typeof import("@vueuse/core")["useWebNotification"] + const useWebSocket: typeof import("@vueuse/core")["useWebSocket"] + const useWebWorker: typeof import("@vueuse/core")["useWebWorker"] + const useWebWorkerFn: typeof import("@vueuse/core")["useWebWorkerFn"] + const useWindowFocus: typeof import("@vueuse/core")["useWindowFocus"] + const useWindowScroll: typeof import("@vueuse/core")["useWindowScroll"] + const useWindowSize: typeof import("@vueuse/core")["useWindowSize"] + const watch: typeof import("vue")["watch"] + const watchArray: typeof import("@vueuse/core")["watchArray"] + const watchAtMost: typeof import("@vueuse/core")["watchAtMost"] + const watchDebounced: typeof import("@vueuse/core")["watchDebounced"] + const watchEffect: typeof import("vue")["watchEffect"] + const watchIgnorable: typeof import("@vueuse/core")["watchIgnorable"] + const watchOnce: typeof import("@vueuse/core")["watchOnce"] + const watchPausable: typeof import("@vueuse/core")["watchPausable"] + const watchPostEffect: typeof import("vue")["watchPostEffect"] + const watchSyncEffect: typeof import("vue")["watchSyncEffect"] + const watchThrottled: typeof import("@vueuse/core")["watchThrottled"] + const watchTriggerable: typeof import("@vueuse/core")["watchTriggerable"] + const watchWithFilter: typeof import("@vueuse/core")["watchWithFilter"] + const whenever: typeof import("@vueuse/core")["whenever"] } diff --git a/src/components.d.ts b/src/components.d.ts index bc42cb3..cfd12ab 100644 --- a/src/components.d.ts +++ b/src/components.d.ts @@ -20,7 +20,7 @@ declare module '@vue/runtime-core' { NCard: typeof import('naive-ui')['NCard'] NCode: typeof import('naive-ui')['NCode'] NConfigProvider: typeof import('naive-ui')['NConfigProvider'] - NCountdown: typeof import('naive-ui')['NCountdown'] + NCountdown: typeof import("naive-ui")["NCountdown"] NDataTable: typeof import('naive-ui')['NDataTable'] NDescriptions: typeof import('naive-ui')['NDescriptions'] NDescriptionsItem: typeof import('naive-ui')['NDescriptionsItem'] diff --git a/src/learn/step-1/index.md b/src/learn/step-1/index.md index bb5f29f..58c5477 100644 --- a/src/learn/step-1/index.md +++ b/src/learn/step-1/index.md @@ -1,111 +1,111 @@ -# 11 - -## 1 - -哈哈 - -```c {3-4} -#include - -int main() { - return 0; -} -``` - -123 - -# 11 - -## 1 - -哈哈 - -```c {3-4} -#include - -int main() { - return 0; -} -``` - -123 - -# 11 - -## 1 - -哈哈 - -```c {3-4} -#include - -int main() { - return 0; -} -``` - -123 - -# 11 - -## 1 - -哈哈 - -```c {3-4} -#include - -int main() { - return 0; -} -``` - -123 - -# 11 - -## 1 - -哈哈 - -```c {3-4} -#include - -int main() { - return 0; -} -``` - -123 - -# 11 - -## 1 - -哈哈 - -```c {3-4} -#include - -int main() { - return 0; -} -``` - -123 - -# 11 - -## 1 - -哈哈 - -```c {3-4} -#include - -int main() { - return 0; -} -``` - -123 +# 11 + +## 1 + +哈哈 + +```c {3-4} +#include + +int main() { + return 0; +} +``` + +123 + +# 11 + +## 1 + +哈哈 + +```c {3-4} +#include + +int main() { + return 0; +} +``` + +123 + +# 11 + +## 1 + +哈哈 + +```c {3-4} +#include + +int main() { + return 0; +} +``` + +123 + +# 11 + +## 1 + +哈哈 + +```c {3-4} +#include + +int main() { + return 0; +} +``` + +123 + +# 11 + +## 1 + +哈哈 + +```c {3-4} +#include + +int main() { + return 0; +} +``` + +123 + +# 11 + +## 1 + +哈哈 + +```c {3-4} +#include + +int main() { + return 0; +} +``` + +123 + +# 11 + +## 1 + +哈哈 + +```c {3-4} +#include + +int main() { + return 0; +} +``` + +123 diff --git a/src/learn/step-2/index.md b/src/learn/step-2/index.md index e11ff4f..d18de96 100644 --- a/src/learn/step-2/index.md +++ b/src/learn/step-2/index.md @@ -1 +1 @@ -asas +asas diff --git a/src/oj/composables/code.ts b/src/oj/composables/code.ts index 1df1da9..e1fd7f8 100644 --- a/src/oj/composables/code.ts +++ b/src/oj/composables/code.ts @@ -1,6 +1,6 @@ -import { Code } from "~/utils/types" - -export const code = reactive({ - value: "", - language: "C", -}) +import { Code } from "~/utils/types" + +export const code = reactive({ + value: "", + language: "C", +}) diff --git a/src/oj/contest/components/AcAndSubmission.vue b/src/oj/contest/components/AcAndSubmission.vue index 8a14a4c..1d23dd4 100644 --- a/src/oj/contest/components/AcAndSubmission.vue +++ b/src/oj/contest/components/AcAndSubmission.vue @@ -1,12 +1,25 @@ diff --git a/src/oj/contest/components/ContestTitle.vue b/src/oj/contest/components/ContestTitle.vue index 1bf8b50..7272355 100644 --- a/src/oj/contest/components/ContestTitle.vue +++ b/src/oj/contest/components/ContestTitle.vue @@ -1,22 +1,22 @@ - - - + + + diff --git a/src/oj/contest/components/ContestType.vue b/src/oj/contest/components/ContestType.vue index 6951415..fa0955d 100644 --- a/src/oj/contest/components/ContestType.vue +++ b/src/oj/contest/components/ContestType.vue @@ -1,20 +1,20 @@ - - - + + + diff --git a/src/oj/contest/detail.vue b/src/oj/contest/detail.vue index 3b995c2..a609078 100644 --- a/src/oj/contest/detail.vue +++ b/src/oj/contest/detail.vue @@ -1,6 +1,5 @@ - - - - + + + + + diff --git a/src/oj/contest/pages/problems.vue b/src/oj/contest/pages/problems.vue index 7ee0b70..de0745a 100644 --- a/src/oj/contest/pages/problems.vue +++ b/src/oj/contest/pages/problems.vue @@ -1,46 +1,46 @@ - - - - - + + + + + diff --git a/src/oj/contest/pages/rank.vue b/src/oj/contest/pages/rank.vue index 50a8ec5..30052cc 100644 --- a/src/oj/contest/pages/rank.vue +++ b/src/oj/contest/pages/rank.vue @@ -1,171 +1,171 @@ - - - - - + + + + + diff --git a/src/oj/problem/components/ProblemStatus.vue b/src/oj/problem/components/ProblemStatus.vue index 8fabf0a..58f6f44 100644 --- a/src/oj/problem/components/ProblemStatus.vue +++ b/src/oj/problem/components/ProblemStatus.vue @@ -1,28 +1,28 @@ - - - - - + + + + + diff --git a/src/oj/problem/components/Submit.vue b/src/oj/problem/components/Submit.vue index f3185f4..4046051 100644 --- a/src/oj/problem/components/Submit.vue +++ b/src/oj/problem/components/Submit.vue @@ -1,233 +1,233 @@ - - - - + + + + diff --git a/src/oj/problem/list.vue b/src/oj/problem/list.vue index ba29a8a..86a4d8a 100644 --- a/src/oj/problem/list.vue +++ b/src/oj/problem/list.vue @@ -170,7 +170,12 @@ function rowProps(row: ProblemFiltered) { /> - + diff --git a/src/oj/rank/components/Chart.vue b/src/oj/rank/components/Chart.vue index 88c723b..e36abcf 100644 --- a/src/oj/rank/components/Chart.vue +++ b/src/oj/rank/components/Chart.vue @@ -1,88 +1,88 @@ - - - + + + diff --git a/src/oj/store/contest.ts b/src/oj/store/contest.ts index 46e3d98..042367b 100644 --- a/src/oj/store/contest.ts +++ b/src/oj/store/contest.ts @@ -1,70 +1,75 @@ -import { useUserStore } from "~/shared/store/user" -import { ContestType } from "~/utils/constants" -import { Contest, Problem } from "~/utils/types" -import { - getContest, - getContestAccess, - getContestProblems, - checkContestPassword, -} from "../api" - -export const useContestStore = defineStore("contest", () => { - const userStore = useUserStore() - const contest = ref() - const [access, toggleAccsess] = useToggle() - const problems = ref([]) - const message = useMessage() - - const contestStatus = computed(() => { - return false - }) - - const isContestAdmin = computed( - () => - userStore.isSuperAdmin || - (userStore.isAuthed && contest.value?.created_by.id === userStore.user.id) - ) - - async function init(contestID: string) { - const res = await getContest(contestID) - contest.value = res.data - if (contest.value?.contest_type === ContestType.private) { - const res = await getContestAccess(contestID) - toggleAccsess(res.data.access) - } - _getProblems(contestID) - } - - async function checkPassword(contestID: string, password: string) { - try { - const res = await checkContestPassword(contestID, password) - toggleAccsess(res.data) - if (res.data) { - _getProblems(contestID) - } - } catch (err) { - toggleAccsess(false) - message.error("密码错误") - } - } - - async function _getProblems(contestID: string) { - problems.value = [] - try { - problems.value = await getContestProblems(contestID) - } catch (err) { - problems.value = [] - toggleAccsess(false) - } - } - - return { - contest, - contestStatus, - isContestAdmin, - access, - problems, - init, - checkPassword, - } -}) +import { useUserStore } from "~/shared/store/user" +import { ContestType } from "~/utils/constants" +import { Contest, Problem } from "~/utils/types" +import { + getContest, + getContestAccess, + getContestProblems, + checkContestPassword, +} from "../api" + +export const useContestStore = defineStore("contest", () => { + const userStore = useUserStore() + const message = useMessage() + const [access, toggleAccess] = useToggle() + const contest = ref() + const problems = ref([]) + + const contestStatus = computed(() => { + return false + }) + + const isContestAdmin = computed( + () => + userStore.isSuperAdmin || + (userStore.isAuthed && contest.value?.created_by.id === userStore.user.id) + ) + + const isPrivate = computed( + () => contest.value?.contest_type === ContestType.private + ) + + async function init(contestID: string) { + const res = await getContest(contestID) + contest.value = res.data + if (contest.value?.contest_type === ContestType.private) { + const res = await getContestAccess(contestID) + toggleAccess(res.data.access) + } + _getProblems(contestID) + } + + async function checkPassword(contestID: string, password: string) { + try { + const res = await checkContestPassword(contestID, password) + toggleAccess(res.data) + if (res.data) { + _getProblems(contestID) + } + } catch (err) { + toggleAccess(false) + message.error("密码错误") + } + } + + async function _getProblems(contestID: string) { + problems.value = [] + try { + problems.value = await getContestProblems(contestID) + } catch (err) { + problems.value = [] + toggleAccess(false) + } + } + + return { + contest, + contestStatus, + isContestAdmin, + access, + problems, + isPrivate, + init, + checkPassword, + } +}) diff --git a/src/oj/submission/list.vue b/src/oj/submission/list.vue index e1edfb1..7cad5d7 100644 --- a/src/oj/submission/list.vue +++ b/src/oj/submission/list.vue @@ -150,7 +150,7 @@ const columns = computed(() => { { title: "题目", key: "problem", - width: 100, + width: 120, render: (row) => h( NButton, @@ -165,16 +165,16 @@ const columns = computed(() => { { title: "执行耗时", key: "time", - width: 100, + width: 120, render: (row) => submissionTimeFormat(row.statistic_info.time_cost), }, { title: "占用内存", key: "memory", - width: 100, + width: 120, render: (row) => submissionMemoryFormat(row.statistic_info.memory_cost), }, - { title: "语言", key: "language", width: 100 }, + { title: "语言", key: "language", width: 120 }, { title: "用户", key: "username", @@ -211,7 +211,12 @@ const columns = computed(() => { - + diff --git a/src/shared/Copy.vue b/src/shared/Copy.vue index 861f4cc..1b1e94e 100644 --- a/src/shared/Copy.vue +++ b/src/shared/Copy.vue @@ -1,30 +1,30 @@ - - - + + + diff --git a/src/shared/composables/chart.ts b/src/shared/composables/chart.ts index d01b8a8..d4801e3 100644 --- a/src/shared/composables/chart.ts +++ b/src/shared/composables/chart.ts @@ -1,28 +1,28 @@ -import { - Chart as ChartJS, - Title, - Colors, - Tooltip, - Legend, - BarElement, - ArcElement, - CategoryScale, - LinearScale, -} from "chart.js" - -const [isLoaded] = useToggle() - -export function loadChart() { - if (isLoaded.value) return - ChartJS.register( - CategoryScale, - LinearScale, - BarElement, - ArcElement, - Colors, - Title, - Tooltip, - Legend - ) - isLoaded.value = true -} +import { + Chart as ChartJS, + Title, + Colors, + Tooltip, + Legend, + BarElement, + ArcElement, + CategoryScale, + LinearScale, +} from "chart.js" + +const [isLoaded] = useToggle() + +export function loadChart() { + if (isLoaded.value) return + ChartJS.register( + CategoryScale, + LinearScale, + BarElement, + ArcElement, + Colors, + Title, + Tooltip, + Legend + ) + isLoaded.value = true +} diff --git a/src/shared/composables/learn.ts b/src/shared/composables/learn.ts index 2eb2420..e986049 100644 --- a/src/shared/composables/learn.ts +++ b/src/shared/composables/learn.ts @@ -1 +1 @@ -export const code = ref("") +export const code = ref("") diff --git a/src/shared/composables/monaco.ts b/src/shared/composables/monaco.ts index 4643861..ee082d0 100644 --- a/src/shared/composables/monaco.ts +++ b/src/shared/composables/monaco.ts @@ -1,19 +1,19 @@ -import loader, { Monaco } from "@monaco-editor/loader" - -export const monaco = ref() - -export async function init() { - loader.config({ - paths: { vs: "https://cdn.staticfile.org/monaco-editor/0.34.1/min/vs" }, - "vs/nls": { availableLanguages: { "*": "zh-cn" } }, - }) - - const [m, light, dark] = await Promise.all([ - loader.init(), - fetch("/light.json").then((t) => t.json()), - fetch("/dark.json").then((t) => t.json()), - ]) - monaco.value = m - monaco.value.editor.defineTheme("light", light) - monaco.value.editor.defineTheme("dark", dark) -} +import loader, { Monaco } from "@monaco-editor/loader" + +export const monaco = ref() + +export async function init() { + loader.config({ + paths: { vs: "https://cdn.staticfile.org/monaco-editor/0.34.1/min/vs" }, + "vs/nls": { availableLanguages: { "*": "zh-cn" } }, + }) + + const [m, light, dark] = await Promise.all([ + loader.init(), + fetch("/light.json").then((t) => t.json()), + fetch("/dark.json").then((t) => t.json()), + ]) + monaco.value = m + monaco.value.editor.defineTheme("light", light) + monaco.value.editor.defineTheme("dark", dark) +}