PrePro Baseball

From Protoball
Revision as of 16:00, 7 September 2012 by Dave (talk | contribs)
Jump to navigation Jump to search

/* Any JavaScript here will be loaded for all users on every page load. */

var google_api_key = "AIzaSyDAAtL113zvHFgk7FEb0fFgSmWx-DtcAk4";

function set_autocomplete(target_class, filter_class, target_property, filter_property) { var additional_filter = arguments.length > 4 ? arguments[4] : ""; var target_input = $("." + target_class); var filter_input = $("." + filter_class); var filter = """ + filter_property + "" contains a listed "+" character as part of the property label and has therefore been classified as invalid." + additional_filter; get_property_values(target_property, filter, function(data) { target_input.autocomplete({ source: parse_list(data.parse.text["*"]), select: function(event, ui) { event.preventDefault(); $(this).val(ui.item.value); $(this).change(); } })}); }

function parse_list(text) { if(text[0] == '\n') { return []; }

return text.split("\n")[0].substring("

".length).split(","); } function api_parse(text, callback) { var data = {action: "parse", prop: "text", format: "json", text: text }; $.getJSON("/api.php", data, callback); } function get_property_values(property, filter, callback) { var ask = "<ul><li>The part "" + filter + "" of the query was not understood.Results might not be as expected.</li> <!--br--><li>Some subquery has no valid condition.</li></ul>"; api_parse(ask, callback); } function default_to_one_and_hide() { if(!$(this).val()) { $(this).val("1"); } $(this).hide(); } function modify_selected_values() { var input = $(this).parent().prev('span').children('input'); var chk_value = this.value; var selected_values = input.val() ? input.val().split(/ *, */) : []; if(this.checked) { selected_values.push(this.value); selected_values.sort(); } else { selected_values = $.grep(selected_values, function(value) { return value != chk_value; }); } input.val(selected_values.join(", ")); } function add_new_input() { var span = this; var input = $(this).children('input').first(); var name = input.attr('name'); var index = "" + $(this).find('input').length - 1; name = name.replace("[is_list]", "[" + index + "]"); var new_item = $(' new  new <input name="' + name + '" />'); $(this).append(new_item); $(this).find(".new_multi_property_link").click(function(){ $(this).parent().parent().children('span').toggle(); return false; }); } function set_salience_names() { var names = { 1: "Prominent", 2: "Noteworthy", 3: "Informative", 4: "Incomplete" }; var inputs = $(this).find('input'); for(var i = 1; i < 5; i++) { inputs[i].nextSibling.nodeValue = " " + names[i]; } } function populate_chron_year_number() { var year = $('[name="Chronology Entry[Year]"]').val(); var suffix = $('[name="Chronology Entry[Year Suffix]"]').val(); if(!year) return; var ask = "/Special:Ask/-5B-5BYear::" + year + "-5D-5D"; ask += suffix? "/-5B-5BYear Suffix::" + suffix + "-5D-5D" : ""; ask += "/-3FYear-20Number/mainlabel%3D-2D/limit%3D1/order%3DDESC/sort%3DYear_Number/searchlabel%3D/format%3Djson"; var data = {}; $.getJSON(ask, data, function (data) { var number = data.items.length ? (parseInt(data.items[0].year_number) + 1) : 1; $('[name="Chronology Entry[Year Number]"]').val(number); }); } function sort_eras_chronologically() { var spans = $(this).children('span'); /* 1700s 1800s Contemporary Post-1900 Pre-1700 */ $(this).append(spans[4]); $(this).append(spans[0]); $(this).append(spans[1]); $(this).append(spans[3]); $(this).append(spans[2]); } function set_none_value_for_enumerated_radio_buttons() { var span = $(this).children('span')[0]; var input = $(span).children('input')[0]; input.value = ""; } function set_date_by_type_of_date() { var type_of_date = $(this).val(); var day = $(".dayInput"); var month = $(".monthInput"); if(type_of_date == "Day") { day.show(); month.show(); } else { day.val("1"); day.hide(); if (type_of_date == "Month") { month.show(); } else { month.hide(); } } } function set_ballgame_name() { var home_team = $(".home_team").val(); var away_team = $(".away_team").val(); var country = $(".country").val(); var state = $(".state").val(); var city = $(".city").val(); var region = $(".region").val(); var event = ""; if(home_team != "") { event = home_team; if(away_team != "") { event += " v " + away_team; } } if(home_team.indexOf(" ") == -1) { var places = [city, region, state, country]; for(var i in places) { if(places[i] != "") { event += (event.length > 0 ? " " : "") + "in " + places[i]; break; } } } var type_of_date = $(".type_of_date").val(); var day = $(".dayInput").val(); var month = $(".monthInput option:selected").text(); var year = $(".yearInput").val(); var date = ""; if(type_of_date == "Day") { date = "on " + day + ", " + month + " " + year; } else if(type_of_date == "Month") { date = "in " + month + " " + year; } else if(type_of_date == "Year") { date = "in " + year; } else if(type_of_date == "Circa") { date = "Circa " + year; } $(".ballgame_name").val(event + " " + date); } /* Maps... */ function set_map() { var fairfax = new google.maps.LatLng(38.8462236, -77.3063733); var map = $("#map")[0]; map.info_window = new google.maps.InfoWindow(); map.map = new google.maps.Map(map, { center: fairfax, zoom: 12, mapTypeId: 'roadmap' }); set_map_layer(); } var fusion_tables = {}; fusion_tables.ballgames = {}; fusion_tables.ballgames.id = "1UNz5h2AVTr1z5xPaz-wUnTgJTuA8pxv1A095IVU"; fusion_tables.ballgames.data_handler = ballgames_data_handler; function spiral_coords(lat_long, i) { i = (i == 1)? 0: i+1; var r = i * 0.002 return [lat_long[0] + (r * .8 * Math.sin(.5 * (i + 2))), lat_long[1] + (r * Math.cos(.5 * (i + 2)))]; } function custom_marker_and_shadow(letter, color) { var pinImage = new google.maps.MarkerImage("https://chart.googleapis.com/chart?chst=d_map_pin_letter&chld=" + encodeURI(letter + "|" + color), new google.maps.Size(21, 34), new google.maps.Point(0,0), new google.maps.Point(10, 34)); var pinShadow = new google.maps.MarkerImage("http://chart.apis.google.com/chart?chst=d_map_pin_shadow", new google.maps.Size(40, 37), new google.maps.Point(0, 0), new google.maps.Point(12, 35)); return [pinImage, pinShadow]; } var _yellow_bullet_marker_and_shadow; function yellow_bullet_marker_and_shadow() { if (!_yellow_bullet_marker_and_shadow) { _yellow_bullet_marker_and_shadow = custom_marker_and_shadow("•", "FFFF00"); } return _yellow_bullet_marker_and_shadow; } function marker_click_function(map, marker, infoWindow, info_function) { return function() { infoWindow.close(map) infoWindow.setContent(info_function(marker)); infoWindow.open(map, marker); }; } function ballgames_info(marker) { var infoHtml = '' + marker.title + '
'; var city = "", state = "", country = "", address = ""; if(marker.city) { address = marker.city + (marker.state ? ", " + marker.state : "") + (marker.country && marker.country != "USA" ? ", " + marker.country : ""); city = '' + marker.city + ''; } if(marker.state) { address = marker.state + (marker.country && marker.country != "USA" ? ", " + marker.country : ""); state = '' + marker.state + ''; } if(marker.country) { country = '' + marker.country + ''; } address = ((city ? ", " + city : "") + (state ? ", " + state : "") + (country ? ", " + country : "")).replace(/^, /, ""); infoHtml += address + "
"; infoHtml += marker.info + "
"; return infoHtml; } function ballgames_place_info(marker) { return '' + marker.address + ''; } function ballgames_data_handler(d) { var map = $("#map")[0]; var is_first_time = true; if(map.markers) { for(var i in map.markers) { map.markers[i].setMap(null); } is_first_time = false; } map.markers = []; var rows = d.rows; var fields = d.columns; var index = {}; for (var i in fields) { index[fields[i]] = i; } var location_count = {}; for (var i in rows) { var row = rows[i]; var location = row[index["Location"]]; var lat_long = location.split(" "); lat_long[0] = parseFloat(lat_long[0]); lat_long[1] = parseFloat(lat_long[1]); if(!(location in location_count)) { location_count[location] = 0; } location_count[location]++; lat_long = spiral_coords(lat_long, location_count[location]); var date_of_game = row[index["Date of Game"]]; var year = parseInt(date_of_game.substring(date_of_game.length - 5)) var marker = new google.maps.Marker({ position: new google.maps.LatLng(lat_long[0], lat_long[1]), title: row[index["Title"]], date_of_game: date_of_game, year: year, city: row[index["City"]], state: row[index["State"]], country: row[index["Country"]], info: row[index["Info"]], map: map.map }); if(is_first_time) { if(!map.years) { map.years = [year, year]; } else { map.years = [Math.min(map.years[0], year), Math.max(map.years[1], year)] } } map.markers.push(marker); var click_function = marker_click_function(map.map, marker, map.info_window, ballgames_info); google.maps.event.addListener(marker, 'click', click_function); } if(is_first_time) { set_map_boundries(); slider_setup(); } } function set_map_layer(additional_filter_dict) { if(!additional_filter_dict) { additional_filter_dict = {}; } var map = $("#map")[0]; if(map.layers) { for(var layer in map.layers) { map.layers[layer].setMap(null); delete map.layers[layer]; } } else { map.layers = {}; } var classes = $(map).attr("class").split(" "); var map_types = []; var filter = ; for(var i in classes) { if(classes[i].indexOf("map") == 0) { map_types[map_types.length] = classes[i].substring("map_".length); } else if(classes[i].indexOf("filter") == 0) { if(filter) { filter += " AND "; } var this_filter = classes[i].substring("filter_".length).replace(/_/g, " "); var pos = this_filter.indexOf(' '); this_filter = [this_filter.slice(0,pos), this_filter.slice(pos+1)]; filter += this_filter[0] + "='" + this_filter[1] + "'"; } } for(var i in map_types) { var map_type = map_types[i]; var fusion_table = fusion_tables[map_type]; var request_url = "https://www.googleapis.com/fusiontables/v1/query?key=" + google_api_key + "&sql=SELECT+*+FROM+" + fusion_table.id var additional_filter = additional_filter_dict[map_type]; if(filter && additional_filter) { filter += " AND " + additional_filter; } else if(additional_filter) { filter = additional_filter; } if(filter) { request_url += encodeURI(" WHERE " + filter); } $.get(request_url, fusion_table.data_handler, "jsonp"); } } function set_map_boundries() { var map = $("#map")[0]; var bound = new google.maps.LatLngBounds(); for(var i in map.markers) { bound.extend(map.markers[i].getPosition()); } map.map.fitBounds(bound); }; if($('#map').length > 0) { $.getScript('http://maps.googleapis.com/maps/api/js?sensor=false&async=2&callback=set_map'); } /* ...Maps */ /* UI slider... */ if($('.slider').length > 0) { $.getScript('/jquery-ui/js/jquery-ui-1.8.23.custom.min.js', slider_setup); } function slider_setup() { if($("#map").length > 0 && $("#map")[0].years && $("#slider").slider && $("#slider").length > 0 && !$("#slider")[0].is_setup) { var years = $("#map")[0].years; $('

').insertAfter("#slider");

$("#slider").slider({ range: true, min: years[0], max: years[1], values: years, change: function( event, ui ) { event.target.values = [parseInt(ui.values[0]), parseInt(ui.values[1])]; }, slide: function( event, ui ) { var new_values = [parseInt(ui.values[0]), parseInt(ui.values[1])]; if(event.target.mode && event.target.mode == "freeze_ranges" && event.target.values) { var old_values = event.target.values; var old_diff = old_values[1] - old_values[0]; var new_diff = new_values[1] - new_values[0]; if(old_diff != new_diff) { var index = (old_values[0] == new_values[0]) ? 0 : 1; var value = index == 0 ? new_values[1] - old_diff : new_values[0] + old_diff; $(event.target).slider("values", index, value); new_values[index] = value; } } else { $("#slider-values").text( ui.values[0] + " - " + ui.values[1] ); } $("#slider-values").text( new_values[0] + " - " + new_values[1] ); event.target.values = new_values; filter_map_years(parseInt(ui.values[0]), parseInt(ui.values[1])); } }); $("#slider-one-year").slider({ min: years[0], max: years[1], value: years[0], slide: function( event, ui ) { $("#slider-values").text(ui.value); filter_map_years(parseInt(ui.value), parseInt(ui.value)); } }); $("#slider")[0].is_setup = true; $("#slider-values").text(years[0] + " - " + years[1]);

$('

<input type="radio" name="slider_group" value="standard" id="standard_slide" checked="checked" /> Standard <input type="radio" name="slider_group" value="freeze_ranges" id="freeze_slide" /> Freeze Range <input type="radio" name="slider_group" value="one_year" id="one_year_slide" /> One Year At a Time

').insertBefore("#slider-years div");

$("#standard_slide, #freeze_slide").click(function() { var slider = $("#slider"); slider[0].mode = $(this).val(); if(!slider.is(":visible")) { $("#slider-one-year").hide(); slider.show(); slider.slider('option', 'change').call(slider); } }); $("#one_year_slide").click(function() { var slider = $("#slider-one-year"); $("#slider").hide(); slider.show(); slider.slider('option', 'change').call(slider); }); } }

function filter_map_years(min_year, max_year) { var map = $("#map")[0]; for(var i in map.markers) { var marker = map.markers[i]; if(marker.year) { if(marker.year >= min_year && marker.year <= max_year) { if(!marker.map) { marker.setMap(map.map); } } else { if(marker.map) { marker.setMap(null); } } } } }

/* ...slider UI */

function formPrep() {

if(wgPageName.indexOf("Special:FormEdit") > -1 || wgAction.indexOf("formedit") > -1) {

$('.allow_new .checkboxesSpan').each(add_new_input); $('.set_none_value_for_enumerated_radio_buttons .radioButtonSpan').each(set_none_value_for_enumerated_radio_buttons);

/* for Chronology */ $('.salience').each(set_salience_names); $('[name="Chronology Entry[Year]"], [name="Chronology Entry[Year Suffix]"]').change(populate_chron_year_number);

/* for Games */ $('.sort_eras_chronologically .checkboxesSpan').each(sort_eras_chronologically);

/* for Diggers */ $('[name="Digger Activity[Digger Activity Date][day]"]').each(default_to_one_and_hide);

/* for Ballgames... */ $(".type_of_date").change(set_date_by_type_of_date).change(); $(".ballgame_name").parents("form").submit(set_ballgame_name);

$(".state").change(function(){set_autocomplete("city", "state", "City", "State")}); $(".state").change(function(){set_autocomplete("home_team .away_team", "state", "Name", "State", "")}); $(".city").change(function(){set_autocomplete("home_team", "city", "Name", "City", "")}); $(".city").change(function(){set_autocomplete("field", "city", "Name", "City", "")}); //$(".home_team").change(function(){set_autocomplete("field", "city", "Name", "Club", "")}); /* ...Ballgames */

/* Editors... */ if(wgAction.indexOf("formedit") > -1) { $('textarea.wikiEditor_on_edit').attr('class','wikiEditor'); }

if($('textarea.wikiEditor').length > 0) { $(function(){mw.loader.using("ext.semanticforms.wikieditor",function(){$('textarea.wikiEditor').SemanticForms_registerInputInit(window.ext.wikieditor.init, null);});}); }

if($('textarea.tinymce').length == 0) return; $.getScript("/tinymce/jscripts/tiny_mce/jquery.tinymce.js", function() { $('textarea.tinymce').each(function() { var id = this.id; var opts = { // Location of TinyMCE script script_url : '/tinymce/jscripts/tiny_mce/tiny_mce.js',

// General options theme : "advanced", plugins : "pagebreak,style,layer,save,advhr,advimage,advlink,iespell,inlinepopups,insertdatetime,preview,searchreplace,print,contextmenu,paste,directionality,fullscreen,noneditable,visualchars,nonbreaking,xhtmlxtras,template,table,spellchecker,heading",

// Theme options theme_advanced_buttons1 : "spellchecker,|,tablecontrols" + ($(this).hasClass("with_headings") ? ",|,h2,h3,h4" : ""), theme_advanced_buttons2 : "cut,copy,paste,pastetext,pasteword,|,search,replace,|,undo,redo,|,hr,nonbreaking,removeformat,visualaid,|,sub,sup,|,charmap,iespell,advhr,|,fullscreen", theme_advanced_buttons3 : "bold,italic,underline,strikethrough,|,bullist,numlist,|,link,unlink,|,outdent,indent,blockquote,|justifyleft,justifycenter,justifyright,justifyfull,|,cleanup,help,code" ,

theme_advanced_toolbar_location : "top", theme_advanced_toolbar_align : "left", theme_advanced_statusbar_location : "bottom", theme_advanced_resizing : true, spellchecker_languages : "+English=en", heading_clear_tag : "p", extended_valid_elements: "ref,references",

content_css : "/tinymce/css/custom_content.css", theme_advanced_font_sizes: "10px,12px,13px,14px,16px,18px,20px", font_size_style_values : "10px,12px,13px,14px,16px,18px,20px",

width: "600",

oninit: function (ed) { setTimeout("tinyMCE.get('" + id + "').execCommand('mceSpellCheck', true);", 1); } }; if($(this).hasClass("simple")) { delete opts["theme_advanced_buttons2"]; delete opts["theme_advanced_buttons3"]; opts["theme_advanced_buttons1"] = "bold,italic,underline,|,sub,sup,|,link,unlink,|,spellchecker,|,cleanup,help,code"; }

$(this).tinymce(opts); }); }); /* ...Editors */

}

}

function changeEditLinksToTopLinks() {

if(wgPageName.indexOf("List_of_Diggers") > -1) {
 $(".editsection a").attr("href", "#top").text("↑ top");
}

}

// have searches use a get so the url can be shared $('#sfForm[action="/Special:RunQuery/Chronology_Search"]').each(function(){this.method = "get";});

// runquery results don't use parser functions except for within the ask call // so, we hide the header listings // then reveal only the lines with any values $(".hide_unless_span_content").each(function() { var text = $(this).children('span').text() if(text.length > 0 && text != "No") { $(this).show(); if(text == "Yes") { $(this).children('span').hide(); } } });

addOnloadHook(formPrep); addOnloadHook(changeEditLinksToTopLinks);