Hi Team,
I am using DCM in my section each stage in the DCM represents a candidate stage. I have a requirement where I need to display(progress bar) at which stage the candidate was in the main section.
My Section page :
I need the current stage field as a progress bar .like lead stage column in the below screenshot.
Can you please tell the procedure how to do this.
Hoping for a positive reply.
Regards
manikanta.
Like
Dear Manikanta,
For implementing this functionality you would need to do the following steps:
1) Make sure that the object you want to have as a progress bar (your stages object) has a number column named UsrStageNumber which would determine the progress stage (Similar to the one in lead stages http://prntscr.com/o9vzav).
2) Implement all needed methods and dependencies similarly to the ones in LeadSectionV2 schema in package core Lead. (the example of the code would be below)
3) If you don't have 5 stages you would need to implement your own control similarly to the BaseProgressBarModule and use it in your section.
Here is the example of the code for the Account section:
define("AccountSectionV2", ["AccountSectionV2Resources", "terrasoft", "ControlGridModule", "BaseProgressBarModule", "EntityHelper", "css!BaseProgressBarModule"], function(resources, Terrasoft) { return { entitySchemaName: "Account", diff: /**SCHEMA_DIFF*/[ { "operation": "remove", "name": "DataGrid" }, { "operation": "insert", "name": "DataGrid", "parentName": "DataGridContainer", "propertyName": "items", "values": { "itemType": Terrasoft.ViewItemType.GRID, "type": {"bindTo": "GridType"}, "listedZebra": true, "activeRow": {"bindTo": "ActiveRow"}, "collection": {"bindTo": "GridData"}, "isEmpty": {"bindTo": "IsGridEmpty"}, "isLoading": {"bindTo": "IsGridLoading"}, "multiSelect": {"bindTo": "MultiSelect"}, "primaryColumnName": "Id", "selectedRows": {"bindTo": "SelectedRows"}, "sortColumn": {"bindTo": "sortColumn"}, "sortColumnDirection": {"bindTo": "GridSortDirection"}, "sortColumnIndex": {"bindTo": "SortColumnIndex"}, "selectRow": {"bindTo": "rowSelected"}, "linkClick": {"bindTo": "linkClicked"}, "needLoadData": {"bindTo": "needLoadData"}, "activeRowAction": {"bindTo": "onActiveRowAction"}, "activeRowActions": [], "className": "Terrasoft.ControlGrid", "controlColumnName": "UsrAccStage", "applyControlConfig": {"bindTo": "applyControlConfig"}, "getEmptyMessageConfig": {"bindTo": "prepareEmptyGridMessageConfig"} } } ]/**SCHEMA_DIFF*/, methods: { getGridDataColumns: function() { var gridDataColumns = this.callParent(arguments); gridDataColumns.UsrAccStage = gridDataColumns.UsrAccStage || {path: "UsrAccStage"}; gridDataColumns["UsrAccStage.UsrStageNumber"] = gridDataColumns["UsrAccStage.UsrStageNumber"] || {path: "UsrAccStage.UsrStageNumber"}; return gridDataColumns; }, applyControlConfig: function(control) { control.config = { className: "Terrasoft.BaseProgressBar", value: { "bindTo": "UsrAccStage", "bindConfig": {"converter": "getUsrAccStageValue"} }, width: "158px" }; }, getUsrAccStage: function(id) { var activeRow; if (id) { var gridData = this.getGridData(); activeRow = gridData.get(id); } else { activeRow = this.getActiveRow(); } if (!activeRow) { return null; } var accStage = activeRow.get("UsrAccStage"); return (accStage) ? accStage.value : null; }, addColumnLink: function(item) { item.getUsrAccStageValue = function(accStage) { if (!accStage) { return null; } else { return { value: this.get("UsrAccStage.UsrStageNumber"), displayValue: accStage.displayValue }; } }; return this.callParent(arguments); } } }; } ); Best regards, Dennis
Dennis Hudson,
Thank you, Dennis,
I tried the below code on Account section, I'm able to see the progress bar on the section view. But when I select a record, i.e., on active row the operations "Open", "Copy", "Delete" are not visible.
What code should I add to enable the same?
Hoping for a positive reply.
manikanta,
You can add buttons back replacing existing diff block with this:
diff: /**SCHEMA_DIFF*/[
/*{
"operation": "remove",
"name": "DataGrid"
},*/
{
"operation": "merge",
"name": "DataGrid",
"parentName": "DataGridContainer",
"propertyName": "items",
"values": {
"itemType": Terrasoft.ViewItemType.GRID,
"type": {"bindTo": "GridType"},
"listedZebra": true,
"activeRow": {"bindTo": "ActiveRow"},
"collection": {"bindTo": "GridData"},
"isEmpty": {"bindTo": "IsGridEmpty"},
"isLoading": {"bindTo": "IsGridLoading"},
"multiSelect": {"bindTo": "MultiSelect"},
"primaryColumnName": "Id",
"selectedRows": {"bindTo": "SelectedRows"},
"sortColumn": {"bindTo": "sortColumn"},
"sortColumnDirection": {"bindTo": "GridSortDirection"},
"sortColumnIndex": {"bindTo": "SortColumnIndex"},
"selectRow": {"bindTo": "rowSelected"},
"linkClick": {"bindTo": "linkClicked"},
"needLoadData": {"bindTo": "needLoadData"},
"activeRowAction": {"bindTo": "onActiveRowAction"},
"className": "Terrasoft.ControlGrid",
"controlColumnName": "UsrAccountStages",
"applyControlConfig": {"bindTo": "applyControlConfig"},
"getEmptyMessageConfig": {"bindTo": "prepareEmptyGridMessageConfig"}
}
}
]
Best regards,
Dennis