算法评测平台前端。
You can not select more than 25 topics Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.
 
 
 
 

92 lines
2.4 KiB

<%
this.getStatusMeta = (status) => {
if (status.startsWith('Running')) return 'Running';
else return status;
};
const getOrderString = function(order) {
return order ? 'asc' : 'desc';
}
this.createSortableTitle = function(item, display, defaultOrder) {
const isCurrent = curSort === item;
const url = syzoj.utils.makeUrl(req,
Object.assign({}, req.query, {
sort: item,
order: getOrderString(isCurrent ? (!curOrder) : defaultOrder)
}));
const triangle = isCurrent ? `<i class="${curOrder ? "angle up" : "angle down"} icon"></i>` : "";
return `<a class="black-link" href="${url}">${display}${triangle}</a>`;
}
this.isPending = (status) => {
let pending = [
'Waiting',
'Compiling',
'Running'
];
return pending.includes(this.getStatusMeta(status));
};
this.alpha = number => {
if (number && parseInt(number) == number && parseInt(number) > 0) return String.fromCharCode('A'.charCodeAt(0) + parseInt(number) - 1);
};
this.icon = {
'Accepted': 'checkmark',
'Success': 'checkmark', // Custom test
'Wrong Answer': 'remove',
'Runtime Error': 'bomb',
'Invalid Interaction': 'ban',
'Time Limit Exceeded': 'clock',
'Memory Limit Exceeded': 'microchip',
'Output Limit Exceeded': 'print',
'File Error': 'file outline',
'Waiting': 'hourglass half',
'Running': 'spinner',
'Compiling': 'spinner',
'Judging': 'spinner',
'Pending': 'hourglass half',
'Compile Error': 'code',
'Submitted': 'checkmark', // NOI contests
'System Error': 'server',
'No Testdata': 'folder open outline',
'Partially Correct': 'minus',
'Judgement Failed': 'server',
'Skipped': 'ban',
'Unknown': 'question circle'
};
this.iconHidden = [
'Success',
'Submitted',
'Compiling',
'Running',
'Waiting',
'Judging',
'Skipped'
];
this.builtInCdnUrl = '';
// this.builtInCdnUrl = 'https://cdn.jsdelivr.net/npm/syzoj-public-cdn@1.0.5';
this.lib = uri => {
if (useLocalLibs || !syzoj.config.cdnjs_url) {
return syzoj.utils.makeUrl(['cdnjs', uri]);
} else if (syzoj.config.cdnjs_url === 'built-in') {
return builtInCdnUrl + '/cdnjs/' + uri;
} else {
return syzoj.config.cdnjs_url + '/' + uri;
}
}
this.selfLib = uri => {
if (useLocalLibs || !syzoj.config.self_cdn_url) {
return syzoj.utils.makeUrl(['self', uri]);
} else if (syzoj.config.self_cdn_url === 'built-in') {
return builtInCdnUrl + '/self/' + uri;
} else {
return syzoj.config.self_cdn_url + '/' + uri;
}
}
%>