Перейти к основному содержимому

Методы JS-библиотеки FrontendCore

FrontendCore — JS-библиотека, которая распространяется как пакет NPM и содержит описание методов для работы с компонентами экранных форм в DevTools.

Синхронные и асинхронные методы FrontendCore описаны в следующих таблицах.

Синхронные методы FrontendCore

Имя методаПараметры:
назначение и тип
Выполняемое
действие
Возвращаемое значение
addMessagemessage: string,
options?: {persist: boolean,
variant: string,
preventDuplicate: boolean,
autoHideDuration: number,
vertical?: string,
horizontal?: string,
anchorOrigin: object,
buttons?: Array<{text: string,
style: string,
icon: string,
onClick: function}>}
Выводит всплывающее уведомление с текстом message,
типа variant (info, error, success, warning) и с возможностью
persist закрытия всплывающего уведомления вручную.
Может содержать массив объектов button для добавления
кнопок в области уведомления. Для кнопки указывают
текст text, стиль style (Tertiary, TertiaryError или
TertiaryGray), имя значка icon, обработчик события onClick
для задания переменных состояния экранной формы
или реализации иного функционала в разрабатываемом
приложении.
Пример:
addMessage('Ошибка скопирована',
{ variant: 'success',
vertical: 'bottom',
horizontal: 'right', });
undefined
addSubscribertaskId: string или регулярное выражение;
callback: function
Добавляет подписку на события сервиса нотификации
по идентификатору задачи и указывает функцию,
которую необходимо выполнить после
получения уведомления.
Пример:
addSubscriber('6fd8ca43-53e9-4bb4-8b7c-6555939b08f8',
(request) => { console.log(request) })
undefined
createGraphQLSubscriptioncommandName: string,
params: {onMessage, onClose, onError}
Добавляет подписку GraphQL на изменения в классе
с помощью действия с псевдонимом commandName.
В качестве второго параметра принимает обработчики событий
получения сообщения onMessage, завершения соединения onClose, получения ошибки onError.
Пример:
() => {
const handleReq = async (param) => {
console.log('handle req', param);
const dataSourceTest = getDataSource("getClass");
await dataSourceTest.load();
}
const handleClose = (message) => {
console.log('handle close', message);
}
const extraParams = {
onMessage: handleReq,
onClose: handleClose
}
createGraphQLSubscription ('Subscribe_to_Class', extraParams);
}
undefined
createSignalRConnection-Возвращает класс для работы с методами signalR.
Пример:
const connection = createSignalRConnection().withUrl(hubUrl, { accessTokenFactory: () => getToken() }).build();
HubConnectionBuilder
detectBrowserVersion-Возвращает версию текущего браузера в виде числа.
Пример: const version = detectBrowserVersion();
string
endSpankey: stringИспользуется в телеметрии. Останавливает замер с
заданным идентификатором key.
В качестве замера
может выступать, например,
время выполнения фрагмента кода.
Пример:
startSpan('myAlert');
Alert('Привет мир!');
endSpan('myAlert');
undefined
getCommandCommand: string,
Data?: any
Возвращает набор данных,
который в дальнейшем будет передан
в методы SendCommand(), SendDataSet(),
sendGraphQL(), принимающие команды в качестве параметров.
Пример:
sendCommand(getCommand('HideError'))
{ Command: string, Data: any, Container: null, projectId: string}
getCoreVersion-Возвращает версию пакета FrontendCore.
Пример:
console.log(`Версия продукта: ${getCoreVersion()}`);
string
getDataSourcename: stringВозвращает источник данных по имени name.
Пример:
getDataSource('booksDataSource').load();
DataSource
getEvent-Возвращает объект события.
Пример:
OnClick={ () => { const event = getEvent();
event.stopPropagation();}}
any
getFunctionfunctionName: stringВозвращает метод по имени functionName
из *.mdfunctions. Устаревший метод.
Пример:
getFunction('prepareGroups')(selectedWorks);
Function
getLocale-Возвращает текущую локаль пользователя.
Пример:
if (getLocale() === 'ru-RU') console.log('Russian localization language is selected')
string
getLocalizationkey: stringВозвращает перевод по заданному ключу.
Пример:
addMessage(getLocalization('FrontendProject.PIErrorCopied'));
string
getLocalValuekey: stringВозвращает информацию из переменной _tempstorage хранилища
localStorage в браузере по заданному ключу.
Пример:
const SortDirection = getLocalValue(`TableSettingsSortDirection_${ID}`);
any
getProppropName: stringВозвращает значение свойства с заданным именем
для фрагмента экранной формы, в котором вызывается этот метод.
Метод используется во фрагментах экранных форм.
Пример:
<Group Visible={ () => getProp('VisibleItem') } />
any
getRemainingDatedate: Date | stringВозвращает значение времени, прошедшее от заданной даты
до текущего момента, в человекочитаемом виде,
например, "4 years ago"
(см. <https://momentjs.com/docs/#/displaying/fromnow/>).
Пример:
getRemainingDate(new Date('06/21/1989')).
string
getToken-Возвращает токен авторизации.
Пример:
const connection = createSignalRConnection().withUrl(hubUrl, { accessTokenFactory: () => getToken() }).build();
string
getUser-Возвращает объект пользователя.
Пример:
const user = getUser();
{
id_token: string;
session_state?: string;
access_token: string;
refresh_token?: string;
token_type: string;
scope: string;
profile: Profile;
expires_at: number;
state: any;
expires_in: number;
}
getValidationfunctionName: stringВозвращает метод валидации по имени
из *.mdvalidations.
Пример:
Error={(v = Model.phoneNumber) => {if (!getValidation('PHONE')(v)) return 'Введите значение'; }}
(value?: any) => boolean
getValuekey: string,
option: {byRef: boolean, fromMasterPage?: boolean}
Возвращает значение переменной состояния по
имени.
При установленном в true флаге byRef
возвращает значение по ссылке.
При установленном в true флаге fromMasterPage
возвращает значение переменной состояния экранной формы MasterPage системного проекта.
При разработке через IDE с помощью флага
getValueByRef в settings.json можно задать
поведение метода getValue() по умолчанию.
Пример:
const form = getValue('Form');,
const myFunc = getValue('myFunc', {byRef: true});
const mpVariable = getValue('user', {fromMasterPage: true})
any
goToUrl{string} url: строка вида "/path/:param1/:param2";
{object} params: параметры, передаваемые в URL
Перенаправляет на экранную форму по указанному URL
c передачей параметров в адресной строке.
Пример:
С параметром:
goToUrl('/examples/datasourcemappineExample/:subsection', {subsection: 'data'});
Без параметра:
goToUrl('/ui-kit/');
undefined
isMobile-Возвращает true, если приложение
запущено на мобильном устройстве.
Пример:
const isMob = isMobile();
boolean
removeSubscribertaskId: string или регулярное выражениеОтменяет подписку на
уведомления сервера и удаляет
слушателя сокета.
Пример:
removeSubscriber('6fd8ca43-53e9-4bb4-8b7c-6555939b08f8')
undefined
setLocalValuekey: string,
value: string
Устанавливает значение value в переменной _tempstorage хранилища localStorage в браузере по ключу key.
Пример:
setLocalValue(`TableSettingsSortDirection_${ID}`, SortDirection);
undefined
setLocalevalue: stringУстанавливает локаль для текущего пользователя.
Пример:
setLocale('ru-RU');
undefined
setStatestate: object,
settings?: boolean | { toRoot?: boolean, toMasterPage?: boolean }
Обновляет значения переменных состояния экранной
формы аналогично методу setState() в React.
Ключами параметра state являются имена переменных
состояния. Ключи могут быть записаны в кавычках
и содержать пути с точками.
Пример:
setState({myStringVar: 'Hello world','myObj.someField': 123,});
В отдельных случаях возможно изменить только значения
полей объектов, не изменяя объект.
Передача в settings булева значения устанавливает признак
задания переменной состояния на родительской экранной форме.
При передаче в settings объекта поле toRoot устанавливает признак задания переменной состояния на родительской
экранной форме, а поле toMasterPage устанавливает признак задания
переменной состояния на экранной форме MasterPage системного проекта.
Пример 1:
setState({ noWorkAreaPadding: true }, { toMasterPage: true });
Пример 2:
setState({ selectedUnit: id }, { toRoot: true });
undefined
startSpankey: stringЗапускает замер с заданным идентификатором key. В качестве
замера может выступать, например, время выполнения
фрагмента кода.
Пример:
startSpan('myAlert');
Alert('Привет мир!');
endSpan('myAlert');
Span
subtractDatedate: number,
type: string
Вычитает заданное количество date
временных единиц type (см. <https://momentjscom.readthedocs.io/en/latest/moment/03-manipulating/02-subtract/>).
string
stopEvent-Останавливает всплытие текущего события.
Пример:
OnClick={() => { stopEvent(); // это событие не сработает на родительском элементе }}
undefined
useFilterdata: Array, filterOptions: FilterConfig,
columns: Array<{dataType: string, dateFormat?: string}>
Фильтрует массив data согласно filterOptions. Параметры filterOptions передаются в формате, который возвращает компонент Filter.
Фильтрация данных типа date выполняется с учетом формата dateFormat.
Допустимые форматы перечислены в библиотеке moment.js.
Если формат не указан, по умолчанию используется формат ISO 8601.
Пример:
<Filter
...
Columns-var="COLUMNS"
Model-var="filterSettings"
OnFilterSet={(initialData, filterSettings, COLUMNS) => {
const DATA = useFilter(initialData, filterSettings, COLUMNS);
...
}}
/>
Array
usePaginationdata: Array, settings: {skip: number, take: number}Возвращает часть массива data размером take, пропуская skip элементов. Используется для пагинации данных в компонентах, работающих с массивами данных, например, DataGrid, Tree, Select.
Пример:
const array = [
{ id: '1', subject: 'ObjectObject', object: '1.10.2022', type: 1, permission: 'permission1' },
{ id: '2', subject: '1', object: '2.10.2022', type: 1, permission: 'permission1', selected: true },
{ id: '3', subject: 'Строка с указанной в 100 пикселей высотой', object: '3.10.2022', type: 2 },
];
const currentPageData = usePagination(array, { skip: 2, take: 2 });
Array
useSearchdata: Array, settings: {value: string, fieldName = '*', fieldType = 'string'}Возвращает массив индексов элементов массива data,
для которых в поле fieldName найдено value.
Поиск возможен только по строковым значениям. По умолчанию поиск происходит во всех полях.
Пример:
const array = [
{ id: '1', subject: 'ObjectObject', object: '1.10.2022', type: 1, permission: 'permission1' },
{ id: '2', subject: '1', object: '2.10.2022', type: 1, permission: 'permission1', selected: true },
{ id: '3', subject: 'Строка с указанной в 100 пикселей высотой', object: '3.10.2022', type: 2 },
];
const searchResult = useSearch(array, {value: "высотой"});
Array<{ index:
number }>
useSortdata: Array, sortOptions: {fieldType: "string"| "date" | "number" | "boolean", fieldName: string, sortDirection: 1 | -1}, dateFormat?: stringСортирует данные в массиве data по указанному в sortOptions.fieldName полю согласно направлению сортировки sortDirection. Тип sortOptions.fieldType должен соответствовать типу данных,
содержащихся в указанном поле fieldName. Если в fieldType передано значение типа date, сортировка происходит по датам
с учетом формата dateFormat.
Допустимые форматы перечислены в библиотеке moment.js. Если формат не указан, по умолчанию используется формат ISO 8601.
Пример:
const array = [{ id: '1', subject: 'ObjectObject',
creationDate: '1.10.2022', type: 1 },
{ id: '2', subject: '1',
creationDate: '2.10.2022', type: 1 },
{ id: '3', subject: 'Строка',
creationDate: '3.10.2022', type: 2 } ];
const sortSettings = {fieldType: 'date',
fieldName: 'creationDate', sortDirection: 1, dateFormat: 'DD.MM.YYYY'};
const sortedData = useSort(array, sortSettings);
Array
validatesomeObject: objectВозвращает результирующее значение
модели валидации: true или false.
Метод может использоваться для объекта
или массива объектов. Проверяет, имеет ли
каждый ключ переданного в качестве параметра
объекта someObject значение true.
Ключ имеет значение true, если
он не является null, undefined, 0 или false.
Пример:
OnSubmit={() => { if (validate(getValue('FormValidationState'))) { executeAction('sendForm', getValue('FormData')); } }}
boolean

Асинхронные методы FrontendCore

Имя методаПараметры:
назначение и тип
Выполняемое действие
Alertmessage: string,
preformatted?: boolean.
Отображает стандартное диалоговое окно с
предупреждающим сообщением и кнопкой ОК.
Параметр preformatted является признаком отображения
пробелов в message. При preformatted=true пробелы
отображаются, как переданы в параметре message.
Пример:
Alert('Привет мир!')
Confirmmessage: string,
title?:string,
className?:string,
btnConfirm?:string
Отображает стандартное диалоговое окно
с сообщением и кнопками ОК и Отмена.
Пример:
Confirm('Сохранить изменения?',
'Изменение сущности', 'red', 'ОК')
executeActioncommandName: string,
params: Object
Вызывает действие с псевдонимом commandName, применимое к экранной форме. Автоматически определяет тип вызываемого действия.
Если тип вызываемого действия соответствует Static,
реализует переход только между экранными формами одного проекта.
Заменяет sendCommand(), sendDataSet(), sendGraphQL().
Пример:
const result = await executeAction('getBook', {id: 123});
getGlobalValuekey: stringВозвращает значение из UserSettingService по ключу key.
Пример:
const userSettings = await getGlobalValue('ganttSettings');
getHelpid: numberВозвращает справку из helpService по идентификатору страницы id.
Пример:
const help = await getHelp(id);
Promptmessage: stringОтображает стандартное диалоговое окно с
сообщением, текстовым полем для ввода данных и
кнопками ОК и Отмена.
Пример:
const result = await Prompt('Введите что-нибудь сюда'); if (result) { Alert('Вы ввели "${result}"'); } else { Alert('Вы отказались'); }
sendCommandCommand: string,
Data?: Object,
callback?: function,
method?: string
Реализует переход от одной экранной формы к другой
экранной форме. Метод использовался до реализации executeAction(), который является заменой. Устаревший метод.
Пример:
await sendCommand('goToAddProj', {rowId}); // значение будет доступно через getValue('Request.rowId')
sendDataSetCommand: string,
Data?: Object, Options?:{ showErrorContainer?:boolean = true, showWaitingContainer?:boolean = true,
isJSON?:boolean = true }
Отправляет команду для получения набора данных. Метод использовался до реализации
executeAction(), который является заменой.
Устаревший метод.
Пример:
const result = await sendDataSet('getModelItems', { workId: id })
sendGraphQLCommand: string,
Variables?: object,
Query?: string,
Options?: {showWaitingContainer?: boolean = true}
Отправляет команду для вызова GraphQL-запроса. Метод использовался до реализации
executeAction(), который является заменой.
Устаревший метод.
Пример:
const result = await sendGraphQL({Command: 'EditApplication', Variables: { "id": getValue('editForm').id } })
setGlobalValuekey: string,
value: string
Записывает заданное значение в UserSettingService.
Пример:
await setGlobalValue("ganttSettings", JSON.stringify(ganttSettings));