/// <summary> /// Publishes the specified item. /// </summary> /// <param name="item">The item.</param> private void Publish(MarbleBase item, VisualRxProxyWrapper[] proxies) { item.Keywords = _keyworkds; item.IndexOrder = _indexOrder; VisualRxSettings.Send(item, proxies); }
/// <summary> /// Selects the template. /// </summary> /// <param name="item">The item.</param> /// <param name="element">The element.</param> /// <returns></returns> public DataTemplate SelectTemplate(MarbleBase item, FrameworkElement element) { DataTemplate template = null; if (item.Name == "Stock") { IList <double> lst = item.RawValue as IList <double>; if (lst != null) { if (lst[0] < lst[1]) { template = element.FindResource("StockUpTemplate") as DataTemplate; } else { template = element.FindResource("StockDownTemplate") as DataTemplate; } } else { Trace.WriteLine(item.RawValue.GetType().Name); } } return(template); }
public CreateStreamVMRequest(MarbleBase item, IVMDataStream parent, string[] path, int level) { Item = item; Parent = parent; Path = path; Level = level; _fullName = string.Join(".", Path, 0, Level); _isLastLevel = Path.Length == Level; }
/// <summary> /// Selects the template. /// </summary> /// <param name="item">The item.</param> /// <param name="element">The element.</param> /// <returns></returns> public DataTemplate SelectTemplate(MarbleBase item, FrameworkElement element) { DataTemplate template = null; bool startWith = item.Name.ToLower().StartsWith("sec"); bool isDivBy10 = Convert.ToInt32(item.RawValue) % 10 == 0; if (startWith && isDivBy10) { template = element.FindResource("CustomMarbleNextTemplate") as DataTemplate; } return(template); }
/// <summary> /// Append new stream to the stream hierarchic. /// </summary> /// <param name="item">The item.</param> private void AppendStream(MarbleBase item) { string fullName = item.Name; #region Validation if (string.IsNullOrEmpty(fullName)) { return; // TODO: error log } #endregion // Validation string[] path = fullName.Split(new [] { "." }, StringSplitOptions.RemoveEmptyEntries); IVMDataStream parent = _hierarchic.FirstOrDefault(node => node.Name == path[0]); var request = new CreateStreamVMRequest(item, parent, path.ToArray(), 1); CreateStreamVMRecursive(request); }
/// <summary> /// Appends the marble. /// </summary> /// <param name="itemWrapper">The item wrapper.</param> public void AppendMarble(MarbleItemViewModel itemWrapper) { #region Validation if (itemWrapper == null) { throw new NullReferenceException("itemWrapper"); } #endregion Validation MarbleBase item = itemWrapper.Item; if (TabKind == TabKind.Flat) { FlatItems.AddAsync(item); return; } itemWrapper.MainContext = this; #region Diagrams.AddAsync(diagram) MarbleDiagramModel diagram; if (!_marbleDiagrams.TryGetValue(item.Name, out diagram)) { diagram = new MarbleDiagramModel(item.Name, item.IndexOrder, this); if (_marbleDiagrams.TryAdd(item.Name, diagram)) { Diagrams.AddAsync(diagram); } else { diagram.Dispose(); diagram = _marbleDiagrams[item.Name]; } } #endregion // Diagrams.AddAsync(diagram) itemWrapper = itemWrapper.Clone(diagram); diagram.AppendMarble(itemWrapper); }
/// <summary> /// Tries the select custom template. /// </summary> /// <param name="item">The item.</param> /// <param name="element">The element.</param> /// <param name="plugin">The plugin.</param> /// <returns></returns> private DataTemplate TrySelectCustomTemplate( IMarbleItemPlugin plugin, MarbleBase item, FrameworkElement element) { try { return(plugin.SelectTemplate(item, element)); } #region Exception Handling catch (Exception ex) { TraceSourceMonitorHelper.Error("Fail to select template for marble item, plugins: {0}, item = {1}, \r\n\terror = {2}", plugin, item.Value, ex); return(null); } #endregion Exception Handling }
/// <summary> /// Sends the specified item. /// </summary> /// <param name="item">The item.</param> internal static void Send(MarbleBase item, IEnumerable <VisualRxProxyWrapper> proxies) { #region Validation if (VisualRxSettings.Proxies == null || !VisualRxSettings.Proxies.Any()) { TraceSourceMonitorHelper.Warn("MonitorOperator: No proxy found"); return; } #endregion Validation foreach (VisualRxProxyWrapper proxy in proxies) { try { //string kind = proxy.Kind; //if (!VisualRxSettings.Filter(item, kind)) // continue; //if (!proxy.Filter(item)) // continue; // the proxy wrapper apply parallelism and batching (VIA Rx Subject) proxy.Send(item); } #region Exception Handling catch (Exception ex) { TraceSourceMonitorHelper.Error("MonitorOperator: {0}", ex); } #endregion Exception Handling } }
/// <summary> /// Translates the offset. /// </summary> /// <param name="itemWrapper">The item wrapper.</param> /// <returns></returns> public double TranslateOffset(MarbleItemViewModel itemWrapper) { #region Validation if (itemWrapper == null) { throw new NullReferenceException("itemWrapper"); } #endregion Validation MarbleBase item = itemWrapper.Item; TimeSpan offset = item.Offset; IMarbleDiagramContext diagram = itemWrapper.DiagramContext; double totalSeconds = offset.TotalSeconds; double initTimeInSeconds = _initTimeInSeconds; double totalSecondsByDiagram; if (_initTimeInSeconds == -1) { initTimeInSeconds = Interlocked.CompareExchange(ref _initTimeInSeconds, totalSeconds, -1); } totalSecondsByDiagram = diagram.GetLocalTimeInSeconds(totalSeconds); #region totalSeconds = ... (PositioningStrategy) switch (diagram.PositioningStrategy) { case MarblePositioningStrategy.GlobalTime: totalSeconds -= _initTimeInSeconds; totalSeconds = TranslateByFactor(offset, totalSeconds); break; case MarblePositioningStrategy.PrivateTime: totalSeconds = TranslateByFactor(offset, totalSecondsByDiagram); break; case MarblePositioningStrategy.Sequence: totalSeconds = itemWrapper.Sequence; break; } #endregion totalSeconds = ... (PositioningStrategy) int correction = diagram.Size + MarbleDiagramModel.DIAGRAM_WIDTH_CORRECTION; double result = totalSeconds * (itemWrapper.DiagramContext.Size * 2 + 5); if ((item.Kind == MarbleKind.OnCompleted || item.Kind == MarbleKind.OnError) && diagram.PositioningStrategy != MarblePositioningStrategy.Sequence) { result += itemWrapper.DiagramContext.Size; } double candidateWidth = result + correction; if (candidateWidth > _diagramWidth) { _diagramWidth = candidateWidth; PropertyChanged(this, new PropertyChangedEventArgs("DiagramWidth")); } return(result); }
/// <summary> /// Sends the specified item. /// </summary> /// <param name="item">The item.</param> public void Send(MarbleBase item) { _subject.OnNext(item); }
/// <summary> /// Initializes a new instance of the <see cref="MarbleItemViewModel"/> class. /// </summary> /// <param name="item">The item.</param> public MarbleItemViewModel(MarbleBase item) { Item = item; }