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

Merge branch 'patch-2' into 'master'

Update jSynergy.js

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