Вопрос

Деталь = Страница добавления + Редактируемый реестр

Добрый день!

Идея такая - при добавлении записи применять страницу добавления (т.к. используется механизм подбора продукта), при редактировании полей количество, цена и т.д. выполнять в режиме редактирования реестра (это быстрее и нет надобности открывать новую страницу). Подскажите, пожалуйста, можно ли как то это реализовать. Спасибо.

Нравится

2 комментария
Лучший ответ

На примере базовой детали:

 

define("ContactCareerDetailV2",
	["ConfigurationGrid", "ConfigurationGridGenerator", "ConfigurationGridUtilities"],
	function() {
		return {
			attributes: {
				IsEditable: {
					dataValueType: Terrasoft.DataValueType.BOOLEAN,
					value: true
				}
			},
			diff: /**SCHEMA_DIFF*/[
				{
					name: "DataGrid",
					operation: "merge",
					values: {
						activeRowAction: {bindTo: "onActiveRowAction"},
						activeRowActions: [
							{
								className: "Terrasoft.Button",
								imageConfig: {bindTo: "Resources.Images.SaveIcon"},
								markerValue: "save",
								style: Terrasoft.controls.ButtonEnums.style.TRANSPARENT,
								tag: "save"
							},
							{
								className: "Terrasoft.Button",
								imageConfig: {bindTo: "Resources.Images.CardIcon"},
								markerValue: "card",
								style: Terrasoft.controls.ButtonEnums.style.TRANSPARENT,
								tag: "card"
							},
							{
								className: "Terrasoft.Button",
								imageConfig: {bindTo: "Resources.Images.CancelIcon"},
								markerValue: "cancel",
								style: Terrasoft.controls.ButtonEnums.style.TRANSPARENT,
								tag: "cancel"
							},
							{
								className: "Terrasoft.Button",
								imageConfig: {bindTo: "Resources.Images.RemoveIcon"},
								markerValue: "remove",
								style: Terrasoft.controls.ButtonEnums.style.TRANSPARENT,
								tag: "remove"
							}
						],
						changeRow: {bindTo: "changeRow"},
						className: "Terrasoft.ConfigurationGrid",
						generateControlsConfig: {bindTo: "generateActiveRowControlsConfig"},
						generator: "ConfigurationGridGenerator.generatePartial",
						initActiveRowKeyMap: {bindTo: "initActiveRowKeyMap"},
						multiSelect: false,
						onGridClick: {bindTo: "onGridClick"},
						unSelectRow: {bindTo: "unSelectRow"}
					}
				}
			]/**SCHEMA_DIFF*/,
			methods: {
				getSwitchGridModeMenuItem: Terrasoft.emptyFn,
				onActiveRowAction: function(buttonTag, primaryColumnValue) {
					switch (buttonTag) {
						case "card":
							var row = this.getGridData().get(primaryColumnValue);
							this.saveRowChanges(row, function(p) {
								this.editRecord(row);
							}, this);
							break;
						case "remove":
							this.deleteRecords();
							break;
						case "cancel":
							this.discardChanges(primaryColumnValue);
							break;
						case "save":
							this.onActiveRowSave(primaryColumnValue);
							break;
					}
				},
				openCardByMode: function() {
					var cardState = this.get("CardState");
					var editPageUId = this.get("EditPageUId");
					var primaryValueUId = this.get("PrimaryValueUId");
					//в любом случае открываем страницу редактирования записи детали
					this.openCard(cardState, editPageUId, primaryValueUId);
 
					//кусок базовой логики
					/*if (this.getIsEditable() && cardState !== enums.CardStateV2.EDIT) {
						this.addRow(editPageUId);
					} else {
						this.openCard(cardState, editPageUId, primaryValueUId);
					}*/
				}
			},
			mixins: {
				ConfigurationGridUtilites: "Terrasoft.ConfigurationGridUtilities"
			}
		};
	});

 

На примере базовой детали:

 

define("ContactCareerDetailV2",
	["ConfigurationGrid", "ConfigurationGridGenerator", "ConfigurationGridUtilities"],
	function() {
		return {
			attributes: {
				IsEditable: {
					dataValueType: Terrasoft.DataValueType.BOOLEAN,
					value: true
				}
			},
			diff: /**SCHEMA_DIFF*/[
				{
					name: "DataGrid",
					operation: "merge",
					values: {
						activeRowAction: {bindTo: "onActiveRowAction"},
						activeRowActions: [
							{
								className: "Terrasoft.Button",
								imageConfig: {bindTo: "Resources.Images.SaveIcon"},
								markerValue: "save",
								style: Terrasoft.controls.ButtonEnums.style.TRANSPARENT,
								tag: "save"
							},
							{
								className: "Terrasoft.Button",
								imageConfig: {bindTo: "Resources.Images.CardIcon"},
								markerValue: "card",
								style: Terrasoft.controls.ButtonEnums.style.TRANSPARENT,
								tag: "card"
							},
							{
								className: "Terrasoft.Button",
								imageConfig: {bindTo: "Resources.Images.CancelIcon"},
								markerValue: "cancel",
								style: Terrasoft.controls.ButtonEnums.style.TRANSPARENT,
								tag: "cancel"
							},
							{
								className: "Terrasoft.Button",
								imageConfig: {bindTo: "Resources.Images.RemoveIcon"},
								markerValue: "remove",
								style: Terrasoft.controls.ButtonEnums.style.TRANSPARENT,
								tag: "remove"
							}
						],
						changeRow: {bindTo: "changeRow"},
						className: "Terrasoft.ConfigurationGrid",
						generateControlsConfig: {bindTo: "generateActiveRowControlsConfig"},
						generator: "ConfigurationGridGenerator.generatePartial",
						initActiveRowKeyMap: {bindTo: "initActiveRowKeyMap"},
						multiSelect: false,
						onGridClick: {bindTo: "onGridClick"},
						unSelectRow: {bindTo: "unSelectRow"}
					}
				}
			]/**SCHEMA_DIFF*/,
			methods: {
				getSwitchGridModeMenuItem: Terrasoft.emptyFn,
				onActiveRowAction: function(buttonTag, primaryColumnValue) {
					switch (buttonTag) {
						case "card":
							var row = this.getGridData().get(primaryColumnValue);
							this.saveRowChanges(row, function(p) {
								this.editRecord(row);
							}, this);
							break;
						case "remove":
							this.deleteRecords();
							break;
						case "cancel":
							this.discardChanges(primaryColumnValue);
							break;
						case "save":
							this.onActiveRowSave(primaryColumnValue);
							break;
					}
				},
				openCardByMode: function() {
					var cardState = this.get("CardState");
					var editPageUId = this.get("EditPageUId");
					var primaryValueUId = this.get("PrimaryValueUId");
					//в любом случае открываем страницу редактирования записи детали
					this.openCard(cardState, editPageUId, primaryValueUId);
 
					//кусок базовой логики
					/*if (this.getIsEditable() && cardState !== enums.CardStateV2.EDIT) {
						this.addRow(editPageUId);
					} else {
						this.openCard(cardState, editPageUId, primaryValueUId);
					}*/
				}
			},
			mixins: {
				ConfigurationGridUtilites: "Terrasoft.ConfigurationGridUtilities"
			}
		};
	});

 

Спасибо, Данила! Настройка работает.

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