2011-04-02

studylog(スタログ)でiKnow!の学習時間を入力するためのブックマークレット・その2

以前、「studylog(スタログ)」でiKnow!の学習時間を入力するためのブックマークレットを作成しましたが(参照)、数日前からstudylog側の学習時間入力画面のHTMLが変わったため、使えなくなってしまっていました。まずは取り急ぎ修正しました。

studylog(スタログ)でiKnow!の学習時間を入力するためのブックマークレット

注意点(前回の記事と同様です)

  • studylogでは「参考書」としてiKnow!の学習時間を管理することになりますが、参考書のテキスト名には「iKnow」(または「smart.fm」)の文字列を入れておいてください。
    • これを元に、自動入力するフォーム部品を探します。
  • studylogでは勉強時間を「5分単位」で入力するようになっているため、iKnow!での学習時間は5分単位で切り捨てした時間が設定されます。
    • ただし、「0分より上、かつ、5分未満」の場合のみ「5分」として扱います。
  • このブックマークレットでは、studylogの画面上のフォームに学習時間を設定することしか行いません。学習時間の送信は行いません(自分でボタンを押して送信してください)。
  • ブックマークレットの冒頭に「javascript:(function(){var uid=''||~」という感じで「uid」という変数を定義していますが、ここに自分のiKnow!のIDを入れてください(「var uid='en45'」のように)。
    • そうしないと、ブックマークレット実行時に毎回自分のIDを入力しないといけなくなります。

オリジナルのJavaScript

var uid = '' || window.prompt('iKnow! ID:', 'en45');
var date = $('#input_form input[name=date]').val();
if (date) {
    $.get('http://api.iknow.jp/users/' + uid + '/study_results/iknow.json?v=2', function(data) {
        $.each(data.study_results, function(i, item) {
            if (date === item.date) {
                var min = item.seconds / 60;
                var hh = Math.floor(min / 60);
                var mm = (Math.floor(min % (60) / 5) * 5) || ((hh === 0 && min > 0) ? 5 : 0);
                $('div.main_text_book').each(function() {
                    var e = $(this).find('img[alt]').filter(function() {
                        return ($(this).attr('alt').search(/iKnow|smart\.fm/i) >= 0);
                    });
                    if (e[0]) {
                        e.end().end().
                            find('select[name^=timeperday_hour_]').val(((hh < 10) ? Ɔ' : '') + hh).end().
                            find('select[name^=timeperday_minute_]').val(((mm < 10) ? Ɔ' : '') + mm);
                        return false;
                    }
                });
            }
        });
    }, 'jsonp');
}

0 件のコメント:

コメントを投稿