I am famous for writing long exhausting texts that are hard to follow at a certain poin. But hey, the answer was fast! :-). The above text is really just a collection of ideas, it should be splitted in serveral small tasks.
But you do not really need programming knowledge for this kind of customization, you just need to know where you can find things.
Displaying the cycle time is one of the first things I would do to solve the task.I made a quick and dirty test, as I also need this customization anyway. But it still needs further testing:
Take a look at the Method 'mpp_OperationElementRenderer'
Around line 45 add additional code for displaying the timing in the process plan:
RenderStartHtmlElement: function(/*WrappedObject*/ schemaElement, /*Object*/ elementState) {
var startHtml = this.inherited(arguments);
var detailsButtonContent = elementState.isDetailsEmpty && elementState.isEditable ?
this.wrapInTag('', 'img', {class: 'ExpandDetailsButton', src: '../../images/EditItem.svg', title: this.resourceStrings.editDetails}) : '';
var operationCaption = this.wrapInTag(schemaElement.nodeName + ' ' + schemaElement.getProperty('sort_order') +
' : ' + schemaElement.getProperty('name') + detailsButtonContent, 'div', {class: 'OperationCaption'});
var timing = "Setup time: " + schemaElement.getProperty('setup_time') + "min, Cycle time: " + schemaElement.getProperty('cycle_time') + "min";
return startHtml + operationCaption + timing;
},
Around line 315 add additional code for displaying the timing in the side bar:
GetTreeName: function(/*WrappedObject*/ schemaElement, /*Object*/ elementState) {
var elementName = '';
if (elementState.isBlocked) {
elementName = this.resourceStrings.itemIsBlocked;
} else if (!elementState.isEmpty) {
var itemName = schemaElement.getProperty('name');
elementName = schemaElement.getProperty('sort_order') + (itemName ? ' : ' + itemName : '');
var timing = "(" + schemaElement.getProperty('setup_time') + "min / " + schemaElement.getProperty('cycle_time') + "min)";
elementName += " " + timing;
}
return this.wrapInTag(elementName, 'span', {class: 'ArasXmlSchemaElementTypeNode'});
}