/// <summary> /// Create and configure the segment iterator to be used /// </summary> /// <param name="passFilter"></param> private void SetupForCellPassStackExamination(ICellPassAttributeFilter passFilter) { SegmentIterator = new SubGridSegmentIterator(null, null, SiteModel.PrimaryStorageProxy); if (passFilter.ReturnEarliestFilteredCellPass || (passFilter.HasElevationTypeFilter && passFilter.ElevationType == ElevationType.First)) { SegmentIterator.IterationDirection = IterationDirection.Forwards; } else { SegmentIterator.IterationDirection = IterationDirection.Backwards; } if (passFilter.HasMachineFilter) { if (passFilter.SiteModel == null) { passFilter.SiteModel = SiteModel; } SegmentIterator.SetMachineRestriction(passFilter.GetMachineIDsSet()); } // Create and configure the cell pass iterator to be used CellPassIterator = new SubGridSegmentCellPassIterator_NonStatic { SegmentIterator = SegmentIterator }; CellPassIterator.SetTimeRange(passFilter.HasTimeFilter, passFilter.StartTime, passFilter.EndTime); }
protected virtual void SetupForCellPassStackExamination() { if (!_commonCellPassStackExaminationDone) { _populationControl.PreparePopulationControl(_gridDataType, _liftParams, _filter.AttributeFilter, _clientGrid.EventPopulationFlags); _filter.AttributeFilter.RequestedGridDataType = _gridDataType; // Create and configure the segment iterator to be used _segmentIterator = new SubGridSegmentIterator(_subGridAsLeaf, _subGridAsLeaf.Directory, _storageProxy); if (_filter.AttributeFilter.HasMachineFilter) { _segmentIterator.SetMachineRestriction(_filter.AttributeFilter.GetMachineIDsSet()); } // Create and configure the cell pass iterator to be used _cellPassIterator = new SubGridSegmentCellPassIterator_NonStatic(_segmentIterator, _maxNumberOfPassesToReturn); _cellPassIterator.SetTimeRange(_filter.AttributeFilter.HasTimeFilter, _filter.AttributeFilter.StartTime, _filter.AttributeFilter.EndTime); _commonCellPassStackExaminationDone = true; } if (_filter.AttributeFilter.ReturnEarliestFilteredCellPass || (_filter.AttributeFilter.HasElevationTypeFilter && _filter.AttributeFilter.ElevationType == ElevationType.First)) { _segmentIterator.IterationDirection = IterationDirection.Forwards; } else { _segmentIterator.IterationDirection = IterationDirection.Backwards; } _segmentIterator.SubGrid = _subGridAsLeaf; _segmentIterator.Directory = _subGridAsLeaf.Directory; // Some display types require lift processing to be able to select the appropriate cell pass containing the filtered value required. if (_clientGrid.WantsLiftProcessingResults()) { _segmentIterator.IterationDirection = IterationDirection.Forwards; _cellPassIterator.MaxNumberOfPassesToReturn = _maxNumberOfPassesToReturn; } }