UNPKG

@nsmp/js-api

Version:

Types for jsApi

308 lines (284 loc) 8.16 kB
import {DialogBuilder, EventActionExecutor, Frame, UtilsParams} from './classes'; import {getAppBaseUrl, makeResponse} from '../helpers'; import {objectCard} from '../constants'; /** * @type {IJsApi} */ const jsApiMock = { commands: { editObject (uuid) { const url = `${getAppBaseUrl()}operator/#edit:${uuid}`; window.open(url, '_self'); }, quickAddObject (classFqn, formCode, properties, callbackFn) { const isConfirm = confirm(`Создание объекта в dev режиме с параметрами: ${classFqn}, ${formCode}, ${JSON.stringify(properties)}`); if (isConfirm) { callbackFn('stub$uuid', null); } else { callbackFn(null, new Error('Ошибка создания объекта')); } }, quickEditObject (uuid, formCode, properties, callbackFn) { const isConfirm = confirm(`Редактирование объекта в dev режиме с параметрами: ${uuid}, ${formCode}, ${JSON.stringify(properties)}`); if (isConfirm) { callbackFn(uuid, null); } else { callbackFn(null, new Error('Ошибка редактирования объекта')); } }, selectObjectDialog (classFqn, presentAttributesGroupCode) { const isConfirm = confirm(`Открытие сложной формы в dev режиме с параметрами: ${classFqn}, ${presentAttributesGroupCode}`); return Promise.resolve(isConfirm ? 'stub$uuid' : null); } }, configuration: { byContentCode () { return Promise.resolve({}); }, byDefault () { return Promise.resolve({}); } }, contents: { getHeight () { const frame = window.frameElement; const currentDocument = frame ? frame.contentDocument : document; return currentDocument.body.getBoundingClientRect().height; }, getIframeLayoutInfo () { const frame = window.frameElement; const currentDocument = frame ? frame.contentDocument : document; return Promise.resolve(currentDocument.body.getBoundingClientRect()); }, getInitialHeight () { const frame = window.frameElement; if (frame && frame.dataset.initialHeight) { return parseInt(frame.dataset.initialHeight); } return 400; }, getParameters () { return Promise.resolve({}); }, setHeight (height) { const frame = window.frameElement; const currentDocument = frame ? frame.contentDocument : document; currentDocument.body.style.height = `${height}px`; return Promise.resolve({}); } }, eventActions: { getEventActionExecutor (eventUuid) { return new EventActionExecutor(eventUuid); } }, events: { addFieldChangeListener () {}, addSubjectChangeListener () {}, onContentHide () {}, onContentShow () {}, onFullscreenDisabled () {}, onFullscreenEnabled () {}, onUpdatePermissions () {} }, extractSubjectUuid () { return process.env.SUBJECT_UUID || null; }, findApplicationCode () { return process.env.APP_CODE || ''; }, findContentCode () { return process.env.CONTENT_CODE || ''; }, forms: { cancel () {}, changeResponsible (uuid) { alert(`Вызвано событие изменения ответственного с uuid: ${uuid}\n` + 'Действие не будет выполнено в dev режиме'); return Promise.resolve(null); }, changeState (uuid, states, requiredConfirm) { if (states.length) { let isConfirm = true; const newState = states[0]; const alertText = `Вызвано событие изменения статуса объекта с uuid: ${uuid}\n` + `В тестовом режиме вернется статус: ${newState}\n` + 'Действие не будет выполнено в dev режиме'; if (requiredConfirm) { isConfirm = confirm(alertText); } else { alert(alertText); } if (isConfirm) { return Promise.resolve({state: newState}); } } return Promise.resolve(null); }, getType () { return objectCard; }, getValues () { return Promise.resolve({}); }, isModal () { return false; } }, getAppBaseUrl () { return getAppBaseUrl(); }, getAppRestBaseUrl () { const baseUrl = getAppBaseUrl(); let result = ''; if (baseUrl) { result = `${baseUrl}services/${process.env.REST_PATH}`; } return result; }, getBrowserType () { return 'browser'; }, getCurrentLocale () { return 'ru'; }, getCurrentUser () { return { uuid: process.env.USER_UUID || '' }; }, getViewMode () { return 'normal'; }, getWebViewType () { return null; }, isAddForm () { return false; }, isEditForm () { return false; }, isOnObjectCard () { return true; }, modals: { getBodyLayoutInfo () { return Promise.resolve(null); }, getDialogBuilder (content) { return new DialogBuilder(content); } }, page: { getHeaderLayoutInfo () { return Promise.resolve({height: 0}); }, getWindowLayoutInfo () { const frame = window.frameElement; const currentWindow = frame ? window.parent : window; return Promise.resolve({ innerHeight: currentWindow.innerHeight, innerWidth: currentWindow.innerWidth }); } }, registerAttributeToModification (attributeCode, resultCallback) { const result = resultCallback(); let stringValue = result.toString(); if (typeof result === 'object') { stringValue = JSON.stringify(result); } alert(`Встроенным приложением редактируется атрибут ${attributeCode} со значением ${stringValue}`); }, requests: { async json (options) { return await makeResponse('', options, true); }, async make (options) { return await makeResponse('', options); } }, async restCall (url, options) { return await makeResponse(url, options); }, async restCallAsJson (url, options) { return await makeResponse(url, options, true); }, async restCallModule (moduleCode, functionName, ...args) { const requestBody = [{ method: functionName, module: moduleCode, params: [...args] }]; const options = { body: JSON.stringify(requestBody), method: 'POST' }; return await makeResponse('execmf', options, true, true); }, urls: { base () { return `${getAppBaseUrl()}operator/`; }, goTo (link) { window.open(link, '_self'); }, objectAddForm (fqn) { const baseUrl = getAppBaseUrl(); return `${baseUrl}operator/#add:${fqn}`; }, objectCard (uuid) { const baseUrl = getAppBaseUrl(); return `${baseUrl}operator/#uuid:${uuid}`; }, objectEditForm (uuid) { const baseUrl = getAppBaseUrl(); return `${baseUrl}operator/#edit:${uuid}`; } }, utils: { buildParams () { return new UtilsParams(); }, create () { return Promise.resolve({}); }, delete () { return Promise.resolve(''); }, edit () { return Promise.resolve({}); }, find () { return Promise.resolve([{}]); }, findFirst () { return Promise.resolve({}); }, get () { return Promise.resolve({}); } }, ws: { connect (callback) { callback(); alert('Вызов метода, который подключается к брокеру сообщений, передаваемых через websocket-канал'); }, disconnect () { alert('Вызов метода, который отключается от брокера сообщений, передаваемых через websocket-канал'); }, send (destination, message) { alert(`Вызов метода, который отправляет сообщение "${message}" в websocket-канал с адресом: ${destination}`); }, subscribe (destination, callback) { const message = new Frame(destination); callback(message); alert(`Вызов метода, который подписывается на сообщения, передаваемые через websocket-канал с адресом: ${destination}`); }, unsubscribe (destination) { alert(`Вызов метода, который отписывается от сообщений, передаваемые через websocket-канал с адресом: ${destination}`); } } }; export default jsApiMock;