Ejemplo n.º 1
0
        AutoFillNumericComparisonColumn
        (
            ListObject oTable,
            String sSourceColumnName,
            String sDestinationColumnName,
            NumericComparisonColumnAutoFillUserSettings oDetails
        )
        {
            Debug.Assert(oTable != null);
            Debug.Assert(!String.IsNullOrEmpty(sDestinationColumnName));
            Debug.Assert(oDetails != null);

            if (String.IsNullOrEmpty(sSourceColumnName))
            {
                return;
            }

            TableColumnMapper.MapToTwoStrings(
                oTable, sSourceColumnName, sDestinationColumnName,
                oDetails.ComparisonOperator,
                oDetails.SourceNumberToCompareTo,
                oDetails.DestinationString1,
                oDetails.DestinationString2
                );
        }
Ejemplo n.º 2
0
        AddEdgeWidthAttributesToDConnectorMotif
        (
            ExcelTemplateGroupInfo oGroup,
            Boolean bEdgeWidthColumnAutoFilled,
            AutoFillNumericRangeColumnResults oEdgeWidthResults,
            NumericRangeColumnAutoFillUserSettings oEdgeWidthDetails,
            Dictionary <Int32, Object> oEdgeWidthSourceDictionary,
            ReadWorkbookContext oReadWorkbookContext,
            CollapsedGroupAttributes oCollapsedGroupAttributes,
            Int32 iAnchorVertices
        )
        {
            Debug.Assert(oGroup != null);
            Debug.Assert(oEdgeWidthResults != null);
            Debug.Assert(oReadWorkbookContext != null);
            Debug.Assert(oCollapsedGroupAttributes != null);
            Debug.Assert(iAnchorVertices >= 0);

            // If the edge width column was autofilled, get the average width for
            // the edges incident to the two-connector motif's first anchor, then
            // its second anchor.  Otherwise, don't do anything.

            if (!bEdgeWidthColumnAutoFilled)
            {
                return;
            }

            for (Int32 iAnchorVertexIndex = 0;
                 iAnchorVertexIndex < iAnchorVertices;
                 iAnchorVertexIndex++)
            {
                Double dAverageEdgeWidth;

                if (TableColumnMapper.TryMapAverageNumber(

                        GetRowIDsToAverageForEdges(oGroup,
                                                   oCollapsedGroupAttributes, iAnchorVertexIndex),

                        oEdgeWidthSourceDictionary,
                        oEdgeWidthResults.SourceCalculationNumber1,
                        oEdgeWidthResults.SourceCalculationNumber2,
                        oEdgeWidthResults.DestinationNumber1,
                        oEdgeWidthResults.DestinationNumber2,
                        oEdgeWidthDetails.UseLogs,
                        out dAverageEdgeWidth
                        )
                    )
                {
                    oCollapsedGroupAttributes.Add(

                        CollapsedGroupAttributeKeys.GetAnchorVertexEdgeWidthKey(
                            iAnchorVertexIndex),

                        dAverageEdgeWidth
                        );
                }
            }
        }
Ejemplo n.º 3
0
        AddEdgeColorAttributesToDConnectorMotif
        (
            ExcelTemplateGroupInfo oGroup,
            Boolean bEdgeColorColumnAutoFilled,
            AutoFillColorColumnResults oEdgeColorResults,
            ColorColumnAutoFillUserSettings oEdgeColorDetails,
            Dictionary <Int32, Object> oEdgeColorSourceDictionary,
            ReadWorkbookContext oReadWorkbookContext,
            CollapsedGroupAttributes oCollapsedGroupAttributes,
            Int32 iAnchorVertices
        )
        {
            Debug.Assert(oGroup != null);
            Debug.Assert(oEdgeColorResults != null);
            Debug.Assert(oReadWorkbookContext != null);
            Debug.Assert(oCollapsedGroupAttributes != null);
            Debug.Assert(iAnchorVertices >= 0);

            // If the edge color column was autofilled, get the average color for
            // the edges incident to the D-connector motif's first anchor, then its
            // second anchor, and so on.  Otherwise, don't do anything.

            if (!bEdgeColorColumnAutoFilled)
            {
                return;
            }

            for (Int32 iAnchorVertexIndex = 0;
                 iAnchorVertexIndex < iAnchorVertices;
                 iAnchorVertexIndex++)
            {
                Color oAverageColor;

                if (TableColumnMapper.TryMapAverageColor(

                        GetRowIDsToAverageForEdges(oGroup,
                                                   oCollapsedGroupAttributes, iAnchorVertexIndex),

                        oEdgeColorSourceDictionary,
                        oEdgeColorResults.SourceCalculationNumber1,
                        oEdgeColorResults.SourceCalculationNumber2,
                        oEdgeColorResults.DestinationColor1,
                        oEdgeColorResults.DestinationColor2,
                        oEdgeColorDetails.UseLogs,
                        out oAverageColor)
                    )
                {
                    oCollapsedGroupAttributes.Add(

                        CollapsedGroupAttributeKeys.GetAnchorVertexEdgeColorKey(
                            iAnchorVertexIndex),

                        oReadWorkbookContext.ColorConverter2.GraphToWorkbook(
                            oAverageColor)
                        );
                }
            }
        }
Ejemplo n.º 4
0
        AddVertexColorAttributeToMotif
        (
            ExcelTemplateGroupInfo oGroup,
            String sType,
            Boolean bVertexColorColumnAutoFilled,
            AutoFillColorColumnResults oVertexColorResults,
            ColorColumnAutoFillUserSettings oVertexColorDetails,
            Dictionary <Int32, Object> oVertexColorSourceDictionary,
            ReadWorkbookContext oReadWorkbookContext,
            CollapsedGroupAttributes oCollapsedGroupAttributes
        )
        {
            Debug.Assert(oGroup != null);
            Debug.Assert(!String.IsNullOrEmpty(sType));
            Debug.Assert(oVertexColorResults != null);
            Debug.Assert(oReadWorkbookContext != null);
            Debug.Assert(oCollapsedGroupAttributes != null);

            Color oColor;

            // If the vertex color column was autofilled, get the average color
            // for the vertices in the motif.

            if (
                !bVertexColorColumnAutoFilled
                ||
                !TableColumnMapper.TryMapAverageColor(

                    GetRowIDsToAverageForVertexColor(oGroup,
                                                     oCollapsedGroupAttributes, sType),

                    oVertexColorSourceDictionary,
                    oVertexColorResults.SourceCalculationNumber1,
                    oVertexColorResults.SourceCalculationNumber2,
                    oVertexColorResults.DestinationColor1,
                    oVertexColorResults.DestinationColor2,
                    oVertexColorDetails.UseLogs,
                    out oColor)
                )
            {
                // Default to the color that was assigned to the group.

                oColor = oGroup.VertexColor;
            }

            oCollapsedGroupAttributes.Add(
                CollapsedGroupAttributeKeys.VertexColor,
                oReadWorkbookContext.ColorConverter2.GraphToWorkbook(oColor)
                );
        }
Ejemplo n.º 5
0
        TryStartAutoFill
        (
            Microsoft.Office.Interop.Excel.Workbook oWorkbook,
            Boolean bShowVertexLabels,
            String sVertexLabelColumnName,
            out ListObject oEdgeTable,
            out ListObject oVertexTable,
            out ExcelHiddenColumns oHiddenEdgeColumns,
            out ExcelHiddenColumns oHiddenVertexColumns
        )
        {
            Debug.Assert(oWorkbook != null);

            SetScreenUpdating(oWorkbook, false);

            (new VertexWorksheetPopulator()).PopulateVertexWorksheet(
                oWorkbook, false);

            oEdgeTable         = oVertexTable = null;
            oHiddenEdgeColumns = oHiddenVertexColumns = null;

            if (
                !ExcelUtil.TryGetTable(oWorkbook, WorksheetNames.Edges,
                                       TableNames.Edges, out oEdgeTable)
                ||
                !ExcelUtil.TryGetTable(oWorkbook, WorksheetNames.Vertices,
                                       TableNames.Vertices, out oVertexTable)
                )
            {
                return(false);
            }

            // Only visible cells are read and written to.  Temporarily show all
            // hidden columns in the tables.

            oHiddenEdgeColumns = ExcelColumnHider.ShowHiddenColumns(oEdgeTable);

            oHiddenVertexColumns = ExcelColumnHider.ShowHiddenColumns(
                oVertexTable);

            if (bShowVertexLabels)
            {
                TableColumnMapper.MapViaCopy(oVertexTable, sVertexLabelColumnName,
                                             VertexTableColumnNames.Label);
            }

            return(true);
        }
Ejemplo n.º 6
0
        TryAutoFillColorColumn
        (
            ListObject oTable,
            String sSourceColumnName,
            String sDestinationColumnName,
            ColorColumnAutoFillUserSettings oDetails,
            out Boolean bSourceColumnContainsNumbers,
            out Double dSourceCalculationNumber1,
            out Double dSourceCalculationNumber2,
            out Int32 iDecimalPlaces,
            out ICollection <String> oCategoryNames
        )
        {
            Debug.Assert(oTable != null);
            Debug.Assert(!String.IsNullOrEmpty(sDestinationColumnName));
            Debug.Assert(oDetails != null);

            bSourceColumnContainsNumbers = oDetails.SourceColumnContainsNumbers;
            dSourceCalculationNumber1    = 0;
            dSourceCalculationNumber2    = 1;
            iDecimalPlaces = 0;
            oCategoryNames = null;

            if (String.IsNullOrEmpty(sSourceColumnName))
            {
                return(false);
            }

            if (bSourceColumnContainsNumbers)
            {
                return(TableColumnMapper.TryMapToColor(oTable,
                                                       sSourceColumnName, sDestinationColumnName,
                                                       oDetails.UseSourceNumber1, oDetails.UseSourceNumber2,
                                                       oDetails.SourceNumber1, oDetails.SourceNumber2,
                                                       oDetails.DestinationColor1, oDetails.DestinationColor2,
                                                       oDetails.IgnoreOutliers, oDetails.UseLogs,
                                                       out dSourceCalculationNumber1, out dSourceCalculationNumber2,
                                                       out iDecimalPlaces
                                                       ));
            }

            return(TableColumnMapper.TryMapToColor(oTable, sSourceColumnName,
                                                   sDestinationColumnName, out oCategoryNames));
        }
Ejemplo n.º 7
0
        AutoFillColumnViaCopy
        (
            ListObject oTable,
            String sSourceColumnName,
            String sDestinationColumnName
        )
        {
            Debug.Assert(oTable != null);
            Debug.Assert(!String.IsNullOrEmpty(sDestinationColumnName));

            if (String.IsNullOrEmpty(sSourceColumnName))
            {
                return;
            }

            TableColumnMapper.MapViaCopy(
                oTable, sSourceColumnName, sDestinationColumnName
                );
        }
Ejemplo n.º 8
0
        TryAutoFillNumericRangeColumn
        (
            ListObject oTable,
            String sSourceColumnName,
            String sDestinationColumnName,
            NumericRangeColumnAutoFillUserSettings oDetails,
            out Double dSourceCalculationNumber1,
            out Double dSourceCalculationNumber2,
            out Int32 iDecimalPlaces
        )
        {
            Debug.Assert(oTable != null);
            Debug.Assert(!String.IsNullOrEmpty(sDestinationColumnName));
            Debug.Assert(oDetails != null);

            dSourceCalculationNumber1 = dSourceCalculationNumber2 =
                Double.MinValue;

            iDecimalPlaces = Int32.MinValue;

            if (String.IsNullOrEmpty(sSourceColumnName))
            {
                return(false);
            }

            return(TableColumnMapper.TryMapToNumericRange(
                       oTable, sSourceColumnName, sDestinationColumnName,
                       oDetails.UseSourceNumber1,
                       oDetails.UseSourceNumber2,
                       oDetails.SourceNumber1,
                       oDetails.SourceNumber2,
                       oDetails.DestinationNumber1,
                       oDetails.DestinationNumber2,
                       oDetails.IgnoreOutliers,
                       oDetails.UseLogs,
                       out dSourceCalculationNumber1,
                       out dSourceCalculationNumber2,
                       out iDecimalPlaces
                       ));
        }
Ejemplo n.º 9
0
        AutoFillByEdgeTimestamp
        (
            Microsoft.Office.Interop.Excel.Workbook workbook,
            String edgeTimestampColumnName,
            Boolean showVertexLabels,
            String vertexLabelColumnName
        )
        {
            Debug.Assert(workbook != null);
            Debug.Assert(!String.IsNullOrEmpty(edgeTimestampColumnName));

            Debug.Assert(!showVertexLabels ||
                         !String.IsNullOrEmpty(vertexLabelColumnName));

            ListObject         oVertexTable         = null;
            ListObject         oEdgeTable           = null;
            ExcelHiddenColumns oHiddenVertexColumns = null;
            ExcelHiddenColumns oHiddenEdgeColumns   = null;

            AutoFillWorkbookWithSchemeResults oAutoFillWorkbookWithSchemeResults =
                new AutoFillWorkbookWithSchemeResults();

            try
            {
                if (
                    !TryStartAutoFill(workbook, showVertexLabels,
                                      vertexLabelColumnName, out oEdgeTable, out oVertexTable,
                                      out oHiddenEdgeColumns, out oHiddenVertexColumns)
                    ||
                    ExcelUtil.VisibleTableRangeIsEmpty(oEdgeTable)
                    )
                {
                    return;
                }

                // Map the edge timestamp column to the edge color column.

                Double dSourceCalculationNumber1, dSourceCalculationNumber2;
                Int32  iDecimalPlaces;

                if (!TableColumnMapper.TryMapToColor(oEdgeTable,
                                                     edgeTimestampColumnName, EdgeTableColumnNames.Color, false,
                                                     false, 0, 0, MinimumEdgeTimestampColor,
                                                     MaximumEdgeTimestampColor, false, false,
                                                     out dSourceCalculationNumber1, out dSourceCalculationNumber2,
                                                     out iDecimalPlaces
                                                     ))
                {
                    return;
                }

                // Fill in other columns with constants.

                FillColumnsWithConstants(

                    oEdgeTable, EdgeTableColumnNames.Width, 2.0F,

                    oEdgeTable, CommonTableColumnNames.Alpha,
                    AlphaConverter.MaximumAlphaWorkbook,

                    oVertexTable, VertexTableColumnNames.Shape,
                    (new VertexShapeConverter()).GraphToWorkbook(
                        VertexShape.Circle),

                    oVertexTable, VertexTableColumnNames.Color,
                    (new ColorConverter2()).GraphToWorkbook(
                        Color.FromArgb(0, 0, 0)),

                    oVertexTable, VertexTableColumnNames.Radius, 1.5F,

                    oVertexTable, CommonTableColumnNames.Alpha,
                    AlphaConverter.MaximumAlphaWorkbook
                    );

                // Save the results.

                ListColumn oEdgeTimestampColumn;

                ExcelUtil.TryGetTableColumn(oEdgeTable, edgeTimestampColumnName,
                                            out oEdgeTimestampColumn);

                oAutoFillWorkbookWithSchemeResults.SetEdgeTimestampResults(
                    edgeTimestampColumnName,
                    ExcelUtil.GetColumnFormat(oEdgeTimestampColumn),
                    dSourceCalculationNumber1, dSourceCalculationNumber2);
            }
            finally
            {
                (new PerWorkbookSettings(workbook)).
                AutoFillWorkbookWithSchemeResults =
                    oAutoFillWorkbookWithSchemeResults;

                EndAutoFill(workbook, oEdgeTable, oVertexTable,
                            oHiddenEdgeColumns, oHiddenVertexColumns);
            }
        }