Коллеги подскажите пожалуйста есть необходимость в окружение добавить пользовательский компонент и получать к нему доступ через Terrasoft.{пользовательский компонент}.
Трудность заключается в том, что данные компонента находятся в БД и на данный момент получаются с помощью конфигурационного сервиса. Сам компонент заполняется в callback функции. То есть доступен не сразу, а только после получения ответа от сервиса.
Каким образом можно создать компонент например при инициализации сессии пользователя либо при первичной загрузки интерфейса?
Нравится
Егор, а в чём отличие Вашего компонента от какой-то стандартной функциональности, например, AcademyUtilities? Там тоже в функции getAcademyUrlFromLookup получают данные из базы по SQ, что происходит не мгновенно.
/**
* Gets academy URL from lookup.
* @private
* @param {Object} config Configuration object.
* @param {Function} config.callback Callback function.
*/
getAcademyUrlFromLookup: function(config) {
var cacheItemName = "AcademyURL_" + Terrasoft.currentUserCultureName;
var getLmsUrlQuery = Ext.create("Terrasoft.EntitySchemaQuery", {
rootSchemaName: "AcademyURL",
rowCount: 1,
serverESQCacheParameters: {
cacheLevel: Terrasoft.ESQServerCacheLevels.WORKSPACE,
cacheGroup: "AcademyUtilities",
cacheItemName: cacheItemName
}
});
getLmsUrlQuery.clientESQCacheParameters = {cacheItemName: cacheItemName};
getLmsUrlQuery.addColumn("Description", "Description");
getLmsUrlQuery.getEntityCollection(function(response) {
var collection = response.collection;
var academyRootUrl = "";
if (collection.getCount()) {
academyRootUrl = collection.first().get("Description");
}
Ext.callback(config.callback, this, [academyRootUrl]);
}, this);
}Или под компонентом имеете в виду что-то другое, вроде виджета в итогах или iframe на главной странице?