automizy-js-api
Version:
JavaScript API library for Automizy Marketing Automation software
180 lines (169 loc) • 8.22 kB
JavaScript
define([
'automizyApi/core',
'automizyApi/token'
], function ($AA) {
$AA.refreshTable = function (table) {
if (typeof table === 'undefined') {
return false;
}
var apiName = table.data('apiName');
var apiUrlSuffix = table.data('apiUrlSuffix');
var apiItemsDir = table.data('apiItemsDir');
var apiFormat = table.data('apiFormat');
var refreshComplete = table.data('refreshComplete');
var orderBy = table.d.orderBy;
var orderDir = table.d.orderDir;
var limit = table.perPage();
var page = table.page();
var fields = table.data('fields') || false;
var showId = false;
if(typeof table.data('xhr') !== 'undefined'){
table.data('xhr').abort();
}
if(typeof apiUrlSuffix === 'undefined'){
apiUrlSuffix = '';
}
if(typeof apiItemsDir === 'undefined'){
apiItemsDir = false;
}
if(typeof apiFormat === 'undefined'){
apiFormat = false;
}
if(typeof refreshComplete !== 'function'){
refreshComplete = function(){};
}
if(fields === false) {
fields = [];
var cols = table.cols();
for (var i = table.selectable() ? 1 : 0; i < cols.length; i++) {
if (cols[i].active()) {
fields.push(cols[i].name());
}
}
if ($.inArray('id', fields) === -1) {
fields.push('id');
}else{
showId = true;
}
fields = fields.join();
}else{
fields = JSON.stringify(fields);
}
var where = [];
if((typeof table.d.searchValue === 'string' || typeof table.d.searchValue === 'number') && table.d.searchValue.length > 0){
var cols = table.cols();
for(var i = 0; i < cols.length; i++){
console.log(cols[i]);
var scols = table.d.settings.cols;
var ss = {};
for(var j = 0; j < scols.length; j++){
ss[scols[j].name || 0] = scols[j].searchable===false?false:true;
}
console.log(ss,scols);
var name = cols[i].name();
if(ss[name]){
where.push([[name, 'like', '%'+table.d.searchValue+'%']]);
}
}
}
table.d.$checkboxCheckAll.prop('checked', false).change();
table.loading();
var xhr = $AA[apiName]().links('').fields(fields).limit(limit).page(page).where(where).orderBy(orderBy).orderDir(orderDir).urlSuffix(apiUrlSuffix).format(apiFormat).get().done(function (data) {
table.pageMax(data.page_count);
if(apiItemsDir !== false){
var dir = apiItemsDir.split('/');
var records = data;
for(var i = 0; i < dir.length; i++){
records = records[dir[i]];
}
}else{
var records = data['_embedded'][apiName];
}
var length = records.length;
//if (length > 0) {
var rows = [];
for (var i = 0; i < length; i++) {
var row = {recordId: records[i]['id'] || 0, values: {}};
for (var j in records[i]) {
if (j.charAt(0) === '_' || (j === 'id' && !showId)) {
continue;
}
if (records[i][j] !== null && (typeof records[i][j] === 'object' || typeof records[i][j] === 'array')) {
if($.isArray(records[i][j])){
row.values[j] = records[i][j];
}else{
var isDateObj = false;
var dateObjCount = 0;
var isCodeValueObj = false;
var codeValueObjCount = 0;
var isCustomFields = false;
for (var k in records[i][j]) {
if (k === 'date' || k === 'timezone' || k === 'timezone_type') {
dateObjCount++;
}
if (k === 'code' || k === 'value') {
codeValueObjCount++;
}
isDateObj = false;
isCodeValueObj = false;
isCustomFields = false;
if (dateObjCount === 3) {
isDateObj = true;
} else if (codeValueObjCount == 2) {
isCodeValueObj = true;
} else if(j === 'customFields'){
isCustomFields = true;
}
}
if (isDateObj) {
row.values[j] = records[i][j]['date'] || records[i][j][Object.keys(records[i][j])[0]] || '';
} else if (isCodeValueObj) {
row.values[j] = records[i][j]['value'] || records[i][j][Object.keys(records[i][j])[0]] || '';
} else if (isCustomFields) {
for (var l in records[i][j]) {
if (records[i][j][l] !== null && (typeof records[i][j][l] === 'array' || typeof records[i][j][l] === 'object')) {
if($.isArray(records[i][j][l])){
row.values['customFields.' + l] = records[i][j][l];
if(records[i][j][l].length > 0){
row.values['customFields.' + l] = '<ul style="margin: 0; padding-left: 17px;"><li>' + records[i][j][l].join('</li><li>') + '</li></ul>';
}
}else {
row.values['customFields.' + l] = records[i][j][l]['date'] || records[i][j][l]['value'] || records[i][j][l][Object.keys(records[i][j][l])[0]] || '';
}
} else {
row.values['customFields.' + l] = records[i][j][l];
}
}
} else {
row.values[j] = records[i][j];
}
}
} else {
row.values[j] = records[i][j];
}
}
rows.push(row);
}
table.deleteRows();
var col = table.getColByName('customFields');
if(col !== false){
col.$cells().css('display', 'none');
}
table.rows(rows);
/*for(var i = 0; i < rows.length; i++){
var ind = i;
(function(index) {
setTimeout(function(){
table.addRows(rows[index]);
}, i);
})(i);
}*/
table.d.stepFunction();
setTimeout(function(){
refreshComplete.apply(table, [table, table.d.$widget]);
}, 10);
//}
});
table.data('xhr', xhr);
}
});