Добавление пользовательского компонента в окружение Terrasoft

Коллеги подскажите пожалуйста есть необходимость в окружение добавить пользовательский компонент и получать к нему доступ через Terrasoft.{пользовательский компонент}. 

Трудность заключается в том, что данные компонента находятся в БД и на данный момент получаются с помощью конфигурационного сервиса. Сам компонент заполняется  в callback функции. То есть доступен не сразу, а только после получения ответа от сервиса.

Каким образом можно создать компонент например при инициализации сессии пользователя либо при первичной загрузки интерфейса?

Нравится

1 комментарий

Егор, а в чём отличие Вашего компонента от какой-то стандартной функциональности, например, 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 на главной странице?

Показать все комментарии