mirror of
https://github.com/opensourcepos/opensourcepos.git
synced 2026-03-20 07:57:41 -04:00
391 lines
9.0 KiB
JavaScript
391 lines
9.0 KiB
JavaScript
function checkbox_click(event)
|
|
{
|
|
event.stopPropagation();
|
|
do_email(enable_email.url);
|
|
if($(event.target).attr('checked'))
|
|
{
|
|
$(event.target).parent().parent().find("td").addClass('selected').css("backgroundColor","");
|
|
}
|
|
else
|
|
{
|
|
$(event.target).parent().parent().find("td").removeClass();
|
|
}
|
|
}
|
|
|
|
function enable_search(options)
|
|
{
|
|
if (!options.format_item) {
|
|
format_item = function(results) {
|
|
return results[0];
|
|
};
|
|
}
|
|
//Keep track of enable_email has been called
|
|
if(!enable_search.enabled)
|
|
enable_search.enabled=true;
|
|
|
|
$('#search').click(function()
|
|
{
|
|
$(this).attr('value','');
|
|
});
|
|
|
|
var widget = $("#search").autocomplete(options.suggest_url,{max:100,delay:10, selectFirst: false,
|
|
formatItem : options.format_item, extraParams: options.extra_params});
|
|
$("#search").result(function(event, data, formatted)
|
|
{
|
|
do_search(true, options.on_complete);
|
|
});
|
|
|
|
attach_search_listener();
|
|
|
|
$('#search_form').submit(function(event)
|
|
{
|
|
event.preventDefault();
|
|
// reset page number when selecting a specific page number
|
|
$('#limit_from').val(0);
|
|
if(get_selected_values().length >0)
|
|
{
|
|
if(!confirm(options.confirm_search_message))
|
|
return;
|
|
}
|
|
do_search(true, options.on_complete);
|
|
});
|
|
|
|
return widget;
|
|
}
|
|
enable_search.enabled=false;
|
|
|
|
function attach_search_listener()
|
|
{
|
|
// prevent redirecting to link when search enabled
|
|
$("#pagination a").click(function(event) {
|
|
if ($("#search").val() || $("#search_form input:checked")) {
|
|
event.preventDefault();
|
|
// set limit_from to value included in the link
|
|
var uri_segments = event.currentTarget.href.split('/');
|
|
var limit_from = uri_segments.pop();
|
|
$('#limit_from').val(limit_from);
|
|
do_search(true);
|
|
}
|
|
});
|
|
}
|
|
|
|
function do_search(show_feedback,on_complete)
|
|
{
|
|
//If search is not enabled, don't do anything
|
|
if(!enable_search.enabled)
|
|
return;
|
|
|
|
if(show_feedback)
|
|
$('#search').addClass("ac_loading");
|
|
|
|
$.post(
|
|
$('#search_form').attr('action'),
|
|
// serialize all the input fields in the form
|
|
$('#search_form').serialize(),
|
|
function(response) {
|
|
$('#sortable_table tbody').html(response.rows);
|
|
if(typeof on_complete=='function')
|
|
on_complete(response);
|
|
$('#search').removeClass("ac_loading");
|
|
//$('#spinner').hide();
|
|
//re-init elements in new table, as table tbody children were replaced
|
|
tb_init('#sortable_table a.thickbox');
|
|
$('#pagination').html(response.pagination);
|
|
$('#sortable_table tbody :checkbox').click(checkbox_click);
|
|
$("#select_all").attr('checked',false);
|
|
if (response.total_rows > 0)
|
|
{
|
|
update_sortable_table();
|
|
enable_row_selection();
|
|
}
|
|
attach_search_listener();
|
|
}, "json"
|
|
);
|
|
}
|
|
|
|
function enable_email(email_url)
|
|
{
|
|
//Keep track of enable_email has been called
|
|
if(!enable_email.enabled)
|
|
enable_email.enabled=true;
|
|
|
|
//store url in function cache
|
|
if(!enable_email.url)
|
|
{
|
|
enable_email.url=email_url;
|
|
}
|
|
|
|
$('#select_all, #sortable_table tbody :checkbox').click(checkbox_click);
|
|
}
|
|
enable_email.enabled=false;
|
|
enable_email.url=false;
|
|
|
|
function do_email(url)
|
|
{
|
|
//If email is not enabled, don't do anything
|
|
if(!enable_email.enabled)
|
|
return;
|
|
|
|
$.post(url, { 'ids[]': get_selected_values() },function(response)
|
|
{
|
|
$('#email').attr('href',response);
|
|
});
|
|
|
|
}
|
|
|
|
function enable_checkboxes()
|
|
{
|
|
$('#sortable_table tbody :checkbox').click(checkbox_click);
|
|
}
|
|
|
|
function enable_delete(confirm_message,none_selected_message)
|
|
{
|
|
//Keep track of enable_delete has been called
|
|
if(!enable_delete.enabled)
|
|
enable_delete.enabled=true;
|
|
|
|
$("#delete").click(function(event)
|
|
{
|
|
event.preventDefault();
|
|
if($("#sortable_table tbody :checkbox:checked").length >0)
|
|
{
|
|
if(confirm(confirm_message))
|
|
{
|
|
do_delete($(this).attr('href'));
|
|
} else {
|
|
return false;
|
|
}
|
|
}
|
|
else
|
|
{
|
|
alert(none_selected_message);
|
|
}
|
|
});
|
|
}
|
|
enable_delete.enabled=false;
|
|
|
|
function do_delete(url)
|
|
{
|
|
//If delete is not enabled, don't do anything
|
|
if(!enable_delete.enabled)
|
|
return;
|
|
|
|
var row_ids = get_selected_values();
|
|
var selected_rows = get_selected_rows();
|
|
$.post(url, { 'ids[]': row_ids },function(response)
|
|
{
|
|
//delete was successful, remove checkbox rows
|
|
if(response.success)
|
|
{
|
|
$(selected_rows).each(function(index, dom)
|
|
{
|
|
$(this).find("td").animate({backgroundColor:"green"},1200,"linear")
|
|
.end().animate({opacity:0},1200,"linear",function()
|
|
{
|
|
$(this).remove();
|
|
//Re-init sortable table as we removed a row
|
|
$("#sortable_table tbody tr").length > 0 && update_sortable_table();
|
|
|
|
});
|
|
});
|
|
|
|
set_feedback(response.message,'success_message',false);
|
|
}
|
|
else
|
|
{
|
|
set_feedback(response.message,'error_message',true);
|
|
}
|
|
|
|
|
|
},"json");
|
|
}
|
|
|
|
function enable_bulk_edit(none_selected_message)
|
|
{
|
|
//Keep track of enable_bulk_edit has been called
|
|
if(!enable_bulk_edit.enabled)
|
|
enable_bulk_edit.enabled=true;
|
|
|
|
$('#bulk_edit').click(function(event)
|
|
{
|
|
event.preventDefault();
|
|
if($("#sortable_table tbody :checkbox:checked").length >0)
|
|
{
|
|
tb_show($(this).attr('title'),$(this).attr('href'),false);
|
|
$(this).blur();
|
|
}
|
|
else
|
|
{
|
|
alert(none_selected_message);
|
|
}
|
|
});
|
|
}
|
|
enable_bulk_edit.enabled=false;
|
|
|
|
function enable_select_all()
|
|
{
|
|
//Keep track of enable_select_all has been called
|
|
if(!enable_select_all.enabled)
|
|
enable_select_all.enabled=true;
|
|
|
|
$('#select_all').click(function()
|
|
{
|
|
if($(this).attr('checked'))
|
|
{
|
|
$("#sortable_table tbody :checkbox").each(function()
|
|
{
|
|
$(this).attr('checked',true);
|
|
$(this).parent().parent().find("td").addClass('selected').css("backgroundColor","");
|
|
|
|
});
|
|
}
|
|
else
|
|
{
|
|
$("#sortable_table tbody :checkbox").each(function()
|
|
{
|
|
$(this).attr('checked',false);
|
|
$(this).parent().parent().find("td").removeClass();
|
|
});
|
|
}
|
|
});
|
|
}
|
|
enable_select_all.enabled=false;
|
|
|
|
function enable_row_selection(rows)
|
|
{
|
|
//Keep track of enable_row_selection has been called
|
|
if(!enable_row_selection.enabled)
|
|
enable_row_selection.enabled=true;
|
|
|
|
if(typeof rows =="undefined")
|
|
rows=$("#sortable_table tbody tr");
|
|
|
|
rows.hover(
|
|
function row_over()
|
|
{
|
|
$(this).find("td").addClass('over').css("backgroundColor","");
|
|
$(this).css("cursor","pointer");
|
|
},
|
|
|
|
function row_out()
|
|
{
|
|
if(!$(this).find("td").hasClass("selected"))
|
|
{
|
|
$(this).find("td").removeClass();
|
|
}
|
|
}
|
|
);
|
|
|
|
rows.click(function row_click(event)
|
|
{
|
|
|
|
var checkbox = $(this).find(":checkbox");
|
|
checkbox.attr('checked',!checkbox.attr('checked'));
|
|
do_email(enable_email.url);
|
|
|
|
if(checkbox.attr('checked'))
|
|
{
|
|
$(this).find("td").addClass('selected').css("backgroundColor","");
|
|
}
|
|
else
|
|
{
|
|
$(this).find("td").removeClass();
|
|
}
|
|
});
|
|
}
|
|
enable_row_selection.enabled=false;
|
|
|
|
function update_sortable_table()
|
|
{
|
|
//let tablesorter know we changed <tbody> and then triger a resort
|
|
$("#sortable_table").trigger("update");
|
|
if(typeof $("#sortable_table")[0].config!="undefined")
|
|
{
|
|
var sorting = $("#sortable_table")[0].config.sortList;
|
|
$("#sortable_table").trigger("sorton",[sorting]);
|
|
}
|
|
else
|
|
{
|
|
window['init_table_sorting'] && init_table_sorting();
|
|
}
|
|
}
|
|
|
|
function get_table_row(id) {
|
|
id = id || $("input[name='sale_id']").val();
|
|
var $element = $("#sortable_table tbody :checkbox[value='" + id + "']");
|
|
if ($element.length === 0) {
|
|
$element = $("#sortable_table tbody a[href*='/" + id + "/']");
|
|
}
|
|
return $element;
|
|
}
|
|
|
|
function update_row(row_id,url,callback)
|
|
{
|
|
$.post(url, { 'row_id': row_id },function(response)
|
|
{
|
|
//Replace previous row
|
|
var row_to_update = get_table_row(row_id).parent().parent();
|
|
row_to_update.replaceWith(response);
|
|
reinit_row(row_id);
|
|
hightlight_row(row_id);
|
|
callback && typeof(callback) == "function" && callback();
|
|
}, 'html');
|
|
}
|
|
|
|
function reinit_row(checkbox_id)
|
|
{
|
|
var new_checkbox = $("#sortable_table tbody tr :checkbox[value="+checkbox_id+"]");
|
|
var new_row = new_checkbox.parent().parent();
|
|
enable_row_selection(new_row);
|
|
//Re-init some stuff as we replaced row
|
|
update_sortable_table();
|
|
tb_init(new_row.find("a.thickbox"));
|
|
//re-enable e-mail
|
|
new_checkbox.click(checkbox_click);
|
|
}
|
|
|
|
function animate_row(row,color)
|
|
{
|
|
color = color || "#e1ffdd";
|
|
row.find("td").css("backgroundColor", "#ffffff").animate({backgroundColor:color},"slow","linear")
|
|
.animate({backgroundColor:color},5000)
|
|
.animate({backgroundColor:"#ffffff"},"slow","linear");
|
|
}
|
|
|
|
function hightlight_row(checkbox_id)
|
|
{
|
|
var new_checkbox = $("#sortable_table tbody tr :checkbox[value="+checkbox_id+"]");
|
|
var new_row = new_checkbox.parent().parent();
|
|
|
|
animate_row(new_row);
|
|
}
|
|
|
|
function get_selected_values()
|
|
{
|
|
var selected_values = new Array();
|
|
$("#sortable_table tbody :checkbox:checked").each(function()
|
|
{
|
|
selected_values.push($(this).val());
|
|
});
|
|
return selected_values;
|
|
}
|
|
|
|
function get_selected_rows()
|
|
{
|
|
var selected_rows = new Array();
|
|
$("#sortable_table tbody :checkbox:checked").each(function()
|
|
{
|
|
selected_rows.push($(this).parent().parent());
|
|
});
|
|
return selected_rows;
|
|
}
|
|
|
|
function get_visible_checkbox_ids()
|
|
{
|
|
var row_ids = new Array();
|
|
$("#sortable_table tbody :checkbox").each(function()
|
|
{
|
|
row_ids.push($(this).val());
|
|
});
|
|
return row_ids;
|
|
} |