Skip to content

Instantly share code, notes, and snippets.

@vojtech-dobes
Created June 6, 2012 12:27
Show Gist options
  • Select an option

  • Save vojtech-dobes/2881572 to your computer and use it in GitHub Desktop.

Select an option

Save vojtech-dobes/2881572 to your computer and use it in GitHub Desktop.
/**
* 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