Created
June 6, 2012 12:27
-
-
Save vojtech-dobes/2881572 to your computer and use it in GitHub Desktop.
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
| /** | |
| * Common AJAX setup | |
| */ | |
| var snippetsExt = $.nette.ext('snippets'); | |
| snippetsExt.context.applySnippet = function ($el, html) { | |
| $el.fadeTo("fast", 0.3, function () { | |
| $el.html(html).fadeTo("fast", 1); | |
| }); | |
| }; | |
| /** | |
| * Datagrid AJAX support | |
| */ | |
| $.nette.ext('datagrid', { | |
| 'load': function (rh) { | |
| var $links = $("table.datagrid a.datagrid-ajax"); | |
| $links.off('click', rh).on("click", rh); | |
| var $formButtons = $("form.datagrid :submit"); | |
| $formButtons.off('submit', rh).on("submit", rh); | |
| $form = $("form.datagrid"); | |
| $form.off('submit', rh).on("submit", rh); | |
| } | |
| }); | |
| /** | |
| * Datagrid JS support | |
| */ | |
| // obarvování zaškrtnutého řádku | |
| function datagridCheckboxClicked() { | |
| var tr = $(this).parent().parent(); | |
| if ($(this).is(":checked")) tr.addClass("selected"); | |
| else tr.removeClass("selected"); | |
| } | |
| // při označení / odznačení a načtení | |
| $("table.datagrid td.checker input:checkbox").livequery(datagridCheckboxClicked) | |
| .live("click", datagridCheckboxClicked); | |
| // zaškrtávání celým řádkem | |
| var previous = null; // index from | |
| $("table.datagrid tr td:not(.checker)").live("click", function (e) { | |
| // jen kliknutí levým tlačítkem | |
| if (e.button != 0) return true; | |
| if ( $(this).find('a').length ) return true; | |
| var row = $(this).parent("tr"); | |
| // výběr více řádků při držení klavesy SHIFT nebo CTRL | |
| if ((e.shiftKey || e.ctrlKey) && previous) { | |
| var current = $(this).parents("table.datagrid").find("tr").index($(this).parent("tr")); // index to | |
| if (previous > current) { | |
| var tmp = current; | |
| current = previous; | |
| previous = tmp; | |
| } | |
| current++; | |
| row = $(this).parents("table.datagrid").find("tr").slice(previous, current); | |
| } else { | |
| previous = $(this).parents("table.datagrid").find("tr").index($(this).parent("tr")); | |
| } | |
| // zvýraznění řádku(ů) | |
| if ($(this).parent().hasClass("selected")) { | |
| row.removeClass("selected"); | |
| row.find("td.checker input:checkbox").removeAttr("checked"); | |
| } else { | |
| if (row.find("td.checker input:checkbox").is(":checkbox")) { | |
| row.addClass("selected"); | |
| row.find("td.checker input:checkbox").attr("checked", "checked"); | |
| } | |
| } | |
| }); | |
| // invertor | |
| $("table.datagrid tr.header th.checker").livequery(function () { | |
| $(this).append($('<span class="icon icon-invert" title="Invert" style="margin: 0pt auto; float: none;" />').click(function () { | |
| // NOTE: příliš pomalé v Opeře | |
| //$(this).parents("table.datagrid").find("td.checker input:checkbox").click(); | |
| var table = $(this).parents("table.datagrid"); | |
| var selected = table.find("tr.selected"); | |
| var unselected = table.find("tr").filter(":not(.selected)"); | |
| selected.removeClass("selected"); | |
| selected.find("td.checker input:checkbox").removeAttr("checked"); | |
| unselected.addClass("selected"); | |
| unselected.find("td.checker input:checkbox").attr("checked", "checked"); | |
| })); | |
| }); | |
| // datepicker | |
| $("input.datepicker:not([readonly])").livequery(function () { | |
| $(this).datepicker(); | |
| }); | |
| // ajaxové filtrování formulářů datagridů po stisknutí klávesy <ENTER> | |
| $("form.datagrid table.datagrid tr.filters input[type=text]").livequery("keypress", function (e) { | |
| if (e.keyCode == 13) { | |
| $.nette.ajax({}, $(this).parents("form.datagrid").find("input:submit[name=filterSubmit]")[0], e); | |
| } | |
| }); | |
| // ajaxové filtrování formulářů datagridů pomocí změny hodnoty selectboxu nebo checkboxu | |
| $("form.datagrid table.datagrid").find("tr.filters input:checkbox, tr.filters select").livequery("change", function (e) { | |
| $.nette.ajax({}, $(this).parents("form.datagrid").find("input:submit[name=filterSubmit]")[0], e); | |
| }); | |
| // ajaxová změna stránky formuláře datagridů po stisknutí klávesy <ENTER> | |
| $("form.datagrid table.datagrid tr.footer input[name=pageSubmit]").livequery(function () { | |
| $(this).hide(); | |
| }); | |
| $("form.datagrid table.datagrid tr.footer input[name=page]").livequery("keypress", function (e) { | |
| if (e.keyCode == 13) { | |
| $.nette.ajax({}, $(this).parents("form.datagrid").find("input:submit[name=pageSubmit]")[0], e); | |
| } | |
| }); | |
| //ajaxová změna počtu řádků na stránku datagridů pomocí změny hodnoty selectboxu | |
| $("form.datagrid table.datagrid tr.footer input[name=itemsSubmit]").livequery(function () { | |
| $(this).hide(); | |
| }); | |
| $("form.datagrid table.datagrid tr.footer select[name=items]").livequery("change", function (e) { | |
| $.nette.ajax({}, $(this).parents("form.datagrid").find("input:submit[name=itemsSubmit]")[0], e); | |
| }); |
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment