Telerik Forums
UI for WPF Forum
9 answers
521 views
Hi,

Recently we found one show stopper bug after we moved to telerik controls version 2010.2.812. In this version TrasitionControl seems had serious changes. We use transition control inside datatemplates and rendering of views is done mostly with datatemplates.

Thanks for any help.

Exception - "Cannot resolve all property references in the property path 'Effect.Progress'. Verify that applicable objects support the properties."

StackTrace (stack trace i have copied trying lates internal build 2010.2.1018): 

   at System.Windows.Media.Animation.Storyboard.VerifyPathIsAnimatable(PropertyPath path)
   at System.Windows.Media.Animation.Storyboard.ClockTreeWalkRecursive(Clock currentClock, DependencyObject containingObject, INameScope nameScope, DependencyObject parentObject, String parentObjectName, PropertyPath parentPropertyPath, HandoffBehavior handoffBehavior, HybridDictionary clockMappings, Int64 layer)
   at System.Windows.Media.Animation.Storyboard.ClockTreeWalkRecursive(Clock currentClock, DependencyObject containingObject, INameScope nameScope, DependencyObject parentObject, String parentObjectName, PropertyPath parentPropertyPath, HandoffBehavior handoffBehavior, HybridDictionary clockMappings, Int64 layer)
   at System.Windows.Media.Animation.Storyboard.BeginCommon(DependencyObject containingObject, INameScope nameScope, HandoffBehavior handoffBehavior, Boolean isControllable, Int64 layer)
   at System.Windows.Media.Animation.Storyboard.Begin()
   at Telerik.Windows.Controls.TransitionControl.TransitionPresenter.PlayAnimation() in c:\Builds\WPF_Scrum\HotFix_2010_Q2\Sources\Development\Core\Controls\TransitionControl\TransitionPresenter.cs:line 465
   at System.Windows.Threading.ExceptionWrapper.InternalRealCall(Delegate callback, Object args, Int32 numArgs)
   at MS.Internal.Threading.ExceptionFilterHelper.TryCatchWhen(Object source, Delegate method, Object args, Int32 numArgs, Delegate catchHandler)
   at System.Windows.Threading.DispatcherOperation.InvokeImpl()
   at System.Windows.Threading.DispatcherOperation.InvokeInSecurityContext(Object state)
   at System.Threading.ExecutionContext.runTryCode(Object userData)
   at System.Runtime.CompilerServices.RuntimeHelpers.ExecuteCodeWithGuaranteedCleanup(TryCode code, CleanupCode backoutCode, Object userData)
   at System.Threading.ExecutionContext.RunInternal(ExecutionContext executionContext, ContextCallback callback, Object state)
   at System.Threading.ExecutionContext.Run(ExecutionContext executionContext, ContextCallback callback, Object state, Boolean ignoreSyncCtx)
   at System.Threading.ExecutionContext.Run(ExecutionContext executionContext, ContextCallback callback, Object state)
   at System.Windows.Threading.DispatcherOperation.Invoke()
   at System.Windows.Threading.Dispatcher.ProcessQueue()
   at System.Windows.Threading.Dispatcher.WndProcHook(IntPtr hwnd, Int32 msg, IntPtr wParam, IntPtr lParam, Boolean& handled)
   at MS.Win32.HwndWrapper.WndProc(IntPtr hwnd, Int32 msg, IntPtr wParam, IntPtr lParam, Boolean& handled)
   at MS.Win32.HwndSubclass.DispatcherCallbackOperation(Object o)
   at System.Windows.Threading.ExceptionWrapper.InternalRealCall(Delegate callback, Object args, Int32 numArgs)
   at MS.Internal.Threading.ExceptionFilterHelper.TryCatchWhen(Object source, Delegate method, Object args, Int32 numArgs, Delegate catchHandler)
   at System.Windows.Threading.Dispatcher.InvokeImpl(DispatcherPriority priority, TimeSpan timeout, Delegate method, Object args, Int32 numArgs)
   at MS.Win32.HwndSubclass.SubclassWndProc(IntPtr hwnd, Int32 msg, IntPtr wParam, IntPtr lParam)
   at MS.Win32.UnsafeNativeMethods.DispatchMessage(MSG& msg)
   at System.Windows.Threading.Dispatcher.PushFrameImpl(DispatcherFrame frame)
   at System.Windows.Threading.Dispatcher.PushFrame(DispatcherFrame frame)
   at System.Windows.Threading.Dispatcher.Run()
   at System.Windows.Application.RunDispatcher(Object ignore)
   at System.Windows.Application.RunInternal(Window window)
   at System.Windows.Application.Run(Window window)
   at System.Windows.Application.Run()

Yana
Telerik team
 answered on 06 Apr 2011
5 answers
165 views
Hi.

I am to provide a graph that indicate deviation from a set point.

There are five significant points on the Y axis
* Upper scale limit.
* Upper alarm limit
* The desired point (set point).
* Lower alarm limit.
* Lower scale limit.

These can be, for instance
High Scale : 100
High Alarm: 80
Set Point : 50
Low Alarm: 20 
Low Scale: 0.

They can also be,
High Scale : 100
High Alarm: 80
Set Point : 76
Low Alarm: 10 
Low Scale: 0.
 
These two sets of axis settings should draw the exact same Y Axis. Even in the case where the distance from High Alarm to set point is just 4 units and distance from Set Point to Low Alarm is 56 units, they should take equal amount of space of the drawing area. A linear dataset would draw a gently sloping curve from Low Alarm to Set Point, but it would be very steep from Set Point to High Alarm as the whole distance would be covered in just 4 units.

How do I achieve this? I consider using four stacked curves that would each cover one area of the curve on the scale for its area so that it would only APPEAR to be a single curve, but would actually be four different curves. This, however functionally adequate, does not draw a continuous curve. Any better suggestions?
Evgenia
Telerik team
 answered on 06 Apr 2011
1 answer
65 views
I am using Telerik chart control and I want to set the minor ticks on X axis.
I tried this.

radChartROIComparison.DefaultView.ChartArea.AxisX.MinorTicksVisibility = Visibility.Visible;

But compilation fails telling that

Error 1 'Telerik.Windows.Controls.Charting.AxisX' does not contain a definition for 'MinorTicksVisibility' and no extension method 'MinorTicksVisibility' accepting a first argument of type 'Telerik.Windows.Controls.Charting.AxisX' could be found (are you missing a using directive or an assembly reference?) 

What is the reason for this????

Am I using an old version which does not support this property?

Regards
Rangana

 

Giuseppe
Telerik team
 answered on 06 Apr 2011
2 answers
277 views
Hi,

I' ve got the following problem:

In my application there is a window which includes a scheduleview on the left side and a treeview on the right side. The scheduleview itself is inside a user control. In the scheduleview there exist some appointments.
This scenario should work, but currently doesn't:

I select one treeview item and start a drag drop operation. If I am over an appointment in the scheduleview some conditions between the appointment and the treeview item should be checked.
Currently nothing works: I start dragging the treeview item. As soon as I am over the scheduleview, a "forbidden" symbol appears, and nothing more happens.

I've implemented following:

RadDragAndDropManager.SetAllowDrag(treeview,true);
RadDragAndDropManager.AddDragInfoHandler(treeview, new EventHandler<DragDropEventArgs>(OnDrag));
     RadDragAndDropManager.AddDragQueryHandler(treeview,new EventHandler<DragDropQueryEventArgs>(OnDragQuery));
           RadDragAndDropManager.AddDropQueryHandler(scheduleView, new EventHandler<DragDropQueryEventArgs>(OnDropQuery));
           RadDragAndDropManager.AddDropInfoHandler(scheduleView, new EventHandler<DragDropEventArgs>(OnDropInfo));
           RadDragAndDropManager.SetAllowDrop(scheduleView,true);

DragQuery works, but I never reach DropInfo or DropQuery. What am I doing wrong? I have to say, that a treeview item is NOT of type Appointment.

In RadScheduler, the procedure described above worked perfectly.

Please respond soon.
Thanks
hardik
Top achievements
Rank 1
 answered on 06 Apr 2011
1 answer
425 views
Is there an event that I can hook into to be notified when the active pane is changed in the RadDocking control? I have a ribbon that changes based on the active RadDocumentPane.

I found some similar questions in the forum with answers that suggested using the RadPane.GotFocus event. My issue with this is that I also need to properly handle when no RadDocumentPanes are active. I think the ideal solution would involve the RadDocking class having both an ActivePane property and ActivePaneChanged event.

Thanks,
Joey
Konstantina
Telerik team
 answered on 06 Apr 2011
2 answers
227 views
I have a simple candlestick chart:

<telerik:RadChart Name="radChart1" ItemsSource="{Binding ChartData}" Visibility="{Binding CandlestickVisibility}">
    <telerik:ChartDefaultView>
        <telerik:ChartDefaultView.ChartLegend>
            <telerik:ChartLegend IsEnabled="True" Visibility="Collapsed" />
        </telerik:ChartDefaultView.ChartLegend>
    </telerik:ChartDefaultView>
    <telerik:RadChart.SeriesMappings>
            <telerik:SeriesMapping>
            <telerik:SeriesMapping.SeriesDefinition>
                <telerik:CandleStickSeriesDefinition />
            </telerik:SeriesMapping.SeriesDefinition>
            <telerik:SeriesMapping.ItemMappings>
                <telerik:ItemMapping DataPointMember="Open"
                                    FieldName="OpenPrice" />
                <telerik:ItemMapping DataPointMember="High"
                                    FieldName="HighPrice" />
                <telerik:ItemMapping DataPointMember="Low"
                                    FieldName="LowPrice" />
                <telerik:ItemMapping DataPointMember="Close"
                                    FieldName="ClosePrice" />
            </telerik:SeriesMapping.ItemMappings>
        </telerik:SeriesMapping>
    </telerik:RadChart.SeriesMappings>
</telerik:RadChart>

When I go into the designer and click the IsDateTime for the X Axis, I get a Microsoft .NET Framework exception: "Specified cast is not valid" with this callstack System.Windows.Markup.XamlParseException: Specified cast is not valid. ---> System.InvalidCastException: Specified cast is not valid.
   at MS.Internal.Designer.PropertyEditing.Resources.ResourceUtilities.GetDouble(FrameworkElement element, String key, Double fallbackValue)
   at MS.Internal.Designer.PropertyEditing.Resources.ResourceUtilities.GetDesiredTypeIconSize(FrameworkElement queryRoot)
   at MS.Internal.Designer.PropertyEditing.Editors.SubPropertyEditor.RefreshQuickTypes()
   at MS.Internal.Designer.PropertyEditing.Editors.SubPropertyEditor.RefreshVisuals()
   at MS.Internal.Designer.PropertyEditing.Editors.SubPropertyEditor.OnPropertyEntryChanged(DependencyObject obj, DependencyPropertyChangedEventArgs e)
   at System.Windows.DependencyObject.OnPropertyChanged(DependencyPropertyChangedEventArgs e)
   at System.Windows.FrameworkElement.OnPropertyChanged(DependencyPropertyChangedEventArgs e)
   at MS.Internal.Designer.PropertyEditing.Editors.SubPropertyEditor.OnPropertyChanged(DependencyPropertyChangedEventArgs e)
   at System.Windows.DependencyObject.NotifyPropertyChange(DependencyPropertyChangedEventArgs args)
   at System.Windows.DependencyObject.UpdateEffectiveValue(EntryIndex entryIndex, DependencyProperty dp, PropertyMetadata metadata, EffectiveValueEntry oldEntry, EffectiveValueEntry& newEntry, Boolean coerceWithDeferredReference, Boolean coerceWithCurrentValue, OperationType operationType)
   at System.Windows.StyleHelper.ApplyTemplatedParentValue(DependencyObject container, FrameworkObject child, Int32 childIndex, FrugalStructList`1& childRecordFromChildIndex, DependencyProperty dp, FrameworkElementFactory templateRoot)
   at System.Windows.StyleHelper.InvalidatePropertiesOnTemplateNode(DependencyObject container, FrameworkObject child, Int32 childIndex, FrugalStructList`1& childRecordFromChildIndex, Boolean isDetach, FrameworkElementFactory templateRoot)
   at System.Windows.FrameworkTemplate.InvalidatePropertiesOnTemplate(DependencyObject container, Object currentObject)
   at System.Windows.FrameworkTemplate.HandleBeforeProperties(Object createdObject, DependencyObject& rootObject, DependencyObject container, FrameworkElement feContainer, INameScope nameScope)
   at System.Windows.FrameworkTemplate.<>c__DisplayClass6.<LoadOptimizedTemplateContent>b__3(Object sender, XamlObjectEventArgs args)
   at System.Xaml.XamlObjectWriter.OnBeforeProperties(Object value)
   at System.Xaml.XamlObjectWriter.Logic_CreateAndAssignToParentStart(ObjectWriterContext ctx)
   at System.Xaml.XamlObjectWriter.WriteStartMember(XamlMember property)
   at System.Xaml.XamlWriter.WriteNode(XamlReader reader)
   at System.Windows.FrameworkTemplate.LoadTemplateXaml(XamlReader templateReader, XamlObjectWriter currentWriter)
   --- End of inner exception stack trace ---
   at System.Windows.Markup.XamlReader.RewrapException(Exception e, Uri baseUri)
   at System.Windows.FrameworkTemplate.LoadTemplateXaml(XamlReader templateReader, XamlObjectWriter currentWriter)
   at System.Windows.FrameworkTemplate.LoadTemplateXaml(XamlObjectWriter objectWriter)
   at System.Windows.FrameworkTemplate.LoadOptimizedTemplateContent(DependencyObject container, IComponentConnector componentConnector, IStyleConnector styleConnector, List`1 affectedChildren, UncommonField`1 templatedNonFeChildrenField)
   at System.Windows.FrameworkTemplate.LoadContent(DependencyObject container, List`1 affectedChildren)
   at System.Windows.StyleHelper.ApplyTemplateContent(UncommonField`1 dataField, DependencyObject container, FrameworkElementFactory templateRoot, Int32 lastChildIndex, HybridDictionary childIndexFromChildID, FrameworkTemplate frameworkTemplate)
   at System.Windows.FrameworkTemplate.ApplyTemplateContent(UncommonField`1 templateDataField, FrameworkElement container)
   at System.Windows.FrameworkElement.ApplyTemplate()
   at System.Windows.FrameworkElement.MeasureCore(Size availableSize)
   at System.Windows.UIElement.Measure(Size availableSize)
   at System.Windows.Controls.StackPanel.MeasureOverride(Size constraint)
   at System.Windows.FrameworkElement.MeasureCore(Size availableSize)
   at System.Windows.UIElement.Measure(Size availableSize)
   at System.Windows.ContextLayoutManager.UpdateLayout()
   at System.Windows.UIElement.UpdateLayout()
   at System.Windows.Interop.HwndSource.SetLayoutSize()
   at System.Windows.Interop.HwndSource.set_RootVisualInternal(Visual value)
   at System.Windows.Interop.HwndSource.set_RootVisual(Visual value)
   at System.Windows.Forms.Integration.ElementHost.OnHandleCreated(EventArgs e)
   at System.Windows.Forms.Control.WmCreate(Message& m)
   at System.Windows.Forms.Control.WndProc(Message& m)
   at System.Windows.Forms.Integration.ElementHost.WndProc(Message& m)
   at System.Windows.Forms.Control.ControlNativeWindow.OnMessage(Message& m)
   at System.Windows.Forms.Control.ControlNativeWindow.WndProc(Message& m)
   at System.Windows.Forms.NativeWindow.Callback(IntPtr hWnd, Int32 msg, IntPtr wparam, IntPtr lparam)
How do I make the X Axis a datetime without blowing out the designer?
Nikolay
Telerik team
 answered on 06 Apr 2011
1 answer
144 views
Hi Everyone, 

I am looking for a kml example to go off of.  When I follow the documentation i get nothing.  Does anyone have anything. 

Thanks, 

-zd
Andrey
Telerik team
 answered on 06 Apr 2011
8 answers
260 views
We are building an application that uses the MVVM pattern and Prism.
Our application utilizes Rad Docking Serialization.
The application has a DocumentHost with several tabbed Panes.  When a new Pane is added to the application inside the DocumentHost, it's not initially displayed after the docking serialization is read in.  But we hook a toggle button up to each pane to control visibility and clicking the button brings the new pane into view.
Here's the problem.
When we add a new Pane outside of the DocumentHost, the trick above doesn't work.  The pane will not be seen unless the serialization is deleted.

I found mention of using LayoutSerializationLoadingEventArgs but could not find an example.
Is there an event I can catch to add the new pane to the serialization?
Or should this just work, and there's something wrong with my implementation?
Thanks
George
Telerik team
 answered on 06 Apr 2011
6 answers
230 views
Hi,

I need to create gauges dynamically and put them in a WrapPanel. So I created a user control as follows:

<UserControl x:Class="WMITest.PercentUtilizationGauge" 
    xmlns="http://schemas.microsoft.com/winfx/2006/xaml/presentation" 
    xmlns:x="http://schemas.microsoft.com/winfx/2006/xaml" 
    xmlns:telerik="http://schemas.telerik.com/2008/xaml/presentation" 
    xmlns:local="clr-namespace:WMITest" 
    Height="300" Width="300">  
    <UserControl.Resources> 
        <local:GaugeSettings x:Key="DataSource"/>  
    </UserControl.Resources> 
    <telerik:RadGauge DataContext="{Binding Source={StaticResource DataSource}}">  
        <Grid> 
            <telerik:RadialGauge HorizontalAlignment="Stretch" VerticalAlignment="Stretch">  
                <telerik:RadialScale LabelRotationMode="None" Name="radialScale" Min="0" Max="100">  
                    <telerik:RangeList> 
                        <telerik:RadialRange Name="Green" Min="0" Max="{Binding GreenZoneEnd}" StartWidth="0.1" EndWidth="0.1" 
                                    Location="OverCenter" Background="Green" BorderBrush="Green" Opacity="0.8"/>  
                        <telerik:RadialRange Name="Yellow" Min="{Binding GreenZoneEnd}" Max="{Binding YellowZoneEnd}" StartWidth="0.1" EndWidth="0.1" 
                                    Location="OverCenter" Background="Yellow" BorderBrush="Yellow" Opacity="0.8"/>  
                        <telerik:RadialRange Name="Red" Min="{Binding YellowZoneEnd}" Max="100" StartWidth="0.1" EndWidth="0.1" 
                                    Location="OverCenter" Background="Red" BorderBrush="Red" Opacity="0.8"/>  
                    </telerik:RangeList> 
                    <telerik:IndicatorList> 
                        <telerik:Needle Opacity="0.8" Name="needle"/>  
                    </telerik:IndicatorList>                      
                </telerik:RadialScale> 
            </telerik:RadialGauge> 
        </Grid> 
    </telerik:RadGauge> 
</UserControl> 
The code behind looks like:
namespace WMITest  
{  
    /// <summary>  
    /// Interaction logic for PercentUtilizationGauge.xaml  
    /// </summary>  
    public partial class PercentUtilizationGauge : UserControl  
    {  
        public uint Value { getset; }  
        public GaugeSettings Settings;  
 
        public PercentUtilizationGauge()  
        {  
            if (Settings == null)  
            {  
                Settings = new GaugeSettings();  
            }  
 
            InitializeComponent();  
 
            Settings.GreenZoneEnd = 60;  
        }  
    }  
 
    public class GaugeSettings : INotifyPropertyChanged  
    {  
        private uint greenZoneEnd = 40;  
        public uint GreenZoneEnd  
        {  
            get 
            {  
                return greenZoneEnd;  
            }  
 
            set 
            {  
                greenZoneEnd = value;  
                OnPropertyChanged("GreenZoneEnd");  
            }  
        }  
 
        private uint yellowZoneEnd = 80;  
        public uint YellowZoneEnd  
        {  
            get 
            {  
                return yellowZoneEnd;  
            }  
 
            set 
            {  
                yellowZoneEnd = value;  
                OnPropertyChanged("YellowZoneEnd");  
            }  
        }
        #region INotifyCollectionChanged Members  
        public event PropertyChangedEventHandler PropertyChanged;  
        protected void OnPropertyChanged(string name)  
        {  
            PropertyChangedEventHandler handler = PropertyChanged;  
            if (handler != null)  
            {  
                handler(thisnew PropertyChangedEventArgs(name));  
            }  
        }
        #endregion  
    }  
It all works fine if I add just one PercentUtilizationGauge to the WrapPanel. However as soon as I add second PercentUtilizationGauge several excaptions of type System.InvalidOperationException are thrown:

A first chance exception of type 'System.InvalidOperationException' occurred in System.Core.dll

Additional information: Sequence contains no matching element


They all seem to occur in Telerik code - the call stack looks like:

> System.Core.dll!System.Linq.Enumerable.First<object>(System.Collections.Generic.IEnumerable<object> source, System.Func<object,bool> predicate) + 0x150 bytes 
  Telerik.Windows.Controls.Gauge.dll!Telerik.Windows.Controls.Gauges.ScaleBase.FindOffPosition(Telerik.Windows.Controls.Gauges.IGaugeIndicator indicator = {Telerik.Windows.Controls.Gauges.Needle}) Line 1930 + 0x7b bytes C#
  Telerik.Windows.Controls.Gauge.dll!Telerik.Windows.Controls.Gauges.RadialScale.ArrangeIndicator(Telerik.Windows.Controls.Gauges.IGaugeIndicator indicator = {Telerik.Windows.Controls.Gauges.Needle}) Line 314 + 0xc bytes C#
  Telerik.Windows.Controls.Gauge.dll!Telerik.Windows.Controls.Gauges.IndicatorBase.ArrangeOverride(System.Windows.Size finalSize = {162,30}) Line 1121 C#
  Telerik.Windows.Controls.Gauge.dll!Telerik.Windows.Controls.Gauges.Needle.ArrangeOverride(System.Windows.Size finalSize = {162,30}) Line 94 + 0x26 bytes C#

So how do I find out what is going wrong here? Any help would be greatly appreciated.
Thanks

-Ambar
Andrey
Telerik team
 answered on 06 Apr 2011
1 answer
134 views
Hi,

I have used RadTreelistview  in one my project to achive Parent,child relation(Plz check attached Image).

I want the action like when i click the parent checkbox the assosiated childnode checkboxes has to check in RadTreelistview .

Pn:I have identified IsTriState property in RadTreeview to achive this,but this property is not there in RadTreelistview


Please help me.
Vlad
Telerik team
 answered on 06 Apr 2011
Narrow your results
Selected tags
Tags
GridView
General Discussions
Chart
RichTextBox
Docking
ScheduleView
ChartView
TreeView
Diagram
Map
ComboBox
TreeListView
Window
RibbonView and RibbonWindow
PropertyGrid
DragAndDrop
TabControl
TileView
Carousel
DataForm
PDFViewer
MaskedInput (Numeric, DateTime, Text, Currency)
AutoCompleteBox
DatePicker
Buttons
ListBox
GanttView
PivotGrid
Spreadsheet
Gauges
NumericUpDown
PanelBar
DateTimePicker
DataFilter
Menu
ContextMenu
TimeLine
Calendar
Installer and Visual Studio Extensions
ImageEditor
BusyIndicator
Expander
Slider
TileList
DataPager
PersistenceFramework
Styling
TimeBar
OutlookBar
TransitionControl
FileDialogs
Book
ToolBar
ColorPicker
TimePicker
MultiColumnComboBox
SyntaxEditor
VirtualGrid
NavigationView (Hamburger Menu)
Wizard
ExpressionEditor
WatermarkTextBox
DesktopAlert
BarCode
SpellChecker
DataServiceDataSource
EntityFrameworkDataSource
RadialMenu
ChartView3D
Data Virtualization
BreadCrumb
LayoutControl
ProgressBar
Sparkline
TabbedWindow
ToolTip
CloudUpload
ColorEditor
TreeMap and PivotMap
EntityFrameworkCoreDataSource (.Net Core)
HeatMap
Chat (Conversational UI)
VirtualizingWrapPanel
Calculator
NotifyIcon
TaskBoard
TimeSpanPicker
BulletGraph
Licensing
WebCam
CardView
DataBar
FilePathPicker
Callout
PasswordBox
SplashScreen
Localization
Rating
Accessibility
CollectionNavigator
AutoSuggestBox
Security
VirtualKeyboard
HighlightTextBlock
TouchManager
StepProgressBar
Badge
OfficeNavigationBar
ExpressionParser
CircularProgressBar
SvgImage
PipsPager
SlideView
AI Coding Assistant
InlineAIAssistant
+? more
Top users last month
Shiori
Top achievements
Rank 2
Iron
Tien
Top achievements
Rank 1
Iron
Robert
Top achievements
Rank 1
Rob
Top achievements
Rank 4
Bronze
Bronze
Iron
Geoff
Top achievements
Rank 1
Want to show your ninja superpower to fellow developers?
Top users last month
Shiori
Top achievements
Rank 2
Iron
Tien
Top achievements
Rank 1
Iron
Robert
Top achievements
Rank 1
Rob
Top achievements
Rank 4
Bronze
Bronze
Iron
Geoff
Top achievements
Rank 1
Want to show your ninja superpower to fellow developers?
Want to show your ninja superpower to fellow developers?