コード例 #1
0
        public GraphQlAfDatabase(AFDatabase aAfDatabase, Field afElementsField)
        {
            name           = aAfDatabase.Name;
            path           = aAfDatabase.GetPath();
            thisAfDatabase = aAfDatabase;

            if (afElementsField != null)
            {
                var afElementsNameFilterStrings           = GraphQlHelpers.GetArgumentStrings(afElementsField, "nameFilter");
                var afElementsAttributeValueFilterStrings = GraphQlHelpers.GetArgumentStrings(afElementsField, "attributeValueFilter");

                var afElementsChildField   = GraphQlHelpers.GetFieldFromSelectionSet(afElementsField, "afElements");
                var afAttributesChildField = GraphQlHelpers.GetFieldFromSelectionSet(afElementsField, "afAttributes");

                var returnElementsObject = new ConcurrentBag <GraphQlAfElement>();
                var afElementList        = aAfDatabase.Elements;
                Parallel.ForEach(afElementList, aAfChildElement =>
                {
                    if (GraphQlHelpers.JudgeElementOnFilters(aAfChildElement, afElementsNameFilterStrings, afElementsAttributeValueFilterStrings))
                    {
                        returnElementsObject.Add(new GraphQlAfElement(aAfChildElement, afElementsChildField, afAttributesChildField));
                    }
                });
                afElements = returnElementsObject.OrderBy(x => x.name).ToList();
            }
        }
コード例 #2
0
        public QLFabricationServiceResolve(FabricationService _fabService, Field qlFabricationPartsField)
        {
            id   = _fabService.ServiceId.ToString();
            name = _fabService.Name;

            if (qlFabricationPartsField != null)
            {
                Autodesk.Revit.DB.Document _doc = ResolverEntry.Doc;

                List <FabricationPart> objectList = new FilteredElementCollector(_doc).OfClass(typeof(FabricationPart)).
                                                    Select(x => (x as FabricationPart)).Where(x => x.ServiceId.ToString() == id).ToList();

                var nameFiltersContained    = GraphQlHelpers.GetArgumentStrings(qlFabricationPartsField, "nameFilter");
                var queryFieldForParameters = GraphQlHelpers.GetFieldFromSelectionSet(qlFabricationPartsField, "qlParameters");

                qlFabricationParts = new List <QLFabricationPart>();
                foreach (FabricationPart aFabPart in objectList)
                {
                    if (nameFiltersContained.Count == 0 || nameFiltersContained.Contains(aFabPart.Name))
                    {
                        qlFabricationParts.Add(new QLFabricationPartResolve(aFabPart, queryFieldForParameters));
                    }
                }
            }
        }
コード例 #3
0
        //public QLFabricationPartResolve(FabricationPart _fabricationPart, Field queryFieldForParameters)
        //{
        //    id = _fabricationPart.Id.ToString();
        //    name = _fabricationPart.Name;

        //    if (queryFieldForParameters != null)
        //    {

        //        var returnElementsObject = new ConcurrentBag<QLParameter>();

        //        var nameFiltersContained = GraphQlHelpers.GetArgumentStrings(queryFieldForParameters, "nameFilter");

        //        var _doc = ResolverEntry.Doc;
        //        ParameterSet objectList = _fabricationPart.Parameters;

        //        //Parallel.ForEach(objectList, x =>
        //        foreach (Parameter x in objectList)
        //        {
        //            if (nameFiltersContained.Count == 0 || nameFiltersContained.Contains(x.Definition.Name))
        //            {
        //                returnElementsObject.Add(new QLParameter()
        //                {
        //                    id = x.Id.ToString(),
        //                    name = x.Definition.Name,
        //                    value = x.AsValueString() == null ? x.AsString() : x.AsValueString(),
        //                    userModifiable = x.UserModifiable,
        //                    isReadOnly = x.IsReadOnly
        //                });
        //            }
        //        }

        //        qlParameters = returnElementsObject.OrderBy(x => x.name).ToList();
        //    }

        //}
        public QLFabricationPartResolve(FabricationPart _fabricationPart, object aFieldOrContext)
        {
            id   = _fabricationPart.Id.ToString();
            name = _fabricationPart.Name;

            var queryFieldForParameters = GraphQlHelpers.GetFieldFromFieldOrContext(aFieldOrContext, "qlParameters");

            if (queryFieldForParameters != null)
            {
                var returnElementsObject = new ConcurrentBag <QLParameter>();

                var nameFiltersContained = GraphQlHelpers.GetArgumentStrings(queryFieldForParameters, "nameFilter");

                var          _doc       = ResolverEntry.Doc;
                ParameterSet objectList = _fabricationPart.Parameters;

                //Parallel.ForEach(objectList, x =>
                foreach (Parameter x in objectList)
                {
                    if (nameFiltersContained.Count == 0 || nameFiltersContained.Contains(x.Definition.Name))
                    {
                        returnElementsObject.Add(new QLParameter()
                        {
                            id             = x.Id.ToString(),
                            name           = x.Definition.Name,
                            value          = x.AsValueString() == null ? x.AsString() : x.AsValueString(),
                            userModifiable = x.UserModifiable,
                            isReadOnly     = x.IsReadOnly
                        });
                    }
                }

                qlParameters = returnElementsObject.OrderBy(x => x.name).ToList();
            }
        }
コード例 #4
0
        public QLFamilySymbolResolve(FamilySymbol _familySymbol, object aFieldOrContext)
        {
            id   = _familySymbol.Id.ToString();
            name = _familySymbol.Name;

            var queryFieldForFamilyInstances = GraphQlHelpers.GetFieldFromFieldOrContext(aFieldOrContext, "qlFamilyInstances");

            if (queryFieldForFamilyInstances != null)
            {
                var returnElementsObject = new ConcurrentBag <QLFamilyInstance>();

                var nameFiltersContained = GraphQlHelpers.GetArgumentStrings(queryFieldForFamilyInstances, "nameFilter");
                //var queryFieldForParameters = GraphQlHelpers.GetFieldFromSelectionSet(queryFieldForFamilyInstances, "qlParameters");

                var _doc = ResolverEntry.Doc;
                List <FamilyInstance> objectList = new FilteredElementCollector(_doc).OfClass(typeof(FamilyInstance))
                                                   .Select(x => (x as FamilyInstance)).Where(x => x.Symbol.Id.ToString() == id).ToList();

                //Parallel.ForEach(objectList, x =>
                foreach (var x in objectList)
                {
                    if (nameFiltersContained.Count == 0 || nameFiltersContained.Contains(x.Name))
                    {
                        returnElementsObject.Add(new QLFamilyInstanceResolve(x, queryFieldForFamilyInstances));
                    }
                }

                qlFamilyInstances = returnElementsObject.OrderBy(x => x.name).ToList();
            }
        }
コード例 #5
0
        public QLAfElementTemplateResolve(AFElementTemplate aAfElementTemplate, Field afElementsField)
        {
            name = aAfElementTemplate.Name;

            if (afElementsField != null)
            {
                var afElementsNameFilterStrings           = GraphQlHelpers.GetArgumentStrings(afElementsField, "nameFilter");
                var afElementsAttributeValueFilterStrings = GraphQlHelpers.GetArgumentStrings(afElementsField, "attributeValueFilter");

                var afElementsChildField   = GraphQlHelpers.GetFieldFromFieldOrContext(afElementsField, "afElements");
                var afAttributesChildField = GraphQlHelpers.GetFieldFromFieldOrContext(afElementsField, "afAttributes");

                var returnObject = new ConcurrentBag <QLAfElement>();

                List <AFElement> afElementList = aAfElementTemplate.FindInstantiatedElements(true, OSIsoft.AF.AFSortField.Name, OSIsoft.AF.AFSortOrder.Ascending, 10000).Select(x => x as AFElement).Where(x => x != null).ToList();
                Parallel.ForEach(afElementList, aAfChildElement =>
                {
                    if (GraphQlHelpers.JudgeElementOnFilters(aAfChildElement, afElementsNameFilterStrings, afElementsAttributeValueFilterStrings))
                    {
                        returnObject.Add(new QLAfElementResolve(aAfChildElement, afElementsChildField, afAttributesChildField));
                    }
                });

                afElements = returnObject.OrderBy(x => x.name).ToList();
            }
        }
コード例 #6
0
        public GraphQlAfAttribute(AFAttribute aAfAttribute, Field afAttributesField = null, Field tsPlotValuesField = null)
        {
            AFValue aAfValue = aAfAttribute.GetValue();

            name            = aAfAttribute.Name;
            ThisAfAttribute = aAfAttribute;
            value           = aAfValue.Value?.ToString();
            uom             = aAfAttribute.DisplayUOM?.Abbreviation;

            if (aAfAttribute.DataReference?.Name == "PI Point")
            {
                timeStamp = aAfValue.Timestamp.UtcTime.ToString("yyyy-MM-ddTHH:mm:ssZ");
            }

            if (afAttributesField != null)
            {
                var afAttributesNameFilterStrings = GraphQlHelpers.GetArgumentStrings(afAttributesField, "nameFilter");
                var afAttributesChildField        = GraphQlHelpers.GetFieldFromSelectionSet(afAttributesField, "afAttributes");

                var returnAttributesObject = new ConcurrentBag <GraphQlAfAttribute>();
                var afAttributeList        = aAfAttribute.Attributes.ToList <AFAttribute>();
                Parallel.ForEach(afAttributeList, aAfChildAttribute =>
                {
                    if (afAttributesNameFilterStrings.Count == 0 || afAttributesNameFilterStrings.Contains(aAfChildAttribute.Name))
                    {
                        returnAttributesObject.Add(new GraphQlAfAttribute(aAfAttribute, afAttributesChildField));
                    }
                });
                afAttributes = returnAttributesObject.OrderBy(x => x.name).ToList();
            }

            if (tsPlotValuesField != null)
            {
                if (aAfAttribute.DataReference?.Name == "PI Point")
                {
                    var plotDensity   = GraphQlHelpers.GetArgumentDouble(tsPlotValuesField, "plotDensity");
                    var startDateTime = GraphQlHelpers.GetArgumentDateTime(tsPlotValuesField, "startDateTime");
                    var endDateTime   = GraphQlHelpers.GetArgumentDateTime(tsPlotValuesField, "endDateTime");

                    var timeRange = new AFTimeRange(startDateTime, endDateTime);

                    AFValues asdf = ThisAfAttribute.GetValues(timeRange, (int)plotDensity, null);

                    var returnObject = new ConcurrentBag <GraphQlTsValue>();
                    foreach (AFValue aAfTsValue in asdf)
                    {
                        returnObject.Add(new GraphQlTsValue()
                        {
                            timeStamp = aAfTsValue.Timestamp.UtcTime.ToString("yyyy-MM-ddTHH:mm:ssZ"),
                            value     = aAfTsValue.Value.ToString()
                        });
                    }
                    tsPlotValues = returnObject.OrderBy(x => x.timeStamp).ToList();
                }
            }
        }
コード例 #7
0
        //public QLElementCollectionResolve(ICollection<ElementId> _ids, Field queryFieldForFamilyInstances, Field queryFieldForFabricationParts)
        //{
        //    elementIds = _ids.Select(x=>x.ToString()).ToList();

        //    if (queryFieldForFamilyInstances != null || queryFieldForFabricationParts != null)
        //    {

        //        var _doc = ResolverEntry.Doc;

        //        var returnFamilyInstancesObject = new ConcurrentBag<QLFamilyInstance>();
        //        var returnFabricationPartsObject = new ConcurrentBag<QLFabricationPart>();


        //        foreach (var aId in _ids)
        //        {
        //            var aElement = _doc.GetElement(aId);
        //            if (aElement == null)
        //            {

        //            }
        //            else
        //            {
        //                if (aElement is FamilyInstance && queryFieldForFamilyInstances != null)
        //                {
        //                    var nameFiltersContained = GraphQlHelpers.GetArgumentStrings(queryFieldForFamilyInstances, "nameFilter");
        //                    var queryFieldForParameters = GraphQlHelpers.GetFieldFromSelectionSet(queryFieldForFamilyInstances, "qlParameters");
        //                    if (nameFiltersContained.Count == 0 || nameFiltersContained.Contains(aElement.Name))
        //                    {
        //                        returnFamilyInstancesObject.Add(new QLFamilyInstanceResolve(aElement as FamilyInstance, queryFieldForParameters));
        //                    }
        //                }
        //                if (aElement is FabricationPart && queryFieldForFabricationParts != null)
        //                {
        //                    var nameFiltersContained = GraphQlHelpers.GetArgumentStrings(queryFieldForFabricationParts, "nameFilter");
        //                    var queryFieldForParameters = GraphQlHelpers.GetFieldFromSelectionSet(queryFieldForFabricationParts, "qlParameters");
        //                    if (nameFiltersContained.Count == 0 || nameFiltersContained.Contains(aElement.Name))
        //                    {
        //                        returnFabricationPartsObject.Add(new QLFabricationPartResolve(aElement as FabricationPart, queryFieldForParameters));
        //                    }
        //                }
        //            }
        //        }

        //        qlFamilyInstances = returnFamilyInstancesObject.OrderBy(x => x.name).ToList();
        //        qlFabricationParts = returnFabricationPartsObject.OrderBy(x => x.name).ToList();
        //    }

        //}

        public QLElementCollectionResolve(ICollection <ElementId> _ids, object aFieldOrContext)
        {
            elementIds = _ids.Select(x => x.ToString()).ToList();

            var queryFieldForFamilyInstances  = GraphQlHelpers.GetFieldFromFieldOrContext(aFieldOrContext, "qlFamilyInstances");
            var queryFieldForFabricationParts = GraphQlHelpers.GetFieldFromFieldOrContext(aFieldOrContext, "qlFabricationParts");


            if (queryFieldForFamilyInstances != null || queryFieldForFabricationParts != null)
            {
                var _doc = ResolverEntry.Doc;

                var returnFamilyInstancesObject  = new ConcurrentBag <QLFamilyInstance>();
                var returnFabricationPartsObject = new ConcurrentBag <QLFabricationPart>();


                foreach (var aId in _ids)
                {
                    var aElement = _doc.GetElement(aId);
                    if (aElement == null)
                    {
                    }
                    else
                    {
                        if (aElement is FamilyInstance && queryFieldForFamilyInstances != null)
                        {
                            var nameFiltersContained = GraphQlHelpers.GetArgumentStrings(queryFieldForFamilyInstances, "nameFilter");
                            //var queryFieldForParameters = GraphQlHelpers.GetFieldFromSelectionSet(queryFieldForFamilyInstances, "qlParameters");
                            if (nameFiltersContained.Count == 0 || nameFiltersContained.Contains(aElement.Name))
                            {
                                //returnFamilyInstancesObject.Add(new QLFamilyInstanceResolve(aElement as FamilyInstance, queryFieldForParameters));
                                returnFamilyInstancesObject.Add(new QLFamilyInstanceResolve(aElement as FamilyInstance, queryFieldForFamilyInstances));
                            }
                        }
                        if (aElement is FabricationPart && queryFieldForFabricationParts != null)
                        {
                            var nameFiltersContained = GraphQlHelpers.GetArgumentStrings(queryFieldForFabricationParts, "nameFilter");
                            //var queryFieldForParameters = GraphQlHelpers.GetFieldFromSelectionSet(queryFieldForFabricationParts, "qlParameters");
                            if (nameFiltersContained.Count == 0 || nameFiltersContained.Contains(aElement.Name))
                            {
                                //returnFabricationPartsObject.Add(new QLFabricationPartResolve(aElement as FabricationPart, queryFieldForParameters));
                                returnFabricationPartsObject.Add(new QLFabricationPartResolve(aElement as FabricationPart, queryFieldForFabricationParts));
                            }
                        }
                    }
                }

                qlFamilyInstances  = returnFamilyInstancesObject.OrderBy(x => x.name).ToList();
                qlFabricationParts = returnFabricationPartsObject.OrderBy(x => x.name).ToList();
            }
        }
コード例 #8
0
        public GraphQlAfElement(AFElement aAfElement, Field afElementsField, Field afAttributesField)
        {
            name          = aAfElement.Name;
            template      = aAfElement.Template?.Name;
            path          = aAfElement.GetPath();
            ThisAfElement = aAfElement;

            if (afElementsField != null)
            {
                var afElementsNameFilterStrings           = GraphQlHelpers.GetArgumentStrings(afElementsField, "nameFilter");
                var afElementsAttributeValueFilterStrings = GraphQlHelpers.GetArgumentStrings(afElementsField, "attributeValueFilter");
                var afElementsChildField   = GraphQlHelpers.GetFieldFromSelectionSet(afElementsField, "afElements");
                var afAttributesChildField = GraphQlHelpers.GetFieldFromSelectionSet(afElementsField, "afAttributes");

                var returnElementsObject = new ConcurrentBag <GraphQlAfElement>();
                var afElementList        = aAfElement.Elements;
                Parallel.ForEach(afElementList, aAfChildElement =>
                {
                    if (GraphQlHelpers.JudgeElementOnFilters(aAfChildElement, afElementsNameFilterStrings, afElementsAttributeValueFilterStrings))
                    {
                        returnElementsObject.Add(new GraphQlAfElement(aAfChildElement, afElementsChildField, afAttributesChildField));
                    }
                });
                afElements = returnElementsObject.OrderBy(x => x.name).ToList();
            }

            if (afAttributesField != null)
            {
                var afAttributesNameFilterStrings = GraphQlHelpers.GetArgumentStrings(afAttributesField, "nameFilter");
                var afAttributesChildField        = GraphQlHelpers.GetFieldFromSelectionSet(afAttributesField, "afAttributes");
                var tsValuesField = GraphQlHelpers.GetFieldFromSelectionSet(afAttributesField, "tsPlotValues");

                var returnAttributesObject = new ConcurrentBag <GraphQlAfAttribute>();
                var afAttributeList        = aAfElement.Attributes.ToList <AFAttribute>();
                Parallel.ForEach(afAttributeList, aAfAttribute =>
                {
                    if (afAttributesNameFilterStrings.Count == 0 || afAttributesNameFilterStrings.Contains(aAfAttribute.Name))
                    {
                        returnAttributesObject.Add(new GraphQlAfAttribute(aAfAttribute, afAttributesChildField, tsValuesField));
                    }
                });
                afAttributes = returnAttributesObject.OrderBy(x => x.name).ToList();
            }
        }
コード例 #9
0
        public QLPiSystemResolve(PISystem aPiSystem, Field afDbsField)
        {
            name = aPiSystem.Name;
            if (afDbsField != null)
            {
                var nameFilterStrings = GraphQlHelpers.GetArgumentStrings(afDbsField, "nameFilter");
                var afElementsField   = GraphQlHelpers.GetFieldFromFieldOrContext(afDbsField, "afElements");

                var returnElementsObject = new ConcurrentBag <QLAfDatabase>();
                var afDbsList            = aPiSystem.Databases;
                Parallel.ForEach(afDbsList, aAfDb =>
                {
                    if (nameFilterStrings.Count == 0 || nameFilterStrings.Contains(aAfDb.Name))
                    {
                        returnElementsObject.Add(new QLAfDatabaseResolve(aAfDb, afElementsField));
                    }
                });
                afDbs = returnElementsObject.OrderBy(x => x.name).ToList();
            }
        }