Super Anki

Supercharges AnkiWeb. Currently Supported Functionality - Show card total, done and remaining count per session

目前為 2023-09-20 提交的版本,檢視 最新版本

// ==UserScript==
// @name         Super Anki
// @version      2
// @grant        none
// @match        https://*.ankiuser.net/study
// @description  Supercharges AnkiWeb. Currently Supported Functionality - Show card total, done and remaining count per session 
// @namespace    asleepysamurai.com
// @license      BSD Zero Clause License
// ==/UserScript==

function formatCounts(total, remaining){
  const done = total - remaining
  return `${remaining} Left + ${done} Done = ${total}`
}

function addTotalCount(){
  const counts = Array.from(document.querySelectorAll('.count'))
  
  const equals = document.createTextNode(' = ')
  
  const totalCards = counts.reduce((total, thisCount) => total + parseInt(thisCount.innerText), 0)
  const totalCount = counts[0].cloneNode(true)
  totalCount.innerText = formatCounts(totalCards, totalCards)
  totalCount.classList.remove('active', 'new', 'learn', 'review')
  
  const countParent = counts[0].parentElement
  countParent.appendChild(equals)
  countParent.appendChild(totalCount)
  
  const observer = new MutationObserver(() => {
    const restCards = counts.reduce((total, thisCount) => total + parseInt(thisCount.innerText), 0)
    totalCount.innerText = formatCounts(totalCards, restCards)
  })

  counts.forEach(countNode => observer.observe(countNode, { characterData: true, attributes: false, childList: true, subtree: true }));
}

function setupObserver(){
  try{
    init()
  }catch(err){
    setTimeout(() => {
    	setupObserver()
    }, 100)
  }
}

function enableDarkMode(){
  const style = document.documentElement.getAttribute('style')
  document.documentElement.setAttribute('style', `${style || ''}; filter: invert(0.9);`)
}

function init(){
  enableDarkMode()
  addTotalCount()
}

setupObserver()

QingJ © 2025

镜像随时可能失效,请加Q群300939539或关注我们的公众号极客氢云获取最新地址