Forum Discussion
Hello Bryan,
Not sure if you found an alternative solution or if Aras ever got back with an enhancement, but after poking around the typescript files for the xclass form I was able to find a handler object with a method to refresh the xClass in the form after updating the AML local cache.
I've included the javascript method that I was able to get working as an onChange field event for the classification field:
const inn = aras.IomInnovator;
const thisItem = document.thisItem;
const itemClass = document.getElementsByName("classification")[1].value;
if (!itemClass) return;
const existingxClassRel = thisItem.getRelationships("Part_xClass");
// Remove/delete any existing xclass relationships
for (let i = 0; i < existingxClassRel.getItemCount(); i++) {
const classRel = existingxClassRel.getItemByIndex(i);
const isNew = classRel.getAttribute("isNew");
isNew ? thisItem.removeRelationship(classRel) : classRel.setAttribute("action", "delete");
}
// Get corresponding xclass
let xClassItem = inn.newItem("xClass", "get");
xClassItem.setAttribute("select", "id,name");
xClassItem.setProperty("name", itemClass);
xClassItem = xClassItem.apply();
const xClassId = xClassItem.getID();
// Update local AML cache with new xclass
let newxClassRel = inn.newItem("Part_xClass", "add");
newxClassRel.setProperty("related_id", xClassId);
thisItem.addRelationship(newxClassRel);
document.item.setAttribute("isDirty", "1");
// Refresh the HTML control to reflect the cache
controlFormHandlers
.refreshXClassesListInControl(document.item, xClassesControl, {
isEditMode: document.isEditMode,
})
.then(function () {
// Expand all xClass roots
xClassesControl._nav.roots.forEach(function (key) {
xClassesControl._nav.expand(key);
});
xClassesControl._fieldset.classList.add("aras-field-xclasses_expanded");
});I included some logic to trigger after the refresh promise finished to automatically expand the properties under the class, as I always found it annoying it doesn't automatically do it by default.
Obviously this may need to be adjusted depending on if you named your xClasses the same as the Part classifications, but as a POC I hope it can help you and others who run into this issue in the future.
Sincerely
Troy Reynolds