Override dashboard list Name link

Hi Community,

 

How can I override the dashboard list Name link, OOB functionality is opening its  corresponding record but instead of this I want to put some logic and  open other page. Where can I override this exact function? Any idea?

 

Like 0

Like

1 comments

Dear Fulgen, 

 

Please see the article below on how to change the logic on the link click: 

https://community.creatio.com/questions/show-captions-instead-absolute-url-links

 

 Here is the way how you can override the dashboard: 

1) Create your custom module that would extend Terrasoft.DashboardListedGridViewModel

Here is an example: 

define("UsrDashboardListedGridViewModel", ["ControlGridModule"], function() {

    Ext.define("Terrasoft.UsrDashboardListedGridViewModel", {

        extend: "Terrasoft.DashboardListedGridViewModel",

        

        getGridDataColumns: function() {

            var gridDataColumns = this.callParent(arguments);

            gridDataColumns.QualifyStatus = gridDataColumns.QualifyStatus || {path: "QualifyStatus"};

            gridDataColumns.QualificationProcessId =

                    gridDataColumns.QualificationProcessId || {path: "QualificationProcessId"};

            gridDataColumns["QualifyStatus.StageNumber"] =

                    gridDataColumns["QualifyStatus.StageNumber"] || {path: "QualifyStatus.StageNumber"};

            return gridDataColumns;

        },

        getQualifyStatus:function(id) {

            var activeRow;

            if (id) {

                var gridData = this.getGridData();

                activeRow = gridData.get(id);

            } else {

                activeRow = this.getActiveRow();

            }

            if (!activeRow) {

                return null;

            }

            var qualifyStatus = activeRow.get("QualifyStatus");

            return (qualifyStatus) ? qualifyStatus.value : null;

        },

        addColumnLink: function(item) {

            item.getQualifyStatusValue = function(qualifyStatus) {

                if (!qualifyStatus) {

                    return null;

                } else {

                    return {

                        value: qualifyStatus && qualifyStatus.StageNumber || this.get("QualifyStatus.StageNumber"),

                        displayValue: qualifyStatus.displayValue

                    };

                }

            };

            return this.callParent(arguments);

        },

        applyControlConfig: function(control) {

            control.config = {

                className: "Terrasoft.BaseProgressBar",

                value: {

                    "bindTo": "QualifyStatus",

                    "bindConfig": {"converter": "getQualifyStatusValue"}

                },

                width: "158px"

            };

        }

    });

    return {};

});

2) Create your custom module that would extend Terrasoft.DashboardListedGridViewConfig

Example: 

define("UsrDashboardListedGridViewConfig", ["UsrControlGridModule"], function() {

    Ext.define("Terrasoft.UsrDashboardListedGridViewConfig", {

        extend: "Terrasoft.DashboardListedGridViewConfig",

        generate: function() {

            var config = this.callParent(arguments);

            config.items[1].className = "Terrasoft.UsrControlGrid";

            config.items[1].controlColumnName = "QualifyStatus";

            config.items[1].applyControlConfig = { bindTo: "applyControlConfig" };

            return config;

        }

        

    });

    return {};

});

3) Create you custom module to override Terrasoft.DashboardGridModule: 

define("UsrDashboardGridModule", ["UsrDashboardListedGridViewModel", "UsrDashboardListedGridViewConfig"], function() {

    Ext.define("Terrasoft.configuration.UsrDashboardGridModule", {

        alternateClassName: "Terrasoft.UsrDashboardGridModule",

        override: "Terrasoft.DashboardGridModule",

        viewModelClassName: "Terrasoft.UsrDashboardListedGridViewModel",

        viewConfigClassName: "Terrasoft.UsrDashboardListedGridViewConfig"

    });

});

4) Create your DashboardGridModuleWrapper, which enables UsrDashboardGridModule : 

define("UsrDashboardGridModuleWrapper", ["BaseModule"], function() {

    Ext.define("Terrasoft.configuration.UsrDashboardGridModuleWrapper", {

        extend: "Terrasoft.BaseModule",

        alternateClassName: "Terrasoft.UsrDashboardGridModuleWrapper",

        constructor: function() {

            var parentMethod = this.getParentMethod(this, arguments);

            Terrasoft.require(["DashboardGridModule"], function() {

                Terrasoft.require(["UsrDashboardGridModule"], parentMethod, this);

            }, this);

        }

    });

    return Ext.create("Terrasoft.UsrDashboardGridModuleWrapper");

});

5) Override BootstrapModulesV2 and add DashboardGridModuleWrapper to the dependencies: 

define("BootstrapModulesV2", ["UsrDashboardGridModuleWrapper"], function() {

    return {};

});

 

Show all comments