|
|
@@ -14,6 +14,7 @@ using InABox.Core;
|
|
|
using InABox.DynamicGrid;
|
|
|
using InABox.Wpf;
|
|
|
using InABox.WPF;
|
|
|
+using NPOI.OpenXmlFormats.Spreadsheet;
|
|
|
using Syncfusion.UI.Xaml.Diagram;
|
|
|
using Syncfusion.UI.Xaml.Diagram.Stencil;
|
|
|
|
|
|
@@ -117,6 +118,21 @@ namespace PRSDesktop
|
|
|
symbol.ContentTemplate = cache.ContentTemplate;
|
|
|
}
|
|
|
}
|
|
|
+
|
|
|
+ // private void LoadConnecterContent(QuoteDiagramConnectorModel connector, string? toString)
|
|
|
+ // {
|
|
|
+ // var cache = QuoteDiagramSymbolCache.Symbols.FirstOrDefault(x => Equals(x.ID, connector.Key));
|
|
|
+ // if (connector != null)
|
|
|
+ // {
|
|
|
+ // connector.Key = cache.ID;
|
|
|
+ // //connector.ContentTemplate = cache.ContentTemplate;
|
|
|
+ // }
|
|
|
+ // }
|
|
|
+
|
|
|
+ private void LoadScalerContent(QuoteDiagramScalerModel scaler)
|
|
|
+ {
|
|
|
+ scaler.ContentTemplate = QuoteDiagramSymbolCache.ScalerTemplate();
|
|
|
+ }
|
|
|
|
|
|
private static void LoadConnectorContent(QuoteDiagramConnectorModel connector, string id)
|
|
|
{
|
|
|
@@ -166,10 +182,14 @@ namespace PRSDesktop
|
|
|
}
|
|
|
|
|
|
foreach (var node in nodes)
|
|
|
- if (node is QuoteDiagramSymbolModel)
|
|
|
- LoadSymbolContent(node as QuoteDiagramSymbolModel, node.Key.ToString());
|
|
|
- else if (node is QuoteDiagramAreaModel)
|
|
|
- LoadAreaContent(node as QuoteDiagramAreaModel, node.Key.ToString());
|
|
|
+ if (node is QuoteDiagramSymbolModel symbol)
|
|
|
+ LoadSymbolContent(symbol, node.Key.ToString());
|
|
|
+ else if (node is QuoteDiagramAreaModel area)
|
|
|
+ LoadAreaContent(area, node.Key.ToString());
|
|
|
+ else if (node is QuoteDiagramScalerModel scaler)
|
|
|
+ LoadScalerContent(scaler);
|
|
|
+ //else if (node is QuoteDiagramConnectorModel connector)
|
|
|
+ // LoadConnecterContent(connector, node.Key.ToString());
|
|
|
}
|
|
|
catch (Exception e)
|
|
|
{
|
|
|
@@ -177,7 +197,7 @@ namespace PRSDesktop
|
|
|
}
|
|
|
}
|
|
|
}
|
|
|
-
|
|
|
+
|
|
|
private void LoadDiagram()
|
|
|
{
|
|
|
(diagram.Info as IGraphInfo).ItemAdded -= ItemAddedEvent;
|
|
|
@@ -222,7 +242,7 @@ namespace PRSDesktop
|
|
|
if (scaler != null)
|
|
|
{
|
|
|
var pixelwidth = scaler.UnitWidth;
|
|
|
- var sText = (scaler.Annotations as AnnotationCollection).FirstOrDefault()?.Content as string;
|
|
|
+ var sText = (scaler.Annotations as AnnotationCollection)?.FirstOrDefault()?.Content as string;
|
|
|
if (double.TryParse(sText, out var measured))
|
|
|
result = Math.Round(measured / (scaler.UnitWidth * 10.0F));
|
|
|
}
|
|
|
@@ -233,16 +253,21 @@ namespace PRSDesktop
|
|
|
private void CheckScalers()
|
|
|
{
|
|
|
ScaleBox.Text = string.Format("1:{0:F2}", GetDiagramScale());
|
|
|
- ScaleButton.IsEnabled = !(diagram.Nodes as NodeCollection).OfType<QuoteDiagramScalerModel>().Any();
|
|
|
+ ScaleButton.IsEnabled = (diagram.Nodes as NodeCollection)?.OfType<QuoteDiagramScalerModel>().Any() != true;
|
|
|
}
|
|
|
|
|
|
private void ScaleButton_Click(object sender, RoutedEventArgs e)
|
|
|
{
|
|
|
var scaler = QuoteDiagramSymbolCache.CreateScaler();
|
|
|
- scaler.OffsetX = 100;
|
|
|
- scaler.OffsetY = 100;
|
|
|
- (diagram.Nodes as NodeCollection).Add(scaler);
|
|
|
+ scaler.OffsetX = 5.0;
|
|
|
+ scaler.OffsetY = 1.0;
|
|
|
+ scaler.UnitHeight = 0.1;
|
|
|
+ scaler.UnitWidth = 0.5;
|
|
|
+ scaler.ContentTemplate = QuoteDiagramSymbolCache.ScalerTemplate();
|
|
|
+ if (diagram.Nodes is NodeCollection nodes)
|
|
|
+ nodes.Add(scaler);
|
|
|
CheckScalers();
|
|
|
+ SaveDiagram();
|
|
|
}
|
|
|
|
|
|
|
|
|
@@ -276,18 +301,21 @@ namespace PRSDesktop
|
|
|
{
|
|
|
_disablesave = true;
|
|
|
|
|
|
- var node = args.Item as NodeViewModel;
|
|
|
- if (node != null)
|
|
|
+ if ((sender as CustomDiagram)?.Nodes is not NodeCollection nodes)
|
|
|
+ return;
|
|
|
+
|
|
|
+ if (args.Item is NodeViewModel node)
|
|
|
{
|
|
|
if (node is QuoteDiagramScalerModel)
|
|
|
+ node.ContentTemplate = QuoteDiagramSymbolCache.ScalerTemplate();
|
|
|
+ else if (args.OriginalSource is NodeViewModel _item)
|
|
|
{
|
|
|
- node.ContentTemplate = QuoteDiagramSymbolCache.Scalers.FirstOrDefault()?.ContentTemplate;
|
|
|
- }
|
|
|
- else
|
|
|
- {
|
|
|
- node.Key = (args.OriginalSource as NodeViewModel).ID;
|
|
|
- node.Content = (args.OriginalSource as NodeViewModel).Content;
|
|
|
- node.ContentTemplate = (args.OriginalSource as NodeViewModel).ContentTemplate;
|
|
|
+ node.Key = _item.ID;
|
|
|
+ node.Content = _item.Content;
|
|
|
+ node.ContentTemplate = _item.ContentTemplate;
|
|
|
+ var _others = nodes.Where(x => string.Equals(x.Key, node.Key)).ToArray();
|
|
|
+ if ((node.Annotations as AnnotationCollection)?.FirstOrDefault() is AnnotationEditorViewModel _annotation)
|
|
|
+ _annotation.Content = $"{_others.Length + 1}";
|
|
|
}
|
|
|
|
|
|
// LoadSymbolContent(node, x => String.Equals((args.OriginalSource as NodeViewModel).ID.ToString(), x.ID));
|
|
|
@@ -375,7 +403,7 @@ namespace PRSDesktop
|
|
|
{
|
|
|
var header = new QuoteCostSheetItem();
|
|
|
header.Type = QuoteCostSheetItemLineType.Header;
|
|
|
- header.Description = symbol.Name;
|
|
|
+ header.Description = $"{symbol.Name} {(symbol.Annotations as AnnotationCollection)?.FirstOrDefault()?.Content}".Trim();
|
|
|
header.CostSheet.ID = costsheet.ID;
|
|
|
header.Sequence = i++;
|
|
|
updates.Add(header);
|
|
|
@@ -392,6 +420,7 @@ namespace PRSDesktop
|
|
|
item.Product.Synchronise(kititem.Product);
|
|
|
item.Description = item.Product.Name;
|
|
|
item.CostSheet.ID = costsheet.ID;
|
|
|
+ item.Qty = kititem.Multiplier;
|
|
|
item.Sequence = i++;
|
|
|
updates.Add(item);
|
|
|
}
|