Commit 02686daf authored by Xiaowu Zhang's avatar Xiaowu Zhang

erp5_production_planning: improve matrixbox

1.paste excel
2.interaction with user
parent d543d2af
......@@ -27,6 +27,7 @@
display: inline;
}
.content .field .warning {
.content .field .warning,
.content .field .change{
color: #f40;
}
\ No newline at end of file
}
......@@ -105,6 +105,56 @@ function addTotalLineColumnToMatrixBox(matrixbox_container) {
}
function listenToInputChange(matrixbox_container) {
var sum_line = $(matrixbox_container.querySelector('.MatrixBoxSumLine')),
td_index,
sum_span,
sum,
previous_value;
$('td input').bind('input', null, function (e) {
var input = $(this);
if (input[0].getAttribute('value') != input[0].value) {
input.addClass('change');
} else {
input.removeClass('change');
}
td_index = $(e.target.parentElement.parentElement).index();
sum_span = sum_line.find('td:eq(' + (td_index) + ') span');
sum = parseInt(sum_span.text());
previous_value = input[0].getAttribute('data-previous-value') || input[0].getAttribute('value');
sum = sum + ((parseInt(input[0].value || 0)) - parseInt(previous_value));
input[0].setAttribute('data-previous-value', input[0].value || 0);
sum_span.text(format(sum));
});
}
function listenToInputPaste(matrixbox_container) {
matrixbox = $(matrixbox_container.querySelector('.MatrixContent'));
$('td input').bind('paste', null, function (e) {
var i, j,
input,
td_index = $(e.target.parentElement.parentElement).index(),
tr_index = $(e.target.parentElement.parentElement.parentElement).index();
pasted_value = e.originalEvent.clipboardData.getData('text');
e.stopPropagation();
e.preventDefault();
pasted_value = pasted_value.split('\n');
for (i = 0; i < pasted_value.length; i += 1) {
value_list = pasted_value[i].split(/\s+/);
tr = matrixbox.find('tr:eq(' + (tr_index + i) + ')');
for (j = 0; j < value_list.length; j += 1) {
var input = tr.find('td:eq(' + (td_index+j) + ') input');
if (input[0]){
input[0].value = value_list[j];
input[0].dispatchEvent(new Event('input'));
}
}
}
});
}
var config = {
childList: true,
......@@ -124,6 +174,8 @@ function observe(mutationsList) {
if (node.getAttribute('class') == 'Data footer') {
var matrixbox = document.querySelector('.matrixbox_production_planning');
addTotalLineColumnToMatrixBox(matrixbox);
listenToInputPaste(matrixbox);
listenToInputChange(matrixbox);
observer.disconnect();
}
}
......
Markdown is supported
0%
or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment