| @@ -1,9 +1,9 @@ | |||
| /* Constants */ | |||
| /* ------------------------------- Constants ------------------------------- */ | |||
| var MAX_BUCKETS = 256; | |||
| var LOADING_IMG = '<img src="http://cdn.myanimelist.net/images/xmlhttp-loader.gif" align="center">'; | |||
| /* Miscellaneous functions */ | |||
| /* ------------------------ Miscellaneous functions ------------------------ */ | |||
| function get_anime_id_from_href(href) { | |||
| var anime_id; | |||
| @@ -35,7 +35,7 @@ function get_scores_from_element(elem) { | |||
| return [score_100, score_10]; | |||
| } | |||
| /* Storage functions */ | |||
| /* --------------------------- Storage functions --------------------------- */ | |||
| function save_score(anime_id, score) { | |||
| var bucket_id = (parseInt(anime_id) % MAX_BUCKETS).toString(); | |||
| @@ -82,7 +82,7 @@ function remove_score(anime_id) { | |||
| }); | |||
| } | |||
| /* Event patches/injections */ | |||
| /* ----------------------- Event patches/injections ------------------------ */ | |||
| function update_list_score(anime_id) { | |||
| var new_scores = get_scores_from_element($("#scoretext" + anime_id)); | |||
| @@ -166,7 +166,36 @@ function submit_edit_form(anime_id, submit_type, submit_button) { | |||
| submit_button[0].click(); | |||
| } | |||
| /* Extension hooks */ | |||
| /* -------------------------------- Sorting -------------------------------- */ | |||
| function sort_list() { | |||
| var headers = [".header_cw", ".header_completed", ".header_onhold", | |||
| ".header_dropped", ".header_ptw"]; | |||
| $.each(headers, function(i, header) { | |||
| $(header).next() | |||
| .nextUntil($(".category_totals").closest("table")) | |||
| .wrapAll('<div class="list-chart-group"/>'); | |||
| }); | |||
| $(".list-chart-group table").each(function(i, row) { | |||
| $(row).add($(row).next()) | |||
| .wrapAll('<div class="list-chart-row"/>'); | |||
| }); | |||
| $(".list-chart-group").each(function(i, group) { | |||
| $(group).find(".list-chart-row").sort(function (a, b) { | |||
| return $(b).find("span[id^='scoreval']").text() - $(a).find("span[id^='scoreval']").text(); | |||
| }).each(function(i, row) { | |||
| $(group).append(row); | |||
| }); | |||
| $(group).find(".list-chart-row").each(function(i, row) { | |||
| $(row).find("tr").first().children().first().text(i + 1); | |||
| $(row).find((i % 2) ? ".td1" : ".td2").toggleClass("td1 td2"); | |||
| }); | |||
| }); | |||
| } | |||
| /* ---------------------------- Extension hooks ---------------------------- */ | |||
| function hook_list() { | |||
| retrieve_scores(null, function(data) { | |||
| @@ -208,6 +237,9 @@ function hook_list() { | |||
| }(anime_id)))) | |||
| .remove(); | |||
| }); | |||
| if (window.location.href.indexOf("order=4") != -1) | |||
| sort_list(); | |||
| }); | |||
| } | |||
| @@ -311,9 +343,14 @@ function hook_edit(anime_id) { | |||
| function hook_addtolist() { | |||
| /* TODO: this entry point is unimplemented - it's rarely used and difficult | |||
| to inject into, so I'm avoiding it for now. */ | |||
| $("<p><b>Note:</b> For the time being, anime added through this " + | |||
| "interface cannot be given scores on the 100-point scale (the old " + | |||
| "10-point system is used).</p><p>To give a more specific number, " + | |||
| "simply add the anime here, then go to its own page or to your list " + | |||
| "page, and update the score.</p>").insertAfter($("#stype").parent()); | |||
| } | |||
| /* Main extension hook */ | |||
| /* ------------------------------- Main hook ------------------------------- */ | |||
| $(document).ready(function() { | |||
| var href = window.location.href; | |||