Files
iTop/js/links/linkset-worker.js

113 lines
3.3 KiB
JavaScript

const iTopLinkSetWorker = new function(){
// defines
const ROUTER_BASE_URL = '../pages/ajax.render.php';
const ROUTE_LINK_SET_DELETE_OBJECT = 'linkset.delete_linked_object';
const ROUTE_LINK_SET_DETACH_OBJECT = 'linkset.detach_linked_object';
const ROUTE_LINK_SET_CREATE_OBJECT = 'linkset.create_linked_object';
const ROUTE_LINK_GET_REMOTE_OBJECT = 'linkset.get_remote_object';
/**
* CallAjaxDeleteLinkedObject.
*
* @param {string} sLinkedObjectClass
* @param {string} sLinkedObjectKey
* @param oOnResponseCallback
* @constructor
*/
const CallAjaxDeleteLinkedObject = function(sLinkedObjectClass, sLinkedObjectKey, oOnResponseCallback){
$.post(`${ROUTER_BASE_URL}?route=${ROUTE_LINK_SET_DELETE_OBJECT}`, {
linked_object_class: sLinkedObjectClass,
linked_object_key: sLinkedObjectKey,
transaction_id: $('#linkset_transactions_id').val()
}, oOnResponseCallback);
};
/**
* CallAjaxDetachLinkedObject.
*
* @param {string} sLinkedObjectClass
* @param {string} sLinkedObjectKey
* @param {string} sExternalKeyAttCode
* @param oOnResponseCallback
* @constructor
*/
const CallAjaxDetachLinkedObject = function(sLinkedObjectClass, sLinkedObjectKey, sExternalKeyAttCode, oOnResponseCallback){
$.post(`${ROUTER_BASE_URL}?route=${ROUTE_LINK_SET_DETACH_OBJECT}`, {
linked_object_class: sLinkedObjectClass,
linked_object_key: sLinkedObjectKey,
external_key_att_code: sExternalKeyAttCode,
transaction_id: $('#linkset_transactions_id').val()
}, oOnResponseCallback);
};
/**
* CallAjaxCreateLinkedObject.
*
* @param {string} sModalTitle
* @param {string} sClass
* @param {string} sAttCode
* @param {string} sHostObjectClass
* @param {string} sHostObjectId
* @param oOnModalCloseCallback
* @param oOnFormSubmittedCallback
* @param {Object} aAdditionalData
*/
const CallAjaxCreateLinkedObject = function(sModalTitle, sClass, sAttCode, sHostObjectClass, sHostObjectId, oOnModalCloseCallback = null, oOnFormSubmittedCallback = null, aAdditionalData = []){
let aData = $.extend(
{
class: sClass,
att_code: sAttCode,
host_class: sHostObjectClass,
host_id: sHostObjectId
},
aAdditionalData
);
let oOptions = {
title: sModalTitle,
content: {
endpoint: `${ROUTER_BASE_URL}?route=${ROUTE_LINK_SET_CREATE_OBJECT}`,
data: aData,
},
extra_options: {
callback_on_modal_close: oOnModalCloseCallback
},
}
const oModal = CombodoModal.OpenModal(oOptions);
if(oOnFormSubmittedCallback !== null){
oModal.on('itop.form.submitted', 'form', oOnFormSubmittedCallback);
}
};
/**
* CallGetRemoteObject.
*
* @param sLinkedObjectClass
* @param sLinkedObjectKey
* @param sExternalKeyAttCode
* @param sRemoteClass
* @param oOnResponseCallback
* @constructor
*/
const CallGetRemoteObject = function(sLinkedObjectClass, sLinkedObjectKey, sExternalKeyAttCode, sRemoteClass, oOnResponseCallback){
$.post(`${ROUTER_BASE_URL}?route=${ROUTE_LINK_GET_REMOTE_OBJECT}`, {
linked_object_class: sLinkedObjectClass,
linked_object_key: sLinkedObjectKey,
external_key_att_code: sExternalKeyAttCode,
remote_class: sRemoteClass
}, oOnResponseCallback);
};
return {
DeleteLinkedObject: CallAjaxDeleteLinkedObject,
DetachLinkedObject: CallAjaxDetachLinkedObject,
CreateLinkedObject: CallAjaxCreateLinkedObject,
GetRemoteObject: CallGetRemoteObject
}
};