AtCoder Customize Panel Fix

keep customize panel open when reloading standings page

이 스크립트를 설치하려면 Tampermonkey, Greasemonkey 또는 Violentmonkey와 같은 확장 프로그램이 필요합니다.

이 스크립트를 설치하려면 Tampermonkey 또는 Violentmonkey와 같은 확장 프로그램이 필요합니다.

이 스크립트를 설치하려면 Tampermonkey 또는 Violentmonkey와 같은 확장 프로그램이 필요합니다.

이 스크립트를 설치하려면 Tampermonkey 또는 Userscripts와 같은 확장 프로그램이 필요합니다.

이 스크립트를 설치하려면 Tampermonkey와 같은 확장 프로그램이 필요합니다.

이 스크립트를 설치하려면 유저 스크립트 관리자 확장 프로그램이 필요합니다.

(이미 유저 스크립트 관리자가 설치되어 있습니다. 설치를 진행합니다!)

이 스타일을 설치하려면 Stylus와 같은 확장 프로그램이 필요합니다.

이 스타일을 설치하려면 Stylus와 같은 확장 프로그램이 필요합니다.

이 스타일을 설치하려면 Stylus와 같은 확장 프로그램이 필요합니다.

이 스타일을 설치하려면 유저 스타일 관리자 확장 프로그램이 필요합니다.

이 스타일을 설치하려면 유저 스타일 관리자 확장 프로그램이 필요합니다.

이 스타일을 설치하려면 유저 스타일 관리자 확장 프로그램이 필요합니다.

(이미 유저 스타일 관리자가 설치되어 있습니다. 설치를 진행합니다!)

// ==UserScript==
// @name         AtCoder Customize Panel Fix
// @namespace    https://fuwa.dev/
// @version      0.1
// @description  keep customize panel open when reloading standings page
// @author       ibuki2003
// @match        https://atcoder.jp/contests/*/standings
// @grant        none
// ==/UserScript==

(function() {
    'use strict';
    const observer = new MutationObserver(function (mutations) {
        if (document.querySelector('#standings-panel-heading form') !== null) { // search for panel element
            observer.disconnect(); // only once
            console.table(mutations);
            // const v = vueStandings.filterPanelActive; // last state
            const v = true; // always open

            vueStandings.filterPanelActive = !v;
            vueStandings.$nextTick(() => { // update later
                vueStandings.filterPanelActive = v;
            });
            console.log(v);
        }
    });

    observer.observe(vueStandings.$el, {
        childList: true,
        subtree: true
    });
})();