automizy-js-api
Version:
JavaScript API library for Automizy Marketing Automation software
533 lines (502 loc) • 19.2 kB
JavaScript
define([
'automizyApi/core',
'automizyApi/token'
], function ($AA) {
$AA.initBasicFunctions = function (module, moduleName) {
var module = module || false;
if (module === false)
return false;
var moduleName = moduleName || false;
if (moduleName === false)
return false;
var moduleNameLower = moduleName.toLowerCase();
var moduleNameLowerFirst = moduleName.charAt(0).toLowerCase() + moduleName.slice(1);
var p = module.prototype;
p.init = p.init || function(){
var t = this;
if(typeof t.d.urlSuffix === 'undefined'){
t.d.urlSuffix = '';
}
if(typeof t.d.itemsDir === 'undefined'){
t.d.itemsDir = false;
}
if(typeof t.d.fields === 'undefined'){
t.d.fields = false;
}
if(typeof t.d.format === 'undefined'){
t.d.format = false;
}
if(typeof t.d.limit === 'undefined'){
t.d.limit = false;
}
if(typeof t.d.page === 'undefined'){
t.d.page = false;
}
if(typeof t.d.order_by === 'undefined'){
t.d.order_by = false;
}
if(typeof t.d.order_dir === 'undefined'){
t.d.order_dir = false;
}
if(typeof t.d.links === 'undefined'){
t.d.links = false;
}
if(typeof t.d.set === 'undefined'){
t.d.set = {};
}
};
p.initParameter = p.initParameter || function(obj){
var t = this;
if (typeof obj.urlSuffix !== 'undefined')
t.urlSuffix(obj.urlSuffix);
if (typeof obj.itemsDir !== 'undefined')
t.itemsDir(obj.itemsDir);
if (typeof obj.format !== 'undefined')
t.format(obj.format);
if (typeof obj.fields !== 'undefined')
t.fields(obj.fields);
if (typeof obj.limit !== 'undefined')
t.limit(obj.limit);
if (typeof obj.page !== 'undefined')
t.page(obj.page);
if (typeof obj.orderBy !== 'undefined' || typeof obj.order_by !== 'undefined')
t.orderBy(obj.orderBy || obj.order_by);
if (typeof obj.orderDir !== 'undefined' || typeof obj.order_dir !== 'undefined')
t.orderDir(obj.orderDir || obj.order_dir);
if (typeof obj.links !== 'undefined')
t.links(obj.links);
if (typeof obj.url !== 'undefined')
t.url(obj.url);
};
p.setOptions = p.setOptions || function(obj){
if (typeof obj.fields !== 'undefined')
t.d.option.fields = obj.fields; //mezők vesszővel
if (typeof obj.format !== 'undefined')
t.d.option.format = obj.format; //format data
if (typeof obj.limit !== 'undefined')
t.d.option.limit = obj.limit; //hány darab
if (typeof obj.page !== 'undefined')
t.d.option.page = obj.page; //hanyadik elemtől
if (typeof obj.where !== 'undefined')
t.d.option.where = obj.where; //feltétel
if (typeof obj.order_by !== 'undefined')
t.d.option.order_by = obj.order_by; //mi szerint rendezzen
if (typeof obj.order_dir !== 'undefined')
t.d.option.order_dir = obj.order_dir; //desc vagy asc
if (typeof obj.order !== 'undefined')
t.d.option.order = obj.order; //name:desc
if (typeof obj.links !== 'undefined')
t.d.option.links = obj.links; //milyen linkek kellenek vesszővel
}
p.getDataFromParameter = p.getDataFromParameter || function(obj){
var data = {};
if (obj.fields !== false)
data.fields = obj.fields;
if (obj.format !== false)
data.format = obj.format;
if (obj.limit !== false)
data.limit = obj.limit;
if (obj.page !== false)
data.page = obj.page;
if (obj.where !== false)
data.where = obj.where;
if (obj.order_dir !== false)
data.order_dir = obj.order_dir;
if (obj.order_by !== false)
data.order_by = obj.order_by;
if (obj.order !== false)
data.order = obj.order;
if (obj.links !== false)
data.links = obj.links;
return data;
};
p.get = p.get || function (obj, isMod, async) {
var t = this;
var isMod = true; //modify the options from the 'obj' object
if(typeof async !== 'undefined'){
async = $AA.parseBoolean(async);
}else{
var async = true;
}
if (typeof isMod !== 'undefined') {
isMod = $AA.parseBoolean(isMod);
}
if (isMod && (typeof obj === 'object' || typeof obj === 'array')) {
t.setOptions(obj)
}
var data = {};
if (typeof obj === 'object' || typeof obj === 'array') {
data = t.getDataFromParameter(obj);
}else{
for(var i in t.d.option){
if(t.d.option[i] !== false){
data[i] = t.d.option[i];
}
}
}
if(typeof data.order === 'undefined' && typeof data.order_by !== 'undefined'){
data.order = data.order_by+':'+data.order_dir || 'asc'
}
var $ajax = $.ajax({
url: t.d.url + t.d.urlSuffix,
type: 'GET',
dataType: 'json',
async:async,
data: data,
headers: {Authorization: 'Bearer ' + $AA.token().get()},
error: $AA.token().error()
});
if(!async){
return $ajax.responseJSON;
}
return $ajax;
};
p.getSync = p.getSync || function(obj, isMod){
var obj = obj || false;
var isMod = isMod || false;
return this.get.apply(this, [obj, isMod, false]);
};
p.export = p.export || function (obj, isMod, async) {
var t = this;
var isMod = true;
if(typeof async !== 'undefined'){
async = $AA.parseBoolean(async);
}else{
var async = true;
}
if (typeof isMod !== 'undefined') {
isMod = $AA.parseBoolean(isMod);
}
if (isMod && (typeof obj === 'object' || typeof obj === 'array')) {
t.setOptions(obj)
}
var data = {};
if (typeof obj === 'object' || typeof obj === 'array') {
data = t.getDataFromParameter(obj);
}else{
for(var i in t.d.option){
if(t.d.option[i] !== false){
data[i] = t.d.option[i];
}
}
}
if(typeof data.order === 'undefined' && typeof data.order_by !== 'undefined'){
data.order = data.order_by+':'+data.order_dir || 'asc'
}
data.showContent = false;
var $ajax = $.ajax({
xhr: function()
{
var xhr = new window.XMLHttpRequest();
xhr.addEventListener("progress", function(evt){
if (evt.lengthComputable) {
var percentComplete = evt.loaded / evt.total;
console.log(parseInt(percentComplete*100));
}
}, false);
return xhr;
},
url: t.d.url + t.d.urlSuffix,
type: 'GET',
//dataType: 'json',
async:async,
data: data,
headers: {
Authorization: 'Bearer ' + $AA.token().get(),
Accept: 'text/csv'
},
error: $AA.token().error()
});
if(!async){
return $ajax.responseJSON;
}
return $ajax;
};
p.insert = p.insert || function(obj, async){
var t = this;
if(typeof async !== 'undefined'){
async = $AA.parseBoolean(async);
}else{
var async = true;
}
var data = obj;
var $ajax = $.ajax({
url: t.d.url + t.d.urlSuffix,
type: 'POST',
dataType: 'json',
async:async,
data: data,
headers: {Authorization: 'Bearer ' + $AA.token().get()},
error: $AA.token().error()
});
if(!async){
return $ajax.responseJSON;
}
return $ajax;
};
p.insertSync = p.insertSync || function(obj){
var obj = obj || false;
return this.insert.apply(this, [obj, false]);
};
p.update = p.update || function(obj, id, async){
var t = this;
if(typeof async !== 'undefined'){
async = $AA.parseBoolean(async);
}else{
var async = true;
}
var data = obj;
var id = id || obj.id || 0;
delete data.id;
var $ajax = $.ajax({
url: t.d.url + '/' + id + t.d.urlSuffix,
type: 'PATCH',
dataType: 'json',
async:async,
data: data,
headers: {Authorization: 'Bearer ' + $AA.token().get()},
error: $AA.token().error()
});
if(!async){
return $ajax.responseJSON;
}
return $ajax;
};
p.updateSync = p.updateSync || function(obj, id){
var obj = obj || false;
var id = id || false;
return this.update.apply(this, [obj, id, false]);
};
p.delete = p.delete || function(id, async){
var t = this;
if(typeof async !== 'undefined'){
async = $AA.parseBoolean(async);
}else{
var async = true;
}
var $ajax = $.ajax({
url: t.d.url+'/'+id + t.d.urlSuffix,
type: 'DELETE',
dataType: 'json',
async:async,
headers: {Authorization: 'Bearer ' + $AA.token().get()},
error: $AA.token().error()
});
if(!async){
return $ajax.responseJSON;
}
return $ajax;
};
p.deleteSync = p.deleteSync || function(id){
var id = id || false;
return this.delete.apply(this, [id, false]);
};
/*
[
[
['name', '=', 'Tilda'],
['age', '<=', 18]
],
[
['name', 'like', 'Thom%'],
['age', 'in', [18, 20, 21]]
],
[
['name', 'like', 'Thom%'],
['age', 'between', [18, 22]]
]
]
*/
p.getAll = p.getAll || function () {
var t = this;
return $.ajax({
url: t.d.url + t.d.urlSuffix,
type: 'GET',
dataType: 'json',
headers: {Authorization: 'Bearer ' + $AA.token().get()},
error: $AA.token().error()
});
};
p.getRecordById = p.getRecordById || function (id) {
var t = this;
var data = {};
for(var i in t.d.option){
if(t.d.option[i] !== false){
data[i] = t.d.option[i];
}
}
if(typeof data.order === 'undefined' && typeof data.order_by !== 'undefined'){
data.order = data.order_by+':'+data.order_dir || 'asc'
}
return $.ajax({
url: t.d.url + '/' + id + t.d.urlSuffix,
type: 'GET',
dataType: 'json',
data: data,
headers: {Authorization: 'Bearer ' + $AA.token().get()},
error: $AA.token().error()
});
};
p.getFieldById = p.getFieldById || function (id, fieldName) {
var t = this;
var fieldTree = fieldName.split('.');
return $.ajax({
url: t.d.url + '/' + id + t.d.urlSuffix,
type: 'GET',
dataType: 'json',
data: {fields: fieldTree[0], links: ''},
headers: {Authorization: 'Bearer ' + $AA.token().get()},
converters: {
'text json': function (result) {
var field = $.parseJSON(result)[fieldTree[0]];
for (var i = 1; i < fieldTree.length; i++) {
field = field[fieldTree[i]];
}
return field;
}
},
error: $AA.token().error()
});
};
p.getAllIdNamePair = p.getAllIdNamePair || function (nameFieldName) {
var t = this;
var fieldTree = nameFieldName.split('.');
return $.ajax({
url: t.d.url + t.d.urlSuffix,
type: 'GET',
dataType: 'json',
data: {fields: 'id,' + fieldTree[0], links: ''},
headers: {Authorization: 'Bearer ' + $AA.token().get()},
converters: {
'text json': function (result) {
var res = $.parseJSON(result)._embedded;
res = res[Object.keys(res)[0]];
var arr = [];
for (var i in res) {
var field = res[i][fieldTree[0]];
for (var j = 1; j < fieldTree.length; j++) {
field = field[fieldTree[j]];
}
arr.push([res[i]['id'], field]);
}
return arr;
}
},
error: $AA.token().error()
});
};
p.urlSuffix = p.urlSuffix || function (urlSuffix) {
var t = this;
if (typeof urlSuffix !== 'undefined') {
t.d.urlSuffix = urlSuffix;
return t;
}
return t.d.urlSuffix;
};
p.itemsDir = p.itemsDir || function (itemsDir) {
var t = this;
if (typeof itemsDir !== 'undefined') {
t.d.itemsDir = itemsDir;
return t;
}
return t.d.itemsDir;
};
p.fields = p.fields || function (fields) {
var t = this;
if (typeof fields !== 'undefined') {
if(fields !== false && fields.length > 0){
t.d.option.fields = fields;
}
return t;
}
return t.d.option.fields;
};
p.limit = p.limit || function (limit) {
var t = this;
if (typeof limit !== 'undefined') {
t.d.option.limit = limit;
return t;
}
return t.d.option.limit;
};
p.format = p.format || function (format) {
var t = this;
if (typeof format !== 'undefined') {
t.d.option.format = format;
return t;
}
return t.d.option.format;
};
p.page = p.page || function (page) {
var t = this;
if (typeof page !== 'undefined') {
t.d.option.page = page;
return t;
}
return t.d.option.page;
};
p.where = p.where || function (where) {
var t = this;
if (typeof where !== 'undefined') {
t.d.option.where = where;
return t;
}
return t.d.option.where;
};
p.orderBy = p.order_by = p.orderBy || p.order_by || function (order_by) {
var t = this;
if (typeof order_by !== 'undefined') {
if(order_by === false)return t;
t.d.option.order_by = order_by;
return t;
}
return t.d.option.order_by;
};
p.orderDir = p.order_dir = p.orderDir || p.order_dir || function (order_dir) {
var t = this;
if (typeof order_dir !== 'undefined') {
if(order_dir === false)return t;
t.d.option.order_dir = order_dir;
return t;
}
return t.d.option.order_dir;
};
p.order = p.order || function (order) {
var t = this;
if (typeof order !== 'undefined') {
if(order === false)return t;
t.d.option.order = order;
return t;
}
return t.d.option.order;
};
p.links = p.links || function (links) {
var t = this;
if (typeof links !== 'undefined') {
t.d.option.links = links;
return t;
}
return t.d.option.links;
};
p.set = p.values = p.set || p.values || function(set, value){
var t = this;
if (typeof set === 'string' && typeof value !== 'undefined') {
t.d.option.set[set] = value;
return t;
}
if (typeof set === 'object' || typeof set === 'array') {
for(var i in set){
t.d.option.set[i] = set[i];
}
return t;
}
return t.d.option.set;
};
$AA.m[moduleName] = module;
$AA[moduleNameLowerFirst] = function (obj) {
var t = new module(obj);
return t;
};
};
})
;