예제 #1
0
        public override RawRecord Next()
        {
            if (this.inputOp.State())
            {
                RawRecord r = this.inputOp.Next();
                if (r == null)
                {
                    this.Close();
                    return(null);
                }

                PathField path = r[this.pathIndex] as PathField;

                Debug.Assert(path != null);

                this.treeFunction.Accumulate(path);

                if (!this.inputOp.State())
                {
                    this.Close();
                }
                return(r);
            }

            return(null);
        }
예제 #2
0
        void IProduct.FillTableLayoutPanel(TableLayoutPanel TLP, IRole UVO)
        {
            ZhgutVO wp = (ZhgutVO)this;

            TextBox    tb  = new TextBox();
            DBCategory dbc = new DBCategory("ZHGUTLIST");

            tb.Text     = dbc.GetName(wp.IDCat);
            tb.Anchor   = AnchorStyles.Left | AnchorStyles.Right;
            tb.ReadOnly = true;
            tb.Dock     = DockStyle.Fill;
            UIWorks.AddToTLP(TLP, "Категория", tb);

            tb = new TextBox();
            DBSubCategory dbsc = new DBSubCategory();

            tb.Text     = dbsc.GetName(wp.IDSubCat);
            tb.Anchor   = AnchorStyles.Left | AnchorStyles.Right;
            tb.ReadOnly = true;
            tb.Dock     = DockStyle.Fill;
            UIWorks.AddToTLP(TLP, "Подкатегория", tb);

            PathField pf = new PathField();

            pf.Tag = Roles.Inzhener;
            pf.Init(wp.ZHGUTPATH, true, false, false, true, Roles.Inzhener, "VIEWONLY", UVO, "ZHGUTPATH", null, this);
            pf.bDelVisible     = false;
            pf.bPathVisible    = false;
            pf.tbPath.Dock     = DockStyle.Fill;
            pf.Dock            = DockStyle.Fill;
            pf.bRemark.Visible = false;
            UIWorks.AddToTLP(TLP, "Изготовление жгута", pf);
        }
예제 #3
0
 private void Home_Hide()
 {   // changes the displayed items to fit non-home screens
     PathTxt.Show();
     PathField.Show();
     ScanBtn.Show();
     PathBtn.Show();
     HomeContent.Hide();
     HomePanel.Hide();
     SettingsBox.Hide();
     SettingsTitle.Hide();
 }
예제 #4
0
        public static void AddToTLP(TableLayoutPanel TLP, string LableText, PathField pf)
        {
            TLP.RowCount = TLP.RowCount + 1;
            TLP.RowStyles.Add(new RowStyle(SizeType.Absolute, 40F));
            Label l = new Label();

            l.Text     = LableText;
            l.AutoSize = false;
            l.Size     = new System.Drawing.Size(174, 38);

            TLP.Controls.Add(l, 0, TLP.RowCount - 1);
            TLP.Controls.Add(pf, 1, TLP.RowCount - 1);
        }
예제 #5
0
        private static void ConstructTree(TreeField root, int index, PathField pathField)
        {
            if (index >= pathField.Path.Count)
            {
                return;
            }
            PathStepField pathStepField = pathField.Path[index++] as PathStepField;

            Debug.Assert(pathStepField != null, "pathStepField != null");
            CompositeField compose1PathStep = pathStepField.StepFieldObject as CompositeField;

            Debug.Assert(compose1PathStep != null, "compose1PathStep != null");
            FieldObject nodeObject = compose1PathStep[compose1PathStep.DefaultProjectionKey];

            TreeField child;

            if (!root.Children.TryGetValue(nodeObject, out child))
            {
                child = new TreeField(nodeObject);
                root.Children[nodeObject] = child;
            }

            ConstructTree(child, index, pathField);
        }
예제 #6
0
        public override FieldObject Evaluate(RawRecord record)
        {
            List <FieldObject> path = new List <FieldObject>();

            foreach (Tuple <ScalarFunction, bool, HashSet <string> > tuple in pathStepList)
            {
                ScalarFunction   accessPathStepFunc = tuple.Item1;
                bool             needsUnfold        = tuple.Item2;
                HashSet <string> stepLabels         = tuple.Item3;

                if (accessPathStepFunc == null)
                {
                    PathStepField pathStepField = new PathStepField(null);
                    foreach (string label in stepLabels)
                    {
                        pathStepField.AddLabel(label);
                    }
                    path.Add(pathStepField);
                    continue;
                }

                FieldObject step = accessPathStepFunc.Evaluate(record);
                if (step == null)
                {
                    PathStepField lastPathStep;

                    if (path.Any())
                    {
                        lastPathStep = (PathStepField)path[path.Count - 1];
                    }
                    else
                    {
                        lastPathStep = new PathStepField(null);
                        path.Add(lastPathStep);
                    }

                    foreach (string label in stepLabels)
                    {
                        lastPathStep.AddLabel(label);
                    }
                    continue;
                }

                if (needsUnfold)
                {
                    PathField subPath = step as PathField;
                    Debug.Assert(subPath != null, "(subPath as PathField) != null");

                    foreach (PathStepField subPathStep in subPath.Path.Cast <PathStepField>())
                    {
                        if (subPathStep.StepFieldObject == null)
                        {
                            if (path.Any())
                            {
                                PathStepField lastPathStep = (PathStepField)path[path.Count - 1];
                                foreach (string label in subPathStep.Labels)
                                {
                                    lastPathStep.AddLabel(label);
                                }
                            }
                            else
                            {
                                path.Add(subPathStep);
                            }
                            continue;
                        }

                        PathStepField pathStepField = new PathStepField(subPathStep.StepFieldObject);
                        foreach (string label in subPathStep.Labels)
                        {
                            pathStepField.AddLabel(label);
                        }
                        path.Add(pathStepField);
                    }

                    PathStepField lastSubPathStep = (PathStepField)path.Last();
                    foreach (string label in stepLabels)
                    {
                        lastSubPathStep.AddLabel(label);
                    }
                }
                else
                {
                    PathStepField pathStepField = new PathStepField(step);
                    foreach (string label in stepLabels)
                    {
                        pathStepField.AddLabel(label);
                    }
                    path.Add(pathStepField);
                }
            }

            return(new PathField(path));
        }
예제 #7
0
파일: WPNameVO.cs 프로젝트: malekula/smngit
        void IProduct.FillTableLayoutPanel(TableLayoutPanel TLP, IRole UVO)
        {
            //===============================================================Inzhener
            WPNameVO wp = (WPNameVO)this;

            if (wp.COMPOSITIONREQ)
            {
                PathField pf = new PathField();
                pf.Tag = Roles.Inzhener;
                pf.Init(wp.COMPOSITION, true, false, false, true, Roles.Inzhener, "VIEWONLY", UVO, "COMPOSITION", null, wp);
                pf.bDelVisible  = false;
                pf.bPathVisible = false;
                pf.tbPath.Dock  = DockStyle.Fill;
                pf.Dock         = DockStyle.Fill;
                //pf.tbPath.Dock = DockStyle.Left;
                //pf.tbPath.Anchor = AnchorStyles.Left | AnchorStyles.Right;
                pf.bRemark.Visible = false;
                UIWorks.AddToTLP(TLP, "Состав изделия", pf);
            }
            if (wp.TECHREQREQ)
            {
                PathField pf = new PathField();
                pf.Tag = Roles.Inzhener;
                pf.Init(wp.TECHREQ, true, false, false, true, Roles.Inzhener, "VIEWONLY", UVO, "TECHREQ", null, wp);
                pf.bDelVisible     = false;
                pf.bPathVisible    = false;
                pf.tbPath.Dock     = DockStyle.Fill;
                pf.Dock            = DockStyle.Fill;
                pf.bRemark.Visible = false;
                UIWorks.AddToTLP(TLP, "Технические требования", pf);
            }
            if (wp.CONFIGURATIONREQ)
            {
                PathField pf = new PathField();
                pf.Tag = Roles.Inzhener;
                pf.Init(wp.CONFIGURATION, true, false, false, true, Roles.Inzhener, "VIEWONLY", UVO, "CONFIGURATION", null, wp);
                pf.bDelVisible     = false;
                pf.bPathVisible    = false;
                pf.tbPath.Dock     = DockStyle.Fill;
                pf.Dock            = DockStyle.Fill;
                pf.bRemark.Visible = false;
                UIWorks.AddToTLP(TLP, "Конфигурация", pf);
            }
            //===============================================================Constructor
            if (wp.DIMENSIONALDRAWINGREQ)
            {
                PathField pf = new PathField();
                pf.Tag = Roles.Constructor;
                pf.Init(wp.DIMENDRAWING, true, false, false, true, Roles.Constructor, "VIEWONLY", UVO, "DIMENSIONALDRAWING", null, wp);
                pf.bDelVisible     = false;
                pf.bPathVisible    = false;
                pf.tbPath.Dock     = DockStyle.Fill;
                pf.Dock            = DockStyle.Fill;
                pf.bRemark.Visible = false;
                UIWorks.AddToTLP(TLP, "Габаритный чертёж", pf);
            }
            if (wp.SBORKA3DREQ)
            {
                PathField pf = new PathField();
                pf.Tag = Roles.Constructor;
                pf.Init(wp.SBORKA3D, true, false, false, true, Roles.Constructor, "VIEWONLY", UVO, "SBORKA3D", null, wp);
                pf.bDelVisible     = false;
                pf.bPathVisible    = false;
                pf.tbPath.Dock     = DockStyle.Fill;
                pf.Dock            = DockStyle.Fill;
                pf.bRemark.Visible = false;
                UIWorks.AddToTLP(TLP, "3Д сборка", pf);
            }
            if (wp.MECHPARTSREQ)
            {
                PathField pf = new PathField();
                pf.Tag = Roles.Constructor;
                pf.Init(wp.MECHPARTS, true, false, false, true, Roles.Constructor, "VIEWONLY", UVO, "MECHPARTS", null, wp);
                pf.bDelVisible     = false;
                pf.bPathVisible    = false;
                pf.tbPath.Dock     = DockStyle.Fill;
                pf.Dock            = DockStyle.Fill;
                pf.bRemark.Visible = false;
                UIWorks.AddToTLP(TLP, "Проект механических деталей", pf);
            }
            if (wp.SHILDSREQ)
            {
                PathField pf = new PathField();
                pf.Tag = Roles.Constructor;
                pf.Init(wp.SHILDS, true, false, false, true, Roles.Constructor, "VIEWONLY", UVO, "SHILDS", null, wp);
                pf.bDelVisible     = false;
                pf.bPathVisible    = false;
                pf.tbPath.Dock     = DockStyle.Fill;
                pf.Dock            = DockStyle.Fill;
                pf.bRemark.Visible = false;
                UIWorks.AddToTLP(TLP, "Шильды", pf);
            }

            /*if (wp.PLANKAREQ)
             * {
             *  PathField pf = new PathField();
             *  pf.Tag = Roles.Constructor;
             *  pf.Init(wp.PLANKA, true, false, false, true, Roles.Constructor, UVO.Role);
             *  pf.bDelVisible = false;
             *  pf.bPathVisible = false;
             *  pf.tbPath.Width += 150;
             *  UIWorks.AddToTLP(TLP, "Планка фирменная", pf);
             * }*/
            if (wp.PACKAGINGREQ)
            {
                PathField pf = new PathField();
                pf.Tag = Roles.Constructor;
                pf.Init(wp.PACKAGING, true, false, false, true, Roles.Constructor, "VIEWONLY", UVO, "PACKAGING", null, wp);
                pf.bDelVisible     = false;
                pf.bPathVisible    = false;
                pf.tbPath.Dock     = DockStyle.Fill;
                pf.Dock            = DockStyle.Fill;
                pf.bRemark.Visible = false;
                UIWorks.AddToTLP(TLP, "Упаковка", pf);
            }
            //===================================================================================TEHNOLOG

            //===================================================================================shemotehbik
            if (wp.WIRINGDIAGRAMREQ)
            {
                PathField pf = new PathField();
                pf.Tag = Roles.Shemotehnik;
                pf.Init(wp.WIRINGDIAGRAM, true, false, false, true, Roles.Shemotehnik, "VIEWONLY", UVO, "WIRINGDIAGRAM", null, wp);
                pf.bDelVisible     = false;
                pf.bPathVisible    = false;
                pf.tbPath.Dock     = DockStyle.Fill;
                pf.Dock            = DockStyle.Fill;
                pf.bRemark.Visible = false;
                UIWorks.AddToTLP(TLP, "Схема электрическая монтажная", pf);
            }



            //===================================================================================OTD
            //if (wp.PASSPORTREQ)
            //{
            //    PathField pf = new PathField();
            //    pf.Tag = Roles.OTD;
            //    pf.Init(wp.PASSPORT, true, false, false, true, Roles.OTD, UVO.Role, "VIEWONLY");
            //    pf.bDelVisible = false;
            //    pf.bPathVisible = false;
            //    pf.tbPath.Dock = DockStyle.Fill;
            //    pf.Dock = DockStyle.Fill;
            //    UIWorks.AddToTLP(TLP, "Паспорт/ЭТ", pf);
            //}
            //if (wp.MANUALREQ)
            //{
            //    PathField pf = new PathField();
            //    pf.Tag = Roles.OTD;
            //    pf.Init(wp.MANUAL, true, false, false, true, Roles.OTD, UVO.Role, "VIEWONLY");
            //    pf.bDelVisible = false;
            //    pf.bPathVisible = false;
            //    pf.tbPath.Dock = DockStyle.Fill;
            //    pf.Dock = DockStyle.Fill;
            //    UIWorks.AddToTLP(TLP, "РЭ", pf);
            //}
            //if (wp.PACKINGLISTREQ)
            //{
            //    PathField pf = new PathField();
            //    pf.Tag = Roles.OTD;
            //    pf.Init(wp.PACKINGLIST, true, false, false, true, Roles.OTD, UVO.Role, "VIEWONLY");
            //    pf.bDelVisible = false;
            //    pf.bPathVisible = false;
            //    pf.tbPath.Dock = DockStyle.Fill;
            //    pf.Dock = DockStyle.Fill;
            //    UIWorks.AddToTLP(TLP, "Лист упаковочный", pf);
            //}


            //===================================================================================OTK

            /*if (wp.SERIALREQ)
             * {
             *  PathField pf = new PathField();
             *  pf.Tag = Roles.OTK;
             *  pf.Init(wp.SERIAL, true, false, false, true, Roles.OTK, UVO.Role);
             *  pf.bDelVisible = false;
             *  pf.bPathVisible = false;
             *  pf.tbPath.Width += 150;
             *  UIWorks.AddToTLP(TLP, "Серийные номера", pf);
             * }*/

            TextBox tb = new TextBox();

            tb.Tag      = Roles.OTK;
            tb.Text     = wp.LENGTH;
            tb.Anchor   = AnchorStyles.Left | AnchorStyles.Right;
            tb.ReadOnly = true;
            tb.Dock     = DockStyle.Fill;
            if ((tb.Text == "") && (UVO.Role == Roles.OTK))
            {
                tb.BackColor = Color.Tomato;
            }
            UIWorks.AddToTLP(TLP, "Длина", tb);

            tb          = new TextBox();
            tb.Tag      = Roles.OTK;
            tb.Text     = wp.WIDTH;
            tb.Anchor   = AnchorStyles.Left | AnchorStyles.Right;
            tb.ReadOnly = true;
            tb.Dock     = DockStyle.Fill;
            if ((tb.Text == "") && (UVO.Role == Roles.OTK))
            {
                tb.BackColor = Color.Tomato;
            }
            UIWorks.AddToTLP(TLP, "Ширина", tb);

            tb          = new TextBox();
            tb.Tag      = Roles.OTK;
            tb.Text     = wp.HEIGHT;
            tb.Anchor   = AnchorStyles.Left | AnchorStyles.Right;
            tb.ReadOnly = true;
            tb.Dock     = DockStyle.Fill;
            if ((tb.Text == "") && (UVO.Role == Roles.OTK))
            {
                tb.BackColor = Color.Tomato;
            }
            UIWorks.AddToTLP(TLP, "Высота", tb);

            tb          = new TextBox();
            tb.Tag      = Roles.OTK;
            tb.Text     = wp.WEIGHT;
            tb.Anchor   = AnchorStyles.Left | AnchorStyles.Right;
            tb.ReadOnly = true;
            tb.Dock     = DockStyle.Fill;
            if ((tb.Text == "") && (UVO.Role == Roles.OTK))
            {
                tb.BackColor = Color.Tomato;
            }
            UIWorks.AddToTLP(TLP, "Вес", tb);
        }
예제 #8
0
파일: CableVO.cs 프로젝트: malekula/smngit
        void IProduct.FillTableLayoutPanel(TableLayoutPanel TLP, IRole UVO)
        {
            CableVO wp = (CableVO)this;

            TextBox    tb  = new TextBox();
            DBCategory dbc = new DBCategory("CABLELIST");

            tb.Text     = dbc.GetName(wp.IDCat);
            tb.Anchor   = AnchorStyles.Left | AnchorStyles.Right;
            tb.ReadOnly = true;
            tb.Dock     = DockStyle.Fill;
            UIWorks.AddToTLP(TLP, "Категория", tb);

            tb = new TextBox();
            DBSubCategory dbsc = new DBSubCategory();

            tb.Text     = dbsc.GetName(wp.IDSubCat);
            tb.Anchor   = AnchorStyles.Left | AnchorStyles.Right;
            tb.ReadOnly = true;
            tb.Dock     = DockStyle.Fill;
            UIWorks.AddToTLP(TLP, "Подкатегория", tb);

            PathField pf = new PathField();

            pf.Tag = Roles.Inzhener;
            pf.Init(wp.DIMENDRAWING, true, false, false, true, Roles.Inzhener, "VIEWONLY", UVO, "DIMENSIONALDRAWING_CABLE", null, wp);
            pf.bDelVisible     = false;
            pf.bPathVisible    = false;
            pf.tbPath.Width   += 150;
            pf.tbPath.Dock     = DockStyle.Fill;
            pf.Dock            = DockStyle.Fill;
            pf.bRemark.Visible = false;

            UIWorks.AddToTLP(TLP, "Сборочный чертёж", pf);

            pf     = new PathField();
            pf.Tag = Roles.Inzhener;
            pf.Init(wp.MECHPARTS, true, false, false, true, Roles.Inzhener, "VIEWONLY", UVO, "MECHPARTS_CABLE", null, wp);
            pf.bDelVisible     = false;
            pf.bPathVisible    = false;
            pf.tbPath.Width   += 150;
            pf.tbPath.Dock     = DockStyle.Fill;
            pf.Dock            = DockStyle.Fill;
            pf.bRemark.Visible = false;

            UIWorks.AddToTLP(TLP, "Проект мех. деталей", pf);

            tb          = new TextBox();
            tb.Text     = wp.CONECTORS;
            tb.Anchor   = AnchorStyles.Left | AnchorStyles.Right;
            tb.ReadOnly = true;
            tb.Dock     = DockStyle.Fill;
            UIWorks.AddToTLP(TLP, "Соединители", tb);

            tb          = new TextBox();
            tb.Text     = wp.CLENGTH;
            tb.Anchor   = AnchorStyles.Left | AnchorStyles.Right;
            tb.ReadOnly = true;
            tb.Dock     = DockStyle.Fill;
            UIWorks.AddToTLP(TLP, "Длина", tb);
        }
예제 #9
0
        public override RawRecord Next()
        {
            RawRecord inputRec;

            while (this.inputOp.State() && (inputRec = this.inputOp.Next()) != null)
            {
                List <FieldObject> path = new List <FieldObject>();
                int activeByFuncIndex   = 0;

                foreach (Tuple <ScalarFunction, bool, HashSet <string> > tuple in pathStepList)
                {
                    ScalarFunction   accessPathStepFunc = tuple.Item1;
                    bool             needsUnfold        = tuple.Item2;
                    HashSet <string> stepLabels         = tuple.Item3;

                    if (accessPathStepFunc == null)
                    {
                        PathStepField pathStepField = new PathStepField(null);
                        foreach (string label in stepLabels)
                        {
                            pathStepField.AddLabel(label);
                        }
                        path.Add(pathStepField);
                        continue;
                    }

                    FieldObject step = accessPathStepFunc.Evaluate(inputRec);
                    if (step == null)
                    {
                        PathStepField lastPathStep;

                        if (path.Any())
                        {
                            lastPathStep = (PathStepField)path[path.Count - 1];
                        }
                        else
                        {
                            lastPathStep = new PathStepField(null);
                            path.Add(lastPathStep);
                        }

                        foreach (string label in stepLabels)
                        {
                            lastPathStep.AddLabel(label);
                        }
                        continue;
                    }

                    if (needsUnfold)
                    {
                        PathField subPath = step as PathField;
                        Debug.Assert(subPath != null, "(subPath as PathField) != null");

                        foreach (PathStepField subPathStep in subPath.Path.Cast <PathStepField>())
                        {
                            if (subPathStep.StepFieldObject == null)
                            {
                                if (path.Any())
                                {
                                    PathStepField lastPathStep = (PathStepField)path[path.Count - 1];
                                    foreach (string label in subPathStep.Labels)
                                    {
                                        lastPathStep.AddLabel(label);
                                    }
                                }
                                else
                                {
                                    path.Add(subPathStep);
                                }
                                continue;
                            }

                            FieldObject   pathStep      = GetStepProjectionResult(subPathStep.StepFieldObject, ref activeByFuncIndex);
                            PathStepField pathStepField = new PathStepField(pathStep);
                            foreach (string label in subPathStep.Labels)
                            {
                                pathStepField.AddLabel(label);
                            }
                            path.Add(pathStepField);
                        }

                        PathStepField lastSubPathStep = (PathStepField)path.Last();
                        foreach (string label in stepLabels)
                        {
                            lastSubPathStep.AddLabel(label);
                        }
                    }
                    else
                    {
                        FieldObject pathStep = GetStepProjectionResult(step, ref activeByFuncIndex);

                        Compose1Field compose1PathStep = pathStep as Compose1Field;
                        Debug.Assert(compose1PathStep != null, "compose1PathStep != null");
                        //
                        // g.V().optional(__.count().V()).path()
                        //
                        if (compose1PathStep[compose1PathStep.DefaultProjectionKey] == null)
                        {
                            continue;
                        }

                        PathStepField pathStepField = new PathStepField(pathStep);
                        foreach (string label in stepLabels)
                        {
                            pathStepField.AddLabel(label);
                        }
                        path.Add(pathStepField);
                    }
                }

                RawRecord r = new RawRecord(inputRec);
                r.Append(new PathField(path));
                return(r);
            }

            this.Close();
            return(null);
        }
예제 #10
0
        internal override List <RawRecord> CrossApply(RawRecord record)
        {
            List <RawRecord> results = new List <RawRecord>();

            FieldObject unfoldTarget = getUnfoldTargetFunc.Evaluate(record);

            if (unfoldTarget is PathField)
            {
                PathField path = (PathField)unfoldTarget;
                foreach (PathStepField pathStep in path.Path.Cast <PathStepField>())
                {
                    if (pathStep == null)
                    {
                        continue;
                    }
                    RawRecord flatRecord = new RawRecord();

                    Compose1Field compose1StepField = pathStep.StepFieldObject as Compose1Field;
                    Debug.Assert(compose1StepField != null, "compose1StepField != null");
                    //
                    // Extract only needed columns from Compose1Field
                    //
                    foreach (string unfoldColumn in populateColumns)
                    {
                        flatRecord.Append(compose1StepField[unfoldColumn]);
                    }

                    results.Add(flatRecord);
                }
            }
            else if (unfoldTarget is CollectionField)
            {
                CollectionField inputCollection = (CollectionField)unfoldTarget;
                foreach (FieldObject singleObj in inputCollection.Collection)
                {
                    if (singleObj == null)
                    {
                        continue;
                    }
                    RawRecord flatRecord = new RawRecord();

                    Compose1Field compose1ObjField = singleObj as Compose1Field;
                    Debug.Assert(compose1ObjField != null, "compose1ObjField != null");
                    //
                    // Extract only needed columns from Compose1Field
                    //
                    foreach (string unfoldColumn in populateColumns)
                    {
                        flatRecord.Append(compose1ObjField[unfoldColumn]);
                    }

                    results.Add(flatRecord);
                }
            }
            else if (unfoldTarget is MapField)
            {
                MapField inputMap = (MapField)unfoldTarget;
                foreach (EntryField entry in inputMap)
                {
                    RawRecord entryRecord = new RawRecord();

                    foreach (string columnName in this.populateColumns)
                    {
                        entryRecord.Append(columnName.Equals(GraphViewKeywords.KW_TABLE_DEFAULT_COLUMN_NAME)
                            ? entry
                            : (FieldObject)null);
                    }

                    results.Add(entryRecord);
                }
            }
            else
            {
                RawRecord flatRecord = unfoldTarget.FlatToRawRecord(this.populateColumns);
                results.Add(flatRecord);
            }

            return(results);
        }