| @@ -1,9 +1,9 @@ | |||||
| /* Constants */ | |||||
| /* ------------------------------- Constants ------------------------------- */ | |||||
| var MAX_BUCKETS = 256; | var MAX_BUCKETS = 256; | ||||
| var LOADING_IMG = '<img src="http://cdn.myanimelist.net/images/xmlhttp-loader.gif" align="center">'; | 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) { | function get_anime_id_from_href(href) { | ||||
| var anime_id; | var anime_id; | ||||
| @@ -35,7 +35,7 @@ function get_scores_from_element(elem) { | |||||
| return [score_100, score_10]; | return [score_100, score_10]; | ||||
| } | } | ||||
| /* Storage functions */ | |||||
| /* --------------------------- Storage functions --------------------------- */ | |||||
| function save_score(anime_id, score) { | function save_score(anime_id, score) { | ||||
| var bucket_id = (parseInt(anime_id) % MAX_BUCKETS).toString(); | 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) { | function update_list_score(anime_id) { | ||||
| var new_scores = get_scores_from_element($("#scoretext" + 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(); | 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() { | function hook_list() { | ||||
| retrieve_scores(null, function(data) { | retrieve_scores(null, function(data) { | ||||
| @@ -208,6 +237,9 @@ function hook_list() { | |||||
| }(anime_id)))) | }(anime_id)))) | ||||
| .remove(); | .remove(); | ||||
| }); | }); | ||||
| if (window.location.href.indexOf("order=4") != -1) | |||||
| sort_list(); | |||||
| }); | }); | ||||
| } | } | ||||
| @@ -311,9 +343,14 @@ function hook_edit(anime_id) { | |||||
| function hook_addtolist() { | function hook_addtolist() { | ||||
| /* TODO: this entry point is unimplemented - it's rarely used and difficult | /* TODO: this entry point is unimplemented - it's rarely used and difficult | ||||
| to inject into, so I'm avoiding it for now. */ | 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() { | $(document).ready(function() { | ||||
| var href = window.location.href; | var href = window.location.href; | ||||