Extend base function in the controller

Hi Team,

 

I'm trying to extend a base function in my custom controller. And the code is loading once I open the page but is not triggering the function. Is this the correct way? What I'm doing wrong in this case?

So I have the custom controller created in this way:

Ext.define("Terrasoft.configuration.controller.SMAgilizExpenseManagementGridPage", {
	extend: "Terrasoft.controller.BaseGridPage",
 
	statics: {
		Model: AgilizExpenseManagement
	},
 
	config: {
		refs: {
			view: "#AgilizExpenseManagementGridPage"
		}
	},
 
	/**
	 * @inheritdoc
	 * @protected
	 * @overridden
	 */
		getChangeModeOperations: function() {
		var detailConfig = this.getDetailConfig();
		if (detailConfig) {
			var parentRecord = detailConfig.parentRecord;
			if (parentRecord.get("IsNonActualEmail") === false) {
				return {
					canCreate: false,
					canUpdate: false,
					canDelete: false
				};
			}
		}
		return this.callParent(arguments);
	},
	initializeQueryConfig: function() {
		this.callParent(arguments);
		var gridQueryConfig = this.getQueryConfig();
		gridQueryConfig.addColumns(this.startDateColumnName, this.endDateColumnName);
		if (Terrasoft.FeatureUtils.isHybridMode()) {
			gridQueryConfig.setIsBatch(false);
		}
	},
 
});

And is added in the MobileApplicationManifestDefaultWorkplace as well:

 

 

Like 0

Like

7 comments
Best reply

 Hi Oscar, I solve it with this code. We change the extend for override. Of course this override for the entire app but works for me :)

Ext.define("Terrasoft.controller.AgilizExpenseManagement", {
	override: "Terrasoft.controller.BaseModelPage",
 
	statics: {
		Model: AgilizExpenseManagement
	},
	/**
	 * @inheritdoc
	 * @protected
	 * @overridden
	 */
		getChangeModeOperations: function() {
		var detailConfig = this.getDetailConfig();
		if (detailConfig && detailConfig.parentRecord.data.AgilizExpenseStatus.id) {
			var parentRecord = detailConfig.parentRecord;
			if ( parentRecord.data.AgilizExpenseStatus.id && parentRecord.data.AgilizExpenseStatus.id !== "f50b9fd6-21ed-47ff-8450-e7f5f9c82c5f") {
 
				return {
					canCreate: false,
					canUpdate: false,
					canDelete: false
				};
			}
		}
		return this.callParent(arguments);
	}
 
});

 

​Hi Federico,



This method is a part of the BaseModelPage controller:

Try extending the Terrasoft.controller.BaseModelPage. Also please check if the extended module is added to the CustomSchemas sync option in the manifest.

Best regards,

Oscar

Hi Oscar Dylan,

I try to add the BaseModelPage in extended but still is calling the base one. The schema is loading in the debbuger but is not trigged the function. I added in the customschemas as well.

 

Something is missing in my code?

 

Ext.define("Terrasoft.controller.SMAgilizExpenseManagement", {
	extend: "Terrasoft.controller.BaseModelPage",
 
	statics: {
		Model: AgilizExpenseManagement
	},
	/**
	 * @inheritdoc
	 * @protected
	 * @overridden
	 */
		getChangeModeOperations: function() {
			window.alert("Test");
		var detailConfig = this.getDetailConfig();
		if (detailConfig) {
			var parentRecord = detailConfig.parentRecord;
			if (parentRecord.get("IsNonActualEmail") === false) {
 
				return {
					canCreate: false,
					canUpdate: false,
					canDelete: false
				};
			}
		}
		return this.callParent(arguments);
	}
 
});

 

 

I tried to extend the controller in many ways but looks is not working. Somebody have a example to share?

Federico Buffa ...,

 

Hi,

 

I am studying the base AccountPreviewPage code to give you an example of the controller extension. Please give me a couple of days and I will return to you with an update.

 

Meanwhile if someone has an example - it would also help us much!

 

Best regards,

Oscar

 Hi Oscar, I solve it with this code. We change the extend for override. Of course this override for the entire app but works for me :)

Ext.define("Terrasoft.controller.AgilizExpenseManagement", {
	override: "Terrasoft.controller.BaseModelPage",
 
	statics: {
		Model: AgilizExpenseManagement
	},
	/**
	 * @inheritdoc
	 * @protected
	 * @overridden
	 */
		getChangeModeOperations: function() {
		var detailConfig = this.getDetailConfig();
		if (detailConfig && detailConfig.parentRecord.data.AgilizExpenseStatus.id) {
			var parentRecord = detailConfig.parentRecord;
			if ( parentRecord.data.AgilizExpenseStatus.id && parentRecord.data.AgilizExpenseStatus.id !== "f50b9fd6-21ed-47ff-8450-e7f5f9c82c5f") {
 
				return {
					canCreate: false,
					canUpdate: false,
					canDelete: false
				};
			}
		}
		return this.callParent(arguments);
	}
 
});

 

Looks the function is working for the fields but no for the button edit. I can't find the logic for that.

this solutions works to hide the edit button if the permission canUpdate is false

Ext.define("Terrasoft.controller.AgilizExpenseManagementPreviewPage", {
	override: "Terrasoft.controller.BasePreviewPage",
 
 
	initNavigationButtons: function() {
		this.callParent(arguments);
		let view = this.getView();
		if (this.getChangeModeOperations().canUpdate && view.getEditButton()) {
			let editButton = view.showEditButton(true);
			editButton.on("tap", this.onEditButtonTap, this);
		} else {
			view.showEditButton(false);
		}
	}
 
});

 

Show all comments