Exemplo n.º 1
0
 private void bidChanged(TECChangedEventArgs obj)
 {
     if (!(obj.Sender is TECCatalogs || obj.Sender is TECScopeTemplates) && obj.Change == Change.Add)
     {
         if (obj.Value is TECHardware hardware)
         {
             if (hardware.RequireQuote && hardware.QuotedPrice == -1)
             {
                 NeedQuoteHardware.Add(hardware);
             }
         }
         else if (obj.Value is IRelatable child)
         {
             if (child is TECSubScope subScope)
             {
                 NeedQuoteHardware.AddRange(subScope.Devices
                                            .Where(x => x is TECHardware ware && ware.RequireQuote && ware.QuotedPrice == -1 && !NeedQuoteHardware.Contains(ware))
                                            .Distinct()
                                            .OfType <TECHardware>());
             }
             else
             {
                 NeedQuoteHardware.AddRange(child
                                            .GetAll <TECSubScope>()
                                            .SelectMany(ss => ss.Devices
                                                        .Where(x => x is TECHardware ware && ware.RequireQuote && ware.QuotedPrice == -1 && !NeedQuoteHardware.Contains(ware)))
                                            .Distinct()
                                            .OfType <TECHardware>());
             }
         }
     }
 }
 protected override void watcherChanged(TECChangedEventArgs args)
 {
     if (!propertyExceptions.Contains(args.PropertyName) && !(args.Sender is TECCatalogs) && !(args.Sender is TECScopeTemplates))
     {
         this.ScopeChanged?.Invoke(args);
     }
 }
Exemplo n.º 3
0
 private void changed(TECChangedEventArgs obj)
 {
     if (obj.PropertyName == "Locations" && obj.Value is TECLocation location)
     {
         if (obj.Change == Change.Add)
         {
             Locations.Add(location);
         }
         else if (obj.Change == Change.Remove)
         {
             Locations.Remove(location);
         }
     }
     else if (obj.PropertyName == "Location" && obj.Sender is TECLocated located && passesPredicate(obj.Sender))
     {
         Locations.Move(located, obj.OldValue as TECLabeled, obj.Value as TECLabeled);
         if (obj.OldValue == null && obj.Value != null)
         {
             Unlocated.Remove(located);
         }
         else if (obj.OldValue != null && obj.Value == null)
         {
             Unlocated.Add(located);
         }
     }
 protected override void watcherChanged(TECChangedEventArgs args)
 {
     if (!propertyExceptions.Contains(args.PropertyName) && !(args.Sender is TECCatalogs) &&
         (args.Sender.IsTypical() || args.Value.IsTypical()))
     {
         this.TypicalChanged?.Invoke(args);
     }
 }
 private void scopeFilterChanged(TECChangedEventArgs obj)
 {
     if (obj.Value is ITECObject tecObj &&
         ((IRelatable)obj.Sender).PropertyObjects.Contains(obj.PropertyName) &&
         !((IRelatable)obj.Sender).LinkedObjects.Contains(obj.PropertyName))
     {
         DirectRelationshipChanged?.Invoke(obj);
     }
 }
Exemplo n.º 6
0
 private void syncSubScope(TemplateSynchronizer <TECSubScope> synchronizer,
                           TECSubScope templateSS, TECSubScope toSync, TECChangedEventArgs args)
 {
     toSync.CopyPropertiesFromScope(templateSS);
     foreach (TECSubScope reference in synchronizer.GetFullDictionary()[templateSS].Where(item => item != toSync))
     {
         reference.CopyPropertiesFromScope(toSync);
     }
 }
 private void typicalFilterChanged(TECChangedEventArgs e)
 {
     if ((e.Change == Change.Add || e.Change == Change.Remove) && e.Sender is IRelatable parent)
     {
         if (!parent.LinkedObjects.Contains(e.PropertyName))
         {
             raiseTypicalConstituents(e.Change, e.Value as ITECObject);
         }
     }
 }
Exemplo n.º 8
0
 private void objectChanged(TECChangedEventArgs e)
 {
     if (!isDoing)
     {
         redoStack.Clear();
     }
     if (e.Sender is IDoRedoable doable && doable.CanDo)
     {
         undoStack.Add(e);
     }
 }
Exemplo n.º 9
0
 private void handleEdit(TECChangedEventArgs item)
 {
     try
     {
         (item.Sender as IDoRedoable).SetProperty(item.PropertyName, item.OldValue);
     }
     catch
     {
         string message = "Property could not be set: " + item.PropertyName;
         logger.Error(message);
     }
 }
Exemplo n.º 10
0
 private void handleRemove(TECChangedEventArgs item)
 {
     try
     {
         (item.Sender as IDoRedoable).AddForProperty(item.PropertyName, item.Value);
     }
     catch
     {
         string message = "Target object: " + item.Sender + " and reference object " + item.Value + " not handled in remove";
         logger.Trace(message);
     }
 }
Exemplo n.º 11
0
 private void changed(TECChangedEventArgs e)
 {
     if (e.Sender is TECTypical && e.Value is TECSystem system)
     {
         if (e.Change == Change.Add)
         {
             ScopeCollection.Add(system);
         }
         else if (e.Change == Change.Remove)
         {
             ScopeCollection.Remove(system);
         }
     }
 }
Exemplo n.º 12
0
 private void parentScopeChanged(TECChangedEventArgs obj)
 {
     if (obj.Value is ITECObject tecObj)
     {
         if (obj.Change == Change.Add)
         {
             repopulateGroups(obj.Sender, tecObj, addConnectable);
         }
         else if (obj.Change == Change.Remove)
         {
             repopulateGroups(obj.Sender, tecObj, removeConnectable);
         }
     }
 }
Exemplo n.º 13
0
 private void registerChange(TECChangedEventArgs args)
 {
     if (!propertyExceptions.Contains(args.PropertyName))
     {
         if (args.Change == Change.Add && args.Value is ITECObject tObj)
         {
             register(tObj);
         }
         else if (args.Change == Change.Edit && args.Sender is IRelatable saveable)
         {
             if (!saveable.LinkedObjects.Contains(args.PropertyName) && args.Value is ITECObject tValue)
             {
                 register(tValue);
             }
         }
     }
 }
Exemplo n.º 14
0
 private void parentChanged(TECChangedEventArgs obj)
 {
     if (obj.Value is TECLocation location)
     {
         if (obj.Change == Change.Add)
         {
             this.Locations.Add(location);
         }
         else if (obj.Change == Change.Remove)
         {
             this.Locations.Remove(location);
         }
     }
     else if (obj.Value is IControllerConnection)
     {
         ControllerFilter.RaiseFilter();
         ConnectableFilter.RaiseFilter();
     }
 }
Exemplo n.º 15
0
 protected override void watcherChanged(TECChangedEventArgs args)
 {
     if (!propertyExceptions.Contains(args.PropertyName) && !(args.Sender is TECCatalogs))
     {
         if (args.Value is ITypicalable valueTyp)
         {
             if (!valueTyp.IsTypical)
             {
                 this.InstanceChanged?.Invoke(args);
             }
         }
         else
         {
             if (!(args.Sender is ITypicalable) ||
                 args.Sender is ITypicalable senderTyp && !senderTyp.IsTypical)
             {
                 this.InstanceChanged?.Invoke(args);
             }
         }
     }
 }
Exemplo n.º 16
0
        public void Redo()
        {
            isDoing = true;
            TECChangedEventArgs item = redoStack.Last();

            string message = "Redoing:       " + item.Change.ToString() + "    #Undo: " + undoStack.Count() + "    #Redo: " + redoStack.Count();

            logger.Trace(message);

            if (item.Change == Change.Add)
            {
                handleRemove(item);
                redoStack.Remove(item);
            }
            else if (item.Change == Change.Remove)
            {
                handleAdd(item);
                redoStack.Remove(item);
            }
            else if (item.Change == Change.Edit)
            {
                int index = 0;
                if (undoStack.Count > 0)
                {
                    index = undoStack.IndexOf(undoStack.Last());
                }

                handleEdit(item);
                redoStack.Remove(item);
                for (int x = (undoStack.Count - 2); x > index; x--)
                {
                    undoStack.RemoveAt(x);
                }
            }

            message = "After Redoing: " + item.Change.ToString() + "    #Undo: " + undoStack.Count() + "    #Redo: " + redoStack.Count() + "\n";
            logger.Trace(message);

            isDoing = false;
        }
 private void handleChanged(TECChangedEventArgs obj)
 {
     if (obj.Sender is TECBid && obj.Value is TECTypical typ)
     {
         if (obj.Change == Change.Add)
         {
             if (typ.Instances.Count != 1)
             {
                 TypicalSystems.Add(typ);
             }
             else
             {
                 Singletons.Add(typ);
             }
         }
         else if (obj.Change == Change.Remove)
         {
             TypicalSystems.Remove(typ);
             Singletons.Remove(typ);
         }
     }
     else if (obj.Sender is TECTypical typParent && obj.Value is TECSystem)
     {
         if (typParent.Instances.Count == 1)
         {
             TypicalSystems.Remove(typParent);
             Singletons.Add(typParent);
         }
         else
         {
             Singletons.Remove(typParent);
             if (!TypicalSystems.Contains(typParent))
             {
                 TypicalSystems.Add(typParent);
             }
         }
     }
 }
Exemplo n.º 18
0
        public void Undo()
        {
            isDoing = true;
            TECChangedEventArgs item = undoStack.Last();

            logger.Trace("Undoing:       " + item.Change.ToString() + "    #Undo: " + undoStack.Count() + "    #Redo: " + redoStack.Count());
            if (item.Change == Change.Add)
            {
                handleAdd(item);
                undoStack.Remove(item);
                undoStack.Remove(undoStack.Last());
                redoStack.Add(item);
            }
            else if (item.Change == Change.Remove)
            {
                handleRemove(item);
                undoStack.Remove(item);
                undoStack.Remove(undoStack.Last());
                redoStack.Add(item);
            }
            else if (item.Change == Change.Edit)
            {
                int index = undoStack.IndexOf(item);
                redoStack.Add(new TECChangedEventArgs(Change.Edit, item.PropertyName, item.Sender, item.OldValue, item.Value));
                handleEdit(item);
                for (int x = (undoStack.Count - 1); x >= index; x--)
                {
                    undoStack.RemoveAt(x);
                }
            }

            string message = "After Undoing: " + item.Change.ToString() + "    #Undo: " + undoStack.Count() + "    #Redo: " + redoStack.Count() + "\n";

            logger.Trace(message);

            isDoing = false;
        }
Exemplo n.º 19
0
        private void instanceChanged(TECChangedEventArgs args)
        {
            //Checks for a material change in the bid
            if (args.Sender is IRelatable rel && args.Value != null)
            {
                bool hasLinked = rel.LinkedObjects.Contains(args.PropertyName);
                bool isCatalog = (args.Value.GetType().IsImplementationOf(typeof(ICatalog <>)));
                if (hasLinked && !isCatalog)
                {
                    return;
                }
            }

            if (args.Change == Change.Add)
            {
                if (args.Value is TECSystem system)
                {
                    updateTotals(addSystem(system));
                }
                else if (args.Value is TECEquipment equip)
                {
                    updateTotals(addEquipment(equip));
                }
                else if (args.Value is TECSubScope ss)
                {
                    updateTotals(addSubScope(ss));
                }
                else if (args.Value is TECController controller)
                {
                    updateTotals(addController(controller));
                }
                else if (args.Value is TECIOModule module)
                {
                    updateTotals(addIOModule(module));
                }
                else if (args.Value is TECPanel panel)
                {
                    updateTotals(addPanel(panel));
                }
                else if (args.Value is IControllerConnection connection)
                {
                    updateTotals(addConnection(connection));
                }
                else if (args.Value is IEndDevice endDev && args.Sender is TECSubScope sub)
                {
                    if (endDev is TECDevice dev)
                    {
                        updateTotals(DeviceSummaryVM.AddHardware(dev));
                    }
                    else if (endDev is TECValve valve)
                    {
                        updateTotals(ValveSummaryVM.AddValve(valve));
                    }
                    else
                    {
                        logger.Error("IEndDevice isn't recognized. Not valve or device. " +
                                     "MaterialSummaryVM cannot add IEndDevice. IEndDevice: {0}", endDev.Name);
                    }

                    if (sub.Connection != null)
                    {
                        foreach (TECConnectionType connectionType in sub.Connection.Protocol.ConnectionTypes)
                        {
                            updateTotals(WireSummaryVM.AddRun(connectionType, sub.Connection.Length, sub.Connection.IsPlenum));
                        }
                    }
                }
                else if (args.Value is TECMisc misc)
                {
                    updateTotals(MiscSummaryVM.AddCost(misc));
                }
                else if (args.Value is ICost cost)
                {
                    if (args.Sender is TECHardware hardware)
                    {
                        logger.Error("TECHardware raised as value in instance changed args. Item: {0}, Parent:{1}",
                                     hardware.Name,
                                     args.Sender.Guid.ToString());
                    }
                    else if (args.Sender is TECElectricalMaterial elecMat)
                    {
                        logger.Error("TECElectricalMaterial raise as value in instance changed args. Item: {0}, Parent:{1}",
                                     elecMat.Name,
                                     args.Sender.Guid.ToString());
                    }
                    else
                    {
                        updateTotals(MiscSummaryVM.AddCost(cost));
                    }
                }
            }
Exemplo n.º 20
0
 private void handleTECChanged(TECChangedEventArgs e)
 {
     registerChange(e);
     raiseChanged(e);
 }
Exemplo n.º 21
0
 private void raiseChanged(TECChangedEventArgs e)
 {
     Changed?.Invoke(e);
 }
Exemplo n.º 22
0
 private void parentChanged(TECChangedEventArgs e)
 {
     if (e.Change == Change.Add && e.Value is TECController controller && e.Sender == parent)
     {
         sourceControllers.Add(controller);
     }
Exemplo n.º 23
0
 private void changed(TECChangedEventArgs e)
 {
     if (e.Value is TECTypical typical)
     {
         if (e.Change == Change.Add)
         {
             SystemSummaryItem summaryItem = new SystemSummaryItem(typical, bid.Parameters);
             summaryItem.Estimate.PropertyChanged += (sender, args) =>
             {
                 if (args.PropertyName == "TotalPrice")
                 {
                     RaisePropertyChanged("SystemTotal");
                 }
             };
             Systems.Add(summaryItem);
         }
         else if (e.Change == Change.Remove)
         {
             SystemSummaryItem toRemove = null;
             foreach (var item in Systems)
             {
                 if (item.Typical == typical)
                 {
                     toRemove = item;
                     break;
                 }
             }
             if (toRemove != null)
             {
                 Systems.Remove(toRemove);
             }
         }
         RaisePropertyChanged("SystemTotal");
     }
     else if (e.Sender is TECBid)
     {
         if (e.Change == Change.Add)
         {
             if (e.Value is TECController || e.Value is TECPanel)
             {
                 ScopeSummaryItem summaryItem = new ScopeSummaryItem(e.Value as TECScope, bid.Parameters);
                 summaryItem.Estimate.PropertyChanged += (sender, args) =>
                 {
                     if (args.PropertyName == "TotalPrice")
                     {
                         RaisePropertyChanged("RiserTotal");
                     }
                 };
                 Riser.Add(summaryItem);
             }
             else if (e.Value is TECMisc misc)
             {
                 ScopeSummaryItem summaryItem = new ScopeSummaryItem(misc, bid.Parameters);
                 summaryItem.Estimate.PropertyChanged += (sender, args) =>
                 {
                     if (args.PropertyName == "TotalPrice")
                     {
                         RaisePropertyChanged("MiscTotal");
                     }
                 };
                 Misc.Add(summaryItem);
             }
         }
         else if (e.Change == Change.Remove)
         {
             if (e.Value is TECController || e.Value is TECPanel)
             {
                 removeFromCollection(Riser, e.Value as TECScope);
             }
             else if (e.Value is TECMisc misc)
             {
                 removeFromCollection(Misc, misc);
             }
         }
         if (e.PropertyName == "Duration")
         {
             populateAll(bid);
             setupExtraLaborEstimate(bid);
         }
         RaisePropertyChanged("RiserTotal");
         RaisePropertyChanged("MiscTotal");
     }
 }
Exemplo n.º 24
0
 protected virtual void watcherChanged(TECChangedEventArgs args)
 {
 }