Add JS files
This commit is contained in:
198
modules/Documents/Categories.js
Normal file
198
modules/Documents/Categories.js
Normal file
@@ -0,0 +1,198 @@
|
||||
//categories
|
||||
function saveItems3(){
|
||||
document.getElementById('position_list3').value = ItemsList3(true);
|
||||
}
|
||||
function doRequest(where,post,doFunction,error) {
|
||||
this.Display = function(result) { doFunction(result.responseText); }
|
||||
this.Fail = function(result){ if(error) alert(error);}
|
||||
YAHOO.util.Connect.asyncRequest('POST',where,{success:this.Display,failure:this.Fail},post);
|
||||
}
|
||||
|
||||
|
||||
function addEvent(object,eventName,do_function) {
|
||||
if(typeof(object) == "string") object = document.getElementById(object);
|
||||
if(!object) { alert('No object in function addEvent!'); return; }
|
||||
if(object.addEventListener) {
|
||||
object.addEventListener(eventName, do_function, false);
|
||||
} else {
|
||||
object.attachEvent('on'+eventName, do_function);
|
||||
}
|
||||
}
|
||||
|
||||
var tbody_;
|
||||
var ItemListSave3;
|
||||
var ItemListClear3;
|
||||
var ItemListFil3;
|
||||
var FillText;
|
||||
|
||||
addEvent(
|
||||
window,
|
||||
'load',
|
||||
function() {
|
||||
var paramsTable3 = new paramsMT('itemsTable3');
|
||||
paramsTable3.onCreateRow = function(row) {
|
||||
row.newPos = false;
|
||||
row.noAddNew = true;
|
||||
row.ondblclick = function() {}
|
||||
row.onSelect = function() {
|
||||
}
|
||||
row.onDeselect = function() {
|
||||
}
|
||||
}
|
||||
|
||||
paramsTable3.onCreateCell = function(cell) {
|
||||
|
||||
var i = cell.index;
|
||||
if(i == 0) {
|
||||
|
||||
cell.setData = function(data) {
|
||||
console.log(data);
|
||||
if(data.ecmproductcategory_name) {
|
||||
cell.firstChild.value = data.ecmproductcategory_name;
|
||||
|
||||
cell.getElementsByTagName('input')[1].value = data.ecmproductcategory_id;
|
||||
if (data.id)
|
||||
cell.getElementsByTagName('input')[2].value = data.id;
|
||||
}
|
||||
};
|
||||
cell.getData = function(data) {
|
||||
data.ecmproductcategory_name = cell.firstChild.value;
|
||||
data.ecmproductcategory_id = cell.getElementsByTagName('input')[1].value;
|
||||
data.id = cell.getElementsByTagName('input')[2].value;
|
||||
}
|
||||
|
||||
cell.onSelect = function() {
|
||||
var cn = this.getElementsByTagName('input');
|
||||
cn[0].name = 'name_p';
|
||||
cn[0].id = 'name_p';
|
||||
|
||||
cn[1].name = 'id_p';
|
||||
cn[1].id = 'id_p';
|
||||
}
|
||||
cell.onDeselect = function() {
|
||||
ERROR = false;
|
||||
var data = new Object();
|
||||
this.getData(data);
|
||||
if(!ERROR) {
|
||||
data.product_group = data.product_group;
|
||||
this.setData(data);
|
||||
}
|
||||
|
||||
var cn = this.getElementsByTagName('input');
|
||||
cn[0].name = '';
|
||||
cn[0].id = '';
|
||||
|
||||
cn[1].name = '';
|
||||
cn[1].id = '';
|
||||
}
|
||||
//cell.select = function() { this.selectNext(); }
|
||||
//cell.selectNext = function() { var row = this.parentNode.selectNext(); row.select(); row.cells.item(i).select(); };
|
||||
var edit = document.createElement('input');
|
||||
edit.setAttribute('type','text');
|
||||
edit.setAttribute('tabIndex',1);
|
||||
edit.className = 'inputs';
|
||||
cell.appendChild(edit);
|
||||
var edit = document.createElement('input');
|
||||
edit.setAttribute('type','hidden');
|
||||
edit.setAttribute('readonly','readonly');
|
||||
edit.setAttribute('tabIndex',1);
|
||||
edit.className = 'inputs';
|
||||
cell.appendChild(edit);
|
||||
var edit = document.createElement('input');
|
||||
edit.setAttribute('type','hidden');
|
||||
edit.setAttribute('readonly','readonly');
|
||||
edit.setAttribute('tabIndex',1);
|
||||
edit.className = 'inputs';
|
||||
cell.appendChild(edit);
|
||||
var img = document.createElement('img');
|
||||
img.setAttribute('alt',MOD['LBL_IMG_SEARCH']);
|
||||
img.setAttribute('src','modules/EcmQuotes/images/search.gif');
|
||||
img.style.cursor = 'pointer';
|
||||
img.onclick = function() {
|
||||
var ecmpopup = open_popup( "EcmProductCategories", 600, 400, "", true, false, {"call_back_function":"set_return","form_name":"EditView","field_to_name_array":{"id":"id_p","name":"name_p"}}, "single", true );
|
||||
setTimeout(function(){ecmpopup.focus();},200);
|
||||
}
|
||||
cell.appendChild(img);
|
||||
}
|
||||
if(i == 1) {
|
||||
var img;
|
||||
|
||||
cell.style.padding="auto auto auto auto";
|
||||
//insert
|
||||
img = document.createElement('img');
|
||||
img.setAttribute('alt',MOD['LBL_INSERT_NEW_ROW']);
|
||||
img.setAttribute('src','modules/EcmQuotes/images/insertrow.gif');
|
||||
img.style.cursor = 'pointer';
|
||||
img.onclick = function() {
|
||||
this.parentNode.myTable.addRow(this.parentNode.parentNode.index+1);
|
||||
refreshPositionIndex();
|
||||
};
|
||||
|
||||
//delete
|
||||
cell.appendChild(img);
|
||||
cell.appendChild(document.createTextNode(" "));
|
||||
img = document.createElement('img');
|
||||
img.setAttribute('alt',MOD['LBL_DELETE_ROW']);
|
||||
img.setAttribute('src','modules/EcmQuotes/images/deleterow.gif');
|
||||
img.style.cursor = 'pointer';
|
||||
img.onclick = function() { this.parentNode.parentNode.deleteRow(); refreshPositionIndex();};
|
||||
cell.appendChild(img);
|
||||
cell.appendChild(document.createTextNode(" "));
|
||||
|
||||
cell.appendChild(document.createElement('br'));
|
||||
//move up
|
||||
img = document.createElement('img');
|
||||
img.setAttribute('alt',MOD['LBL_MOVE_ROW_UP']);
|
||||
img.setAttribute('src','modules/EcmQuotes/images/moverowup.gif');
|
||||
img.style.cursor = 'pointer';
|
||||
img.onclick = function() { this.parentNode.parentNode.moveUp(); refreshPositionIndex();};
|
||||
cell.appendChild(img);
|
||||
cell.appendChild(document.createTextNode(" "));
|
||||
//move down
|
||||
img = document.createElement('img');
|
||||
img.setAttribute('alt',MOD['LBL_MOVE_ROW_DOWN']);
|
||||
img.setAttribute('src','modules/EcmQuotes/images/moverowdown.gif');
|
||||
img.style.cursor = 'pointer';
|
||||
img.onclick = function() { this.parentNode.parentNode.moveDown();refreshPositionIndex(); }
|
||||
cell.appendChild(img);
|
||||
}
|
||||
}
|
||||
ItemsList3 = function(json) {
|
||||
var data = '';
|
||||
for(var i=0; i<paramsTable3.rowCount(); i++) {
|
||||
data = data + '||||' + JSON.stringifyNoSecurity(paramsTable3.row(i).getData());
|
||||
}
|
||||
return data;
|
||||
}
|
||||
if(paramsTable3.rowCount() == 0) {paramsTable3.addRow();};
|
||||
paramsTable3.onSetCellData = function(row,cell,data) {
|
||||
if(cell.innerHTML == '') cell.innerHTML = ' ';
|
||||
}
|
||||
|
||||
ItemListFill3 = function() {
|
||||
var pl;
|
||||
pl = document.getElementById('position_list3').value;
|
||||
console.log(pl);
|
||||
if(pl && pl != '') {
|
||||
try {
|
||||
pl = eval(pl);
|
||||
for(x in pl) { var pl_row = pl[x]; if (pl_row.template=='') continue; paramsTable3.addRow().setData(pl_row); }
|
||||
} catch(err) { pl = null; };
|
||||
}
|
||||
}
|
||||
|
||||
ItemListClear3 = function(noNew,save) {
|
||||
if(typeof(save)=="string") ItemListSave(null,save);
|
||||
while(paramsTable3.rowCount()>0) paramsTable3.row(0).deleteRow(noNew);
|
||||
}
|
||||
|
||||
ItemListClear3();
|
||||
ItemListFill3();
|
||||
|
||||
var check_form_ = check_form;
|
||||
check_form = function(formname) {
|
||||
saveItems3();
|
||||
return check_form_(formname);
|
||||
}
|
||||
}
|
||||
);
|
||||
48
modules/Documents/documents.js
Normal file
48
modules/Documents/documents.js
Normal file
@@ -0,0 +1,48 @@
|
||||
/*********************************************************************************
|
||||
* SugarCRM is a customer relationship management program developed by
|
||||
* SugarCRM, Inc. Copyright (C) 2004-2010 SugarCRM Inc.
|
||||
*
|
||||
* This program is free software; you can redistribute it and/or modify it under
|
||||
* the terms of the GNU Affero General Public License version 3 as published by the
|
||||
* Free Software Foundation with the addition of the following permission added
|
||||
* to Section 15 as permitted in Section 7(a): FOR ANY PART OF THE COVERED WORK
|
||||
* IN WHICH THE COPYRIGHT IS OWNED BY SUGARCRM, SUGARCRM DISCLAIMS THE WARRANTY
|
||||
* OF NON INFRINGEMENT OF THIRD PARTY RIGHTS.
|
||||
*
|
||||
* This program is distributed in the hope that it will be useful, but WITHOUT
|
||||
* ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or FITNESS
|
||||
* FOR A PARTICULAR PURPOSE. See the GNU Affero General Public License for more
|
||||
* details.
|
||||
*
|
||||
* You should have received a copy of the GNU Affero General Public License along with
|
||||
* this program; if not, see http://www.gnu.org/licenses or write to the Free
|
||||
* Software Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA
|
||||
* 02110-1301 USA.
|
||||
*
|
||||
* You can contact SugarCRM, Inc. headquarters at 10050 North Wolfe Road,
|
||||
* SW2-130, Cupertino, CA 95014, USA. or at email address contact@sugarcrm.com.
|
||||
*
|
||||
* The interactive user interfaces in modified source and object code versions
|
||||
* of this program must display Appropriate Legal Notices, as required under
|
||||
* Section 5 of the GNU Affero General Public License version 3.
|
||||
*
|
||||
* In accordance with Section 7(b) of the GNU Affero General Public License version 3,
|
||||
* these Appropriate Legal Notices must retain the display of the "Powered by
|
||||
* SugarCRM" logo. If the display of the logo is not reasonably feasible for
|
||||
* technical reasons, the Appropriate Legal Notices must display the words
|
||||
* "Powered by SugarCRM".
|
||||
********************************************************************************/
|
||||
var rhandle=new RevisionListHandler();var from_popup_return=false;function document_set_return(popup_reply_data)
|
||||
{from_popup_return=true;var form_name=popup_reply_data.form_name;var name_to_value_array=popup_reply_data.name_to_value_array;related_doc_id='EMPTY';for(var the_key in name_to_value_array)
|
||||
{if(the_key=='toJSON')
|
||||
{}
|
||||
else
|
||||
{var displayValue=name_to_value_array[the_key];displayValue=displayValue.replace(''',"'");displayValue=displayValue.replace('&',"&");displayValue=displayValue.replace('>',">");displayValue=displayValue.replace('<',"<");displayValue=displayValue.replace('" ',"\"");if(the_key=='related_doc_id'){related_doc_id=displayValue;}
|
||||
window.document.forms[form_name].elements[the_key].value=displayValue;}}
|
||||
related_doc_id=JSON.stringifyNoSecurity(related_doc_id);var conditions=new Array();conditions[conditions.length]={"name":"document_id","op":"starts_with","value":related_doc_id};var query=new Array();var query={"module":"DocumentRevisions","field_list":['id','revision','date_entered'],"conditions":conditions,"order":'date_entered desc'};result=global_rpcClient.call_method('query',query,true);rhandle.display(result);}
|
||||
function RevisionListHandler(){}
|
||||
RevisionListHandler.prototype.display=function(result){var names=result['list'];var rev_tag=document.getElementById('related_doc_rev_id');rev_tag.options.length=0;for(i=0;i<names.length;i++){rev_tag.options[i]=new Option(names[i].fields['revision'],names[i].fields['id'],false,false);}
|
||||
rev_tag.disabled=false;}
|
||||
function setvalue(source){src=new String(source.value);target=new String(source.form.document_name.value);if(target.length==0){lastindex=src.lastIndexOf("/");if(lastindex==-1){lastindex=src.lastIndexOf("\\");}
|
||||
if(lastindex==-1){source.form.document_name.value=src;source.form.escaped_document_name.value=src;}else{source.form.document_name.value=src.substr(++lastindex,src.length);source.form.escaped_document_name.value=src.substr(lastindex,src.length);}}}
|
||||
function toggle_template_type(istemplate){template_type=document.getElementById('template_type');if(istemplate.checked){template_type.disabled=false;}else{template_type.disabled=true;}}
|
||||
1649
modules/Documents/js/Bim-it6.js
Normal file
1649
modules/Documents/js/Bim-it6.js
Normal file
File diff suppressed because it is too large
Load Diff
152
modules/Documents/js/Documents13.js
Normal file
152
modules/Documents/js/Documents13.js
Normal file
@@ -0,0 +1,152 @@
|
||||
var options = ["invoice","compain_note","return_note"];
|
||||
$(document).ready(function () {
|
||||
|
||||
// parent Edit list
|
||||
ParentEditList();
|
||||
// tabelka z vatami
|
||||
InitializeVatTable();
|
||||
|
||||
// Przypisani uzytkownicy
|
||||
UserListEdit();
|
||||
|
||||
InitializeTableCost();
|
||||
|
||||
$("#currency_id").change(function() {
|
||||
getNBPCurrencyExchange($("#currency_id :selected").val());
|
||||
|
||||
});
|
||||
|
||||
|
||||
|
||||
$("#value").change(function() {
|
||||
$('#left_paid').val($("#value").val());
|
||||
|
||||
|
||||
});
|
||||
|
||||
var previousVal;
|
||||
var pollInterval = setInterval(function() {
|
||||
var val = $('#document_date').val();
|
||||
if (val !== previousVal) {
|
||||
console.log('hmm');
|
||||
getNBPCurrencyExchange($("#currency_id :selected").val());
|
||||
}
|
||||
previousVal = val;
|
||||
}, 500);
|
||||
if($('#dbase').val()!='saassystem'){
|
||||
addToValidate('EditView', 'uploadfile','uploadfile',true,'Proszę wybrać plik!');
|
||||
}
|
||||
$('#category_id').on('change',function(){
|
||||
|
||||
|
||||
if($.inArray($("#category_id").val(),options)>-1){
|
||||
addToValidate('EditView', 'value','value',true,'Proszę wpisać kwotę dokumentu!');
|
||||
addToValidate('EditView', 'document_date','document_date',true,'Proszę wybrać datę dokumentu!');
|
||||
} else {
|
||||
removeFromValidate('EditView', 'value');
|
||||
removeFromValidate('EditView', 'document_date');
|
||||
removeFromValidate('EditView', 'payment_date');
|
||||
|
||||
|
||||
}
|
||||
});
|
||||
removeFromValidate('EditView', 'revision');
|
||||
});
|
||||
|
||||
var check_form_ = check_form;
|
||||
check_form = function (formname) {
|
||||
window.onbeforeunload = null;
|
||||
// unformat vat table positions before save
|
||||
|
||||
if($('#document_type').val()==""){
|
||||
alert("Proszę wybrać typ faktury!");
|
||||
return false;
|
||||
}
|
||||
var int;
|
||||
|
||||
if($.inArray($("#category_id").val(),options)>-1){
|
||||
if ($("#value").val()=="") {
|
||||
alert("Wartość dokumentu nie może być pusta!");
|
||||
return false;
|
||||
}
|
||||
}
|
||||
|
||||
|
||||
if ($("#currency_id").val()!="PLN") {
|
||||
if($('#currency_value').val()==""){
|
||||
alert("Proszę podać kurs waluty!");
|
||||
return false;
|
||||
}
|
||||
}
|
||||
|
||||
if($.inArray($("#category_id").val(),options)>-1){
|
||||
if (UnformatNumber($("#value").val())==0) {
|
||||
alert("Wartość dokumentu nie może być równa zeru!");
|
||||
return false;
|
||||
}
|
||||
|
||||
if ($("#value").val()=="") {
|
||||
alert("Wartość dokumentu nie może być pusta!");
|
||||
}
|
||||
if ($("#left_paid").val() != '0,00') {
|
||||
addToValidate('EditView', 'payment_date','payment_date',true,'Proszę wpisać kwotę płatności!');
|
||||
if($('#payment_date').val()==''){
|
||||
alert('Wpisałeś kwotę do zapłaty, podaj termin płatności!');
|
||||
return false;
|
||||
} else {
|
||||
// int=$("#left_paid").val(UnformatNumber($("#left_paid").val()));
|
||||
// $("#value").val(UnformatNumber($("#value").val()));
|
||||
}
|
||||
} else {
|
||||
removeFromValidate('EditView', 'payment_date');
|
||||
}
|
||||
|
||||
var count = $('#tblAppendGrid').appendGrid('getRowCount');
|
||||
var netto=0;
|
||||
var vat=0;
|
||||
for (var i = 0; i < count; i++) {
|
||||
|
||||
var data2 = $('#tblAppendGrid').appendGrid('getRowValue', i);
|
||||
var netto_position = parseFloat(UnformatNumber(data2.netto));
|
||||
if(!isNaN(netto_position)){
|
||||
|
||||
netto = netto+netto_position;
|
||||
}
|
||||
|
||||
var vat_position=parseFloat(UnformatNumber(data2.vat));
|
||||
|
||||
if(!isNaN(vat_position)){
|
||||
|
||||
vat = vat+vat_position;
|
||||
}
|
||||
|
||||
}
|
||||
|
||||
var total = netto + vat;
|
||||
total = total.toFixed(2);
|
||||
|
||||
if(parseFloat(total)!==parseFloat(UnformatNumber($('#value').val()))){
|
||||
alert("Wartość dokumentu powinna być identyczna jak łączna wartość z tabelki Stawki VAT!");
|
||||
return false;
|
||||
}
|
||||
}
|
||||
if(check_form_(formname)==false){
|
||||
|
||||
return false;
|
||||
} else {
|
||||
var count = $('#tblAppendGrid').appendGrid('getRowCount');
|
||||
for (var i = 0; i < count; i++) {
|
||||
|
||||
var data2 = $('#tblAppendGrid').appendGrid('getRowValue', i);
|
||||
|
||||
$('#tblAppendGrid').appendGrid('setCtrlValue', 'vat', i, UnformatNumber(data2.vat));
|
||||
$('#tblAppendGrid').appendGrid('setCtrlValue', 'netto', i, UnformatNumber(data2.netto));
|
||||
// $("#value").val(UnformatNumber($("#value").val()));
|
||||
}
|
||||
|
||||
$("#value").val(UnformatNumber($("#value").val()));
|
||||
$("#currency_value").val(UnformatNumber($("#currency_value").val()));
|
||||
$("#left_paid").val(UnformatNumber($("#left_paid").val()));
|
||||
return true;
|
||||
}
|
||||
};
|
||||
448
modules/Documents/paramsMT.js
Normal file
448
modules/Documents/paramsMT.js
Normal file
@@ -0,0 +1,448 @@
|
||||
|
||||
function NumberToUserFormatNumber(number,add) {
|
||||
|
||||
if(!number) number = 0;
|
||||
|
||||
number = parseFloat(number);
|
||||
|
||||
var tmp = number.toFixed(OPT['dec_len']);
|
||||
|
||||
var s1 = tmp.substring(0,tmp.length-1-OPT['dec_len']);
|
||||
|
||||
var s2 = tmp.substring(tmp.length-OPT['dec_len'],tmp.length);
|
||||
|
||||
var tmp = '';
|
||||
|
||||
for(var i=s1.length;i>0;i-=3) {
|
||||
|
||||
tmp = ((i<=3)?"":OPT['sep_1000'])+s1.substring(i-3,i)+tmp;
|
||||
|
||||
}
|
||||
|
||||
s1 = tmp;
|
||||
|
||||
return (s1+OPT['dec_sep']+s2).toString()+((add)?add:'');
|
||||
|
||||
}
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
function UserFormatNumberToNumber(ufn,add) {
|
||||
|
||||
if(add) {
|
||||
|
||||
var match = /add/g;
|
||||
|
||||
ufn = ufn.replace(match,'');
|
||||
|
||||
}
|
||||
|
||||
var match = /Err/g;
|
||||
|
||||
ufn = ufn.replace(match,'');
|
||||
|
||||
if(!ufn) return parseFloat(0);
|
||||
|
||||
var pos = ufn.indexOf(OPT['dec_sep']);
|
||||
|
||||
var s1='', s2='';
|
||||
|
||||
if(pos==-1) { s1 = ufn; s2 = ''; }
|
||||
|
||||
else { s1 = ufn.substring(0,pos); s2 = ufn.substring(pos+1,ufn.length); }
|
||||
|
||||
|
||||
/*
|
||||
if(OPT['sep_1000'] != "")
|
||||
|
||||
for(var i=s1.length-4;i>=0;i-=4)
|
||||
|
||||
if(s1.charAt(i) != OPT['sep_1000']) { return -1; }
|
||||
|
||||
if(s1.charAt(0) == OPT['sep_1000']) return -1;
|
||||
*/
|
||||
|
||||
|
||||
var pos = -1;
|
||||
|
||||
while((pos = s1.indexOf(OPT['sep_1000'])) != -1)
|
||||
|
||||
s1 = s1.substring(0,pos)+s1.substring(pos+1,s1.length);
|
||||
|
||||
|
||||
|
||||
//alert(s1);
|
||||
|
||||
return parseFloat(s1+"."+s2);
|
||||
|
||||
}
|
||||
function keyPressedNumber(e) {
|
||||
var keynum;
|
||||
if(window.event) //IE
|
||||
keynum = e.keyCode;
|
||||
else
|
||||
keynum = e.which;
|
||||
return keynum;
|
||||
}
|
||||
|
||||
function isEnterOrTabPressed(e) {
|
||||
var keynum = keyPressedNumber(e);
|
||||
if(keynum == 9 || keynum == 13) return true; else return false;
|
||||
}
|
||||
|
||||
function setSelectionRange(obj) {
|
||||
if(obj && typeof(obj) == "object" && (obj.type == "text" || obj.type == "textarea")) {
|
||||
if(obj.createTextRange) {
|
||||
var range = obj.createTextRange();
|
||||
range.moveStart("character", 0);
|
||||
range.moveEnd("character", obj.value.lengh-1);
|
||||
range.select();
|
||||
} else {
|
||||
if(obj.setSelectionRange) {
|
||||
obj.setSelectionRange(0,obj.value.length);
|
||||
}
|
||||
}
|
||||
obj.focus();
|
||||
}
|
||||
if(obj && typeof(obj) == "object" && obj.options) { obj.focus(); }
|
||||
|
||||
}
|
||||
|
||||
function paramsMT(name) {
|
||||
|
||||
this.myTableName = name;
|
||||
this.table = document.getElementById(this.myTableName);
|
||||
|
||||
this.thead = this.table.tHead;
|
||||
this.tbody = this.table.tBodies.item(0);
|
||||
|
||||
this.cellSelectedClass = 'selectedCell';
|
||||
this.rowSelectedClass = 'selectedRow';
|
||||
|
||||
this.selectedRow;
|
||||
this.selectedCell;
|
||||
|
||||
this.rowCount = function() {
|
||||
return this.tbody.rows.length;
|
||||
}
|
||||
|
||||
this.colCount = function() {
|
||||
return this.thead.rows.item(0).cells.length;
|
||||
};
|
||||
|
||||
this.colWidth = function(i) {
|
||||
return this.thead.rows.item(0).cells.item(i).width;
|
||||
};
|
||||
|
||||
this.moveUpRow = function() {
|
||||
if(this.selectedRow) this.selectedRow.moveUp();
|
||||
};
|
||||
|
||||
this.moveDownRow = function() {
|
||||
if(this.selectedRow) this.selectedRow.moveDown();
|
||||
};
|
||||
|
||||
this.insertRow = function(row, newRow) {
|
||||
if(!row)
|
||||
if(this.rowCount())
|
||||
if(typeof(row) == "number")
|
||||
row = this.tbody.rows.item(row);
|
||||
else
|
||||
row = this.tbody.rows.item(this.tbody.rows.length-1);
|
||||
|
||||
var row_tmp;
|
||||
if((newRow) && (row)) row_tmp = newRow; else { row_tmp = this.createRow(); this.fillWithDefaultData(row_tmp); }
|
||||
|
||||
if(this.rowCount() > 0 && row.nextSibling)
|
||||
this.tbody.insertBefore(row_tmp, row.nextSibling);
|
||||
else
|
||||
this.tbody.appendChild(row_tmp);
|
||||
|
||||
return row_tmp;
|
||||
};
|
||||
|
||||
this.refreshRowIndex = function() {
|
||||
for(var i=0; i<this.rowCount(); i++) {
|
||||
this.tbody.rows.item(i).index = i;
|
||||
if(this.onRefreshRowIndex) this.onRefreshRowIndex(this.tbody.rows.item(i));
|
||||
}
|
||||
}
|
||||
this.onRefreshRowIndex;
|
||||
|
||||
this.addRow = function(i,data) {
|
||||
var row = this.createRow();
|
||||
if(this.selectedRow) this.selectedRow.deselect();
|
||||
if(this.selectedCell) this.selectedCell.deselect();
|
||||
row.myTable = this;
|
||||
if(i || i===0)
|
||||
this.tbody.insertBefore(row,this.tbody.rows.item(i));
|
||||
else
|
||||
this.tbody.appendChild(row);
|
||||
this.refreshRowIndex();
|
||||
this.setRowData(row, data);
|
||||
for(var i=0; i<this.colCount(); i++) row.cells.item(i).afterCreate();
|
||||
return row;
|
||||
}
|
||||
|
||||
this.createRow = function(row) {
|
||||
var row = document.createElement('tr');
|
||||
row.myTable = this;
|
||||
row.isnew = false;
|
||||
row.onclick = function() { this.select(); }
|
||||
row.select = function() {
|
||||
if(!this.myTable.selectedRow || this.myTable.selectedRow !== this) {
|
||||
if(this.myTable.selectedRow) this.myTable.selectedRow.deselect();
|
||||
this.myTable.selectedRow = this;
|
||||
this.className = this.myTable.rowSelectedClass;
|
||||
if(row.onSelect) row.onSelect();
|
||||
}
|
||||
}
|
||||
row.deselect = function() {
|
||||
if(this.myTable.selectedRow === this) {
|
||||
this.className = '';
|
||||
this.myTable.selectedRow = '';
|
||||
if(row.onDeselect) row.onDeselect();
|
||||
}
|
||||
};
|
||||
|
||||
row.selectNext = function() {
|
||||
|
||||
if(this.index < this.myTable.rowCount()-1) { this.deselect(); this.nextSibling.select(); return this.nextSibling; }
|
||||
else {
|
||||
if(this.noAddNew) return this;
|
||||
|
||||
this.deselect();
|
||||
var row = this.myTable.addRow(); return row;
|
||||
}
|
||||
}
|
||||
row.selectPrevious = function() {
|
||||
this.deselect();
|
||||
if(this.previousSibling && this.index > 0) { this.previousSibling.select(); return this.previousSibling; }else return this;
|
||||
}
|
||||
row.deleteRow = function(noNew) {
|
||||
if(this.myTable.selectedCell) this.myTable.selectedCell.deselect();
|
||||
if(this.myTable.selectedRow) this.myTable.selectedRow.deselect();
|
||||
if(this.myTable.rowCount() == 1 && !noNew) {
|
||||
var MyTaBlE = this.myTable;
|
||||
setTimeout( function() { MyTaBlE.addRow(); refreshPositionIndex();} , 1000);
|
||||
}
|
||||
this.myTable.tbody.removeChild(this);
|
||||
this.myTable.refreshRowIndex();
|
||||
}
|
||||
row.moveUp = function() {
|
||||
if(!this.previousSibling) return;
|
||||
this.myTable.tbody.insertBefore(this,this.previousSibling);
|
||||
this.myTable.refreshRowIndex();
|
||||
}
|
||||
row.moveDown = function() {
|
||||
if(!this.nextSibling) this.myTable.addRow(row);
|
||||
this.myTable.tbody.insertBefore(this.nextSibling,this);
|
||||
this.myTable.refreshRowIndex();
|
||||
}
|
||||
row.setData = function(data) {
|
||||
if(!data || typeof(data) != "object") { return; };
|
||||
for(var i=0; i<this.myTable.colCount(); i++) {
|
||||
this.cells.item(i).setData(data);
|
||||
}
|
||||
}
|
||||
row.getData = function() {
|
||||
var data = new Object();
|
||||
for(var i=0; i<this.myTable.colCount(); i++) {
|
||||
if(this.cells.item(i).getData) this.cells.item(i).getData(data,true);
|
||||
}
|
||||
return data;
|
||||
}
|
||||
|
||||
for(var i=0; i<this.colCount(); i++) {
|
||||
var cell = this.createCell(i);
|
||||
row.appendChild(cell);
|
||||
}
|
||||
if(this.onCreateRow) this.onCreateRow(row);
|
||||
return row;
|
||||
|
||||
};
|
||||
|
||||
|
||||
this.onCreateRow; //function(row) {}
|
||||
|
||||
this.createCell = function(i) {
|
||||
var cell = document.createElement('td');
|
||||
cell.index = i;
|
||||
cell.myTable = this;
|
||||
cell.onclick = function() { this.select(); }
|
||||
cell.select = function() {
|
||||
|
||||
if(!this.myTable.selectedCell || this.myTable.selectedCell !== this) {
|
||||
if(this.myTable.selectedCell) this.myTable.selectedCell.deselect();
|
||||
this.myTable.selectedCell = this;
|
||||
if(this.firstChild.focus && !this.noSelect) setSelectionRange(this.firstChild);
|
||||
|
||||
if(this.onSelect) this.onSelect();
|
||||
this.className = this.myTable.cellSelectedClass;
|
||||
|
||||
}
|
||||
}
|
||||
cell.deselect = function() {
|
||||
if(this.myTable.selectedCell === this) {
|
||||
if(cell.onDeselect) cell.onDeselect();
|
||||
this.className = '';
|
||||
this.selected = false;
|
||||
this.myTable.selectedCell = '';
|
||||
}
|
||||
};
|
||||
cell.selectNext = function() {
|
||||
this.deselect();
|
||||
if(this.nextSibling) this.nextSibling.select();
|
||||
else {
|
||||
if(!this.parentNode.nextSibling) { if(this.noNewAdd) return; else this.myTable.addRow(); }
|
||||
this.parentNode.nextSibling.select();
|
||||
this.parentNode.nextSibling.firstChild.select();
|
||||
}
|
||||
}
|
||||
cell.afterCreate = function() {}
|
||||
cell.setData = function(data) {}
|
||||
cell.getData = function(data) {}
|
||||
if(this.onCreateCell) this.onCreateCell(cell);
|
||||
return cell;
|
||||
};
|
||||
this.onCreateCell; //function(cell) {}
|
||||
|
||||
|
||||
this.setRowData = function(row,data) {
|
||||
for(var i=0; i<this.colCount(); i++) {
|
||||
this.setCellData(row,row.cells.item(i),data);
|
||||
}
|
||||
}
|
||||
|
||||
this.setCellData = function(row,cell,data) {
|
||||
if(typeof(row) == "number")
|
||||
if(this.tbody.rows.item(row)) row = this.tbody.rows.item(row);
|
||||
if(typeof(cell) != "object")
|
||||
if(typeof(cell) == "number" && typeof(row) == "object") {
|
||||
if(row.cells.item(cell))
|
||||
cell = row.cells.item(cell);
|
||||
else return;
|
||||
}
|
||||
else return;
|
||||
if(this.onSetCellData) this.onSetCellData(row,cell,data);
|
||||
}
|
||||
|
||||
this.onSetCellData; //function(row,cell,data) {}
|
||||
|
||||
|
||||
|
||||
|
||||
this.selectRow = function(row) {
|
||||
if(this.selectedRow === row) return;
|
||||
|
||||
|
||||
if(this.selectedRow) this.deselectRow();
|
||||
|
||||
|
||||
this.selectedRow = row;
|
||||
|
||||
|
||||
this.selectedRow.className = this.rowSelectedClass;
|
||||
|
||||
|
||||
this.setEditNames(this.selectedRow,!this.selectedRow.isnew);
|
||||
|
||||
|
||||
}
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
this.selectNextRow = function() {
|
||||
|
||||
if(!this.selectedRow) return;
|
||||
|
||||
|
||||
if(!this.selectedRow.nextSibling) this.insertRow();
|
||||
|
||||
|
||||
var cell_id = this.selectedCell.lp;
|
||||
|
||||
|
||||
this.selectRow(this.selectedRow.nextSibling);
|
||||
|
||||
|
||||
this.selectCell(this.selectedRow.cells.item(cell_id));
|
||||
|
||||
|
||||
}
|
||||
|
||||
|
||||
this.selectPreviousRow = function() {
|
||||
|
||||
|
||||
if(!this.selectedRow) return;
|
||||
|
||||
|
||||
if(!this.selectedRow.previousSibling) return;
|
||||
|
||||
|
||||
if(this.selectedRow === this.tbody.rows.item(0)) return;
|
||||
|
||||
|
||||
var cell_id = this.selectedCell.lp;
|
||||
|
||||
|
||||
this.selectRow(this.selectedRow.previousSibling);
|
||||
|
||||
|
||||
this.selectCell(this.selectedRow.cells.item(cell_id));
|
||||
|
||||
|
||||
}
|
||||
|
||||
this.refreshNumeration = function() {
|
||||
for(var i=0; i<this.tbody.rows.length; i++)
|
||||
this.tbody.rows.item(i).cells.item(0).firstChild.value = i+1;
|
||||
}
|
||||
|
||||
this.KeyPressedNumber = function(e) {
|
||||
var keynum;
|
||||
if(window.event) //IE
|
||||
keynum = e.keyCode;
|
||||
else
|
||||
keynum = e.which;
|
||||
return keynum;
|
||||
}
|
||||
|
||||
this.KeyPressed = function(e, cell, method) {
|
||||
var keynum;
|
||||
if(window.event) //IE
|
||||
keynum = e.keyCode;
|
||||
else
|
||||
keynum = e.which;
|
||||
if((keynum == 9) || (keynum == 13)) {
|
||||
cell.selectNext();
|
||||
return false;
|
||||
}
|
||||
if(keynum == 40) { var id = cell.index; var row = cell.parentNode.selectNext(); if(row) { row.select(); row.cells.item(id).select(); } }
|
||||
if(keynum == 38) { var id = cell.index; var row = cell.parentNode.selectPrevious(); if(row) { row.select(); row.cells.item(id).select(); } }
|
||||
if(e.shiftKey && (method == "decimalNumber" || method == "onlyNumber")) return false;
|
||||
if(method == "decimalNumber") return this.OnlyNumbers(keynum);
|
||||
if(method == "onlyNumber") return this.OnlyNumbers(keynum, true);
|
||||
return true;
|
||||
}
|
||||
|
||||
this.OnlyNumbers = function(e, noQuote) { var keynum = e, keychar, numcheck;
|
||||
keychar = String.fromCharCode(keynum);
|
||||
numcheck = /\d/;
|
||||
return numcheck.test(keychar) || ((!noQuote)?(keynum == 190):false)
|
||||
|| (keynum == 8) //backspace
|
||||
|| (keynum == 46) //delete
|
||||
|| (keynum == 13) //enter || (keynum == 0) //special keys with FF
|
||||
|| (keynum == 37) //left arrow
|
||||
|| (keynum == 39) //right arrow
|
||||
|| (keynum == 188); //,
|
||||
}
|
||||
|
||||
this.row = function(i) { if(this.tbody.rows.item(i)) return this.tbody.rows.item(i); }
|
||||
this.cells = function(i,j) { if(this.tbody.rows.item(i).cells.item(i)) return this.tbody.rows.item(i).cells.item(i); }
|
||||
}
|
||||
Reference in New Issue
Block a user