工数入力

  • /*
     * @title 工数入力
     * @description 多く時間を使った順にタスクを並べて保持してから実行することで、まんべんなく工数入力する
     * @include https://atnd.ak4.jp/
     * @license MIT License
     * @require 
     */
    
    var inputs=document.querySelectorAll('input[placeholder="0:00"]');
    var total=document.querySelector('#total_working_hours').textContent;
    var totalMin=Number(total.split(':')[0])*60+Number(total.split(':')[1]);
    var current=1.0;
    var rates=Array.from(inputs).map(i => {
      let factor=1.0+Math.random()+Math.random();
      return current*=factor;
    }).reverse();
    var rateTotal=rates.reduce((a, b) => a+b);
    eachMins=rates.map(rate => Math.floor(rate/rateTotal*totalMin));
    var diffMin=totalMin-(eachMins.reduce((a,b)=>a+b));
    inputs.forEach(i => {
      var min=eachMins.shift()+diffMin;
      i.value=`${Math.floor(min/60)}:${min%60}`;diffMin=0;
    });
    
    var change = document.createEvent("HTMLEvents");
    change.initEvent('change', true, true );
    inputs[0].dispatchEvent(change);
  • Permalink
    このページへの個別リンクです。
    RAW
    書かれたコードへの直接のリンクです。
    Packed
    文字列が圧縮された書かれたコードへのリンクです。
    Userscript
    Greasemonkey 等で利用する場合の .user.js へのリンクです。
    Loader
    @require やソースコードが長い場合に多段ロードする Loader コミのコードへのリンクです。
    Metadata
    コード中にコメントで @xxx と書かれたメタデータの JSON です。

History

  1. 2022/01/04 11:42:55 - 01/04