improvements to BEM - Build Element Method
This commit is contained in:
parent
c0b0c70785
commit
ce7dd5f949
@ -1,8 +1,5 @@
|
|||||||
|
|
||||||
using System.Text.Json.Nodes;
|
using System.Text.Json.Nodes;
|
||||||
using System.Threading.Tasks.Dataflow;
|
|
||||||
using Mocha.Core.Oop;
|
|
||||||
using Mocha.Core.UI;
|
|
||||||
|
|
||||||
namespace Mocha.Core.MethodImplementations;
|
namespace Mocha.Core.MethodImplementations;
|
||||||
|
|
||||||
@ -23,16 +20,35 @@ public class BuildElementMethodImplementation : MethodImplementation
|
|||||||
|
|
||||||
InstanceHandle bemProcess = oms.GetRelatedInstance(method, oms.GetInstance(KnownRelationshipGuids.Build_Element_Method__has__BEM_Process));
|
InstanceHandle bemProcess = oms.GetRelatedInstance(method, oms.GetInstance(KnownRelationshipGuids.Build_Element_Method__has__BEM_Process));
|
||||||
|
|
||||||
InstanceHandle loopInstanceSet = oms.GetRelatedInstance(bemProcess, oms.GetInstance(KnownRelationshipGuids.BEM_Process__uses_loop__Executable_returning_Instance_Set));
|
JsonArray objECs = new JsonArray();
|
||||||
object? instanceSet = oms.Evaluate(context, loopInstanceSet, InstanceHandle.Empty);
|
IEnumerable<InstanceHandle> elementContents = oms.GetRelatedInstances(element, oms.GetInstance(KnownRelationshipGuids.Element__has__Element_Content));
|
||||||
if (instanceSet is IEnumerable<InstanceHandle> ihs)
|
foreach (InstanceHandle elementContent in elementContents)
|
||||||
{
|
{
|
||||||
JsonObject obj = BuildGrid(oms, element, ihs);
|
InstanceHandle elementContentInstance = oms.GetRelatedInstance(elementContent, oms.GetInstance(KnownRelationshipGuids.Element_Content__has__Instance));
|
||||||
context.SetWorkData(element, obj);
|
IEnumerable<InstanceHandle> elementContentDisplayOptions = oms.GetRelatedInstances(elementContent, oms.GetInstance(KnownRelationshipGuids.Element_Content__has__Element_Content_Display_Option));
|
||||||
|
JsonObject objEC = BuildElementContent(oms, elementContentInstance, elementContent);
|
||||||
|
objECs.Add(objEC);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
InstanceHandle loopInstanceSet = oms.GetRelatedInstance(bemProcess, oms.GetInstance(KnownRelationshipGuids.BEM_Process__uses_loop__Executable_returning_Instance_Set));
|
||||||
|
if (loopInstanceSet != InstanceHandle.Empty)
|
||||||
|
{
|
||||||
|
object? instanceSet = oms.Evaluate(context, loopInstanceSet, InstanceHandle.Empty);
|
||||||
|
if (instanceSet is IEnumerable<InstanceHandle> ihs)
|
||||||
|
{
|
||||||
|
JsonObject obj = BuildGrid(oms, element, ihs);
|
||||||
|
context.SetWorkData(element, obj);
|
||||||
|
}
|
||||||
|
}
|
||||||
|
else
|
||||||
|
{
|
||||||
|
JsonObject objR = new JsonObject();
|
||||||
|
objR.Add("children", objECs);
|
||||||
|
context.SetWorkData(element, objR);
|
||||||
|
return element;
|
||||||
|
}
|
||||||
return element;
|
return element;
|
||||||
}
|
}
|
||||||
|
|
||||||
private JsonObject BuildGrid(Oms oms, InstanceHandle element, IEnumerable<InstanceHandle> instances)
|
private JsonObject BuildGrid(Oms oms, InstanceHandle element, IEnumerable<InstanceHandle> instances)
|
||||||
{
|
{
|
||||||
@ -66,7 +82,7 @@ public class BuildElementMethodImplementation : MethodImplementation
|
|||||||
j = 1;
|
j = 1;
|
||||||
foreach (InstanceHandle ihCol in ihCols)
|
foreach (InstanceHandle ihCol in ihCols)
|
||||||
{
|
{
|
||||||
JsonObject objCell = BuildGridCell(oms, ih, ihCol);
|
JsonObject objCell = BuildElementContent(oms, ih, ihCol);
|
||||||
objCells.Add("46." + j.ToString(), objCell);
|
objCells.Add("46." + j.ToString(), objCell);
|
||||||
j++;
|
j++;
|
||||||
}
|
}
|
||||||
@ -78,9 +94,9 @@ public class BuildElementMethodImplementation : MethodImplementation
|
|||||||
}
|
}
|
||||||
obj.Add("rows", aryRows);
|
obj.Add("rows", aryRows);
|
||||||
return obj;
|
return obj;
|
||||||
}
|
}
|
||||||
|
|
||||||
private JsonObject BuildGridColumn(Oms oms, InstanceHandle elementContent, int index)
|
private JsonObject BuildGridColumn(Oms oms, InstanceHandle elementContent, int index)
|
||||||
{
|
{
|
||||||
JsonObject objCol = new JsonObject();
|
JsonObject objCol = new JsonObject();
|
||||||
objCol.Add("widget", "column");
|
objCol.Add("widget", "column");
|
||||||
@ -102,9 +118,9 @@ public class BuildElementMethodImplementation : MethodImplementation
|
|||||||
objCol.Add("sortableAndFilterable", true);
|
objCol.Add("sortableAndFilterable", true);
|
||||||
// objCol.Add("propertyName", "");
|
// objCol.Add("propertyName", "");
|
||||||
return objCol;
|
return objCol;
|
||||||
}
|
}
|
||||||
|
|
||||||
private JsonObject BuildGridCell(Oms oms, InstanceHandle targetInstance, InstanceHandle elementContent)
|
private JsonObject BuildElementContent(Oms oms, InstanceHandle targetInstance, InstanceHandle elementContent)
|
||||||
{
|
{
|
||||||
JsonObject objCell = new JsonObject();
|
JsonObject objCell = new JsonObject();
|
||||||
objCell.Add("ecid", oms.GetInstanceKey(elementContent).ToString());
|
objCell.Add("ecid", oms.GetInstanceKey(elementContent).ToString());
|
||||||
@ -127,7 +143,14 @@ public class BuildElementMethodImplementation : MethodImplementation
|
|||||||
if (oms.IsInstanceOf(ecInst, oms.GetInstance(KnownInstanceGuids.Classes.TextAttribute)))
|
if (oms.IsInstanceOf(ecInst, oms.GetInstance(KnownInstanceGuids.Classes.TextAttribute)))
|
||||||
{
|
{
|
||||||
objCell.Add("widget", "text");
|
objCell.Add("widget", "text");
|
||||||
objCell.Add("value", oms.GetAttributeValue<string>(targetInstance, ecInst));
|
if (targetInstance == InstanceHandle.Empty)
|
||||||
|
{
|
||||||
|
objCell.Add("value", oms.GetAttributeValue<string>(ecInst, oms.GetInstance(KnownAttributeGuids.Text.Value)));
|
||||||
|
}
|
||||||
|
else
|
||||||
|
{
|
||||||
|
objCell.Add("value", oms.GetAttributeValue<string>(targetInstance, ecInst));
|
||||||
|
}
|
||||||
}
|
}
|
||||||
else if (oms.IsInstanceOf(ecInst, oms.GetInstance(KnownInstanceGuids.Classes.BooleanAttribute)))
|
else if (oms.IsInstanceOf(ecInst, oms.GetInstance(KnownInstanceGuids.Classes.BooleanAttribute)))
|
||||||
{
|
{
|
||||||
@ -161,5 +184,5 @@ public class BuildElementMethodImplementation : MethodImplementation
|
|||||||
objCell.Add("widget", "monikerList");
|
objCell.Add("widget", "monikerList");
|
||||||
}
|
}
|
||||||
return objCell;
|
return objCell;
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
@ -54,10 +54,27 @@ public class InvokeWebServiceMethodImplementation : MethodImplementation
|
|||||||
{
|
{
|
||||||
new KeyValuePair<InstanceHandle, object?>(oms.GetInstance(KnownAttributeGuids.Text.Value), 404)
|
new KeyValuePair<InstanceHandle, object?>(oms.GetInstance(KnownAttributeGuids.Text.Value), 404)
|
||||||
}, null, out InstanceHandle ws);
|
}, null, out InstanceHandle ws);
|
||||||
return errorElement;
|
|
||||||
|
InstanceHandle hElement = FindElementFromExecutable(oms, errorElement);
|
||||||
|
context.SetWorkData(hElement, errorJson);
|
||||||
|
return hElement;
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
return InstanceHandle.Empty;
|
return InstanceHandle.Empty;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
private InstanceHandle FindElementFromExecutable(Oms oms, InstanceHandle exec)
|
||||||
|
{
|
||||||
|
if (oms.IsInstanceOf(exec, oms.GetInstance(KnownInstanceGuids.Classes.ReturnElementMethodBinding)))
|
||||||
|
{
|
||||||
|
InstanceHandle executesMethod = oms.GetRelatedInstance(exec, oms.GetInstance(KnownRelationshipGuids.Method_Binding__executes__Method));
|
||||||
|
return FindElementFromExecutable(oms, executesMethod);
|
||||||
|
}
|
||||||
|
else if (oms.IsInstanceOf(exec, oms.GetInstance(KnownInstanceGuids.MethodClasses.BuildElementMethod)))
|
||||||
|
{
|
||||||
|
return oms.GetRelatedInstance(exec, oms.GetInstance(KnownRelationshipGuids.Build_Element_Method__returns__Element));
|
||||||
|
}
|
||||||
|
return InstanceHandle.Empty;
|
||||||
|
}
|
||||||
}
|
}
|
||||||
Loading…
x
Reference in New Issue
Block a user