/************************************* * SPDX-FileCopyrightText: 2009-2020 Vtenext S.r.l. * SPDX-License-Identifier: AGPL-3.0-only ************************************/ /* crmv@106857 crmv@118977 */ function vtenextwebservicesproto(){ var $ = jQuery; var skip_tablefields_columns = ['seq','parent_id','assigned_user_id','createdtime','modifiedtime']; function md5(str){ return hex_md5(str); } function mergeObjects(obj1, obj2){ var res = {}; for(var k in obj1){ res[k] = obj1[k]; } for(var k in obj2){ res[k] = obj2[k]; } return res; } var cacheGet = {}; function doGet(params, callback){ if (this.cacheRequests) { var cache_key = btoa($.param(params)); if(!cacheGet[cache_key]) cacheGet[cache_key] = $.get(this.serviceUrl, params); cacheGet[cache_key].done(callback); } else { $.get(this.serviceUrl, params, function(result){ callback(result); }); } } var cachePost = {}; function doPost(params, callback){ if (this.cacheRequests) { var cache_key = btoa($.param(params)); if(!cachePost[cache_key]) cachePost[cache_key] = $.post(this.serviceUrl, params); cachePost[cache_key].done(callback); } else { $.post(this.serviceUrl, params, function(result){ callback(result); }); } } function get(operation, parameters, callback){ response = this.doGet(mergeObjects(parameters, {'operation':operation, 'sessionName':this.sessionId}), function(response){ if(response['success']==true){ callback(true,response['result']); }else{ callback(false,response['error']); } }); } function post(operation, parameters, callback){ response = this.doPost(mergeObjects(parameters, {'operation':operation, 'sessionName':this.sessionId}), function(response){ if(response['success']==true){ callback(true,response['result']); }else{ callback(false,response['error']); } }); } function login(callback){ var self = this; response = this.doGet({operation:'getchallenge', username:this.username}, function(response){ if(response['success']==true){ var token = response['result']['token']; var encodedKey = md5(token+self.accessKey); self.doPost({operation:'login', username: self.username, accessKey: encodedKey}, function (response){ if(response['success']==true){ self.sessionId = response['result']['sessionName']; self.userId = response['result']['userId']; callback(true); }else{ callback(false,response['error']); } }); }else{ callback(false,response['error']); } }); } function logout(callback){ this.post('logout', {}, callback); } function listTypes(callback){ this.get('listtypes', {}, function (status, result){ if(status){ callback(true, result['types']); }else{ callback(false, result); } }); } var describeObjectModLightDone = {}; //crmv@186085 function describeObject(name, callback){ var me = this; //crmv@120039 var operation = 'describe'; if (me.show_describe_hidden_fields) operation = 'describe_all'; me.get(operation, {'elementType':name}, function(statusOk, result) { //crmv@120039e if (statusOk && result && result.fields) { // ok //crmv@153321_5 var table_fields_count = 0; for (var i=0; i