Проблема с созданием миникарточки для нового раздела
Коллеги, всем привет!
Столкнулся с проблемой создания и открытия миникарточки для нового раздела.
Добавил миникарочку по руководству на академии: создал саму карточку и зарегистрировал её в БД с помощью SQL скрипта. При наведении на ссылку записи в реестре карточка появляется.
![]()
Сейчас у меня стоит задача открывать миникарточку из карточки другой сущности.
По аналогии со стандартным функционалом я забиндил свой метод на кнопку в нужной мне карточке и пытаюсь вызвать миникарточку как то вот так:
createCertRequest: function() {
this.openAddMiniPage({
entitySchemaName: "CertifRequest"
//valuePairs: this.getAddMiniPageDefaultValues(typeColumnValue)
});
}Где CertifRequest это нужный мне объект миникарточки. В результате при нажатии на кнопку появляется ShowBodyMask и ничего не происходит (ошибок в консоле нет).
Если поменять CertifRequest например на Activity - то появляется миникарточка активности.
Вопрос к знатокам: как вызвать созданную мной миникарточку в нужном мне методе и что я делаю не так?
Также непонятно как сделать чтобы миникарточка вызывалась при создании новой записи в разделе. Создание новой системной настройки по аналогии с существующими (Has{EntitiyMiniPageName}AddMode) ни к чему не привело.
Заранее большое спасибо за ваши ответы.
С уважением.
Нравится
Ох зря вы полезли в разбираться в миникарточках... Это — адовая помойка и я советую обходить её как можно дальше.
По теме: вы зарегистрировали миникарточку только для режима "предпросмотра". Для режима добавления надо прописать:
"MiniPageModes": {
"value": [this.Terrasoft.ConfigurationEnums.CardOperation.VIEW,
this.Terrasoft.ConfigurationEnums.CardOperation.ADD]
},в аттрибутах в схеме миникарточки. После этого должно заработать.
Если не заработало, отпишитесь, возможно надо ещё что-то в базе прописать(давно делал, сейчас не вспомню все детали).
Данила,
Большое спасибо за совет - все заработало!
Очень странно, что про это нигде ничего не написано.
Если не использовать миникарточки, есть ли какой-нибудь функционал создания модальных окон?
Например нужно всплывающее модальное окно с несколькими полями и потом на основании введенных данных создать запись или запустить БП.
С уважением,
Дмитрий
Тёскин Дмитрий Валерьевич,
Вариантов несколько:
1) Свой модуль со страницей редактирования (завтра если нужно, могу приложить файлы)
2) Terrasoft.inputBox (пример рассматривался тут)
3) Террасофт любит лепить ChooserModule, по сути что-то вроде inputBox (динамически генерит модуль на основании конфига). Надо будет посмотреть, в чём фишка и если что "позаимствовать" у них реализацию)
Тёскин Дмитрий Валерьевич пишет:
Очень странно, что про это нигде ничего не написано.
Как раз таки тут я не удивлён. Это терик. У них уже как 1.5 года sdk хромает, мягко говоря. Экспириенс разработки набивается исключительно на граблях.
Куллстори: добавил миникарточку, зарегистрировал в бд, нажимаю в разделе кнопку "добавить". Система увидела её существование в EditPages, начала грузить init миникарточки, а там какой-то умник написал что-то вроде
if (operation !== Terrasoft.ConfigurationEnums.CardOperation.ADD) {return}ииии всё. миникарточка не открылась, полная карточка не открылась, висит маска загрузки, нигде ничего нельзя нажать, пользователь не понимает что делать.
Данила,
Реверс-инжинириг какой-то получается, а не разработка :)
1) Свой модуль со страницей редактирования (завтра если нужно, могу приложить файлы)
2) Terrasoft.inputBox (пример рассматривался тут)
3) Террасофт любит лепить ChooserModule, по сути что-то вроде inputBox (динамически генерит модуль на основании конфига). Надо будет посмотреть, в чём фишка и если что "позаимствовать" у них реализацию)
Был бы очень признателен за примеры первого и третьего метода.
С InpubBox вроде бы примерно понятно, но опять же непонятно что делать, если мне нужен LookUp в этом модальном окне.
Тёскин Дмитрий Валерьевич пишет:
Был бы очень признателен за примеры первого и третьего метода.
1) вызывается модуль так (не забудьте подключить ModalBox):
var data = {
cardId: this.get("Id") //параметры для модуля
};
var moduleId = this.sandbox.id + "_CustomModule";
this.modalBoxContainer = ModalBox.show({
minHeight: "1",
minWidth: "1",
maxHeight: "100",
maxWidth: "100"
});
ModalBox.setSize(750, 400); //ширина, высота
var moduleConfig = {
renderTo: this.modalBoxContainer,
id: moduleId,
parameters: {
Parameters: data
}
};
this.sandbox.loadModule("UsrMyModule", moduleConfig);Модуль
define("UsrMyModule", ["BaseSchemaModuleV2"],
function() {
Ext.define("Terrasoft.configuration.UsrMyModule", {
extend: "Terrasoft.BaseSchemaModule",
alternateClassName: "Terrasoft.UsrMyModule",
initSchemaName: function() {
this.schemaName = "UsrMyModuleSchema";
},
initHistoryState: Terrasoft.emptyFn,
createViewModel: function() {
var viewModel = this.callParent(arguments);
var parameters = this.parameters;
if (parameters) {
viewModel.set("Parameters", parameters.Parameters);
}
return viewModel;
}
});
return Terrasoft.UsrMyModule;
});Страница редактирования
define("UsrMyModuleSchema",
[],
function() {
return {
attributes: {
"Parameters": {
"dataValueType": this.Terrasoft.DataValueType.CUSTOM_OBJECT,
"type": this.Terrasoft.ViewModelColumnType.VIRTUAL_COLUMN
}
},
messages: {},
details: {},
methods: {
init: function(callback, scope) {
this.callParent(arguments);
}
},
diff: []
};
});