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.Threading.Tasks.Dataflow;
|
||||
using Mocha.Core.Oop;
|
||||
using Mocha.Core.UI;
|
||||
|
||||
namespace Mocha.Core.MethodImplementations;
|
||||
|
||||
@ -23,14 +20,33 @@ public class BuildElementMethodImplementation : MethodImplementation
|
||||
|
||||
InstanceHandle bemProcess = oms.GetRelatedInstance(method, oms.GetInstance(KnownRelationshipGuids.Build_Element_Method__has__BEM_Process));
|
||||
|
||||
JsonArray objECs = new JsonArray();
|
||||
IEnumerable<InstanceHandle> elementContents = oms.GetRelatedInstances(element, oms.GetInstance(KnownRelationshipGuids.Element__has__Element_Content));
|
||||
foreach (InstanceHandle elementContent in elementContents)
|
||||
{
|
||||
InstanceHandle elementContentInstance = oms.GetRelatedInstance(elementContent, oms.GetInstance(KnownRelationshipGuids.Element_Content__has__Instance));
|
||||
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;
|
||||
}
|
||||
|
||||
@ -66,7 +82,7 @@ public class BuildElementMethodImplementation : MethodImplementation
|
||||
j = 1;
|
||||
foreach (InstanceHandle ihCol in ihCols)
|
||||
{
|
||||
JsonObject objCell = BuildGridCell(oms, ih, ihCol);
|
||||
JsonObject objCell = BuildElementContent(oms, ih, ihCol);
|
||||
objCells.Add("46." + j.ToString(), objCell);
|
||||
j++;
|
||||
}
|
||||
@ -104,7 +120,7 @@ public class BuildElementMethodImplementation : MethodImplementation
|
||||
return objCol;
|
||||
}
|
||||
|
||||
private JsonObject BuildGridCell(Oms oms, InstanceHandle targetInstance, InstanceHandle elementContent)
|
||||
private JsonObject BuildElementContent(Oms oms, InstanceHandle targetInstance, InstanceHandle elementContent)
|
||||
{
|
||||
JsonObject objCell = new JsonObject();
|
||||
objCell.Add("ecid", oms.GetInstanceKey(elementContent).ToString());
|
||||
@ -127,8 +143,15 @@ public class BuildElementMethodImplementation : MethodImplementation
|
||||
if (oms.IsInstanceOf(ecInst, oms.GetInstance(KnownInstanceGuids.Classes.TextAttribute)))
|
||||
{
|
||||
objCell.Add("widget", "text");
|
||||
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)))
|
||||
{
|
||||
objCell.Add("widget", "checkBox");
|
||||
|
||||
@ -54,10 +54,27 @@ public class InvokeWebServiceMethodImplementation : MethodImplementation
|
||||
{
|
||||
new KeyValuePair<InstanceHandle, object?>(oms.GetInstance(KnownAttributeGuids.Text.Value), 404)
|
||||
}, null, out InstanceHandle ws);
|
||||
return errorElement;
|
||||
|
||||
InstanceHandle hElement = FindElementFromExecutable(oms, errorElement);
|
||||
context.SetWorkData(hElement, errorJson);
|
||||
return hElement;
|
||||
}
|
||||
}
|
||||
}
|
||||
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