gnu-social/plugins/ExtendedProfile/js/profiledetail.js

83 lines
2.2 KiB
JavaScript
Raw Normal View History

var removeRow = function() {
var cnt = rowCount(this);
var table = $(this).closest('table');
console.log("row count = " + cnt);
if (cnt > 1) {
var target = $(this).closest('tr');
target.remove();
reorder(table);
}
};
var rowCount = function(row) {
var top = $(row).closest('table');
var trs = $(top).find('tr');
return trs.length - 1; // exclude th section header row
};
var reorder = function(table) {
var trs = $(table).find('tr').has('td');
$(trs).find('a').hide();
$(trs).each(function(i, tr) {
console.log("ROW " + i);
$(tr).find('a.remove_row').show();
replaceIndex(rowIndex(tr), i);
});
$(trs).last().find('a.add_row').show();
if (trs.length == 1) {
$(trs).find('a.remove_row').hide();
}
};
var rowIndex = function(elem) {
var idStr = $(elem).find('div').attr('id');
var id = idStr.match(/\d+/);
console.log("id = " + id);
};
var replaceIndex = function(elem, oldIndex, newIndex) {
$(elem).find('*').each(function() {
$.each(this.attributes, function(i, attrib) {
var regexp = /extprofile-.*-\d.*/;
var value = attrib.value;
var match = value.match(regexp);
if (match != null) {
attrib.value = value.replace("-" + oldIndex, "-" + newIndex);
console.log('match: oldIndex = ' + oldIndex + ' newIndex = ' + newIndex + ' name = ' + attrib.name + ' value = ' + attrib.value);
}
});
});
}
var resetRow = function(elem) {
$(elem).find('input').attr('value', '');
$(elem).find("select option[value='office']").attr("selected", true);
}
var addRow = function() {
var divId = $(this).closest('div').attr('id');
var index = divId.match(/\d+/);
console.log("Current row = " + index);
var tr = $(this).closest('tr');
var newtr = $(tr).clone();
var newIndex = parseInt(index) + 1;
replaceIndex(newtr, index, newIndex);
resetRow(newtr);
$(tr).after(newtr);
console.log("number of rows: " + rowCount(tr));
reorder($(this).closest('table'));
};
$(document).ready(
function() {
$('.add_row').live('click', addRow);
$('.remove_row').live('click', removeRow);
}
);