您需要先安装一个扩展,例如 篡改猴、Greasemonkey 或 暴力猴,之后才能安装此脚本。
您需要先安装一个扩展,例如 篡改猴 或 暴力猴,之后才能安装此脚本。
您需要先安装一个扩展,例如 篡改猴 或 暴力猴,之后才能安装此脚本。
您需要先安装一个扩展,例如 篡改猴 或 Userscripts ,之后才能安装此脚本。
您需要先安装一款用户脚本管理器扩展,例如 Tampermonkey,才能安装此脚本。
您需要先安装用户脚本管理器扩展后才能安装此脚本。
BOJ 연습 편집에서 '시작 시간'을 클릭하면 현재 시간으로, '종료 시간'을 클릭하면 최대 시간(시작 시간 + 14일 - 1분)으로 설정해 줍니다.
// ==UserScript== // @name BOJ Practice Time Setting // @namespace http://www.acmicpc.net // @version 0.1 // @license MIT // @description BOJ 연습 편집에서 '시작 시간'을 클릭하면 현재 시간으로, '종료 시간'을 클릭하면 최대 시간(시작 시간 + 14일 - 1분)으로 설정해 줍니다. // @author cgiosy // @match https://www.acmicpc.net/group/practice/edit/* // @match https://www.acmicpc.net/group/practice/create/* // @grant none // ==/UserScript== (function() { 'use strict'; const getLocalDate = (date, minutes) => { return new Date(date.getTime() + ((-date.getTimezoneOffset() + (minutes || 0)) * 60) * 1000); }; const getLocalDateString = (date, minutes) => { return getLocalDate(date, minutes).toISOString().replace('T', ' ').slice(0, 16); }; const practiceStart = document.querySelector('input[name=practice_start]'); const practiceEnd = document.querySelector('input[name=practice_end]'); const practiceProblems = document.querySelector('input[name=problem_id]'); const setPracticeStartTimeToNow = () => { practiceStart.value = getLocalDateString(new Date()); update_datetime_diff(); }; const maximizePracticeEndTime = () => { practiceEnd.value = getLocalDateString(new Date(practiceStart.value), 60 * 24 * 14 - 1); update_datetime_diff(); }; const addPracticeProblems = () => { practiceProblems.value.split(/\s+/).forEach((problemId) => { problem_add(problemId); }); }; document.querySelector('label[for=practice_start]').onclick = setPracticeStartTimeToNow; document.querySelector('label[for=practice_end]').onclick = maximizePracticeEndTime; document.querySelector('label[for=problem_id]').onclick = addPracticeProblems; })();