Commit 98711b45 authored by Sergey Antonovich's avatar Sergey Antonovich 🇯🇵

Merge branch 'patch-2' into 'master'

Update jSynergy.js

See merge request community/synergy-components!5
parents 3555d8a9 31e6820d
/**
* Класс для работы с Synergy by yandexphp
*/
String.prototype.encodeURICyrillic = function(){
return this.replace(/[А-Я]/ig,function(s){return encodeURIComponent(""+s);});
}
function __classSynergy(){
const __SERVER = '__SERVER__';
function __classSynergy() {
let __SERVER = '__SERVER__';
let __CLASS__;
let __EXECUTE__;
let __LOADFORM__;
......@@ -34,30 +29,30 @@ function __classSynergy(){
let __HOST_ORIGIN__;
let __BASIC_AUTH__;
let __checkAccess = function(){
let __checkAccess = function () {
return !!__EXECUTE__;
}
this.setData = function(data){
this.setData = function (data) {
__DATA__ = data;
};
/**
* Установка подключения к контейнеру
* @param {String} host С каким хостом будем работать. Пример: https://site.arta.pro/Synergy
* @param {String} host С каким хостом будем работать. Пример: https://site.arta.pro/Synergy/
* @param {String} login Логин или $session или $key пользователя с кем будем работать
* @param {String} password Пароль или sso_hash или access_token пользователя
*/
this.setConnection = function(host,login,password){
if(arguments.length < 3) return;
__HOST__ = (/(.+?)\/\w+\//i.test(host) ? host.toLowerCase().replace(/(\w)(\/.+)/,'$1/Synergy/') : null);
this.setConnection = function (host, login, password) {
if (arguments.length < 3) return;
__HOST__ = (/(.+?)\/\w+\//i.test(host) ? host.toLowerCase().replace(/(\w)(\/.+)/, '$1/Synergy/') : null);
__PROTOCOL__ = __HOST__ ? __HOST__.match(/(https?)/i)[1] : null;
__HOSTNAME__ = __HOST__ ? __HOST__.replace(/(https?|:|\/\/|\/.+)/gi,'') : null;
__HOSTNAME__ = __HOST__ ? __HOST__.replace(/(https?|:|\/\/|\/.+)/gi, '') : null;
__HOST_ORIGIN__ = __HOST__ ? __HOST__.match(/(.+?)\/\w+\//i)[1] : null;
__LOGIN__ = (login = "" + login).encodeURICyrillic();
__PASSWORD__ = (password = "" + password).encodeURICyrillic();
__TYPE_CONNECTED__ = (typeof btoa === 'undefined' || !__HOST__ ? __SERVER__ : __CLIENT__);
__BASIC_AUTH__ = (typeof btoa === 'undefined' ? __LOGIN__+':'+__PASSWORD__ : btoa(encodeURIComponent(__LOGIN__+':'+__PASSWORD__)));
__BASIC_AUTH__ = (typeof btoa === 'undefined' ? __LOGIN__ + ':' + __PASSWORD__ : btoa(encodeURIComponent(__LOGIN__ + ':' + __PASSWORD__)));
__LOADFORM__ = true;
var connectToList = {
host: __HOST__,
......@@ -68,8 +63,8 @@ function __classSynergy(){
password: __PASSWORD__,
basic: __BASIC_AUTH__
};
var rewrite = __CONNECT_LIST__[__HOSTNAME__] && JSON.stringify(__CONNECT_LIST__[__HOSTNAME__]).replace(/"index".*?,/,'') != JSON.stringify(connectToList);
if(!__CONNECT_LIST__[__HOSTNAME__] || rewrite){
var rewrite = __CONNECT_LIST__[__HOSTNAME__] && JSON.stringify(__CONNECT_LIST__[__HOSTNAME__]).replace(/"index".*?,/, '') != JSON.stringify(connectToList);
if (!__CONNECT_LIST__[__HOSTNAME__] || rewrite) {
connectToList.index = (Object.keys(__CONNECT_LIST__).length + (rewrite ? 0 : 1));
__CONNECT_LIST__[__HOSTNAME__] = connectToList;
}
......@@ -79,7 +74,7 @@ function __classSynergy(){
/**
* Лист всех подключенных контейнеров
*/
this.getListConnection = function(){
this.getListConnection = function () {
return __CONNECT_LIST__;
}
......@@ -87,8 +82,8 @@ function __classSynergy(){
* Изменить подключение на указанное из существующих
* @param {Int} index Индекс контейнера из листа контейнеров
*/
this.selectConnection = function(index){
if(!__CONNECT_LIST__.length || !__CONNECT_LIST__[index]) return __TYPE_CONNECTED__;
this.selectConnection = function (index) {
if (!__CONNECT_LIST__.length || !__CONNECT_LIST__[index]) return __TYPE_CONNECTED__;
__HOST__ = __CONNECT_LIST__[index].host;
__PROTOCOL__ = __CONNECT_LIST__[index].protocol;
__HOSTNAME__ = __CONNECT_LIST__[index].hostname;
......@@ -102,8 +97,8 @@ function __classSynergy(){
/**
* Получения данных о текущем подключении к контейнеру
*/
this.getConnection = function(){
if(!__LOADFORM__) return;
this.getConnection = function () {
if (!__LOADFORM__) return;
return {
host: __HOST__,
protocol: __PROTOCOL__,
......@@ -118,15 +113,15 @@ function __classSynergy(){
/**
* Провести проверку подключения к контейнеру
*/
this.testConnect = function(){
this.testConnect = function () {
var connectData = __CLASS__.getConnection();
if(connectData && connectData.login && connectData.password){
try{
if (connectData && connectData.login && connectData.password) {
try {
return __TYPE_CONNECTED__.api('person/auth').hasOwnProperty('userid');
}catch(err){
} catch (err) {
return false;
}
}else{
} else {
return false;
}
}
......@@ -134,56 +129,56 @@ function __classSynergy(){
/**
* Получение данных по форме после подгрузки формы
*/
this.getFormData = function(){
if(!__EXECUTE__) return;
this.getFormData = function () {
if (!__EXECUTE__) return;
return __DATA__;
}
/**
* Получение `dataUUID` после подгрузки формы
*/
this.getDataUUID = function(){
if(!__EXECUTE__) return;
this.getDataUUID = function () {
if (!__EXECUTE__) return;
return __DATAUUID__;
}
/**
* Получение `nodeUUID` после подгрузки формы
*/
this.getNodeUUID = function(){
if(!__EXECUTE__) return;
this.getNodeUUID = function () {
if (!__EXECUTE__) return;
return __NODE_UUID__;
}
/**
* Получение `formUUID` после подгрузки формы
*/
this.getFormUUID = function(){
if(!__EXECUTE__) return;
this.getFormUUID = function () {
if (!__EXECUTE__) return;
return __FORM_UUID__;
}
/**
* Получение `form_version` после подгрузки формы
*/
this.getFormVersion = function(){
if(!__EXECUTE__) return;
this.getFormVersion = function () {
if (!__EXECUTE__) return;
return __FORM_VERSION__;
}
/**
* Получение `documentID` после подгрузки формы
*/
this.getDocumentID = function(){
if(!__EXECUTE__) return;
this.getDocumentID = function () {
if (!__EXECUTE__) return;
return __DOCUMENT_ID__;
}
/**
* UTF-8 encode
* @param {String} str строка
*/
this.utf8_encode = function(str){
this.utf8_encode = function (str) {
return unescape(encodeURIComponent(str));
}
......@@ -191,7 +186,7 @@ function __classSynergy(){
* UTF-8 decode
* @param {String} str строка
*/
this.utf8_decode = function(str){
this.utf8_decode = function (str) {
return decodeURIComponent(escape(str));
}
......@@ -201,8 +196,8 @@ function __classSynergy(){
* @param {Int} i число по которому будем склонять и выдавать 1 из N слов
* Example: ['Кружк[у]','Кружк[И]','Круже[К]'],4 = 58 Круже[К]
*/
this.getWordDeclination = function(arr,i){
var index = i%10==1&&i%100!=11?0:(i%10>=2&&i%10<=4&&(i%100<10||i%100>=20)?1:2);
this.getWordDeclination = function (arr, i) {
var index = i % 10 == 1 && i % 100 != 11 ? 0 : (i % 10 >= 2 && i % 10 <= 4 && (i % 100 < 10 || i % 100 >= 20) ? 1 : 2);
return {
num: i || -1,
index0: (arr[index] && index ? index : -1),
......@@ -216,13 +211,13 @@ function __classSynergy(){
* @param {Int | String} num число
* @param {Int} len кол-во нулей по умолчанию `2`
*/
this.strAddZero = function(num,len){
if(!len) len = 2;
this.strAddZero = function (num, len) {
if (!len) len = 2;
var s = '' + num;
while (s.length < len) s = '0' + s;
return s;
}
/**
* Методы работ на стороне клиента
*/
......@@ -231,12 +226,14 @@ function __classSynergy(){
* Метод загрузки формы
* @param {String | Integer} dataUUID Идентификатор данных по форме
*/
load: function(dataUUID,version){
if(!__LOADFORM__) return;
else if(!dataUUID) return;
if(arguments[2] && arguments[2] == __SERVER){
load: function (dataUUID, version) {
if (!__LOADFORM__ || !dataUUID) return;
if (arguments[2] && arguments[2] == __SERVER) {
var data = __SERVER__.api('asforms/data/' + dataUUID + (version ? '?version=' + version : ''));
if(data.hasOwnProperty('uuid') || data.hasOwnProperty('oldUuid') || data.hasOwnProperty('data')){
console.info('asforms/data/' + dataUUID + (version ? '?version=' + version : ''));
console.info(JSON.stringify(data));
if (data.hasOwnProperty('uuid') || data.hasOwnProperty('oldUuid') || data.hasOwnProperty('data')) {
__DATAUUID__ = data.uuid;
__OLD_DATAUUID__ = data.oldUuid;
__NODE_UUID__ = data.nodeUUID;
......@@ -245,29 +242,29 @@ function __classSynergy(){
__FORM_VERSION__ = data.version;
__DATA__ = data.data;
__FULL_DATA__ = data;
__DOCUMENT_ID__ = "" + (documentID ? documentID : __CLIENT__.ApiUtils.getDocumentID(dataUUID,__SERVER));
__DOCUMENT_ID__ = "" + (documentID ? documentID : __CLIENT__.ApiUtils.getDocumentID(dataUUID, __SERVER));
__EXECUTE__ = true;
__MULTIFORMSDATA__[__DATAUUID__] = __FULL_DATA__;
if(!__FORMDATA__){
if (!__FORMDATA__) {
__FORMDATA__ = {
dataUUID:__DATAUUID__,
oldDataUUID:__OLD_DATAUUID__,
documentID:__DOCUMENT_ID__,
documentChange:__DOCUMENT_CHANGE__,
formVersion:__FORM_VERSION__,
fullData:__FULL_DATA__,
nodeUUID:__NODE_UUID__,
formUUID:__FORM_UUID__,
data:__DATA__
dataUUID: __DATAUUID__,
oldDataUUID: __OLD_DATAUUID__,
documentID: __DOCUMENT_ID__,
documentChange: __DOCUMENT_CHANGE__,
formVersion: __FORM_VERSION__,
fullData: __FULL_DATA__,
nodeUUID: __NODE_UUID__,
formUUID: __FORM_UUID__,
data: __DATA__
};
}
}else{
} else {
__DATAUUID__ = __OLD_DATAUUID__ = __NODE_UUID__ = __FORM_UUID__ = __DOCUMENT_CHANGE__ = __FORM_VERSION__ = __DATA__ = __FULL_DATA__ = __DOCUMENT_ID__ = null;
__EXECUTE__ = false;
}
return __SERVER__;
}else{
__CLIENT__.api('asforms/data/' + dataUUID, function(data) {
} else {
__CLIENT__.api('asforms/data/' + dataUUID, function (data) {
__DATAUUID__ = data.uuid;
__OLD_DATAUUID__ = data.oldUuid;
__NODE_UUID__ = data.nodeUUID;
......@@ -279,22 +276,22 @@ function __classSynergy(){
__DOCUMENT_ID__ = "" + __CLIENT__.ApiUtils.getDocumentID(dataUUID);
__EXECUTE__ = true;
__MULTIFORMSDATA__[__DATAUUID__] = __FULL_DATA__;
if(!__FORMDATA__){
if (!__FORMDATA__) {
__FORMDATA__ = {
dataUUID:__DATAUUID__,
oldDataUUID:__OLD_DATAUUID__,
documentID:__DOCUMENT_ID__,
documentChange:__DOCUMENT_CHANGE__,
formVersion:__FORM_VERSION__,
fullData:__FULL_DATA__,
nodeUUID:__NODE_UUID__,
formUUID:__FORM_UUID__,
data:__DATA__
dataUUID: __DATAUUID__,
oldDataUUID: __OLD_DATAUUID__,
documentID: __DOCUMENT_ID__,
documentChange: __DOCUMENT_CHANGE__,
formVersion: __FORM_VERSION__,
fullData: __FULL_DATA__,
nodeUUID: __NODE_UUID__,
formUUID: __FORM_UUID__,
data: __DATA__
};
}
},{
}, {
async: false
}, function(err) {
}, function (err) {
__DATAUUID__ = __OLD_DATAUUID__ = __NODE_UUID__ = __FORM_UUID__ = __DOCUMENT_CHANGE__ = __FORM_VERSION__ = __DATA__ = __FULL_DATA__ = __DOCUMENT_ID__ = null;
__EXECUTE__ = false;
});
......@@ -306,25 +303,25 @@ function __classSynergy(){
* Метод загрузки нескольких форм
* @param {Array | String | Integer} dataUUIDs идентификатор(ы) данных по форме
*/
multiLoad: function(dataUUIDs){
if(!__LOADFORM__) return;
else if(!dataUUIDs) return;
if(!Array.isArray(dataUUIDs)) dataUUIDs = [dataUUIDs];
dataUUIDs.forEach(function(dataUUID){
if(arguments[1] && arguments[1] == __SERVER){
multiLoad: function (dataUUIDs) {
if (!__LOADFORM__) return;
else if (!dataUUIDs) return;
if (!Array.isArray(dataUUIDs)) dataUUIDs = [dataUUIDs];
dataUUIDs.forEach(function (dataUUID) {
if (arguments[1] && arguments[1] == __SERVER) {
var data = __SERVER__.api('asforms/data/' + dataUUID);
if(data.hasOwnProperty('uuid') || data.hasOwnProperty('oldUuid') || data.hasOwnProperty('data')){
if (data.hasOwnProperty('uuid') || data.hasOwnProperty('oldUuid') || data.hasOwnProperty('data')) {
data.documentID = (!documentID ? __SERVER__.ApiUtils.getDocumentID(dataUUID) : documentID);
__MULTIFORMSDATA__[dataUUID] = data;
}
}else{
__CLIENT__.api('asforms/data/' + dataUUID, function(data) {
} else {
__CLIENT__.api('asforms/data/' + dataUUID, function (data) {
data.documentID = __CLIENT__.ApiUtils.getDocumentID(dataUUID);
__MULTIFORMSDATA__[dataUUID] = data;
},{
}, {
async: false
});
}
}
});
return (arguments[1] && arguments[1] == __SERVER ? __SERVER__ : __CLIENT__);
},
......@@ -332,15 +329,15 @@ function __classSynergy(){
/**
* Получение данных загруженных форм
*/
getFormsList: function(){
getFormsList: function () {
return __MULTIFORMSDATA__;
},
/**
* Выбрать с какой формой будем работать
*/
selectForm: function(dataUUID){
if(!Object.keys(__MULTIFORMSDATA__).length || !__MULTIFORMSDATA__[dataUUID]) return;
selectForm: function (dataUUID) {
if (!Object.keys(__MULTIFORMSDATA__).length || !__MULTIFORMSDATA__[dataUUID]) return;
__DATAUUID__ = __MULTIFORMSDATA__[dataUUID].uuid;
__OLD_DATAUUID__ = __MULTIFORMSDATA__[dataUUID].oldUuid;
__NODE_UUID__ = __MULTIFORMSDATA__[dataUUID].nodeUUID;
......@@ -349,7 +346,7 @@ function __classSynergy(){
__FORM_VERSION__ = __MULTIFORMSDATA__[dataUUID].version;
__DATA__ = __MULTIFORMSDATA__[dataUUID].data;
__FULL_DATA__ = __MULTIFORMSDATA__[dataUUID].data;
__DOCUMENT_ID__ = ""+__TYPE_CONNECTED__.ApiUtils.getDocumentID(__DATAUUID__);
__DOCUMENT_ID__ = "" + __TYPE_CONNECTED__.ApiUtils.getDocumentID(__DATAUUID__);
__EXECUTE__ = true;
return __TYPE_CONNECTED__;
},
......@@ -357,8 +354,8 @@ function __classSynergy(){
/**
* Вернуть форму загруженную не с мультизагрузки если такая была
*/
regainForm: function(){
if(!__FORMDATA__) return;
regainForm: function () {
if (!__FORMDATA__) return;
__DATAUUID__ = __FORMDATA__.dataUUID;
__OLD_DATAUUID__ = __FORMDATA__.oldDataUUID;
__DOCUMENT_ID__ = __FORMDATA__.documentID;
......@@ -378,17 +375,18 @@ function __classSynergy(){
* @param {String} arg3 Если компонент вне дин таблицы *не обязательно* иначе номер строки (ряда)
* @param {String} arg4 Если компонент в дин таблицы то ключ иначе *не обязательно*
*/
getValue: function(){
if(!__checkAccess()) return;
else if(arguments.length < 1) return;
getValue: function () {
if (!__checkAccess()) return;
else if (arguments.length < 1) return;
console.info('arguments {}', JSON.stringify(arguments));
var data;
var args = {c: arguments[0],ot: arguments[1],b: arguments[2],o: arguments[3]};
if (typeof(args.c) === 'string' && typeof(args.b) === 'number') {
var args = {c: arguments[0], ot: arguments[1], b: arguments[2], o: arguments[3]};
if (typeof (args.c) === 'string' && typeof (args.b) === 'number') {
args.b = +((+args.b) === 0 ? 1 : args.b);
__DATA__.forEach(function(item) {
__DATA__.forEach(function (item) {
if (item.id == args.ot) {
if(!item.hasOwnProperty('data')) item.data = [];
item.data.forEach(function(bItem) {
if (!item.hasOwnProperty('data')) item.data = [];
item.data.forEach(function (bItem) {
if (bItem.id === args.c + '-b' + args.b) {
data = (args.o && args.o != __SERVER) ? (bItem[args.o] ? bItem[args.o] : undefined) : bItem;
return;
......@@ -398,20 +396,27 @@ function __classSynergy(){
}
});
} else {
__DATA__.forEach(function(item) {
__DATA__.forEach(function (item) {
if (item.id == args.c) {
data = (args.ot && args.ot != __SERVER) ? (item[args.ot] ? item[args.ot] : undefined) : item;
return;
}
});
}
if(data === undefined){
switch(args.ot){
case 'data': data = []; break;
case 'value': case 'key': data = ''; break;
default: data = false;
if (data === undefined) {
switch (args.ot) {
case 'data':
data = [];
break;
case 'value':
case 'key':
data = '';
break;
default:
data = false;
}
}
console.info('data {}',JSON.stringify(data));
return data;
},
......@@ -422,15 +427,15 @@ function __classSynergy(){
* @param {String} arg3 Если компонент вне дин таблицы то ключ для значения *не обязательно* иначе номер строки (ряда)
* @param {String} arg4 Если компонент в дин таблицы то значение или объект иначе *не обязательно*
* @param {String} arg5 Если компонент в дин таблицы то ключ для значения иначе *не обязательно*
*
* Пример:
*
* Пример:
* Вне дин.таблицы: setValue('component1','Текст'); - "Текст" запишется в ключ "value" по умолчанию
* Вне дин.таблицы: setValue('component2',{
* key: 'xxxx-xxx-xxxx',
* value: 'xxxx'
* },'value'); - "Object" запишется в ключ "value" а если не передавать ключ то пойдет перезаписать данных компонента
*
*
*
*
* Дин.таблица: setValue('component1','table',1,'Текст'); - "Текст" запишется в ключ "value" по умолчанию
* Дин.таблица: setValue('component2','table',1,45000,'key'); - "45000" в скобках или без запишется в ключ "key"
* Дин.таблица: setValue('component3','table',1,{
......@@ -438,26 +443,56 @@ function __classSynergy(){
* value: 'xxxx'
* },'value'); - "Object" запишется в ключ "value" а если не передавать ключ то пойдет перезаписать данных компонента
*/
setValue: function(){
if(!__checkAccess()) return;
else if(arguments.length < 1) return;
setValue: function () {
if (!__checkAccess() || arguments.length < 1) return;
var defKey = 'value';
var args = {c: arguments[0],vt: arguments[1],ob: arguments[2],v: arguments[3],o: arguments[4]};
if (typeof(args.c) === 'string' && typeof(args.ob) === 'number') {
if (args.ob == 0) args.ob = 1;
__DATA__.forEach(function(item) {
var args = {c: arguments[0], vt: arguments[1], ob: arguments[2], v: arguments[3], o: arguments[4]};
if (typeof (args.c) === 'string' && typeof (args.ob) === 'number') {
if (args.ob.toString() === '0'){
args.ob = 1;
}
__DATA__.forEach(function (item) {
if (item.id == args.vt) {
if(!item.hasOwnProperty('data')) item.data = [];
item.data.forEach(function(bItem) {
if (!item.hasOwnProperty('data')) {
item.data = [];
}
item.data.forEach(function (bItem) {
if (bItem.id === args.c + '-b' + args.ob) {
if(bItem.type == 'numericinput'){
defKey = 'key';
args.v = args.v.toString().replace(/\s*/g,'');
switch (bItem.type) {
case 'reglink':
if (args.v && /^[0-9a-fA-F]{8}-[0-9a-fA-F]{4}-[0-9a-fA-F]{4}-[0-9a-fA-F]{4}-[0-9a-fA-F]{12}$/.test(args.v)) {
if(args.o && args.o == __SERVER) {
args.v = {
key: args.v,
value: __SERVER__.api('formPlayer/getDocMeaningContents?documentId=' + args.v)[0].meaning
}
}else{
args.v = {
key: args.v,
value: __CLIENT__.api('formPlayer/getDocMeaningContents?documentId=' + args.v)[0].meaning
}
}
}
break;
case 'numericinput':
defKey = 'key';
if (args.v && (typeof args.v === 'string' || typeof args.v === 'number')) {
args.v = args.v.toString().replace(/\s*/g, '');
}
break;
}
if (typeof (args.v) === 'object') {
bItem = Object.assign(bItem, args.v);
} else {
bItem[(args.o && args.o != __SERVER) ? args.o : defKey] = args.v;
}
if (typeof(args.v) === 'object')
for (var aItem in args.v)
(args.o && args.o == __SERVER) ? bItem[aItem] = args.v[aItem] : bItem[aItem][args.o] = args.v[aItem];
else bItem[(args.o && args.o != __SERVER) ? args.o : defKey] = args.v;
return;
}
});
......@@ -465,56 +500,99 @@ function __classSynergy(){
}
});
} else {
__DATA__.forEach(function(item) {
if (item.id == args.c) {
if(item.type == 'numericinput'){
defKey = 'key';
args.v = args.v.replace(/\s*/g,'');
__DATA__.forEach(function (item) {
if(item.id == args.c){
switch (item.type) {
case 'reglink':
if (args.vt && /^[0-9a-fA-F]{8}-[0-9a-fA-F]{4}-[0-9a-fA-F]{4}-[0-9a-fA-F]{4}-[0-9a-fA-F]{12}$/.test(args.vt)) {
if(args.o && args.o == __SERVER) {
args.vt = {
key: args.vt,
value: __SERVER__.api('formPlayer/getDocMeaningContents?documentId=' + args.vt)[0].meaning
}
}else{
args.vt = {
key: args.vt,
value: __CLIENT__.api('formPlayer/getDocMeaningContents?documentId=' + args.vt)[0].meaning
}
}
}
break;
case 'numericinput':
defKey = 'key';
if (args.vt && (typeof args.vt === 'string' || typeof args.vt === 'number')) {
args.vt = args.vt.toString().replace(/\s*/g, '');
}
break;
}
if (typeof (args.vt) === 'object') {
item = Object.assign(item, args.vt);
} else {
item[(args.ob && args.ob != __SERVER) ? args.ob : defKey] = args.vt;
}
if (typeof(args.vt) === 'object')
for (var aItem in args.vt)
(args.ob && args.ob == __SERVER) ? item[aItem] = args.vt[aItem] : item[aItem][args.ob] = args.vt[aItem];
else item[(args.ob && args.ob != __SERVER) ? args.ob : defKey] = args.vt;
return;
}
});
}
return (arguments[arguments.length - 1] && arguments[arguments.length - 1] == __SERVER ? __SERVER__ : __CLIENT__);
},
/**
* [GET] Метод получения конвертированной таблицы
* @param {String} tableID Идентификатор (id) таблицы
*/
converTable: function(tableID){
if(!__checkAccess()) return;
else if(!tableID) return;
var arr = [];
var b;
var data = (arguments[1] && arguments[1] == __SERVER ? __CLIENT__.getValue(tableID,'data',__SERVER) : __CLIENT__.getValue(tableID,'data'));
data.forEach(function(item) {
if (item.id.indexOf('-b') !== -1 && (b = item.id.match(/(.+)\-b(\d+)/))) {
if ((b[2] in arr) === false) arr[b[2]] = {};
arr[b[2]][b[1]] = item;
converTable: function (tableID) {
if (!__checkAccess() || !tableID){
return;
}
let arr = [];
let data = (arguments[1] && arguments[1] == __SERVER ? __CLIENT__.getValue(tableID, 'data', __SERVER) : __CLIENT__.getValue(tableID, 'data'));
data.forEach(function (item) {
let idx = item.id.lastIndexOf('-b');
let bIndex = item.id.substr(idx + 2);
let componentId = item.id.substr(0, idx);
if (~item.id.lastIndexOf('-b') && bIndex && !isNaN(bIndex)) {
if ((bIndex in arr) === false){
arr[bIndex] = {};
}
arr[bIndex][componentId] = item;
return;
}
});
for (var i = 0; i < arr.length; i++) if (arr[i] == null) arr.splice(i--, 1);
for (let i = 0; i < arr.length; i++){
if (arr[i] == null){
arr.splice(i--, 1);
}
}
return arr;
},
/**
* [GET] Метод получения всех компонентов в стиле листа
*/
getAsfData: function(){
if(!__checkAccess()) return;
getAsfData: function () {
if (!__checkAccess()){
return;
}
var arr = [];
__DATA__.forEach(function(item) {
if(item.type == 'appendable_table'){
__DATA__.forEach(function (item) {
if (item.type == 'appendable_table') {
var tmp_data = JSON.parse(JSON.stringify((!item.data ? [] : item.data)));
tmp_data.forEach(function(item_tbl) {
tmp_data.forEach(function (item_tbl) {
var id = item_tbl.id.match(/(.+)\-b(\d+)/);
if(id){
if (id) {
item_tbl.____parentID____ = item.id;
item_tbl.____parentType____ = item.type;
item_tbl.id = id[1];
......@@ -524,6 +602,7 @@ function __classSynergy(){
});
return;
}
arr.push(item);
});
return arr;
......@@ -533,19 +612,26 @@ function __classSynergy(){
* [SET] Метод добавляет данные в `dataList`
* @param {Object} object Объект или массив объектов
*/
addAsfData: function(object){
if(!__checkAccess()) return;
else if(arguments.length < 1) return;
if(!Array.isArray(object)) object = [object];
addAsfData: function (object) {
if (!__checkAccess() || arguments.length < 1){
return;
}
if (!Array.isArray(object)){
object = [object];
}
var oldList = (arguments[1] && arguments[1] == __SERVER ? __CLIENT__.getAsfData(__SERVER) : __CLIENT__.getAsfData());
object.forEach(function(item){
object.forEach(function (item) {
oldList.push(item);
});
if(arguments[1] && arguments[1] != __SERVER){
if (arguments[1] && arguments[1] != __SERVER) {
__CLIENT__.setAsfData(oldList);
return __CLIENT__;
}else{
__CLIENT__.setAsfData(oldList,__SERVER);
} else {
__CLIENT__.setAsfData(oldList, __SERVER);
return __SERVER__;
}
},
......@@ -554,20 +640,26 @@ function __classSynergy(){
* [SET] Метод изменения всех компонентов из листа
* @param {Array} newList Массив - лист объектов
*/
setAsfData: function(newList){
if(!__checkAccess()) return;
else if(arguments.length < 1) return;
setAsfData: function (newList) {
if (!__checkAccess() || arguments.length < 1){
return;
}
var arr = [];
var tmp = [];
newList.forEach(function(item) {
if(item.____parentType____ && item.____parentID____ && item.____index____){
newList.forEach(function (item) {
if (item.____parentType____ && item.____parentID____ && item.____index____) {
var tblIdx = tmp.indexOf(item.____parentID____);
var tmpItem = JSON.parse(JSON.stringify(item));
tmpItem.id += '-b' + item.____index____;
delete tmpItem.____parentType____;
delete tmpItem.____parentID____;
delete tmpItem.____index____;
if(tblIdx === -1){
if (tblIdx === -1) {
tmp.push(item.____parentID____);
arr.push({
id: item.____parentID____,
......@@ -575,12 +667,18 @@ function __classSynergy(){
data: [tmpItem]
});
}
if(arr[tblIdx]) arr[tblIdx].data.push(tmpItem);
if (arr[tblIdx]){
arr[tblIdx].data.push(tmpItem);
}
return;
}
arr.push(item);
tmp.push(null);
});
__DATA__ = arr;
return (arguments[1] && arguments[1] == __SERVER ? __SERVER__ : __CLIENT__);
},
......@@ -591,39 +689,59 @@ function __classSynergy(){
* @param {Int} count кол-во строк по умолчанию `1`
* @param {Boolean} visual Если данный параметр true то ряд(ы) не добавятся в таблицу по умолчанию `false`
*/
addRowTable: function(tableID,count,visual){
if(!__checkAccess()) return;
addRowTable: function (tableID, count, visual) {
if (!__checkAccess()) {
return;
}
var defTableRow = false;
if(!(+count) || !count) count = 1;
var tableRowCount = (arguments[3] && arguments[3] == __SERVER ? __CLIENT__.getRowsCount(tableID,__SERVER) : __CLIENT__.getRowsCount(tableID));
if (!(+count) || !count) {
count = 1;
}
var tableRowCount = (arguments[3] && arguments[3] == __SERVER ? __CLIENT__.getRowsCount(tableID, __SERVER) : __CLIENT__.getRowsCount(tableID));
var defProps = (arguments[3] && arguments[3] == __SERVER ? __SERVER__.api('asforms/form/' + __CLASS__.getFormUUID()) : __CLIENT__.api('asforms/form/' + __CLASS__.getFormUUID()));
var skips = ['config','style','properties','required','data','dataSource'];
if(defProps.properties){
defProps.properties.forEach(function(item) {
if(item.id == tableID && item.config.appendRows && item.config.appendRows === true){
if(!defTableRow) defTableRow = [];
for(var i = 0; i < count; i++){
var skips = ['config', 'style', 'properties', 'required', 'data', 'dataSource'];
if (defProps.properties) {
defProps.properties.forEach(function (item) {
if (item.id == tableID && item.config.appendRows && item.config.appendRows === true) {
if (!defTableRow) {
defTableRow = [];
}
for (var i = 0; i < count; i++) {
tableRowCount++;
item.properties.forEach(function(item_tbl) {
item.properties.forEach(function (item_tbl) {
var nObj = {};
var tmp = JSON.parse(JSON.stringify(item_tbl));
tmp.____parentType____ = 'appendable_table';
tmp.____parentID____ = item.id;
tmp.____index____ = '' + tableRowCount;
for(var i in tmp){
if(skips.indexOf(i) !== -1) continue;
for (var i in tmp) {
if (skips.indexOf(i) !== -1) {
continue;
}
nObj[i] = tmp[i];
}
defTableRow.push(nObj);
});
}
if(!visual && defTableRow && defTableRow.length > 0){
(arguments[3] && arguments[3] == __SERVER ? __CLIENT__.addAsfData(defTableRow,__SERVER) : __CLIENT__.addAsfData(defTableRow));
if (!visual && defTableRow && defTableRow.length > 0) {
(arguments[3] && arguments[3] == __SERVER ? __CLIENT__.addAsfData(defTableRow, __SERVER) : __CLIENT__.addAsfData(defTableRow));
}
return;
}
});
}
return defTableRow;
},
......@@ -632,37 +750,61 @@ function __classSynergy(){
* @param {String} tableID Идентификатор (id) таблицы
* @param {Int | Array} index номер строки
*/
removeRowTable: function(tableID,index){
if(!__checkAccess()) return;
else if(arguments.length < 1) return;
removeRowTable: function (tableID, index) {
if (!__checkAccess() || arguments.length < 1) {
return;
}
var dataList = (arguments[2] && arguments[2] == __SERVER ? __CLIENT__.getAsfData(__SERVER) : __CLIENT__.getAsfData());
var newList = [];
var visualRows = [];
var tmp = {t1:[],t2:[]};
if(!Array.isArray(index)) index = [index];
dataList.forEach(function(item,key) {
if(item.____parentID____ == tableID && item.____index____ && (index.indexOf(''+item.____index____) !== -1 || index.indexOf(+item.____index____) !== -1)) return;
var tmp = {t1: [], t2: []};
if (!Array.isArray(index)) {
index = [index];
}
dataList.forEach(function (item) {
if (item.____parentID____ == tableID && item.____index____ && (index.indexOf('' + item.____index____) !== -1 || index.indexOf(+item.____index____) !== -1)){
return;
}
newList.push(item);
if(item.____parentID____ == tableID && item.____index____) visualRows.push({textIdx: +item.____index____, idx: newList.length - 1});
});
visualRows.sort(function(i,j) {
return i.textIdx > j.textIdx;
}).forEach(function(i) {
if(!tmp.t1[i.textIdx]) tmp.t1[i.textIdx] = [];
tmp.t1[i.textIdx].push(i.idx);
if (item.____parentID____ == tableID && item.____index____){
visualRows.push({
textIdx: +item.____index____,
idx: newList.length - 1
});
}
});
tmp.t1.forEach(function(item){
visualRows
.sort(function (i, j) {
return i.textIdx > j.textIdx;
})
.forEach(function (i) {
if (!tmp.t1[i.textIdx]){
tmp.t1[i.textIdx] = [];
}
tmp.t1[i.textIdx].push(i.idx);
});
tmp.t1.forEach(function (item) {
tmp.t2.push(item);
});
tmp.t2.forEach(function(iArr,k){
iArr.forEach(function(i){
tmp.t2.forEach(function (iArr, k) {
iArr.forEach(function (i) {
newList[i].____index____ = '' + (k + 1);
});
});
if(!arguments[2] && arguments[2] == __SERVER){
__CLIENT__.setAsfData(newList,__SERVER);
if (!arguments[2] && arguments[2] == __SERVER) {
__CLIENT__.setAsfData(newList, __SERVER);
return __SERVER__;
}else{
} else {
__CLIENT__.setAsfData(newList);
return __CLIENT__;
}
......@@ -672,35 +814,38 @@ function __classSynergy(){
* [GET] Метод получения строк (рядов) в дин.таблице
* @param {String} tableID Идентификатор (id) таблицы
*/
getRowsCount: function(tableID){
if(!__checkAccess()) return;
else if(!tableID) return;
if(!arguments[1] || arguments[1] != __SERVER){
getRowsCount: function (tableID) {
if (!__checkAccess() || !tableID) {
return;
}
if (!arguments[1] || arguments[1] != __SERVER) {
return __CLIENT__.converTable(tableID).length;
}else{
return __CLIENT__.converTable(tableID,__SERVER).length;
} else {
return __CLIENT__.converTable(tableID, __SERVER).length;
}
},
/**
* Метод очищает содержимое дин.таблицы
* @param {String} tableID Идентификатор (id) таблицы
*/
clearTable: function(tableID){
__DATA__.forEach(function(item){
if(item.id == tableID){
clearTable: function (tableID) {
__DATA__.forEach(function (item) {
if (item.id == tableID) {
item.data = [];
return;
}
});
return __TYPE_CONNECTED__;
},
/**
* Метод выполнения API Synergy
* @param {String} method Метод запроса /rest/api/asforms/data/404 или asforms/data/404
* @param {Function} callback Функция возвращающая результат запроса
*
*
* @param {Object} options Это объект в который входят такие параметры как:
* @param {String} type Тип запроса: GET или POST по умолчанию `GET`
* @param {Object} data Объект в которой идет ключ и значение например { key: 'xxx', key2: 'xxx' }
......@@ -708,28 +853,30 @@ function __classSynergy(){
* @param {String} dataType Тип данных по умолчанию `json`
* @param {String} login Логин пользователя (для выполнения метода от другого пользователя) *Не обязательно*
* @param {String} password Пароль пользователя *Не обязательно*
*
*
* @param {Function} errorHandle Функция возвращающая ошибку
*/
api: function(method,callback,options,errorHandle){
if(!__LOADFORM__) return;
else if(arguments.length < 1) return;
try{
api: function (method, callback, options, errorHandle) {
if (!__LOADFORM__ || arguments.length < 1) {
return;
}
try {
return $.ajax({
url:__HOST_ORIGIN__ + '/Synergy/rest/api/' + method.replace(/(.*rest\/api\/)/,''),
type:(!options || !options.hasOwnProperty('type')?'GET':options.type),
async:(!options || !options.hasOwnProperty('async')?false:options.async),
beforeSend: function(xhr) {
url: __HOST_ORIGIN__ + '/Synergy/rest/api/' + method.replace(/(.*rest\/api\/)/, ''),
type: (!options || !options.hasOwnProperty('type') ? 'GET' : options.type),
async: (!options || !options.hasOwnProperty('async') ? false : options.async),
beforeSend: function (xhr) {
xhr.setRequestHeader('Authorization', 'Basic ' + btoa(
(!options || !options.login || !options.password ? __LOGIN__ + ':' + __PASSWORD__ : options.login + ':' + options.password)
));
},
data:(!options || !options.hasOwnProperty('data') ? {} : options.data),
success:callback,
error:errorHandle,
dataType:(!options || !options.hasOwnProperty('dataType')?'json':options.dataType)
data: (!options || !options.hasOwnProperty('data') ? {} : options.data),
success: callback,
error: errorHandle,
dataType: (!options || !options.hasOwnProperty('dataType') ? 'json' : options.dataType)
})[(options && options.hasOwnProperty('dataType') && options.dataType == 'text' ? 'responseText' : 'responseJSON')];
}catch(err){
} catch (err) {
return err.message;
}
},
......@@ -738,27 +885,32 @@ function __classSynergy(){
* Метод сохранения формы
* @param {Func} callback Возврщает результат в асинхронносте по умолчанию `false`
*/
save: function(callback){
if(!__LOADFORM__) return;
if(!arguments[0] || arguments[0] != __SERVER){
var save = __CLIENT__.api('asforms/data/save',callback,{
async:(!callback?false:true),
type:'POST',
data:{
save: function (callback) {
if (!__LOADFORM__) {
return;
}
if (!arguments[0] || arguments[0] != __SERVER) {
var save = __CLIENT__.api('asforms/data/save', callback, {
async: (!callback ? false : true),
type: 'POST',
data: {
uuid: __CLASS__.getDataUUID(),
data: '"data":' + JSON.stringify(__DATA__)
}
});
return save;
}else{
var save = __SERVER__.api('asforms/data/save',{
type:'POST',
} else {
var save = __SERVER__.api('asforms/data/save', {
type: 'POST',
data: {
uuid: __CLASS__.getDataUUID(),
data: '"data":' + JSON.stringify(__DATA__)
}
});
return {save:save,data:'"data":' + JSON.stringify(__DATA__)};
return {save: save, data: '"data":' + JSON.stringify(__DATA__)};
}
},
......@@ -768,16 +920,19 @@ function __classSynergy(){
* @param {String | Int} dataUUID Идентификатор данных по форме
* @param {Func} callback Возврщает результат в асинхронносте по умолчанию `false`
*/
getDocumentID: function(dataUUID,callback){
if(!dataUUID) return;
if(!arguments[1] || arguments[1] != __SERVER){
return __CLIENT__.api('formPlayer/documentIdentifier?dataUUID=' + dataUUID,callback,{
async:(!callback?false:true),
dataType:'text'
getDocumentID: function (dataUUID, callback) {
if (!dataUUID) {
return;
}
if (!arguments[1] || arguments[1] != __SERVER) {
return __CLIENT__.api('formPlayer/documentIdentifier?dataUUID=' + dataUUID, callback, {
async: (!callback ? false : true),
dataType: 'text'
});
}else{
} else {
return __SERVER__.api('formPlayer/documentIdentifier?dataUUID=' + dataUUID, {
dataType:'text'
dataType: 'text'
});
}
},
......@@ -787,13 +942,16 @@ function __classSynergy(){
* @param {String} documentID Идентификатор документа
* @param {Func} callback Возврщает результат в асинхронносте по умолчанию `false`
*/
getDataUUID: function(documentID,callback){
if(!documentID) return;
if(!arguments[1] || arguments[1] != __SERVER){
return __CLIENT__.api('formPlayer/getAsfDataUUID?documentID=' + documentID,callback,{
async:(!callback?false:true)
getDataUUID: function (documentID, callback) {
if (!documentID) {
return;
}
if (!arguments[1] || arguments[1] != __SERVER) {
return __CLIENT__.api('formPlayer/getAsfDataUUID?documentID=' + documentID, callback, {
async: (!callback ? false : true)
});
}else{
} else {
return __SERVER__.api('formPlayer/getAsfDataUUID?documentID=' + documentID);
}
},
......@@ -803,13 +961,16 @@ function __classSynergy(){
* @param {String | Int} dataUUID Идентификатор данных по форме
* @param {Func} callback Возврщает результат в асинхронносте по умолчанию `false`
*/
getProcessExecution: function(dataUUID,callback){
if(!dataUUID) return;
if(!arguments[1] || arguments[1] != __SERVER){
return __CLIENT__.api('formPlayer/getProcessExecution?dataUUID=' + dataUUID,callback,{
async:(!callback?false:true)
getProcessExecution: function (dataUUID, callback) {
if (!dataUUID) {
return;
}
if (!arguments[1] || arguments[1] != __SERVER) {
return __CLIENT__.api('formPlayer/getProcessExecution?dataUUID=' + dataUUID, callback, {
async: (!callback ? false : true)
});
}else{
} else {
return __SERVER__.api('formPlayer/getProcessExecution?dataUUID=' + dataUUID);
}
},
......@@ -818,13 +979,16 @@ function __classSynergy(){
* Возвращает список реестров (доступных пользователю)
* @param {Func} callback Возврщает результат в асинхронносте по умолчанию `false`
*/
getRegistryList: function(callback){
if(!__checkAccess()) return;
if(!arguments[0] || arguments[0] != __SERVER){
return __CLIENT__.api('registry/list',callback,{
async:(!callback?false:true)
getRegistryList: function (callback) {
if (!__checkAccess()) {
return;
}
if (!arguments[0] || arguments[0] != __SERVER) {
return __CLIENT__.api('registry/list', callback, {
async: (!callback ? false : true)
});
}else{
} else {
return __SERVER__.api('registry/list');
}
}
......@@ -836,36 +1000,36 @@ function __classSynergy(){
* Метод загрузки формы
* @param {String | Integer} dataUUID Идентификатор данных по форме
*/
load: function(dataUUID,version){
return __CLIENT__.load(dataUUID,version,__SERVER);
load: function (dataUUID, version) {
return __CLIENT__.load(dataUUID, version, __SERVER);
},
/**
* Метод загрузки нескольких форм
* @param {Array | String | Integer} dataUUIDs идентификатор(ы) данных по форме
*/
multiLoad: function(dataUUIDs){
return __CLIENT__.multiLoad(dataUUIDs,__SERVER);
multiLoad: function (dataUUIDs) {
return __CLIENT__.multiLoad(dataUUIDs, __SERVER);
},
/**
* Получение данных загруженных форм
*/
getFormsList: function(){
getFormsList: function () {
return __MULTIFORMSDATA__;
},
/**
* Выбрать с какой формой будем работать
*/
selectForm: function(dataUUID){
return __CLIENT__.selectForm(dataUUID,__SERVER);
selectForm: function (dataUUID) {
return __CLIENT__.selectForm(dataUUID, __SERVER);
},
/**
* Вернуть форму загруженную не с мультизагрузки если такая была
*/
regainForm: function(){
regainForm: function () {
return __CLIENT__.regainForm();
},
......@@ -876,9 +1040,10 @@ function __classSynergy(){
* @param {String} arg3 Если компонент вне дин таблицы *не обязательно* иначе номер строки (ряда)
* @param {String} arg4 Если компонент в дин таблицы то ключ иначе *не обязательно*
*/
getValue: function(){
var args = Array.prototype.splice.call(arguments, 0);
getValue: function () {
var args = Array.prototype.slice.call(arguments, 0);
args.push(__SERVER);
return __CLIENT__.getValue.apply(null, args);
},
......@@ -889,15 +1054,15 @@ function __classSynergy(){
* @param {String} arg3 Если компонент вне дин таблицы то ключ для значения *не обязательно* иначе номер строки (ряда)
* @param {String} arg4 Если компонент в дин таблицы то значение или объект иначе *не обязательно*
* @param {String} arg5 Если компонент в дин таблицы то ключ для значения иначе *не обязательно*
*
* Пример:
*
* Пример:
* Вне дин.таблицы: setValue('component1','Текст'); - "Текст" запишется в ключ "value" по умолчанию
* Вне дин.таблицы: setValue('component2',{
* key: 'xxxx-xxx-xxxx',
* value: 'xxxx'
* },'value'); - "Object" запишется в ключ "value" а если не передавать ключ то пойдет перезаписать данных компонента
*
*
*
*
* Дин.таблица: setValue('component1','table',1,'Текст'); - "Текст" запишется в ключ "value" по умолчанию
* Дин.таблица: setValue('component2','table',1,45000,'key'); - "45000" в скобках или без запишется в ключ "key"
* Дин.таблица: setValue('component3','table',1,{
......@@ -905,9 +1070,10 @@ function __classSynergy(){
* value: 'xxxx'
* },'value'); - "Object" запишется в ключ "value" а если не передавать ключ то пойдет перезаписать данных компонента
*/
setValue: function(){
var args = Array.prototype.splice.call(arguments, 0);
setValue: function () {
var args = Array.prototype.slice.call(arguments, 0);
args.push(__SERVER);
return __CLIENT__.setValue.apply(null, args);
},
......@@ -915,14 +1081,14 @@ function __classSynergy(){
* [GET] Метод получения конвертированной таблицы
* @param {String} tableID Идентификатор (id) таблицы
*/
converTable: function(tableID){
return __CLIENT__.converTable(tableID,__SERVER);
converTable: function (tableID) {
return __CLIENT__.converTable(tableID, __SERVER);
},
/**
* [GET] Метод получения всех компонентов в стиле листа
*/
getAsfData: function(){
getAsfData: function () {
return __CLIENT__.getAsfData(__SERVER);
},
......@@ -930,26 +1096,26 @@ function __classSynergy(){
* [SET] Метод добавляет данные в `dataList`
* @param {Object} object Объект или массив объектов
*/
addAsfData: function(object){
return __CLIENT__.addAsfData(object,__SERVER);
addAsfData: function (object) {
return __CLIENT__.addAsfData(object, __SERVER);
},
/**
* [SET] Метод изменения всех компонентов из листа
* @param {Array} newList Массив - лист объектов
*/
setAsfData: function(newList){
return __CLIENT__.setAsfData(newList,__SERVER);
setAsfData: function (newList) {
return __CLIENT__.setAsfData(newList, __SERVER);
},
/**
* [Add] Метод добавления строк в дин.таблицу
* @param {String} tableID Идентификатор (id) таблицы
* @param {Int} count кол-во строк по умолчанию `1`
* @param {Boolean} visual Если данный параметр true то ряд(ы) не добавятся в таблицу по умолчанию `false`
*/
addRowTable: function(tableID,count,visual){
return __CLIENT__.addRowTable(tableID,count,visual,__SERVER);
addRowTable: function (tableID, count, visual) {
return __CLIENT__.addRowTable(tableID, count, visual, __SERVER);
},
/**
......@@ -957,33 +1123,33 @@ function __classSynergy(){
* @param {String} tableID Идентификатор (id) таблицы
* @param {Int | Array} index номер строки
*/
removeRowTable: function(tableID,index){
return __CLIENT__.removeRowTable(tableID,index,__SERVER);
removeRowTable: function (tableID, index) {
return __CLIENT__.removeRowTable(tableID, index, __SERVER);
},
/**
* [GET] Метод получения строк (рядов) в дин.таблице
* @param {String} tableID Идентификатор (id) таблицы
*/
getRowsCount: function(tableID){
return __CLIENT__.getRowsCount(tableID,__SERVER);
getRowsCount: function (tableID) {
return __CLIENT__.getRowsCount(tableID, __SERVER);
},
/**
* Метод очищает содержимое дин.таблицы
* @param {String} tableID Идентификатор (id) таблицы
*/
clearTable: function(tableID){
return __CLIENT__.clearTable(tableID,__SERVER);
clearTable: function (tableID) {
return __CLIENT__.clearTable(tableID, __SERVER);
},
/**
* Метод сохранения формы
*/
save: function(){
save: function () {
return __CLIENT__.save(__SERVER);
},
/**
* Методы работ на сервере платформы Synergy `Блок процессы`
* @param {String} method Метод запроса /rest/api/asforms/data/404 или asforms/data/404
......@@ -993,34 +1159,56 @@ function __classSynergy(){
* @param {String} login Логин пользователя (для выполнения метода от другого пользователя) *Не обязательно*
* @param {String} password Пароль пользователя *Не обязательно*
*/
api: function(method,options){
if(!__LOADFORM__) return;
else if(arguments.length < 1) return;
method = method.replace(/(.*rest\/api\/)/,'');
type = (!options || !options.type ? 'GET' : options.type);
api: function (method, options) {
if (!__LOADFORM__ || arguments.length < 1) {
return;
}
method = method.replace(/(.*rest\/api\/)/, '');
var type = (!options || !options.type ? 'GET' : options.type);
var api;
var result;
var host = 'http://127.0.0.1:8080/Synergy/rest/api/';
var client = new org.apache.commons.httpclient.HttpClient();
var creds = new org.apache.commons.httpclient.UsernamePasswordCredentials((options && options.login ? options.login : __LOGIN__),(options && options.password ? options.password : __PASSWORD__));
var creds = new org.apache.commons.httpclient.UsernamePasswordCredentials((options && options.login ? options.login : __LOGIN__), (options && options.password ? options.password : __PASSWORD__));
client.getParams().setAuthenticationPreemptive(true);
client.getState().setCredentials(org.apache.commons.httpclient.auth.AuthScope.ANY, creds);
switch(type){
switch (type) {
case 'GET':
var _p = [];
if(options && options.data) for(var p in options.data) _p.push(p + '=' + options.data[p]);
var api = new org.apache.commons.httpclient.methods.GetMethod(host + method + _p.join('&amp'));
api.setRequestHeader('Content-type','application/json');
if (options && options.data) {
for (var p in options.data) {
_p.push(p + '=' + options.data[p]);
}
}
api = new org.apache.commons.httpclient.methods.GetMethod(host + method + _p.join('&amp'));
api.setRequestHeader('Content-type', 'application/json');
client.executeMethod(api);
var result = api.getResponseBodyAsString();
result = api.getResponseBodyAsString();
break;
case 'POST':
var api = new org.apache.commons.httpclient.methods.PostMethod(host + method);
if(options && options.data) for(var p in options.data) api.addParameter(p, options.data[p]);
api = new org.apache.commons.httpclient.methods.PostMethod(host + method);
if (options && options.data) {
for (var p in options.data) {
api.addParameter(p, options.data[p]);
}
}
api.setRequestHeader('Content-type', 'application/x-www-form-urlencoded; charset=utf-8');
var result = client.executeMethod(api);
result = client.executeMethod(api);
break;
default:
}
api.releaseConnection();
return (options && options.dataType == 'text' ? result : JSON.parse(result));
},
......@@ -1029,30 +1217,30 @@ function __classSynergy(){
* Возвращает `documentID` по dataUUID
* @param {String | Int} dataUUID Идентификатор данных по форме
*/
getDocumentID: function(dataUUID){
return __CLIENT__.ApiUtils.getDocumentID(dataUUID,__SERVER);
getDocumentID: function (dataUUID) {
return __CLIENT__.ApiUtils.getDocumentID(dataUUID, __SERVER);
},
/**
* Возвращает `dataUUID` по documentID
* @param {String} documentID Идентификатор документа
*/
getDataUUID: function(documentID){
return __CLIENT__.ApiUtils.getDataUUID(documentID,__SERVER);
getDataUUID: function (documentID) {
return __CLIENT__.ApiUtils.getDataUUID(documentID, __SERVER);
},
/**
* Возвращает ход выполнения документа
* @param {String | Int} dataUUID Идентификатор данных по форме
*/
getProcessExecution: function(dataUUID){
return __CLIENT__.ApiUtils.getProcessExecution(dataUUID,__SERVER);
getProcessExecution: function (dataUUID) {
return __CLIENT__.ApiUtils.getProcessExecution(dataUUID, __SERVER);
},
/**
* Возвращает список реестров (доступных пользователю)
*/
getRegistryList: function(){
getRegistryList: function () {
return __CLIENT__.ApiUtils.getRegistryList(__SERVER);
}
}
......@@ -1062,35 +1250,60 @@ function __classSynergy(){
* Информация о данном классе
*/
this.about = {
author: function(){
author: function () {
return 'Telegram:\t@yandexphp\n';
},
platform_versions: {
'3.12':'[Not support] - not verified',
'3.14':'[Not support] - not verified',
'3.15':'[Not support] - not verified',
'4.0':true,
'4.1':'not verified'
'3.12': '[Not support] - not verified',
'3.14': '[Not support] - not verified',
'3.15': '[Not support] - not verified',
'4.0': true,
'4.1': true
},
version: 'Version: 0.5.0 Realese',
version: 'Version: 0.5.2 Realese',
created: '17.10.2018'
}
/**
* Очистить работу
*/
this.destroy = function(){
__PROTOCOL__ = __HOSTNAME__ = __HOST_ORIGIN__ = __BASIC_AUTH__ = __DOCUMENT_ID__ = __DATAUUID__ = __NODE_UUID__ = __FORM_UUID__ = __DATA__ = __FULL_DATA__ = __DOCUMENT_CHANGE__ = __FORM_VERSION__ = __OLD_DATAUUID__ = __HOST__ = __LOGIN__ = __PASSWORD__ = null;
this.destroy = function () {
__PROTOCOL__ = __HOSTNAME__ = __HOST_ORIGIN__ = __BASIC_AUTH__ = __DOCUMENT_ID__ = __DATAUUID__ = __NODE_UUID__ =
__FORM_UUID__ = __DATA__ = __FULL_DATA__ = __DOCUMENT_CHANGE__ = __FORM_VERSION__ = __OLD_DATAUUID__ = __HOST__ = __LOGIN__ = __PASSWORD__ = null;
__EXECUTE__ = __LOADFORM__ = __FORMDATA__ = false;
__CLIENT__ = __CLASS__.client;
__SERVER__ = __CLASS__.server;
__CONNECT_LIST__ = __MULTIFORMSDATA__ = {};
__TYPE_CONNECTED__ = __CLASS__;
}
__CLASS__ = this;
(function __constructor(){
(function __constructor() {
if(!Object.hasOwnProperty('assign')) {
Object.prototype.assign = function () {
let res = arguments[0];
for (let i = 1; i < arguments.length; i++) {
let obj = arguments[i];
let keys = Object.keys(obj);
for (let j = 0; j < keys.length; j++) {
res[keys[j]] = obj[keys[j]];
}
}
return res;
}
}
String.prototype.encodeURICyrillic = function () {
return this.replace(/[А-Я]/ig, function (s) {
return encodeURIComponent("" + s);
});
}
__CLASS__.destroy();
})();
......@@ -1100,4 +1313,5 @@ function __classSynergy(){
/**
* Создаем класс jSynergy
*/
let jSynergy = new __classSynergy();
\ No newline at end of file
let jSynergy = new __classSynergy();
jSynergy.setConnection(false, login, password);
Markdown is supported
0%
or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment