var pattern = /(\d{2})\.(\d{2})\.(\d{4})/; function FormatNumber(number, precision) { var precision = precision || 2; // make string.. number = number + ''; number = number.replace(',', '.'); // round number = toFixed(number, precision); // add 1000 sep var tmp = number.split("."); var c = ''; for (var i = tmp[0].length; i != -1; i--) { c += tmp[0].charAt(i); if ((tmp[0].length - i) == 0 || i == 0) continue; if ((tmp[0].length - i) % 3 == 0) c += '.'; } // reverse c c = c.split("").reverse().join(""); return c + ',' + tmp[1]; } function UnformatNumber(number) { // make string.. number = number + ''; // remove 1000 sep number = number.replace('.', ''); // change ',' to '.' number = number.replace(',', '.'); return parseFloat(number); } // round with precision function toFixed(value, precision) { var precision = precision || 0, neg = value < 0, power = Math.pow(10, precision), value = Math.round(value * power), integral = String((neg ? Math.ceil : Math.floor)(value / power)), fraction = String((neg ? -value : value) % power), padding = new Array(Math.max(precision - fraction.length, 0) + 1).join('0'); return precision ? integral + '.' + padding + fraction : integral; } function InitializeInterestTable(){ // Initialize appendGrid $('#tblAppendGrid').appendGrid({ hideRowNumColumn: true, initRows: 1, // definicje kolumn columns: [ { name: 'date_from', display: 'Od', type: 'custom', value: '', customBuilder: function (parent, idPrefix, name, uniqueIndex) { // Prepare the control ID/name by using idPrefix, column name and uniqueIndex var ctrlId = idPrefix + '_' + name + '_' + uniqueIndex; // Create a span as a container var ctrl = document.createElement('span'); // Set the ID and name to container and append it to parent control which is a table cell $(ctrl).attr({ id: ctrlId, name: ctrlId }).appendTo(parent); // Create extra controls and add to container $('
').appendTo(ctrl); $('', { type: 'text', maxLength: 10, id: ctrlId + '_date',name: ctrlId + '_date',style: 'width:100px;text-align:right;float:right;', class: 'inputs'}).appendTo(ctrl); $('Wprowadź datę
').appendTo(ctrl); $('').appendTo(ctrl); // Finally, return the container control return ctrl; }, customGetter: function (idPrefix, name, uniqueIndex) { // Prepare the control ID/name by using idPrefix, column name and uniqueIndex var ctrlId = idPrefix + '_' + name + '_' + uniqueIndex; // Check the input value and split it to array if valid // Set the value to different spinners return $('#' + ctrlId + '_date').val(); }, customSetter: function (idPrefix, name, uniqueIndex, value) { // Prepare the control ID/name by using idPrefix, column name and uniqueIndex var ctrlId = idPrefix + '_' + name + '_' + uniqueIndex; // Check the input value and split it to array if valid // Set the value to different spinners $('#' + ctrlId + '_date').val(value); } }, { name: 'date_to', display: 'Do', type: 'custom', value: '', customBuilder: function (parent, idPrefix, name, uniqueIndex) { // Prepare the control ID/name by using idPrefix, column name and uniqueIndex var ctrlId = idPrefix + '_' + name + '_' + uniqueIndex; // Create a span as a container var ctrl = document.createElement('span'); // Set the ID and name to container and append it to parent control which is a table cell $(ctrl).attr({ id: ctrlId, name: ctrlId }).appendTo(parent); // Create extra controls and add to container $('
').appendTo(ctrl); $('', { type: 'text', maxLength: 10, id: ctrlId + '_date',name: ctrlId + '_date',style: 'width:100px;text-align:right;float:right', class: 'inputs'}).appendTo(ctrl); $('Wprowadź datę
').appendTo(ctrl); $('').appendTo(ctrl); // Finally, return the container control return ctrl; }, customGetter: function (idPrefix, name, uniqueIndex) { // Prepare the control ID/name by using idPrefix, column name and uniqueIndex var ctrlId = idPrefix + '_' + name + '_' + uniqueIndex; // Check the input value and split it to array if valid // Set the value to different spinners return $('#' + ctrlId + '_date').val(); }, customSetter: function (idPrefix, name, uniqueIndex, value) { // Prepare the control ID/name by using idPrefix, column name and uniqueIndex var ctrlId = idPrefix + '_' + name + '_' + uniqueIndex; // Check the input value and split it to array if valid // Set the value to different spinners $('#' + ctrlId + '_date').val(value); } }, {name: 'rate', display: '%', type: 'text', ctrlAttr: {maxlength: 100}, ctrlCss: {width: '100%','text-align': 'right'}, ctrlClass: 'inputs', onChange: function (evt, rowIndex) { // liczenie vatu var data = $('#tblAppendGrid').appendGrid('getRowValue', rowIndex); if (data.rate!='') { // wtrzykwianie danych $('#tblAppendGrid').appendGrid('setCtrlValue', 'rate', rowIndex, FormatNumber(data.rate)); } }, onClick: function (evt, rowIndex) { // zaznacznie wybranego pola var elem = $('#tblAppendGrid').appendGrid('getCellCtrl', 'rate', rowIndex); $(elem).select(); }}, {name: 'symbol', display: 'Symbol',type: 'select', ctrlOptions: { 0: '{Wybierz}', M: 'M', R: 'R', D: 'D'} ,ctrlAttr: {maxlength: 100}, ctrlCss: {width: '100%','text-align': 'right'}, ctrlClass: 'inputs'}, {name: 'id', display: 'ID', invisible: true} ], // custome guziczki customGridButtons: { insert: $('').css('color', 'red').text('Insert').get(0), // Use a function that create DOM element moveUp: function (){ var button = document.createElement('img'); button.src = 'modules/EcmQuotes/images/moverowup.gif'; return button; }, moveDown: function (){ var button = document.createElement('img'); button.src = 'modules/EcmQuotes/images/moverowdown.gif'; return button; }, removeLast: function (){ var button = document.createElement('img'); button.src = 'modules/EcmQuotes/images/deleterow.gif'; return button; }, append: function (){ var button = document.createElement('img'); button.src = 'modules/EcmQuotes/images/insertrow.gif'; return button; } }, afterRowAppended: function (caller, parentRowIndex, addedRowIndex) { $('thead').removeClass('ui-widget-header'); $('td').removeClass('ui-widget-header'); $('tbody').removeClass('ui-widget-content'); $('td').removeClass('ui-widget-content'); $('tfoot').removeClass('ui-widget-header'); var data = $('#tblAppendGrid').appendGrid('getRowValue', parentRowIndex); if(data){ var date_to=data.date_to; date_to = new Date(date_to.replace(pattern,'$3-$2-$1')); var date_from=data.date_from; date_from = new Date(date_from.replace(pattern,'$3-$2-$1')); if(data.date_to!='' && data.date_from!='' && date_to>date_from && data.rate && data.symbol!=0){ var uq = $('#tblAppendGrid').appendGrid('getUniqueIndex', parentRowIndex); $('#tblAppendGrid_date_from_'+uq+'_tigger').attr('style','display:none'); $('#tblAppendGrid_date_to_'+uq+'_tigger').attr('style','display:none'); $('#tblAppendGrid_date_from_'+uq+'_date').attr('readonly',true); $('#tblAppendGrid_date_to_'+uq+'_date').attr('readonly',true); $('#tblAppendGrid_date_from_'+uq+'_date').attr('readonly',true); $('#tblAppendGrid_rate_'+uq).attr('readonly',true); $('#tblAppendGrid_symbol_'+uq).attr('disabled',true); var date_to=$('#tblAppendGrid_date_to_'+uq+'_date').val(); date_to = new Date(date_to.replace(pattern,'$3-$2-$1')); date_to.setDate(date_to.getDate() + 1); uq = $('#tblAppendGrid').appendGrid('getUniqueIndex', addedRowIndex); $('#tblAppendGrid').appendGrid('setCtrlValue', 'date_from', addedRowIndex, formattedDate(date_to)); $('#tblAppendGrid_date_from_'+uq+'_tigger').attr('style','display:none'); $('#tblAppendGrid_date_from_'+uq+'_date').attr('readonly',true); } else { alert('Wypełnij poprawnie wcześniejszy wpis!'); $('#tblAppendGrid').appendGrid('removeRow', addedRowIndex); } } }, afterRowRemoved: function (caller, rowIndex) { var rowOrder = $('#tblAppendGrid').appendGrid('getRowOrder'); uq = rowOrder[rowOrder.length - 1] $('#tblAppendGrid_date_to_'+uq+'_tigger').attr('style','display:inline'); $('#tblAppendGrid_date_to_'+uq+'_date').attr('readonly',false); $('#tblAppendGrid_rate_'+uq).attr('readonly',false); $('#tblAppendGrid_symbol_'+uq).attr('disabled',false); }, hideButtons: { moveUp: true, moveDown: true, remove: true, insert: true, } }); // wczytywanie danych do tabelki LoadDataFromInput(); // hide css classes $('thead').removeClass('ui-widget-header'); $('td').removeClass('ui-widget-header'); $('tbody').removeClass('ui-widget-content'); $('td').removeClass('ui-widget-content'); $('tfoot').removeClass('ui-widget-header'); } function formattedDate(date) { var d = new Date(date || Date.now()), month = '' + (d.getMonth() + 1), day = '' + d.getDate(), year = d.getFullYear(); if (month.length < 2) month = '0' + month; if (day.length < 2) day = '0' + day; return [day, month, year].join('.'); } function LoadDataFromInput(){ var pos = $.parseJSON($("input[name='positions']").val()); $('#tblAppendGrid').appendGrid('load', pos); var count = $('#tblAppendGrid').appendGrid('getRowCount'); for (var i = 0; i < count; i++) { var data2 = $('#tblAppendGrid').appendGrid('getRowValue', i); $('#tblAppendGrid').appendGrid('setCtrlValue', 'rate', i, FormatNumber(data2.rate)); if(i<(count-1)){ var uq = $('#tblAppendGrid').appendGrid('getUniqueIndex', i); $('#tblAppendGrid_date_from_'+uq+'_tigger').attr('style','display:none'); $('#tblAppendGrid_date_to_'+uq+'_tigger').attr('style','display:none'); $('#tblAppendGrid_date_from_'+uq+'_date').attr('readonly',true); $('#tblAppendGrid_date_to_'+uq+'_date').attr('readonly',true); $('#tblAppendGrid_rate_'+uq).attr('readonly',true); $('#tblAppendGrid_symbol_'+uq).attr('disabled',true); } else { var uq = $('#tblAppendGrid').appendGrid('getUniqueIndex', i); $('#tblAppendGrid_date_from_'+uq+'_tigger').attr('style','display:none'); $('#tblAppendGrid_date_from_'+uq+'_date').attr('readonly',true); } } }