|
@@ -0,0 +1,95 @@
|
|
|
+using System;
|
|
|
+using System.Collections.Generic;
|
|
|
+using System.Linq;
|
|
|
+using System.Text;
|
|
|
+using System.Threading.Tasks;
|
|
|
+using System.Windows;
|
|
|
+using System.Windows.Controls;
|
|
|
+using System.Windows.Data;
|
|
|
+using System.Windows.Documents;
|
|
|
+using System.Windows.Input;
|
|
|
+using System.Windows.Media;
|
|
|
+using System.Windows.Media.Imaging;
|
|
|
+using System.Windows.Navigation;
|
|
|
+using System.Windows.Shapes;
|
|
|
+using PP_Ven_MosS.Classes;
|
|
|
+using PP_Ven_MosS.ModelBase;
|
|
|
+
|
|
|
+namespace PP_Ven_MosS.Pages
|
|
|
+{
|
|
|
+ /// <summary>
|
|
|
+ /// Логика взаимодействия для Diagram.xaml
|
|
|
+ /// </summary>
|
|
|
+ public partial class Diagram : Page
|
|
|
+ {
|
|
|
+ public Diagram()
|
|
|
+ {
|
|
|
+ InitializeComponent();
|
|
|
+ Sort();
|
|
|
+ }
|
|
|
+ //в разметку статически добавть фамилии вниз
|
|
|
+ async public void Sort()
|
|
|
+ {
|
|
|
+ User user = Database.entities.User.ToList().Where(x => x.Id_role == 2).FirstOrDefault();
|
|
|
+ List<Rectangle> rectangles = new List<Rectangle>(); ; //лист прямоугольников
|
|
|
+ List<User> users = await Task.Run(() =>
|
|
|
+ {
|
|
|
+ return Database.entities.User.Where(x => x.Id_role == 2).ToList();
|
|
|
+ });
|
|
|
+ int[] mass = new int[users.Count];
|
|
|
+ //добавишь лист своих сотрудников
|
|
|
+ foreach (var usr in users) //цикл по количесво сотрудников для отрисовки
|
|
|
+ {
|
|
|
+ Rectangle newRectangle = new Rectangle();
|
|
|
+ newRectangle.Width = 100;
|
|
|
+ newRectangle.Height = Convert.ToInt32(usr.Count_complete_app) * 30; //высота - количество выполненных задачь * 10 примерно, иначе они у тебя крохотные будут
|
|
|
+ if (usr.Count_complete_app > 5)
|
|
|
+ {
|
|
|
+ newRectangle.Fill = new SolidColorBrush(Colors.Green); //сделай проверку, тип если у сотрудника >5 задач - зеленый, 0 или 1 - красный, остальные - желтый, например
|
|
|
+ }
|
|
|
+ else if (usr.Count_complete_app < 2)
|
|
|
+ {
|
|
|
+ newRectangle.Fill = new SolidColorBrush(Colors.Red);
|
|
|
+ }
|
|
|
+ else
|
|
|
+ {
|
|
|
+ newRectangle.Fill = new SolidColorBrush(Colors.Blue);
|
|
|
+ }
|
|
|
+ newRectangle.Margin = new Thickness(20, 0, 0, 0);
|
|
|
+ newRectangle.VerticalAlignment = VerticalAlignment.Bottom;
|
|
|
+ dgm.Children.Add(newRectangle);
|
|
|
+ rectangles.Add(newRectangle);
|
|
|
+ }
|
|
|
+
|
|
|
+ foreach (var usr in users) //цикл по количесво сотрудников для отрисовки
|
|
|
+ {
|
|
|
+ TextBlock block = new TextBlock
|
|
|
+ {
|
|
|
+ Text = usr.Surname,
|
|
|
+ HorizontalAlignment = HorizontalAlignment.Center,
|
|
|
+ VerticalAlignment = VerticalAlignment.Bottom,
|
|
|
+ Width = 100,
|
|
|
+ Margin = new Thickness(20, 250, 0, 0)
|
|
|
+ };
|
|
|
+ dgmu.Children.Add(block);
|
|
|
+ //не разобралась, как делать текст внутри самого прямоугольника, но можно отрисовать в другой стекпанели
|
|
|
+ // тип Cont1.Children.Add(newRectangle);, где Cont1, это новая панель в разметки, которая находится над или под графиком
|
|
|
+ }
|
|
|
+ }
|
|
|
+
|
|
|
+ private void Button_Click(object sender, RoutedEventArgs e)
|
|
|
+ {
|
|
|
+ System.Windows.Controls.PrintDialog printDialog = new PrintDialog();
|
|
|
+ if (printDialog.ShowDialog() == true)
|
|
|
+ {
|
|
|
+ printDialog.PrintVisual(dgm /*это x Name грида, который задается в разметке*/, "Отчет");
|
|
|
+ printDialog.PrintVisual(dgmu /*это x Name грида, который задается в разметке*/, "Сотрудник");
|
|
|
+ }
|
|
|
+ }
|
|
|
+
|
|
|
+ private void Exit_Click(object sender, RoutedEventArgs e)
|
|
|
+ {
|
|
|
+ FrameClass.MainFrame.Navigate(new MenuAdmin());
|
|
|
+ }
|
|
|
+ }
|
|
|
+}
|