コード例 #1
0
 public override void Dispose()
 {
     RootNode         = null;
     ChangeDefectView = null;
     Content          = null;
     BindingContext   = null;
 }
コード例 #2
0
        protected override void OnAppearing()
        {
            base.OnAppearing();


            // Если у нас RootNode ещё не строился, то вызываем buildTree в отдельном потоке, иначе просто строим список
            if (RootNode != null)
            {
                InitTreeDefect();
            }
            else
            {
                var popupPage = new LoadingPopupPage("Идет построение дерева дефектов...", true);
                Navigation.PushPopupAsync(popupPage);
                Task.Factory.StartNew(() =>
                {
                    RootNode = BuildTree();
                    Device.BeginInvokeOnMainThread(() => { InitTreeDefect(); Navigation.PopPopupAsync(); });
                });
            }

            const string textStart = "Путь до текущей группы конструкций: ";

            // Путь в дереве дефектов
            // Если это родительская нода
            if (CurrentLevel?.ParentNode != null)
            {
                var nameBuilder = new StringBuilder(CurrentLevel.NGrConstr);
                var tempNode    = CurrentLevel;
                // Пока не дошли до рутовой ноды
                while (tempNode.ParentNode != null)
                {
                    tempNode = tempNode.ParentNode;
                    // не записываем "Общие данные"
                    if (tempNode.ParentNode != null)
                    {
                        // записываем в начало
                        nameBuilder.Insert(0, $"{tempNode.NGrConstr}/");
                    }
                }
                TreeNodeLevelLabel.Text = $"{textStart}/{nameBuilder}";
            }
            // Иначе мы убираем с экрана этот label
            else
            {
                TreeNodeLevelLabel.Text = $"{textStart}/";
                //TreeNodeLevelLabel.IsVisible = false;
            }
        }
コード例 #3
0
 /// <summary>
 /// Конструктор
 /// </summary>
 /// <param name="cIsso"></param>
 /// <param name="rootNode"></param>
 /// <param name="currentLevel"></param>
 /// <param name="visibleMode"></param>
 public AddIssoDefectContentPageList(int cIsso, Ais7IssoDefectsTreeNode2 rootNode    = null,
                                     Ais7IssoDefectsTreeNode currentLevel            = null,
                                     Ais7IssoDefectsTreeNode.VisibleMode visibleMode = Ais7IssoDefectsTreeNode.VisibleMode.ExistConstructions)
 {
     InitializeComponent();
     Title                 = $"ИССО №{cIsso}: Добавление дефекта.";
     CIsso                 = cIsso;
     CurrentLevel          = currentLevel;
     RootNode              = rootNode;
     VisibilityMode        = visibleMode;
     ChangeDefectView.Icon = new FileImageSource
     {
         File = CommonStaffUtils.GetFilePath(visibleMode == Ais7IssoDefectsTreeNode.VisibleMode.AllContructions
                                 ? "elements_tree_full.png"
                                 : "elements_tree.png")
     };
 }
コード例 #4
0
        /// <summary>
        /// Метод, инициализирующий построение списка конструктивов и перечней дефектов
        /// </summary>
        private Ais7IssoDefectsTreeNode2 BuildTree()
        {
            //Класс поключения к БД
            var connection = ConnectionClass.CreateDatabase();

            // Получение наименований конструктивов, нужных для построения списков
            var tlList = connection.Query <TableList>("select n_gr_constr from v_gr_constr_def").ToList().Select(list => list.n_gr_constr).ToList();

            // Текущий тип ИССО
            var typeIsso = connection.ExecuteScalar <int>($"select CTYPEISSO from I_ISSO where C_ISSO={CIsso}");

            // Забираем значения групп конструкций для текущего типа ИССО
            var forCtypisso = connection.Query <TableList>(
                $"select C_GR_CONSTR as N_GR_CONSTR from TABLE_DELEGATES where ISSO_TYPE={typeIsso}");

            // Построение первого уровня конструктивов
            var tableNames = connection.Query <DBHelper.TABLE_NAMES>(
                $"select SYS_NAME, DESCRIPTION, PARENT_ID, C_GR_CONSTR from TABLE_NAMES where C_GR_CONSTR in ({string.Join(',', forCtypisso.Select(x => x.n_gr_constr).ToList())})")
                             .ToList();
            //var table_Names = connection.Query<TABLE_NAMES>(String.Format("select n_gr_constr as SYS_NAME, text as DESCRIPTION, c_gr_constr, parent_group as PARENT_ID from S_GR_CONSTR " +
            //    "order by c_gr_constr"));
            var infoRows = new List <InfoRow>();

            foreach (var name in tableNames)
            {
                infoRows.Add(new InfoRow(name.SYS_NAME, name.DESCRIPTION, name.PARENT_ID, name.C_GR_CONSTR, -1));
            }

            // Получаем весь список возможных дефектов
            AdvancedSGrConstrList = connection.Query <VGrConstrDef2>("select * from v_gr_constr_def2 order by parent_group, c_gr_constr").ToList();

            // Список конструктивов
            AdvancedDefectsList = connection.Query <CustomDefectAlterTable>(
                "select s_def4constr.c_gr_constr, is_constr, s_defect.*, item_type, lock_expert, life, ord from s_def4constr " +
                "left outer join s_gr_constr on s_def4constr.c_gr_constr = s_gr_constr.c_gr_constr " +
                "left outer join s_defect on s_defect.c_defect = s_def4constr.c_defect").ToList();

            connection.Close();

            // Строим дерево
            var rootNode = new Ais7IssoDefectsTreeNode2(infoRows.Find(x => x.CGrConstr == 10).SysName, tlList, null, infoRows, AdvancedDefectsList);

            // Добавляем в дерево элементы конструктивов
            foreach (var sRow in AdvancedSGrConstrList)
            {
                try
                {
                    var node = rootNode.LocateNode(sRow.PARENT_GROUP);
                    node?.ChildrenNodes.Add(new Ais7IssoDefectsTreeNode(sRow, node, AdvancedDefectsList));
                }
                catch (Exception ex)
                {
                    Console.WriteLine(ex.Message);
                }
            }
            Console.WriteLine("Done!");

            // Здесь будем смотреть, есть ли элементы дочерние для корневых в дереве
            foreach (var child in rootNode.ChildrenNodes.ToList())
            {
                LeafCapturingMethod(child);
            }

            return(rootNode);
        }