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(); } }
//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(); } }
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(); } }
public QLAfDatabaseResolve(AFDatabase aAfDatabase, Field afElementsField) { name = aAfDatabase.Name; path = aAfDatabase.GetPath(); 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 returnElementsObject = new ConcurrentBag <QLAfElement>(); var afElementList = aAfDatabase.Elements; Parallel.ForEach(afElementList, aAfChildElement => { if (GraphQlHelpers.JudgeElementOnFilters(aAfChildElement, afElementsNameFilterStrings, afElementsAttributeValueFilterStrings)) { returnElementsObject.Add(new QLAfElementResolve(aAfChildElement, afElementsChildField, afAttributesChildField)); } }); afElements = returnElementsObject.OrderBy(x => x.name).ToList(); } }
//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, qlFabricationPartsField)); // } // } // } //} public QLFabricationServiceResolve(FabricationService _fabService, object aFieldOrContext) { id = _fabService.ServiceId.ToString(); name = _fabService.Name; var qlFabricationPartsField = GraphQlHelpers.GetFieldFromFieldOrContext(aFieldOrContext, "qlFabricationParts"); 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, qlFabricationPartsField)); } } } }
//public QLViewScheduleResolve(ViewSchedule aViewSchedule, Field queryFieldForViewScheduleData) //{ // id = aViewSchedule.Id.ToString(); // name = aViewSchedule.Name; // if (queryFieldForViewScheduleData != null) // { // try // { // qlViewScheduleData = ResolverEntry.aRevitTask.Run<QLViewScheduleData>(app => // { // ////https://thebuildingcoder.typepad.com/blog/2012/05/the-schedule-api-and-access-to-schedule-data.html // TableData table = aViewSchedule.GetTableData(); // var rowCount = aViewSchedule.GetTableData().GetSectionData(SectionType.Body).NumberOfRows; // var colCount = aViewSchedule.GetTableData().GetSectionData(SectionType.Body).NumberOfColumns; // QLViewScheduleData data = new QLViewScheduleData(); // data.headers = new List<string>(); // data.rows = new List<QLViewScheduleRow>(); // for (int i = 0; i < rowCount; i++) // { // QLViewScheduleRow newRow = new QLViewScheduleRow(); // newRow.id = i.ToString(); // newRow.cells = new List<string>(); // for (int j = 0; j < colCount; j++) // { // var cellString = aViewSchedule.GetCellText(SectionType.Body, i, j); // if (i == 0) // { // data.headers.Add(cellString); // } // else // { // newRow.cells.Add(cellString); // } // } // if (i == 0) // { // i++; // skip 2nd row - it's always blank // } // else // { // data.rows.Add(newRow); // } // } // return data; // }).Result; // } // catch (Exception ex) // { // var m = ex.Message; // } // } //} public QLViewScheduleResolve(ViewSchedule aViewSchedule, object aFieldOrContext) { id = aViewSchedule.Id.ToString(); name = aViewSchedule.Name; var queryFieldForViewScheduleData = GraphQlHelpers.GetFieldFromFieldOrContext(aFieldOrContext, "qlViewScheduleData"); if (queryFieldForViewScheduleData != null) { try { qlViewScheduleData = ResolverEntry.aRevitTask.Run <QLViewScheduleData>(app => { ////https://thebuildingcoder.typepad.com/blog/2012/05/the-schedule-api-and-access-to-schedule-data.html TableData table = aViewSchedule.GetTableData(); var rowCount = aViewSchedule.GetTableData().GetSectionData(SectionType.Body).NumberOfRows; var colCount = aViewSchedule.GetTableData().GetSectionData(SectionType.Body).NumberOfColumns; QLViewScheduleData data = new QLViewScheduleData(); data.headers = new List <string>(); data.rows = new List <QLViewScheduleRow>(); for (int i = 0; i < rowCount; i++) { QLViewScheduleRow newRow = new QLViewScheduleRow(); newRow.id = i.ToString(); newRow.cells = new List <string>(); for (int j = 0; j < colCount; j++) { var cellString = aViewSchedule.GetCellText(SectionType.Body, i, j); if (i == 0) { data.headers.Add(cellString); } else { newRow.cells.Add(cellString); } } if (i == 0) { i++; // skip 2nd row - it's always blank } else { data.rows.Add(newRow); } } return(data); }).Result; } catch (Exception ex) { var m = ex.Message; } } }
public QLAfAttributeResolve(AFAttribute aAfAttribute, Field afAttributesField = null, Field tsPlotValuesField = null) { AFValue aAfValue = aAfAttribute.GetValue(); name = aAfAttribute.Name; 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.GetFieldFromFieldOrContext(afAttributesField, "afAttributes"); var returnAttributesObject = new ConcurrentBag <QLAfAttribute>(); var afAttributeList = aAfAttribute.Attributes.ToList <AFAttribute>(); Parallel.ForEach(afAttributeList, aAfChildAttribute => { if (afAttributesNameFilterStrings.Count == 0 || afAttributesNameFilterStrings.Contains(aAfChildAttribute.Name)) { returnAttributesObject.Add(new QLAfAttributeResolve(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 = aAfAttribute.GetValues(timeRange, (int)plotDensity, null); var returnObject = new ConcurrentBag <QLTsValue>(); foreach (AFValue aAfTsValue in asdf) { returnObject.Add(new QLTsValueResolve() { timeStamp = aAfTsValue.Timestamp.UtcTime.ToString("yyyy-MM-ddTHH:mm:ssZ"), value = aAfTsValue.Value.ToString() }); } tsPlotValues = returnObject.OrderBy(x => x.timeStamp).ToList(); } } }
//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(); } }
public QLAfElementResolve(AFElement aAfElement, Field afElementsField, Field afAttributesField) { name = aAfElement.Name; template = aAfElement.Template?.Name; path = aAfElement.GetPath(); 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 returnElementsObject = new ConcurrentBag <QLAfElement>(); var afElementList = aAfElement.Elements; Parallel.ForEach(afElementList, aAfChildElement => { if (GraphQlHelpers.JudgeElementOnFilters(aAfChildElement, afElementsNameFilterStrings, afElementsAttributeValueFilterStrings)) { returnElementsObject.Add(new QLAfElementResolve(aAfChildElement, afElementsChildField, afAttributesChildField)); } }); afElements = returnElementsObject.OrderBy(x => x.name).ToList(); } if (afAttributesField != null) { var afAttributesNameFilterStrings = GraphQlHelpers.GetArgumentStrings(afAttributesField, "nameFilter"); var afAttributesChildField = GraphQlHelpers.GetFieldFromFieldOrContext(afAttributesField, "afAttributes"); var tsValuesField = GraphQlHelpers.GetFieldFromFieldOrContext(afAttributesField, "tsPlotValues"); var returnAttributesObject = new ConcurrentBag <QLAfAttribute>(); var afAttributeList = aAfElement.Attributes.ToList <AFAttribute>(); Parallel.ForEach(afAttributeList, aAfAttribute => { if (afAttributesNameFilterStrings.Count == 0 || afAttributesNameFilterStrings.Contains(aAfAttribute.Name)) { returnAttributesObject.Add(new QLAfAttributeResolve(aAfAttribute, afAttributesChildField, tsValuesField)); } }); afAttributes = returnAttributesObject.OrderBy(x => x.name).ToList(); } }
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(); } }
public QLAssemblyResolve(AssemblyInstance _assembly, List <View> viewListing, object aFieldOrContext) { id = _assembly.Id.ToString(); name = _assembly.Name; var qlFieldViews = GraphQlHelpers.GetFieldFromFieldOrContext(aFieldOrContext, "hasViews"); if (qlFieldViews != null && viewListing != null) { hasViews = viewListing.Any(v => v.AssociatedAssemblyInstanceId.IntegerValue == _assembly.Id.IntegerValue); } var queryFieldForElementCollection = GraphQlHelpers.GetFieldFromFieldOrContext(aFieldOrContext, "qlElementCollection"); if (queryFieldForElementCollection != null) { //var qlFamilyInstancesField = GraphQlHelpers.GetFieldFromSelectionSet(queryFieldForEllementCollection, "qlFamilyInstances"); //var qlFabricationPartsField = GraphQlHelpers.GetFieldFromSelectionSet(queryFieldForEllementCollection, "qlFabricationParts"); ICollection <ElementId> elementIds = _assembly.GetMemberIds(); //qlElementCollection = new QLElementCollectionResolve(elementIds, qlFamilyInstancesField, qlFabricationPartsField); qlElementCollection = new QLElementCollectionResolve(elementIds, queryFieldForElementCollection); } }