Release note v15.3
------------------ ### Fixes * Fix issue: classes should be loaded even the module is disabled * Deleting the only Admin user is not allowed * Fixes for handling non UTF-8 * Fix for non-mandatory select boxes are shown as mandatory
This commit is contained in:
@@ -680,6 +680,299 @@ ApproveModuleAdapter.method('getActionButtonsHtml', function(id,data) {
|
||||
|
||||
|
||||
|
||||
/**
|
||||
* TableEditAdapter
|
||||
*/
|
||||
|
||||
function TableEditAdapter(endPoint) {
|
||||
this.initAdapter(endPoint);
|
||||
this.cellDataUpdates = {};
|
||||
this.modulePath = '';
|
||||
this.rowFieldName = '';
|
||||
this.columnFieldName = '';
|
||||
this.rowTable = '';
|
||||
this.columnTable = '';
|
||||
this.valueTable = '';
|
||||
this.csvData = [];
|
||||
}
|
||||
|
||||
TableEditAdapter.inherits(AdapterBase);
|
||||
|
||||
TableEditAdapter.method('setModulePath', function(path) {
|
||||
this.modulePath = path;
|
||||
});
|
||||
|
||||
TableEditAdapter.method('setRowFieldName', function(name) {
|
||||
this.rowFieldName = name;
|
||||
});
|
||||
|
||||
TableEditAdapter.method('setTables', function(rowTable, columnTable, valueTable) {
|
||||
this.rowTable = rowTable;
|
||||
this.columnTable = columnTable;
|
||||
this.valueTable = valueTable;
|
||||
});
|
||||
|
||||
TableEditAdapter.method('setColumnFieldName', function(name) {
|
||||
this.columnFieldName = name;
|
||||
});
|
||||
|
||||
TableEditAdapter.method('getDataMapping', function() {
|
||||
return [
|
||||
];
|
||||
});
|
||||
|
||||
|
||||
TableEditAdapter.method('getFormFields', function() {
|
||||
return [
|
||||
];
|
||||
});
|
||||
|
||||
TableEditAdapter.method('get', function() {
|
||||
this.getAllData();
|
||||
});
|
||||
|
||||
TableEditAdapter.method('getAllData', function(save) {
|
||||
var req = {};
|
||||
req.rowTable = this.rowTable;
|
||||
req.columnTable = this.columnTable;
|
||||
req.valueTable = this.valueTable;
|
||||
req = this.addAdditionalRequestData('getAllData', req);
|
||||
req.save = (save == undefined || save == null || save == false)?0:1;
|
||||
var reqJson = JSON.stringify(req);
|
||||
|
||||
var callBackData = [];
|
||||
callBackData['callBackData'] = [];
|
||||
callBackData['callBackSuccess'] = 'getAllDataSuccessCallBack';
|
||||
callBackData['callBackFail'] = 'getAllDataFailCallBack';
|
||||
|
||||
this.customAction('getAllData',this.modulePath,reqJson,callBackData);
|
||||
});
|
||||
|
||||
TableEditAdapter.method('getDataItem', function(row,column,allData) {
|
||||
var columnData = allData[1];
|
||||
var rowData = allData[0];
|
||||
var serverData = allData[2];
|
||||
|
||||
if(column == -1){
|
||||
return rowData[row].name;
|
||||
}else{
|
||||
return this.getDataItemByKeyValues(this.rowFieldName, rowData[row].id, this.columnFieldName, columnData[column].id, serverData);
|
||||
}
|
||||
});
|
||||
|
||||
TableEditAdapter.method('getDataItemByKeyValues', function(rowKeyName, rowKeyVal, colKeyName, colKeyVal, data) {
|
||||
for(var i=0;i<data.length;i++){
|
||||
if(data[i][rowKeyName] == rowKeyVal && data[i][colKeyName] == colKeyVal){
|
||||
return (data[i].amount != undefined && data[i].amount != null)?data[i].amount:"";
|
||||
}
|
||||
}
|
||||
return "";
|
||||
});
|
||||
|
||||
TableEditAdapter.method('getAllDataSuccessCallBack', function(allData) {
|
||||
|
||||
var serverData = allData[2];
|
||||
var columnData = allData[1];
|
||||
var rowData = allData[0];
|
||||
var data = [];
|
||||
for(var i=0;i<rowData.length;i++){
|
||||
var row = [];
|
||||
for(var j=-1;j<columnData.length;j++){
|
||||
row[j+1] = this.getDataItem(i, j,allData);
|
||||
}
|
||||
data.push(this.preProcessTableData(row));
|
||||
}
|
||||
this.sourceData = serverData;
|
||||
|
||||
|
||||
this.tableData = data;
|
||||
this.setHeaders(columnData,rowData);
|
||||
this.createTable(this.getTableName());
|
||||
$("#"+this.getTableName()+'Form').hide();
|
||||
$("#"+this.getTableName()).show();
|
||||
|
||||
this.csvData = [];
|
||||
|
||||
var tmpRow = [];
|
||||
for(var i=0;i<columnData.length;i++){
|
||||
tmpRow.push(columnData[i].name);
|
||||
}
|
||||
tmpRow = this.modifyCSVHeader(tmpRow);
|
||||
this.csvData.push(tmpRow);
|
||||
|
||||
for(var i=0; i<data.length; i++){
|
||||
this.csvData.push(data[i]);
|
||||
}
|
||||
|
||||
});
|
||||
|
||||
TableEditAdapter.method('modifyCSVHeader', function(header) {
|
||||
return header;
|
||||
});
|
||||
|
||||
TableEditAdapter.method('getAllDataFailCallBack', function(callBackData,serverData) {
|
||||
|
||||
});
|
||||
|
||||
TableEditAdapter.method('setHeaders', function(columns, rows) {
|
||||
var headers = [];
|
||||
headers.push({ "sTitle": "", sWidth:"180px;"});
|
||||
var sclass = "";
|
||||
for(var i=0;i<columns.length;i++){
|
||||
|
||||
if(columns[i].editable == undefined || columns[i].editable == null || columns[i].editable == 'Yes'){
|
||||
sclass = "editcell";
|
||||
}else{
|
||||
sclass = "";
|
||||
}
|
||||
headers.push({ "sTitle": columns[i].name,sClass: sclass,
|
||||
"fnCreatedCell": function (nTd, sData, oData, iRow, iCol) {
|
||||
$(nTd).data('colId',columns[iCol-1].id);
|
||||
$(nTd).data('rowId',rows[iRow].id);
|
||||
|
||||
}});
|
||||
}
|
||||
|
||||
this.headers = headers;
|
||||
});
|
||||
|
||||
TableEditAdapter.method('getHeaders', function() {
|
||||
return this.headers;
|
||||
});
|
||||
|
||||
TableEditAdapter.method('createTable', function(elementId) {
|
||||
|
||||
var data = this.getTableData();
|
||||
var headers = this.getHeaders();
|
||||
|
||||
if(this.showActionButtons()){
|
||||
headers.push({ "sTitle": "", "sClass": "center" });
|
||||
}
|
||||
|
||||
|
||||
if(this.showActionButtons()){
|
||||
for(var i=0;i<data.length;i++){
|
||||
data[i].push(this.getActionButtonsHtml(data[i][0],data[i]));
|
||||
}
|
||||
}
|
||||
var html = "";
|
||||
html = this.getTableTopButtonHtml()+'<div class="box-body table-responsive"><table cellpadding="0" cellspacing="0" border="0" class="table table-bordered table-striped" id="grid"></table></div>';
|
||||
|
||||
//Find current page
|
||||
var activePage = $('#'+elementId +" .dataTables_paginate .active a").html();
|
||||
var start = 0;
|
||||
if(activePage != undefined && activePage != null){
|
||||
start = parseInt(activePage, 10)*15 - 15;
|
||||
}
|
||||
|
||||
$('#'+elementId).html(html);
|
||||
|
||||
var dataTableParams = {
|
||||
"oLanguage": {
|
||||
"sLengthMenu": "_MENU_ records per page"
|
||||
},
|
||||
"aaData": data,
|
||||
"aoColumns": headers,
|
||||
"bSort": false,
|
||||
"iDisplayLength": 15,
|
||||
"iDisplayStart": start
|
||||
};
|
||||
|
||||
|
||||
var customTableParams = this.getCustomTableParams();
|
||||
|
||||
$.extend(dataTableParams, customTableParams);
|
||||
|
||||
$('#'+elementId+' #grid').dataTable( dataTableParams );
|
||||
|
||||
$(".dataTables_paginate ul").addClass("pagination");
|
||||
$(".dataTables_length").hide();
|
||||
$(".dataTables_filter input").addClass("form-control");
|
||||
$(".dataTables_filter input").attr("placeholder","Search");
|
||||
$(".dataTables_filter label").contents().filter(function(){
|
||||
return (this.nodeType == 3);
|
||||
}).remove();
|
||||
//$('.tableActionButton').tooltip();
|
||||
$('#'+elementId+' #grid').editableTableWidget();
|
||||
|
||||
$('#'+elementId+' #grid .editcell').on('validate', function(evt, newValue) {
|
||||
|
||||
return modJs.validateCellValue($(this), evt, newValue);
|
||||
|
||||
});
|
||||
});
|
||||
|
||||
TableEditAdapter.method('addCellDataUpdate' , function(colId, rowId, data) {
|
||||
|
||||
this.cellDataUpdates[colId+"="+rowId] = [colId, rowId, data];
|
||||
});
|
||||
|
||||
TableEditAdapter.method('addAdditionalRequestData' , function(type, req) {
|
||||
return req;
|
||||
});
|
||||
|
||||
TableEditAdapter.method('sendCellDataUpdates' , function() {
|
||||
var req = this.cellDataUpdates;
|
||||
req.rowTable = this.rowTable;
|
||||
req.columnTable = this.columnTable;
|
||||
req.valueTable = this.valueTable;
|
||||
req = this.addAdditionalRequestData('updateData', req);
|
||||
var reqJson = JSON.stringify(req);
|
||||
|
||||
var callBackData = [];
|
||||
callBackData['callBackData'] = [];
|
||||
callBackData['callBackSuccess'] = 'updateDataSuccessCallBack';
|
||||
callBackData['callBackFail'] = 'updateDataFailCallBack';
|
||||
this.showLoader();
|
||||
this.customAction('updateData',this.modulePath,reqJson,callBackData);
|
||||
});
|
||||
|
||||
TableEditAdapter.method('updateDataSuccessCallBack', function(callBackData,serverData) {
|
||||
this.hideLoader();
|
||||
modJs.cellDataUpdates = {};
|
||||
modJs.get();
|
||||
});
|
||||
|
||||
TableEditAdapter.method('updateDataFailCallBack', function(callBackData,serverData) {
|
||||
this.hideLoader();
|
||||
});
|
||||
|
||||
TableEditAdapter.method('sendAllCellDataUpdates' , function() {
|
||||
|
||||
var req = this.cellDataUpdates;
|
||||
req.rowTable = this.rowTable;
|
||||
req.columnTable = this.columnTable;
|
||||
req.valueTable = this.valueTable;
|
||||
req = this.addAdditionalRequestData('updateAllData', req);
|
||||
var reqJson = JSON.stringify(req);
|
||||
|
||||
var callBackData = [];
|
||||
callBackData['callBackData'] = [];
|
||||
callBackData['callBackSuccess'] = 'updateDataAllSuccessCallBack';
|
||||
callBackData['callBackFail'] = 'updateDataAllFailCallBack';
|
||||
this.showLoader();
|
||||
this.customAction('updateAllData',this.modulePath,reqJson,callBackData);
|
||||
});
|
||||
|
||||
TableEditAdapter.method('updateDataAllSuccessCallBack', function(callBackData,serverData) {
|
||||
this.hideLoader();
|
||||
modJs.cellDataUpdates = {};
|
||||
modJs.getAllData(true);
|
||||
});
|
||||
|
||||
TableEditAdapter.method('updateDataAllFailCallBack', function(callBackData,serverData) {
|
||||
this.hideLoader();
|
||||
});
|
||||
|
||||
TableEditAdapter.method('showActionButtons' , function() {
|
||||
return false;
|
||||
});
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
/**
|
||||
* RequestCache
|
||||
|
||||
Reference in New Issue
Block a user