define("UsrReportingDetailV2", ["ConfigurationEnums", "css!ProjectCSSModule"], function(enums) {
return {
entitySchemaName: "UsrReporting",
attributes: {
/**
* Отвечает за загруженные уровни иерархии
*/
"expandedElements": {
dataValueType: Terrasoft.DataValueType.CUSTOM_OBJECT,
type: Terrasoft.ViewModelColumnType.VIRTUAL_COLUMN
},
/**
* Отвечает за список развернутых элементов,
* хранит массив уникальных идетификаторов записей
*/
"expandHierarchyLevels": {
dataValueType: Terrasoft.DataValueType.CUSTOM_OBJECT,
type: Terrasoft.ViewModelColumnType.VIRTUAL_COLUMN
},
/**
* Отвечает за хранение разворачиваемого элемента иерархии
*/
"ExpandItemId": {
dataValueType: Terrasoft.DataValueType.GUID,
type: Terrasoft.ViewModelColumnType.VIRTUAL_COLUMN
}
},
methods: {
/**
* @overridden
*/
disableGridSorting: Ext.emptyFn,
/**
* @overridden
*/
sortColumn: Ext.emptyFn,
/**
* Обнавляет страницы редактирования проекта
* @overridden
* @private
*/
initEditPages: function() {
this.callParent(arguments);
debugger;
var editPages = this.get("EditPages");
var workPage = editPages.collection.items[0];
workPage.set("Click", {"bindTo": "addToRootRecord"});
workPage.set("Caption", "Super");
workPage.set("Visible", true);
var childItemId = Terrasoft.utils.generateGUID();
var config = {
"Id": childItemId,
"Caption": "Sub",
"Click": {"bindTo": "addToChildRecord"},
"Enabled": {"bindTo": "isSingleSelected"},
"Tag": childItemId,
"SchemaName": "UsrReportingPageV2"
};
var addToChildMenuItem = this.getActionsMenuItem(config);
editPages.add(childItemId, addToChildMenuItem);
},
/**
* Открывает страницу Работы для добавления элемента дочернего элемента выбранной записи
* @protected
* @virtual
*/
addToChildRecord: function() {
var scope = this;
var selectedItems = this.getSelectedItems();
this.set("ExpandItemId", selectedItems[0]);
this.replaceDefaultValue("UsrParent", selectedItems[0]);
var masterRecordId = this.get("MasterRecordId");
this.addRecord();
},
/**
* Устанавливает значение по умолчанию для параметра страницы редактировани новой записи
* @protected
* @virtual
* @param {String} key Имя параметра
* @param {*} value значение параметра
*/
replaceDefaultValue: function(key, value) {
var defaultValues = this.get("DefaultValues");
var oldValue = defaultValues.filter(function(item) {
return item.name === key;
});
if (Ext.isEmpty(oldValue)) {
defaultValues.push({
name: key,
value: value
});
} else {
Terrasoft.each(oldValue, function(item) {
item.value = value;
});
}
},
/**
* Открывает страницу Проекта или Работы для добавления элемента в текущий уровань иерархии
* @protected
* @virtual
* @param {String} typeUId Уникальный идентификатор типа записи проекта
*/
addToRootRecord: function(typeUId) {
var masterRecordId = this.Terrasoft.GUID_EMPTY;
this.replaceDefaultValue("UsrParent", masterRecordId);
this.addRecord();
},
/**
* Обработчик загрузки дочерних элементов. Осуществляет проверку загружености
* дочерних элеметов выбранной записи. Запускает загрузку нового уровня.
* @protected
* @virtual
* @param {String} primaryColumnValue Уникальный идентификатор записи
* @param {Boolean} isExpanded Признак того, разворачивает или сворачивает пользователь дочерние элеметы
* true - если разворачивает, false в обратном случае
*/
onExpandHierarchyLevels: function(primaryColumnValue, isExpanded) {
if (!isExpanded || this.isItemExpanded(primaryColumnValue)) {
return;
}
this.setExpandedItem(primaryColumnValue);
this.set("ExpandItemId", primaryColumnValue);
this.loadGridData();
},
/**
* Удаляет логику постраничности если загружаются дочерние объекты
* @protected
* @overridden
*/
initQueryOptions: function() {
var parentItem = this.get("ExpandItemId");
if (!parentItem) {
var isClearGridData = this.get("IsClearGridData");
if (isClearGridData) {
this.clearExpandHierarchyLevels();
}
this.callParent(arguments);
}
},
/**
* Удаляет логику постраничности если загружаются дочерние объекты
* @protected
* @overridden
*/
initCanLoadMoreData: function() {
var parentItem = this.get("ExpandItemId");
if (!parentItem) {
this.callParent(arguments);
}
this.get("expandedElements")["EB64FD9A-DF42-4275-8F1B-0A32ABB68AD5"] = {
page: 0
};
},
/**
* Инициализирует параметры детали
* @protected
* @overridden
*/
initData: function() {
this.callParent(arguments);
this.set("expandedElements", {});
this.set("expandHierarchyLevels", []);
},
},
diff: /**SCHEMA_DIFF*/[
{
"operation": "merge",
"name": "DataGrid",
"values": {
"type": "listed",
"hierarchical": true,
"sortColumnDirection": {"bindTo": "disableGridSorting"},
"hierarchicalColumnName": "ParentId",
"updateExpandHierarchyLevels": {
"bindTo": "onExpandHierarchyLevels"
},
expandHierarchyLevels: {
"bindTo": "expandHierarchyLevels"
},
"listedConfig": {
"name": "DataGridListedConfig",
"items": [
{
"name": "UsrFileNameListedGridColumn",
"bindTo": "UsrFileName",
"position": {
"column": 1,
"colSpan": 12
}
},
{
"name": "UsrDisplayPortalListedGridColumn",
"bindTo": "UsrDisplayPortal",
"position": {
"column": 21,
"colSpan": 4
}
}
]
},
"tiledConfig": {
"name": "DataGridTiledConfig",
"grid": {
"columns": 24,
"rows": 3
},
"items": [
{
"name": "UsrFileNameTiledGridColumn",
"bindTo": "UsrFileName",
"position": {
"row": 1,
"column": 1,
"colSpan": 12
}
},
{
"name": "UsrDisplayPortalTiledGridColumn",
"bindTo": "UsrDisplayPortal",
"position": {
"row": 1,
"column": 21,
"colSpan": 4
}
}
]
}
}
},
{
"operation": "insert",
"name": "UpButton",
"parentName": "Detail",
"propertyName": "tools",
"index": 0,
"values": {
"itemType": Terrasoft.ViewItemType.BUTTON,
"tag": -1,
"imageConfig": {
"bindTo": "Resources.Images.UpImage"
},
"click": {"bindTo": "changePosition"},
"visible": {"bindTo": "getToolsVisible"},
"enabled": {"bindTo": "canChangeSelectedItemPosition"},
"hint": {"bindTo": "Resources.Strings.ChangePositionUpButtonCaption"}
}
},
{
"operation": "insert",
"name": "DownButton",
"parentName": "Detail",
"propertyName": "tools",
"index": 1,
"values": {
"itemType": Terrasoft.ViewItemType.BUTTON,
"tag": 1,
"imageConfig": {
"bindTo": "Resources.Images.DownImage"
},
"click": {"bindTo": "changePosition"},
"visible": {"bindTo": "getToolsVisible"},
"enabled": {"bindTo": "canChangeSelectedItemPosition"},
"hint": {"bindTo": "Resources.Strings.ChangePositionDownButtonCaption"}
}
},
{
"operation": "remove",
"name": "ViewSortMenu",
"parentName": "ViewButton",
"propertyName": "menu"
}
]/**SCHEMA_DIFF*/
};
});
Результат, кнопка добавить записи ("+") появилась новая, но с двумья кнопками, я старую убрал пока что. Отступ появился перед записей , там есть какое-то простарнство видимо для открывающегося списка, но плюсик там не появился. Я хочу сделать обычную деталь, и обычные дочерние записи, без всех проверок и сложной логики. На сколько я понимаю, она вообще не сложная, если сделать простую, главное корректно сохранять связь между родителями. Вопрос, где хранятся признаки что у записи есть дочерние, или нет, видимо я их где то не сечу, где не могу понять ...