Ejemplo n.º 1
0
        public async Task SetupSideMenu()
        {
            MessageCount = DS.db.Count <CoreMessageBase>(a => a.DueDate <= DateTime.Now && a.StatusMessage == "En attente");

            // Init actions
            MainMenuCategories.Clear();

            //      sideMenu.VerticalScrollBarVisibility = ScrollBarVisibility.Auto;
            // Load config models
            var models = new List <IDocument>();
            var config = new XmlDocument();

            config.Load("Modules/Models.xml");

            // get ModulesERP
            var modules = DataHelpers.Modules;// GetMongoDataSync("ModuleErp") as IEnumerable<ModuleErp>;

            config.DocumentElement.RemoveAll();

            var TopMenus = modules.Where(z => !string.IsNullOrEmpty(z.GroupeModule)).Select(a => _(a.GroupeModule)).Distinct();

            if (MenuPanelLoaded == false)
            {
                MenuPanel.Children.Clear();
            }

            foreach (var groupe in TopMenus)
            {
                var moduleOfGroupe = modules.Where(a => _(a.GroupeModule) == groupe).OrderBy(a => a.ModuleMenuIndex);

                //(2) string.Empty makes cleaner code
                XmlElement section = config.CreateElement(string.Empty, "section", string.Empty);
                section.SetAttribute("header", groupe);
                section.SetAttribute("icon", "Desktop");

                if (MenuPanelLoaded == false)
                {
                    string _icon      = "";
                    var    _savedIcon = ModuleIcons.ModuleIcon.TryGetValue(groupe, out _icon);

                    //if (_savedIcon)
                    //{
                    // icon found
                    Button   menubtn = new Button();
                    PackIcon pi      = new PackIcon()
                    {
                        Kind = PackIconKind.CheckboxMarkedCircleOutline, Height = 22, Width = 22
                    };
                    try
                    {
                        pi.Kind   = (PackIconKind)Enum.Parse(typeof(PackIconKind), _icon);
                        pi.Height = 22; pi.Width = 22;
                    }
                    catch { }

                    Border border = new Border();
                    border.BorderThickness     = new Thickness(0);
                    border.Margin              = new Thickness(0);
                    border.HorizontalAlignment = HorizontalAlignment.Left;
                    border.Child = menubtn;

                    var sp = new StackPanel {
                        Orientation = Orientation.Horizontal
                    };
                    sp.Children.Add(pi);
                    sp.Children.Add(new TextBlock {
                        Text = groupe, Foreground = Brushes.White, Margin = new Thickness(10, 0, 10, 0)
                    });

                    menubtn.Content = sp;
                    menubtn.Click  += Menubtn_Click;
                    menubtn.Tag     = new ArrayList {
                        groupe, pi
                    };
                    ShadowAssist.SetShadowDepth(menubtn, ShadowDepth.Depth0);
                    //   menubtn.ToolTip = groupe;
                    // BorderThickness="0"  BorderBrush="#F5F6F7"
                    menubtn.BorderThickness = new Thickness(0);
                    //  menubtn.Width = 55;
                    menubtn.Height = 40;
                    menubtn.Style  = App.Current.TryFindResource("MenuButtonHd") as Style;
                    border.Child   = menubtn;
                    MenuPanel.Children.Add(border);
                    NotifyOfPropertyChange("MenuPanel");
                    //}
                }


                foreach (var module in moduleOfGroupe)
                {
                    XmlElement document = config.CreateElement(string.Empty, "item", string.Empty);
                    //header ="Tiers" icon="Users" description="" class="Ovresko.Generix.Core.Modules.Tier"
                    document.SetAttribute("header", module.Libelle);
                    document.SetAttribute("icon", "Users");
                    document.SetAttribute("class", module.ClassName);
                    if (module.IsInstanceModule)
                    {
                        document.SetAttribute("instance", "getInstance");
                    }
                    section.AppendChild(document);
                }
                config.DocumentElement.AppendChild(section);
            }
            MenuPanelLoaded = true;
            config.Save("Modules/Models.xml");
            config.Load("Modules/Models.xml");
            parentStack = new StackPanel();
            // Iteerate over items

            foreach (XmlNode node in config.DocumentElement.ChildNodes)
            {
                // iterate over sections
                Console.Write(node.ChildNodes);
                var header = node.Attributes["header"].Value;

                // ExpanderMenu expander = new ExpanderMenu();

                //   var nodeTree = new TreeViewItemExCategory(header, new Li);
                var Children = new List <TreeViewItemEx>();
                //
                var items = node.ChildNodes;

                foreach (XmlNode item in items)
                {
                    var modelHeader   = item.Attributes["header"].Value;
                    var modelClass    = item.Attributes["class"].Value;
                    var modelIcon     = item.Attributes["icon"].Value;
                    var modelInstance = item.Attributes["instance"]?.Value;

                    var itemNode = new TreeViewItemEx(modelHeader, modelHeader);
                    itemNode.NodeXml = item;
                    //   itemNode.HeaderContent = new Button() { Content = modelHeader };

                    //var i = new FontAwesome.WPF.ImageAwesome();
                    //// i.Icon = (FontAwesomeIcon)Enum.Parse(typeof(FontAwesomeIcon), modelIcon);
                    //i.Icon = FontAwesomeIcon.Plus;
                    //i.Foreground = System.Windows.Media.Brushes.LightGray;
                    // itemNode.HeaderIcon = modelIcon;
                    Children.Add(itemNode);
                }
                var Category = new TreeViewItemExCategory(header, Children.ToArray());

                MainMenuCategories.Add(Category);
            }
            NotifyOfPropertyChange("sideMenu");
        }
Ejemplo n.º 2
0
        public async Task OpenMenuItem(TreeViewItemEx nodeZ)
        {
            var node        = nodeZ.NodeXml;
            var modelHeader = node.Attributes["header"].Value;
            var modelClass  = node.Attributes["class"].Value;
            var modelIcon   = node.Attributes["icon"].Value;
            var ins         = node.Attributes["instance"];

            try
            {
                // var found = Items.FirstOrDefault(a => a.DisplayName == modelHeader);
                //if (found != null)
                //{
                //    ActivateItem(found);
                //}
                //else
                //{
                if (ins == null)
                {
                    try
                    {
                        Type type = DataHelpers.GetTypesModule.Resolve(modelClass);
                        if (type == null)
                        {
                            return;
                        }

                        var baseView = await DataHelpers.GetBaseViewModelScreen(type, aggre, false);

                        // var control = await BaseViewModel.Create(Type.GetType(modelClass), this, aggre, windowManager);
                        baseView.DisplayName = modelHeader;

                        //  Items.Add(baseView);
                        ActivateItem(baseView);
                    }
                    catch (Exception s)
                    {
                        DataHelpers.ShowMessageError(s);
                    }
                }
                else
                {
                    try
                    {
                        var  isntance = ins.Value;
                        Type t        = DataHelpers.GetTypesModule.Resolve(modelClass);
                        if (t == null)
                        {
                            return;
                        }

                        var one         = Activator.CreateInstance(t);
                        var oneInstance = (IDocument)one.GetType()
                                          .GetMethod(isntance).
                                          Invoke(one, null);

                        if (oneInstance == null)
                        {
                            return;
                        }

                        this.OpenScreen(await DetailViewModel.Create(oneInstance, oneInstance.GetType(), aggre, this), $"{modelHeader}");
                    }
                    catch (Exception s)
                    {
                        DataHelpers.ShowMessageError(s);
                        return;
                    }
                }
                //   }
            }
            catch (Exception s)
            {
                DataHelpers.ShowMessage(s.Message);
            }
        }