Exemple #1
0
        protected override IEnumerable <Element> OnGetElements(EntityToken parentEntityToken, TreeNodeDynamicContext dynamicContext)
        {
            var entityToken = new TreeSimpleElementEntityToken(
                this.Id,
                this.Tree.TreeId,
                EntityTokenSerializer.Serialize(parentEntityToken));

            Element element = new Element(new ElementHandle(
                                              dynamicContext.ElementProviderName,
                                              entityToken,
                                              dynamicContext.Piggybag.PreparePiggybag(this.ParentNode, parentEntityToken)
                                              ));


            if (parentEntityToken is TreePerspectiveEntityToken)
            {
                element.ElementHandle.Piggyback[StringConstants.PiggybagTreeId] = Tree.TreeId;
            }

            var replaceContext = new DynamicValuesHelperReplaceContext(parentEntityToken, dynamicContext.Piggybag);

            element.VisualData = new ElementVisualizedData
            {
                Label       = this.LabelDynamicValuesHelper.ReplaceValues(replaceContext),
                ToolTip     = this.ToolTipDynamicValuesHelper.ReplaceValues(replaceContext),
                HasChildren = ChildNodes.Any(),
                Icon        = this.Icon,
                OpenedIcon  = this.OpenIcon
            };

            yield return(element);
        }
Exemple #2
0
        /// <summary>Find sub elements with a predicate.</summary>
        /// <param name="predicate">The predicate.</param>
        /// <returns>A enumerable of elements.</returns>
        public virtual bool AnyNested(Func <TElement, bool> predicate)
        {
            if (ChildNodes == null)
            {
                return(false);
            }
            Func <TElement, bool> pred = tn => predicate(tn) || tn.AnyNested(predicate);

            return(ChildNodes.Any(pred));
        }
Exemple #3
0
 public void UpdateValue()
 {
     if (!ChildNodes.Any())
     {
         Value = MetaData.Sum();
     }
     else
     {
         Value = MetaData.Where(i => i >= 1 && i <= ChildNodes.Length).Sum(i => ChildNodes[i - 1].Value);
     }
 }
        public void ClearChildNodes()
        {
            if (ChildNodes == null || !ChildNodes.Any())
            {
                return;
            }

            OnUiThread(() =>
            {
                this.ChildNodes.Clear();
            });
        }
Exemple #5
0
        protected void ElementRemoved(object sender, EventArgs e)
        {
            if (ChildNodes.Any(x => x.Element == sender))
            {
                if (childNodes != null)
                {
                    var node = childNodes.First(x => x.Element == sender as TDependencyObject);
                    childNodes.Remove(node);
                }
            }

            if (sender == Element)
            {
                parent = null;
            }
        }
Exemple #6
0
 public int GetValue()
 {
     if (!ChildNodes.Any())
     {
         return(Metadata.DefaultIfEmpty().Sum());
     }
     else
     {
         return((from m in Metadata
                 where m > 0
                 let i = m - 1
                         where i < ChildNodes.Count
                         let n = ChildNodes.ElementAt(i)
                                 select n.GetValue())
                .DefaultIfEmpty()
                .Sum());
     }
 }
Exemple #7
0
        private int CalculateValue()
        {
            if (!ChildNodes.Any())
            {
                return(Metadata.Sum());
            }
            else
            {
                var value = 0;

                foreach (var metadataEntry in Metadata)
                {
                    var index = metadataEntry - 1;

                    if (index >= 0 && metadataEntry <= ChildNodeCount)
                    {
                        value = value + ChildNodes[index].Value;
                    }
                }

                return(value);
            }
        }
Exemple #8
0
        private Element BuildElement(IData data,
                                     DynamicValuesHelperReplaceContext replaceContext,
                                     TreeNodeDynamicContext dynamicContext,
                                     bool localizationEnabled,
                                     List <object> itemKeys,
                                     ref IEnumerable <object> keysJoinedByParentFilters,
                                     EntityToken parentEntityToken
                                     )
        {
            replaceContext.CurrentDataItem = data;

            object keyValue = this.KeyPropertyInfo.GetValue(data, null);

            bool itemLocalizationEnabledAndForeign = localizationEnabled && !data.DataSourceId.LocaleScope.Equals(UserSettings.ActiveLocaleCultureInfo);

            if (itemLocalizationEnabledAndForeign && itemKeys.Contains(keyValue))
            {
                return(null);
            }

            var currentEntityToken = data.GetDataEntityToken();

            var element = new Element(new ElementHandle
                                      (
                                          dynamicContext.ElementProviderName,
                                          currentEntityToken,
                                          dynamicContext.Piggybag.PreparePiggybag(this.ParentNode, parentEntityToken)
                                      ));


            bool           hasChildren;
            bool           isDisabled = false;
            ResourceHandle icon, openedIcon;

            if (itemLocalizationEnabledAndForeign)
            {
                hasChildren = false;
                isDisabled  = !data.IsTranslatable();

                if (this.Icon != null)
                {
                    icon       = this.Icon;
                    openedIcon = this.OpenedIcon;
                }
                else
                {
                    icon       = data.GetForeignIcon();
                    openedIcon = icon;
                }
            }
            else
            {
                if (this.Display != LeafDisplayMode.Auto)
                {
                    hasChildren = ChildNodes.Any();
                }
                else
                {
                    hasChildren = ChildNodes.OfType <SimpleElementTreeNode>().Any();

                    if (!hasChildren)
                    {
                        if (keysJoinedByParentFilters != null)
                        {
                            keysJoinedByParentFilters = keysJoinedByParentFilters.Evaluate();

                            hasChildren = keysJoinedByParentFilters.Contains(keyValue);
                        }
                    }

                    // Checking children filtered by FunctionFilters
                    if (!hasChildren)
                    {
                        foreach (var childNode in this.ChildNodes.OfType <DataElementsTreeNode>()
                                 .Where(n => n.FilterNodes.OfType <FunctionFilterNode>().Any()))
                        {
                            var newDynamicContext = new TreeNodeDynamicContext(TreeNodeDynamicContextDirection.Down)
                            {
                                ElementProviderName = dynamicContext.ElementProviderName,
                                Piggybag            = dynamicContext.Piggybag.PreparePiggybag(this.ParentNode, parentEntityToken),
                                CurrentEntityToken  = currentEntityToken
                            };

                            if (childNode.GetDataset(newDynamicContext, false).DataItems.Any())
                            {
                                hasChildren = true;
                                break;
                            }
                        }
                    }
                }

                if (this.Icon != null)
                {
                    icon       = this.Icon;
                    openedIcon = this.OpenedIcon;
                }
                else
                {
                    openedIcon = icon = data.GetIcon();
                }
            }

            string label = this.Label.IsNullOrEmpty()
                            ? data.GetLabel()
                            : this.LabelDynamicValuesHelper.ReplaceValues(replaceContext);

            string toolTip = this.ToolTip.IsNullOrEmpty()
                            ? label
                            : this.ToolTipDynamicValuesHelper.ReplaceValues(replaceContext);

            if (itemLocalizationEnabledAndForeign)
            {
                label = string.Format("{0} ({1})", label, DataLocalizationFacade.GetCultureTitle(UserSettings.ForeignLocaleCultureInfo));

                if (!data.IsTranslatable())
                {
                    toolTip = StringResourceSystemFacade.GetString("Composite.C1Console.Trees", "LocalizeDataWorkflow.DisabledData");
                }
                else
                {
                    toolTip = string.Format("{0} ({1})", toolTip, DataLocalizationFacade.GetCultureTitle(UserSettings.ForeignLocaleCultureInfo));
                }
            }

            element.VisualData = new ElementVisualizedData
            {
                Label       = label,
                ToolTip     = toolTip,
                HasChildren = hasChildren,
                Icon        = icon,
                OpenedIcon  = openedIcon,
                IsDisabled  = isDisabled
            };


            if (InternalUrls.DataTypeSupported(data.DataSourceId.InterfaceType))
            {
                var dataReference = data.ToDataReference();

                if (DataUrls.CanBuildUrlForData(dataReference))
                {
                    string internalUrl = InternalUrls.TryBuildInternalUrl(dataReference);

                    if (internalUrl != null)
                    {
                        element.PropertyBag.Add("Uri", internalUrl);
                    }
                }
            }


            if (itemLocalizationEnabledAndForeign)
            {
                var actionToken = new WorkflowActionToken(
                    WorkflowFacade.GetWorkflowType("Composite.C1Console.Trees.Workflows.LocalizeDataWorkflow"),
                    LocalizeDataPermissionTypes);

                element.AddAction(new ElementAction(new ActionHandle(actionToken))
                {
                    VisualData = new ActionVisualizedData
                    {
                        Label          = StringResourceSystemFacade.GetString("Composite.C1Console.Trees", "LocalizeDataWorkflow.LocalizeDataLabel"),
                        ToolTip        = StringResourceSystemFacade.GetString("Composite.C1Console.Trees", "LocalizeDataWorkflow.LocalizeDataToolTip"),
                        Icon           = LocalizeDataTypeIcon,
                        Disabled       = false,
                        ActionLocation = ActionLocation.OtherPrimaryActionLocation
                    }
                });
            }

            return(element);
        }
Exemple #9
0
 public override string ToString()
 {
     return($"{Prefix}(?{Modifiers}{(ChildNodes.Any() ? $":{string.Concat(ChildNodes)}" : "")})");
 }
Exemple #10
0
 public bool GetAnyChildHasMultipleParents()
 {
     return(ChildNodes.Any(q => q.HasMultiParents()));
 }
        protected override IEnumerable <Element> OnGetElements(EntityToken parentEntityToken, TreeNodeDynamicContext dynamicContext)
        {
            var entityToken = new TreeSimpleElementEntityToken(
                this.Id,
                this.Tree.TreeId,
                EntityTokenSerializer.Serialize(parentEntityToken));

            var element = new Element(new ElementHandle(
                                          dynamicContext.ElementProviderName,
                                          entityToken,
                                          dynamicContext.Piggybag.PreparePiggybag(this.ParentNode, parentEntityToken)
                                          ));


            if (this.BrowserUrl != null)
            {
                var url = this.BrowserUrl;

                if (!url.Contains("//"))
                {
                    url = Core.WebClient.UrlUtils.ResolvePublicUrl(url);
                }

                element.PropertyBag.Add("BrowserUrl", url);
                element.PropertyBag.Add("BrowserToolingOn", "false");
            }


            if (this.BrowserImage != null)
            {
                var url = this.BrowserImage;

                if (!url.Contains("//"))
                {
                    url = Core.WebClient.UrlUtils.ResolvePublicUrl(url);
                }

                element.PropertyBag.Add("ListViewImage", url);

                if (this.BrowserUrl == null)
                {
                    element.PropertyBag.Add("DetailViewImage", url);
                }
            }


            if (parentEntityToken is TreePerspectiveEntityToken)
            {
                element.ElementHandle.Piggyback[StringConstants.PiggybagTreeId] = Tree.TreeId;
            }

            var replaceContext = new DynamicValuesHelperReplaceContext(parentEntityToken, dynamicContext.Piggybag);

            element.VisualData = new ElementVisualizedData
            {
                Label       = this.LabelDynamicValuesHelper.ReplaceValues(replaceContext),
                ToolTip     = this.ToolTipDynamicValuesHelper.ReplaceValues(replaceContext),
                HasChildren = ChildNodes.Any(),
                Icon        = this.Icon,
                OpenedIcon  = this.OpenIcon
            };

            yield return(element);
        }
Exemple #12
0
 public bool HasChildren() => ChildNodes.Any();