Пример #1
0
        void AddEditableTitle(EditableTitle title, String format, List <ColumnViewModel> columnViewModels)
        {
            foreach (String f in format.Split('|'))
            {
                Match match = Regex.Match(f, @"{([^d]+):([c|a|u])}");

                if (match.Success)
                {
                    String          num             = match.Groups[1].Value;
                    String          type            = match.Groups[2].Value;
                    ColumnViewModel columnViewModel = columnViewModels[Int32.Parse(num)];

                    if (type == "a") // aggregated
                    {
                        AddAggregatedColumnComboBox(title, columnViewModel, false);
                    }
                    else if (type == "c")
                    {
                        AddColumnComboBox(title, columnViewModel);
                    }
                    else if (type == "u")
                    {
                        AddAggregatedColumnComboBox(title, columnViewModel, true);
                    }
                }
                else
                {
                    AddText(title, f);
                }
            }
        }
Пример #2
0
 void AddEditableTitle(EditableTitle title, String format, ColumnViewModel column0, ColumnViewModel column1, ColumnViewModel column2)
 {
     AddEditableTitle(title, format, new List <ColumnViewModel>()
     {
         column0, column1, column2
     });
 }
Пример #3
0
        void AddText(EditableTitle stackPanel, String text)
        {
            TextBlock textBlock = new TextBlock()
            {
                VerticalAlignment = VerticalAlignment.Center,
                FontSize          = 30,
            };

            Util.HtmlToTextBlockFormatter.Format(text.Replace(' ', (char)160), textBlock);

            stackPanel.Add(textBlock);
        }
Пример #4
0
        void AddComboBox(EditableTitle stackPanel, String selected, IEnumerable <String> candidates, SelectionChangedEventHandler selectionChanged, String columnName)
        {
            if (!IsSelected)
            {
                AddText(stackPanel, $"<b>{selected}</b>");
            }
            else
            {
                ComboBox comboBox = new ComboBox()
                {
                    Style             = App.Current.Resources[columnName.Length > 0 ? "SeamlessComboBoxStyle" : "SeamlessComboBoxStyle2"] as Style,
                    VerticalAlignment = VerticalAlignment.Center,
                    Tag      = columnName,
                    FontSize = 30
                };
                foreach (String candidate in candidates)
                {
                    ComboBoxItem comboBoxItem = new ComboBoxItem()
                    {
                        Content    = candidate,
                        IsSelected = candidate == selected,
                        Style      = App.Current.Resources["SeamlessComboBoxItemStyle"] as Style,
                    };
                    comboBox.Items.Add(comboBoxItem);
                }
                stackPanel.Add(comboBox);

                /*comboBox.PointerEntered += (o, e) =>
                 * {
                 *  if (e.Pointer.PointerDeviceType == PointerDeviceType.Pen)
                 *  {
                 *      e.Handled = true;
                 *      return;
                 *  }
                 * };
                 */
                comboBox.DropDownOpened += (o, e) =>
                {
                    comboBox.Width = comboBox.ActualWidth;
                };

                comboBox.DropDownClosed += (o, e) =>
                {
                    comboBox.Width = Double.NaN;
                };

                comboBox.SelectionChanged += selectionChanged;
            }
        }
Пример #5
0
        void AddAggregatedColumnComboBox(EditableTitle title, ColumnViewModel numerical, Boolean withSameUnit)
        {
            String format = Const.Loader.GetString("AggregatedColumnName");

            foreach (String f in format.Split('|'))
            {
                if (f == "{0}")
                {
                    if (IsSelected)
                    {
                        AddComboBox(
                            title,
                            numerical.AggregativeFunction.Name,
                            AggregativeFunction.Names,
                            CreateAggregationChangedHandler(numerical),
                            String.Empty
                            );
                    }
                    else
                    {
                        AddText(title, $"<b>{numerical.AggregativeFunction.Name}</b>");
                    }
                }
                else if (f == "{1}")
                {
                    if (IsSelected)
                    {
                        AddComboBox(
                            title,
                            numerical.Name,
                            mainPageViewModel.SheetViewModel.ColumnViewModels.Where(
                                cvm => cvm.Type == ColumnType.Numerical && (withSameUnit ? cvm.Unit == numerical.Unit : true)
                                ).Select(cvm => cvm.Name),
                            CreateColumnChangedHandler(numerical),
                            numerical.Column.Name
                            );
                    }
                    else
                    {
                        AddText(title, $"<b>{numerical.Name}</b>");
                    }
                }
                else
                {
                    AddText(title, f);
                }
            }
        }
Пример #6
0
 void AddColumnComboBox(EditableTitle title, ColumnViewModel columnViewModel)
 {
     if (IsSelected)
     {
         AddComboBox(
             title,
             columnViewModel.Name,
             mainPageViewModel.SheetViewModel.ColumnViewModels.Where(cvm => cvm.Type == columnViewModel.Type).Select(cvm => cvm.Name),
             CreateColumnChangedHandler(columnViewModel),
             columnViewModel.Column.Name
             );
     }
     else
     {
         AddText(title, $"<b>{columnViewModel.Name}</b>");
     }
 }
Пример #7
0
        /*
         * void DrawEditableTitleN(StackPanel title, ColumnViewModel numerical, String prefix, String suffix)
         * {
         *  if(prefix.Length > 0)
         *      AddText(title, prefix);
         *  AddComboBox(
         *      title,
         *      numerical.Name,
         *      mainPageViewModel.SheetViewModel.ColumnViewModels.Where(cvm => cvm.Type == ColumnType.Numerical).Select(cvm => cvm.Name),
         *      CreateColumnChangedHandler(numerical)
         *  );
         *  if (suffix.Length > 0)
         *      AddText(title, suffix);
         * }
         * void DrawEditableTitleCN(StackPanel title, ColumnViewModel categorical, ColumnViewModel numerical)
         * {
         *  AddEditableTitle(title, Const.Loader.GetString("ChartTitleCN"), categorical, numerical);
         * }
         * void DrawEditableTitleCNvsN(StackPanel title, ColumnViewModel categorical, ColumnViewModel numerical1, ColumnViewModel numerical2)
         * {
         *  AddComboBox(
         *      title,
         *      numerical1.Name,
         *      mainPageViewModel.SheetViewModel.ColumnViewModels.Where(cvm => cvm.Type == ColumnType.Numerical).Select(cvm => cvm.Name),
         *      CreateColumnChangedHandler(numerical1)
         *  );
         *
         *  AddText(title, "\x00A0vs.\x00A0");
         *
         *  AddComboBox(
         *      title,
         *      numerical2.Name,
         *      mainPageViewModel.SheetViewModel.ColumnViewModels.Where(cvm => cvm.Type == ColumnType.Numerical).Select(cvm => cvm.Name),
         *      CreateColumnChangedHandler(numerical2)
         *  );
         *
         *  AddText(title, "\x00A0colored by\x00A0");
         *
         *  AddComboBox(
         *     title,
         *     categorical.Name,
         *     mainPageViewModel.SheetViewModel.ColumnViewModels.Where(cvm => cvm.Type == ColumnType.Categorical).Select(cvm => cvm.Name),
         *     CreateColumnChangedHandler(categorical)
         * );
         * }
         * void DrawEditableTitleNvsN(StackPanel title, ColumnViewModel numerical1, ColumnViewModel numerical2)
         * {
         *  AddComboBox(
         *      title,
         *      numerical1.Name,
         *      mainPageViewModel.SheetViewModel.ColumnViewModels.Where(cvm => cvm.Type == ColumnType.Numerical).Select(cvm => cvm.Name),
         *      CreateColumnChangedHandler(numerical1)
         *  );
         *
         *  AddText(title, "\x00A0vs.\x00A0");
         *
         *  AddComboBox(
         *      title,
         *      numerical2.Name,
         *      mainPageViewModel.SheetViewModel.ColumnViewModels.Where(cvm => cvm.Type == ColumnType.Numerical).Select(cvm => cvm.Name),
         *      CreateColumnChangedHandler(numerical2)
         *  );
         * }
         * void DrawEditableTitleNN(StackPanel title, ColumnViewModel numerical1, ColumnViewModel numerical2)
         * {
         *  AddComboBox(
         *         title,
         *         numerical1.AggregativeFunction.Name,
         *         AggregativeFunction.Names,
         *         CreateAggregationChangedHandler(numerical1)
         *     );
         *  AddText(title, "(");
         *  AddComboBox(
         *      title,
         *      numerical1.Name,
         *      mainPageViewModel.SheetViewModel.ColumnViewModels.Where(cvm => cvm.Type == ColumnType.Numerical && cvm.Unit == numerical1.Unit).Select(cvm => cvm.Name),
         *      CreateColumnChangedHandler(numerical1)
         *  );
         *
         *  AddText(title, ")\x00A0and\x00A0");
         *
         *  AddComboBox(
         *         title,
         *         numerical2.AggregativeFunction.Name,
         *         AggregativeFunction.Names,
         *         CreateAggregationChangedHandler(numerical2)
         *     );
         *  AddText(title, "(");
         *  AddComboBox(
         *      title,
         *      numerical2.Name,
         *      mainPageViewModel.SheetViewModel.ColumnViewModels.Where(cvm => cvm.Type == ColumnType.Numerical && cvm.Unit == numerical2.Unit).Select(cvm => cvm.Name),
         *      CreateColumnChangedHandler(numerical2)
         *  );
         *  AddText(title, ")");
         * }
         * void DrawEditableTitleCNN(StackPanel title, ColumnViewModel categorical, ColumnViewModel numerical1, ColumnViewModel numerical2)
         * {
         *  AddComboBox(
         *         title,
         *         numerical1.AggregativeFunction.Name,
         *         AggregativeFunction.Names,
         *         CreateAggregationChangedHandler(numerical1)
         *     );
         *  AddText(title, "(");
         *  AddComboBox(
         *      title,
         *      numerical1.Name,
         *      mainPageViewModel.SheetViewModel.ColumnViewModels.Where(cvm => cvm.Type == ColumnType.Numerical && cvm.Unit == numerical1.Unit).Select(cvm => cvm.Name),
         *      CreateColumnChangedHandler(numerical1)
         *  );
         *
         *  AddText(title, ")\x00A0and\x00A0");
         *
         *  AddComboBox(
         *         title,
         *         numerical2.AggregativeFunction.Name,
         *         AggregativeFunction.Names,
         *         CreateAggregationChangedHandler(numerical2)
         *     );
         *  AddText(title, "(");
         *  AddComboBox(
         *      title,
         *      numerical2.Name,
         *      mainPageViewModel.SheetViewModel.ColumnViewModels.Where(cvm => cvm.Type == ColumnType.Numerical && cvm.Unit == numerical2.Unit).Select(cvm => cvm.Name),
         *      CreateColumnChangedHandler(numerical2)
         *  );
         *
         *  AddText(title, ")\x00A0by\x00A0");
         *
         *  AddComboBox(
         *     title,
         *     categorical.Name,
         *     mainPageViewModel.SheetViewModel.ColumnViewModels.Where(cvm => cvm.Type == ColumnType.Categorical).Select(cvm => cvm.Name),
         *     CreateColumnChangedHandler(categorical)
         * );
         * }
         */

        void DrawEditableTitleCxNx(EditableTitle title, String prefix, List <ColumnViewModel> variables, String mid, List <ColumnViewModel> pivots)
        {
            if (prefix != null && prefix.Length > 0)
            {
                AddText(title, prefix);
            }

            Int32 index;

            index = 0;
            foreach (ColumnViewModel variable in variables)
            {
                if (variable.Type == ColumnType.Categorical)
                {
                    AddComboBox(title,
                                variable.Name,
                                mainPageViewModel.SheetViewModel.ColumnViewModels.Where(cvm => cvm.Type == ColumnType.Categorical).Select(cvm => cvm.Name),
                                CreateColumnChangedHandler(variable),
                                variable.Column.Name
                                );
                }
                else
                {
                    AddComboBox(
                        title,
                        variable.AggregativeFunction.Name,
                        AggregativeFunction.Names,
                        CreateAggregationChangedHandler(variable),
                        String.Empty
                        );
                    AddText(title, "(");
                    AddComboBox(title,
                                variable.Name,
                                mainPageViewModel.SheetViewModel.ColumnViewModels.Where(cvm => cvm.Type == ColumnType.Numerical).Select(cvm => cvm.Name),
                                CreateColumnChangedHandler(variable),
                                variable.Column.Name
                                );
                    AddText(title, ")");
                }

                if (index < variables.Count - 1)
                {
                    if (variables.Count == 2)
                    {
                        AddText(title, "\x00A0and\x00A0");
                    }
                    else
                    {
                        AddText(title, ",\x00A0");
                        if (index == variables.Count - 2)
                        {
                            AddText(title, "and\x00A0");
                        }
                    }
                }
                index++;
            }

            if (mid != null && mid.Length > 0)
            {
                AddText(title, mid);
            }

            index = 0;
            foreach (ColumnViewModel variable in pivots)
            {
                if (variable.Type == ColumnType.Categorical)
                {
                    AddComboBox(title,
                                variable.Name,
                                mainPageViewModel.SheetViewModel.ColumnViewModels.Where(cvm => cvm.Type == ColumnType.Categorical).Select(cvm => cvm.Name),
                                CreateColumnChangedHandler(variable),
                                variable.Column.Name
                                );
                }
                else
                {
                    AddComboBox(
                        title,
                        variable.AggregativeFunction.Name,
                        AggregativeFunction.Names,
                        CreateAggregationChangedHandler(variable),
                        string.Empty
                        );
                    AddText(title, "(");
                    AddComboBox(title,
                                variable.Name,
                                mainPageViewModel.SheetViewModel.ColumnViewModels.Where(cvm => cvm.Type == ColumnType.Numerical).Select(cvm => cvm.Name),
                                CreateColumnChangedHandler(variable),
                                variable.Column.Name
                                );
                    AddText(title, ")");
                }
                if (index < pivots.Count - 1)
                {
                    if (pivots.Count == 2)
                    {
                        AddText(title, "\x00A0and\x00A0");
                    }
                    else
                    {
                        AddText(title, ",\x00A0");
                        if (index == pivots.Count - 2)
                        {
                            AddText(title, "and\x00A0");
                        }
                    }
                }
                index++;
            }
        }