示例#1
0
 public StructProjectionInfo(
     ResultProjectionInfo resultProjectionInfo,
     StructProjectionKind kind)
 {
     ResultProjectionInfo = resultProjectionInfo;
     Kind = kind;
 }
 private Task <ResultNodeModel> BuildNodeAsync(
     ResultProjectionInfo projectionInfo)
 {
     return(Task.Run(() =>
     {
         var node = BuildNode(projectionInfo);
         // top level node should be expanded
         node.IsExpanded = true;
         return node;
     }));
 }
        private ResultNodeModel BuildNode(
            ResultProjectionInfo projectionInfo)
        {
            switch (projectionInfo.Kind)
            {
            case ResultProjectionKind.Array:
            {
                var arrayNode = new ArrayResultNodeModel(projectionInfo);
                arrayNode.Ordinal = projectionInfo.Index;

                foreach (var child in projectionInfo.Children)
                {
                    var childNode = BuildNode(child);
                    arrayNode.Results.Add(childNode);
                }

                arrayNode.IsExpanded = projectionInfo.Children.Count <= 10;

                return(arrayNode);
            }

            case ResultProjectionKind.Transaction:
            {
                var transactionNode = new TransactionResultNodeModel(projectionInfo);
                transactionNode.Ordinal = projectionInfo.Index;

                foreach (var child in projectionInfo.Children)
                {
                    transactionNode.Results.Add(BuildNode(child));
                }

                transactionNode.IsExpanded = true;

                return(transactionNode);
            }

            case ResultProjectionKind.Error:
                var errorNode = new ErrorResultNodeModel(projectionInfo);
                errorNode.Ordinal = projectionInfo.Index;
                return(errorNode);

            case ResultProjectionKind.Status:
                var statusNode = new StatusResultNodeModel(projectionInfo);
                statusNode.Ordinal = projectionInfo.Index;
                return(statusNode);

            case ResultProjectionKind.Key:
            case ResultProjectionKind.SKey:
            case ResultProjectionKind.ZKey:
            case ResultProjectionKind.HKey:
                var keyNode = new KeyResultNodeModel(projectionInfo);
                keyNode.Ordinal = projectionInfo.Index;
                return(keyNode);

            case ResultProjectionKind.Value:
            default:
                var valueNode = new ValueResultNodeModel(projectionInfo);
                valueNode.Ordinal = projectionInfo.Index;
                return(valueNode);
            }
        }
 public KeyResultNodeModel(ResultProjectionInfo projectionInfo)
     : base(projectionInfo)
 {
     Key = AsString(projectionInfo.Value, true);
 }
 public ErrorResultNodeModel(ResultProjectionInfo projectionInfo)
     : base(projectionInfo)
 {
     Error = AsString(projectionInfo.Value);
 }
 public StatusResultNodeModel(ResultProjectionInfo projectionInfo)
     : base(projectionInfo)
 {
     Status = AsString(projectionInfo.Value);
 }
示例#7
0
 public ViewStructIntent(ResultProjectionInfo resultProjectionInfo)
 {
     ResultProjectionInfo = resultProjectionInfo;
 }
 public TransactionResultNodeModel(ResultProjectionInfo projectionInfo)
     : base(projectionInfo)
 {
 }
 public ArrayResultNodeModel(ResultProjectionInfo projectionInfo)
     : base(projectionInfo)
 {
     Length = projectionInfo.Children.Count;
 }
示例#10
0
 protected ResultNodeModel(ResultProjectionInfo resultProjectionInfo)
 {
     ResultProjectionInfo = resultProjectionInfo;
 }