// функция для обновления свойств в списке точек void PointPropertyChangedEventHandler(object sender, PropertyChangedEventArgs args) { var bi = sender as IBalanceItem; if (bi == null) { return; } IHierarchicalEmcosPoint point = point = _pointsCollection.Where((p) => p.Id == bi.Id).FirstOrDefault(); if (point != null) { switch (args.PropertyName) { case "Description": point.Description = bi.Description; break; case "Id": point.Id = bi.Id; break; case "Code": point.Code = bi.Code; break; case "Name": point.Name = bi.Name; break; } } }
public object Convert(object value, Type targetType, object parameter, CultureInfo culture) { IHierarchicalEmcosPoint point = value as IHierarchicalEmcosPoint; if (point == null) { return(DependencyProperty.UnsetValue); } if (point.IsGroup && point.HasChildren == false) { return(123.45); } string param = parameter.ToString(); switch (param) { case "PlusEnergy": break; case "MinusEnergy": break; case "DirectedEnergyCorrection": break; case "ValueStatus": break; case "Unbalance": break; case "PercentageOfUnbalance": break; case "Description": break; case "Correction": break; case "ExcessUnbalance": break; case "MaximumAllowableUnbalance": break; // подсказка при неравенстве суммы данных за сутки и за месяц case "DifferenceBetweenDailySumAndMonthToolTip": break; default: break; } return(DependencyProperty.UnsetValue); }
public object Convert(object value, Type targetType, object parameter, CultureInfo culture) { IHierarchicalEmcosPoint point = value as IHierarchicalEmcosPoint; if (point == null) { return(DependencyProperty.UnsetValue); } string param = parameter.ToString(); switch (param) { // имеется ли корректировка данных case "DirectedEnergyHasCorrection": return(Visibility.Visible); // получены данные не за все сутки case "DirectedEnergyNotFullData": return(Visibility.Visible); // данные за месяц не равны сумме суточных case "MonthAndSumDaysNotEqual": return(Visibility.Visible); } throw new NotImplementedException(); }
private async Task <IList <IHierarchicalEmcosPoint> > FillPointsTree(IHierarchicalEmcosPoint point) { var table = _emcosWebServiceClient.GetPointInfo("PSDTU_SERVER", point.Id.ToString()); string data = await EmcosSiteWrapper.Instance.GetAPointsAsync(point.Id.ToString()); IList <IHierarchicalEmcosPoint> list = (String.IsNullOrEmpty(data)) ? new List <IHierarchicalEmcosPoint>() : ParsePointsList(data, point); if (list != null && list.Count > 0) { for (int i = 0; i < list.Count; i++) { if (list[i].IsGroup) { IList <IHierarchicalEmcosPoint> childs = await FillPointsTree(list[i]); foreach (var child in childs) { list[i].Children.Add(child); } _index++; if (_index > maxItemsCount) { throw new OverflowException("Превышено максимальное количество элементов в дереве - " + maxItemsCount); } } } } return(list); }
private async Task <IList <IHierarchicalEmcosPoint> > FillPointsTree(IHierarchicalEmcosPoint point) { var table = _emcosWebServiceClient.GetGRInfo("PSDTU_SERVER", point.Id.ToString()); string data = await EmcosSiteWrapper.Instance.ExecuteFunction(EmcosSiteWrapper.Instance.GetAPointsAsync, point.Id.ToString()); IList <IHierarchicalEmcosPoint> list = (String.IsNullOrEmpty(data)) ? new List <IHierarchicalEmcosPoint>() : ParsePointsList(data, point); if (list != null && list.Count > 0) { for (int i = 0; i < list.Count; i++) { EmcosSiteWrapperApp.Current.Dispatcher.Invoke(System.Windows.Threading.DispatcherPriority.Background, new System.Threading.ThreadStart(delegate { })); if (list[i].ElementType == ElementTypes.GROUP) { IList <IHierarchicalEmcosPoint> childs = await FillPointsTree(list[i]); foreach (var child in childs) { list[i].Children.Add(child); } _index++; if (_index > maxItemsCount) { throw new OverflowException("Превышено максимальное количество элементов в дереве - " + maxItemsCount); } } } } return(list); }
public EmcosPointWithValue(IHierarchicalEmcosPoint point) : this() { this.Id = point.Id; this.Name = point.Name; this.Code = point.Code; this.TypeCode = point.TypeCode; this.EcpName = point.EcpName; this.ElementType = point.ElementType; }
public TreeModel(IHierarchicalEmcosPoint point) : this() { Init(point); if (point.Children != null) { foreach (var item in point.Children) { Children.Add(new TreeModel(item)); } } }
private void AddToFlatItemsList(IHierarchicalEmcosPoint item) { FlatItemsList.Add(item); if (item.Children != null) { foreach (var child in item.Children) { AddToFlatItemsList((IHierarchicalEmcosPoint)child); } } }
private void ProcessPointsToFloatCollection(IHierarchicalEmcosPoint point, ref IList <IHierarchicalEmcosPoint> collection) { if (point == null) { return; } collection.Add(point); if (point.Children != null) { foreach (Model.EmcosPoint child in point.Children) { ProcessPointsToFloatCollection(child, ref collection); } } }
private void Init(IHierarchicalEmcosPoint point) { this.Point = point; }
private IList <IHierarchicalEmcosPoint> ParsePointsList(string data, IHierarchicalEmcosPoint parent) { var records = Utils.ParseRecords(data); if (records == null) { return(new List <IHierarchicalEmcosPoint>()); } var list = new List <Model.IEmcosElement>(); foreach (var nvc in records) { Emcos.Model.IEmcosElement element; if (nvc.Get("Type") == "POINT") { element = new Model.EmcosPointElement(); } else { element = new Model.EmcosGrElement(); } for (int i = 0; i < nvc.Count; i++) { #region азбор полей int intValue = 0; switch (nvc.GetKey(i)) { case "GR_ID": case "POINT_ID": int.TryParse(nvc[i], out intValue); element.Id = intValue; break; case "GR_NAME": case "POINT_NAME": element.Name = nvc[i]; break; case "ECP_NAME": Model.EmcosPointElement pe = (element as Model.EmcosPointElement); pe.EcpName = nvc[i]; break; case "TYPE": Model.ElementTypes type; if (Enum.TryParse <Model.ElementTypes>(nvc[i], out type) == false) { type = Model.ElementTypes.GROUP; } element.Type = type; break; case "GR_TYPE_CODE": case "POINT_TYPE_CODE": element.TypeCode = nvc[i]; break; } #endregion } list.Add(element); } IList <IHierarchicalEmcosPoint> points = list.Select(i => new EmcosPoint { Id = i.Id, Name = i.Name, //IsGroup = i.Type == Model.ElementTypes.GROUP, TypeCode = i.TypeCode, EcpName = i is Model.EmcosPointElement ? (i as Model.EmcosPointElement).EcpName : String.Empty, ElementType = i.Type, IsChecked = false, Parent = parent }).ToList <IHierarchicalEmcosPoint>(); return(points); }
private async Task LoadPointsFromServiceAsync() { const string ErrorMessage = "Получение списка точек от сервиса - ошибка:\n{0}"; IDialog dialog = null; try { dialog = _window.DialogWaitingScreen("Получение данных ...", indeterminate: true, mode: TMPApplication.WpfDialogs.DialogMode.Cancel); dialog.Show(); var source = await FillPointsTree(_rootEmcosGroup); if (source.Count == 0) { dialog.Close(); _window.ShowDialogWarning("Список пуст!", TITLE); EmcosPointsFromSite = null; } else { dialog.Caption = "Создание модели"; EmcosSiteWrapperApp.Current.Dispatcher.Invoke(System.Windows.Threading.DispatcherPriority.Background, new System.Threading.ThreadStart(delegate { })); EmcosPointsFromSite = new HierarchicalEmcosPointCollection(null, source); dialog.Caption = "Поиск изменений"; EmcosSiteWrapperApp.Current.Dispatcher.Invoke(System.Windows.Threading.DispatcherPriority.Background, new System.Threading.ThreadStart(delegate { })); // поиск новых точек void checkNewItems(IEnumerable <IHierarchicalEmcosPoint> sourcePoints, IEnumerable <IHierarchicalEmcosPoint> destinationPoints) { foreach (var point in sourcePoints) { IHierarchicalEmcosPoint p = destinationPoints.Where(i => i.Id == point.Id).FirstOrDefault(); if (p == null) { point.Tag = "NEW"; } else { point.Tag = null; if (point.HasChildren) { checkNewItems(point.Children, p.Children); } } } } checkNewItems(EmcosPointsFromSite, EmcosPoints); // поиск удаленных точек void checkDeletedItems(IEnumerable <IHierarchicalEmcosPoint> sourcePoints, IEnumerable <IHierarchicalEmcosPoint> destinationPoints) { foreach (var point in sourcePoints) { IHierarchicalEmcosPoint p = destinationPoints.Where(i => i.Id == point.Id).FirstOrDefault(); if (p == null) { point.Tag = "DELETED"; } else { point.Tag = null; if (point.HasChildren) { checkDeletedItems(point.Children, p.Children); } } } } checkDeletedItems(EmcosPoints, EmcosPointsFromSite); dialog.Close(); } } catch (Exception ex) { EmcosSiteWrapperApp.Log("Получение списка точек от сервиса - ошибка"); if (dialog != null) { dialog.Close(); } _window.ShowDialogError(String.Format(ErrorMessage, EmcosSiteWrapperApp.GetExceptionDetails(ex))); } }