| Current Path : /proc/1908984/root/proc/self/root/proc/self/root/proc/2411249/cwd/ |
| Current File : //proc/1908984/root/proc/self/root/proc/self/root/proc/2411249/cwd/dynotable.js.tar |
home/digilove/public_html/administrator/components/com_virtuemart/assets/js/dynotable.js 0000644 00000011611 15242112446 0026143 0 ustar 00 /**
* Created by Milbo on 18.11.2016.
*/
if (typeof Virtuemart === "undefined")
var Virtuemart = {};
// based on http://www.seomoves.org/blog/web-design-development/dynotable-a-jquery-plugin-by-bob-tantlinger-2683/
(function ($) {
$.fn.extend({
dynoTable:function (options) {
var defaults = {
removeClass: '.price-remove', //'.row-remover',
cloneClass: '.price-clone', //'.row-cloner',
addRowTemplateId: '#productPriceRowTmpl', //'#add-template',
addRowButtonId: '#add_new_price', //'#add-row',
lastRowRemovable:true,
orderable:true,
dragHandleClass: ".price_ordering", //".drag-handle",
insertFadeSpeed:"slow",
removeFadeSpeed:"fast",
insertRowPlace:"last",
hideTableOnEmpty:true,
onRowRemove:function () {
},
onBeforeRowInsert:function (newTr) {
},
onRowClone:function () {
},
onRowAdd:function (newTr) {
},
onTableEmpty:function () {
},
onRowReorder:function () {
}
};
options = $.extend(defaults, options);
var cloneRow = function (btn) {
var clonedRow = $(btn).closest('tr').clone();
var tbod = $(btn).closest('tbody');
$(clonedRow).find(".chzn-container").remove();
$(clonedRow).find('select').each(function () {
$(this).removeClass("chzn-done").addClass("vm-chzn-add").show();
});
insertRow(clonedRow, tbod);
options.onRowClone();
};
var insertRow = function (clonedRow, tbod) {
var numRows = $(tbod).children("tr").length;
if (options.hideTableOnEmpty && numRows == 0) {
$(tbod).parents("table").first().show();
}
$(clonedRow).find('*').addBack().filter('[id]').each(function () {
//change to something else so we don't have ids with the same name
var randomNumber = Math.floor(Math.random() * 100);
this.id += '__c'+randomNumber;
});
options.onBeforeRowInsert(clonedRow);
if (options.insertRowPlace=="last") {
//finally append new row to end of table
$(tbod).append(clonedRow);
} else {
$(tbod).find(options.insertRowPlace +':last').after(clonedRow);
}
bindActions(clonedRow);
console.log('executed insertRow');
jQuery("select.vm-chzn-add").chosen({enable_select_all: true,select_all_text : vm2string.select_all_text,select_some_options_text:vm2string.select_some_options_text,disable_search_threshold: 5});
$(tbod).children("tr:last").hide().fadeIn(options.insertFadeSpeed);
};
var removeRow = function (btn) {
var tbod = $(btn).parents("tbody:first");
var numRows = $(tbod).children("tr").length;
if (numRows > 1 || options.lastRowRemovable === true) {
var trToRemove = $(btn).parents("tr:first");
$(trToRemove).fadeOut(options.removeFadeSpeed, function () {
$(trToRemove).remove();
options.onRowRemove();
if (numRows == 1) {
if (options.hideTableOnEmpty) {
$(tbod).parents('table').first().hide();
}
// we want to remove the class remove
$().removeClass("vmicon-16-remove");
options.onTableEmpty();
}
});
}
};
var bindClick = function (elem, fn) {
$(elem).click(fn);
};
var bindCloneLink = function (lnk) {
bindClick(lnk, function () {
var btn = $(this);
cloneRow(btn);
return false;
});
};
var bindRemoveLink = function (lnk) {
bindClick(lnk, function () {
var btn = $(this);
removeRow(btn);
return false;
});
};
var bindActions = function (obj) {
obj.find(options.removeClass).each(function () {
bindRemoveLink($(this));
});
obj.find(options.cloneClass).each(function () {
bindCloneLink($(this));
});
};
return this.each(function () {
//Sanity check to make sure we are dealing with a single case
if (this.nodeName.toLowerCase() == 'table') {
var table = $(this);
var tbody = $(table).children("tbody").first();
if (options.orderable && $().sortable) {
$(tbody).sortable({
handle:options.dragHandleClass,
helper:function (e, ui) {
ui.children().each(function () {
$(this).width($(this).width());
});
return ui;
},
items:"tr",
update:function (event, ui) {
options.onRowReorder();
}
});
}
$(table).find(options.addRowTemplateId).each(function () {
$(this).removeAttr("id");
var tmpl = $(this);
tmpl.remove();
bindClick($(options.addRowButtonId), function () {
//options.onBeforeRowAdd();
var newTr = tmpl.clone();
insertRow(newTr, tbody);
options.onRowAdd(newTr);
return false;
});
});
bindActions(table);
var numRows = $(tbody).children("tr").length;
if (options.hideTableOnEmpty && numRows == 0) {
$(table).hide();
}
}
});
}
});
})(jQuery);