Telerik Forums
UI for ASP.NET AJAX Forum
1 answer
192 views
Dear All,

Can any one let me know whether "It is possible to save the RadDockLayout in XML Format and Load it when ever there is a need from the xml which was saved"? If it is possible could you please provide me a working sample.

Thanks and Regards,

G.V.N.Sandeep
Pero
Telerik team
 answered on 31 Aug 2010
3 answers
193 views
Hi There,
 
My tab strip is defined like this
<telerik:RadTabStrip ID="programTabStrip" runat="server" EnableViewState="false" MultiPageID="programMultiPage" AutoPostBack="true" >
    <Tabs>
        <telerik:RadTab Text="Residents" Selected="true"></telerik:RadTab>
        <telerik:RadTab Text="Rotations"></telerik:RadTab>
        <telerik:RadTab Text="Approvers"></telerik:RadTab>
    </Tabs>
</telerik:RadTabStrip>
 
<telerik:RadMultiPage ID="programMultiPage" runat="server" RenderSelectedPageOnly="true">
    <telerik:RadPageView ID="RadPageView1" runat="server" Selected="true">
        <uc2:Residents ID="Residents1" runat="server" />         
    </telerik:RadPageView>
 
    <telerik:RadPageView ID="RadPageView2" runat="server">
        <uc3:Rotations ID="Rotations1" runat="server" />
    </telerik:RadPageView>
 
    <telerik:RadPageView ID="RadPageView3" runat="server">
    <uc1:ProgramApprovers ID="ProgramApprovers1" runat="server" />
               
    </telerik:RadPageView>
</telerik:RadMultiPage>

So in the rotation usercontrol I'm getting an "Object reference not set to an instance of an object." error in NeedsDataSource (of the Radgrid that exists)

...but it only happens after a click event is triggered?

I can get around it by checking for null on sender in the NeedsDataSource...but is this a bug?  Actually it's the DataSource property of the RadGrid that's null, not the grid itself

Yana
Telerik team
 answered on 31 Aug 2010
1 answer
97 views
Hi,

Is use a DataList with checkboxes in a radtoolbardropdown button. I have got some problems with accessing the checkboxes via javascript (client side). If one is checked the rest should unchecked and visa versa.

Thanks,
Koen

<telerik:RadToolBar ID="RadToolBar1" runat="server" CssClass="toolbar" 
                OnButtonClick="onToolbarClick" 
                OnClientButtonClicking="OnCompanyToolbarClicking" Skin="Office2007">
                <collapseanimation duration="200" type="OutQuint" />
                <Items>
                    <telerik:RadToolBarDropDown runat="server" Text="Categorieen" >
                    <Buttons>
                    <telerik:RadToolBarButton runat="server" CssClass="customDDL" Value="CAT2">
                    <ItemTemplate>
                        <asp:DataList runat="server"  DataSourceID="odsCategorie" ID="DataList1">
                        <ItemTemplate>
                        <asp:CheckBox runat="server" ID="chk1" Checked="false" ValidationGroup='<%# Eval("id") %>' />  
                                <asp:Label runat="server" ID="Label1" AssociatedControlID="chk1" Text='<%# Eval("categorie") %>' />
                                 </ItemTemplate>
                                </asp:DataList>
Peter
Telerik team
 answered on 31 Aug 2010
3 answers
357 views
Hi guys,

Having some trouble with my grid. It's in a web control, dynamically built in Page_Init(). The page loads fine the first time, but on postback I get an exception that there is already a control called 'tbTemplateControl' That name belongs to one of my GridTemplateColumns, FacilityColumn. Here's the code in my codebehind

RadGrid rgFacilities;
protected void Page_Load(object sender, EventArgs e)
{
    rgFacilities = (RadGrid)PlaceHolder1.FindControl("rgFacilities");
    RadAjaxManagerProxy1.AjaxSettings.AddAjaxSetting(rgFacilities, rgFacilities);
}
 
protected void Page_Init(object sender, EventArgs e)
{
    CreateGrid();
}
 
void rgFacilities_NeedDataSource(object source, GridNeedDataSourceEventArgs e)
{
    rgFacilities.DataSource = table;
}
 
DataTable _table;
private DataTable table
{
    get
    {
        if (_table == null)
        {
            CreateTable();
        }
        return _table;
    }
    set
    {
        _table = value;
    }
}
 
public Dictionary<string, decimal> totals;
private void CreateGrid()
{
    rgFacilities = new RadGrid();
    rgFacilities.ID = "rgFacilities";
    rgFacilities.AutoGenerateColumns=false;
    rgFacilities.ShowFooter=true;
    rgFacilities.Width=750;
    rgFacilities.NeedDataSource += new GridNeedDataSourceEventHandler(rgFacilities_NeedDataSource);
    rgFacilities.AllowMultiRowEdit=true;
    rgFacilities.MasterTableView.TableLayout = GridTableLayout.Auto;
    rgFacilities.MasterTableView.EditMode = GridEditMode.InPlace;
     
    rgFacilities.ClientSettings.Scrolling.FrozenColumnsCount=1;
    rgFacilities.ClientSettings.Scrolling.AllowScroll=true;
    rgFacilities.ClientSettings.Scrolling.SaveScrollPosition=true;
    rgFacilities.ClientSettings.Scrolling.UseStaticHeaders = true;
 
    totals = new Dictionary<string,decimal>();
    FundColumn column = new FundColumn();
    rgFacilities.MasterTableView.Columns.Clear();
    rgFacilities.MasterTableView.Columns.Add(column);
    for (int i = 1; i < table.Columns.Count; i++)
    {
        decimal total =  new decimal();
        for (int j = 0; j < table.Rows.Count; j++)
        {
            if (table.Rows[j][i] is decimal)
            {
                total += (decimal)table.Rows[j][i];
            }
        }
        FacilityColumn col = new FacilityColumn(total,false);
        totals[col.UniqueName] = total;
        //col.Aggregate = GridAggregateFunction.Sum;
        //col.FooterAggregateFormatString = "{0:C}";
        col.DataField = table.Columns[i].ColumnName;
        col.HeaderText = table.Columns[i].ColumnName;
        rgFacilities.MasterTableView.Columns.Add(col);
        total = 0;
    }
    for (int i = 0; i < table.Rows.Count && i < rgFacilities.PageSize; i++)
    {
        rgFacilities.EditIndexes.Add(i);
    }
    this.PlaceHolder1.Controls.Clear();
    this.PlaceHolder1.Controls.Add(rgFacilities);
}
 
private void CreateTable()
{
    table = new DataTable();
    table.Columns.Add(new DataColumn("Fund", typeof(string)));
    table.Columns.Add(new DataColumn("Facility1", typeof(decimal)));
    table.Columns.Add(new DataColumn("Facility2", typeof(decimal)));
    table.Columns.Add(new DataColumn("Facility3", typeof(decimal)));
    table.Columns.Add(new DataColumn("Facility4", typeof(decimal)));
    table.Columns.Add(new DataColumn("Facility5", typeof(decimal)));
    table.Columns.Add(new DataColumn("Facility6", typeof(decimal)));
    table.Columns.Add(new DataColumn("Facility7", typeof(decimal)));
    table.Columns.Add(new DataColumn("Facility8", typeof(decimal)));
    table.Columns.Add(new DataColumn("Facility9", typeof(decimal)));
    table.Columns.Add(new DataColumn("Facility10", typeof(decimal)));
    table.Columns.Add(new DataColumn("Facility11", typeof(decimal)));
    table.Columns.Add(new DataColumn("Facility12", typeof(decimal)));
    table.Columns.Add(new DataColumn("Facility13", typeof(decimal)));
    table.Columns.Add(new DataColumn("Facility14", typeof(decimal)));
    table.Columns.Add(new DataColumn("Facility15", typeof(decimal)));
    DataRow row1 = table.NewRow();
    DataRow row2 = table.NewRow();
    DataRow row3 = table.NewRow();
    DataRow row4 = table.NewRow();
    DataRow row5 = table.NewRow();
    DataRow row6 = table.NewRow();
    DataRow row7 = table.NewRow();
    DataRow row8 = table.NewRow();
    DataRow row9 = table.NewRow();
    DataRow row10 = table.NewRow();
    DataRow row11 = table.NewRow();
    DataRow row12 = table.NewRow();
    DataRow row13 = table.NewRow();
    DataRow row14 = table.NewRow();
    DataRow row15 = table.NewRow();
    DataRow row16 = table.NewRow();
    DataRow row17 = table.NewRow();
    DataRow row18 = table.NewRow();
    DataRow row19 = table.NewRow();
    DataRow row20 = table.NewRow();
 
    row1["Fund"] = "Fund1";
    row2["Fund"] = "Fund2";
    row3["Fund"] = "Fund3";
    row4["Fund"] = "Fund4";
    row5["Fund"] = "Fund5";
    row6["Fund"] = "Fund6";
    row7["Fund"] = "Fund7";
    row8["Fund"] = "Fund8";
    row9["Fund"] = "Fund9";
    row10["Fund"] = "Fund10";
    row11["Fund"] = "Fund11";
    row12["Fund"] = "Fund12";
    row13["Fund"] = "Fund13";
    row14["Fund"] = "Fund14";
    row15["Fund"] = "Fund15";
    row16["Fund"] = "Fund16";
    row17["Fund"] = "Fund17";
    row18["Fund"] = "Fund19";
    row19["Fund"] = "Fund19";
    row20["Fund"] = "Fund20";
 
    row1[1] = 0.0d;
    row1[2] = 0.0d;
    row1[3] = 0.0d;
    row1[4] = 2.0d;
    row1[5] = 2.0d;
    row1[6] = 0.0d;
    row1[7] = 0.0d;
    row1[8] = 0.0d;
    row1[9] = 2.0d;
    row1[10] = 2.0d;
    row1[11] = 0.0d;
    row1[12] = 0.0d;
    row1[13] = 0.0d;
    row1[14] = 2.0d;
    row1[15] = 2.0d;
 
    row2[1] = 1.0d;
    row2[2] = 1.0d;
    row2[3] = 1.0d;
    row2[4] = 1.0d;
    row2[5] = 1.0d;
    row2[6] = 1.0d;
    row2[7] = 1.0d;
    row2[8] = 1.0d;
    row2[9] = 1.0d;
    row2[10] = 1.0d;
    row2[11] = 1.0d;
    row2[12] = 1.0d;
    row2[13] = 1.0d;
    row2[14] = 1.0d;
    row2[15] = 1.0d;
 
    row3[1] = 0.4d;
    row3[2] = 0.5d;
    row3[3] = 0.6d;
    row3[4] = 0.7d;
    row3[5] = 0.8d;
    row3[6] = 0.4d;
    row3[7] = 0.5d;
    row3[8] = 0.6d;
    row3[9] = 0.7d;
    row3[10] = 0.8d;
    row3[11] = 0.4d;
    row3[12] = 0.5d;
    row3[13] = 0.6d;
    row3[14] = 0.7d;
    row3[15] = 0.8d;
 
    row4[1] = 3.0d;
    row4[2] = 4.0d;
    row4[3] = 5.0d;
    row4[4] = 6.0d;
    row4[5] = 7.0d;
    row4[6] = 3.0d;
    row4[7] = 4.0d;
    row4[8] = 5.0d;
    row4[9] = 6.0d;
    row4[10] = 7.0d;
    row4[11] = 3.0d;
    row4[12] = 4.0d;
    row4[13] = 5.0d;
    row4[14] = 6.0d;
    row4[15] = 7.0d;
 
    row5[1] = 1.0d;
    row5[2] = 2.0d;
    row5[3] = 3.0d;
    row5[4] = 4.0d;
    row5[5] = 5.0d;
    row5[6] = 1.0d;
    row5[7] = 2.0d;
    row5[8] = 3.0d;
    row5[9] = 4.0d;
    row5[10] = 5.0d;
    row5[11] = 1.0d;
    row5[12] = 2.0d;
    row5[13] = 3.0d;
    row5[14] = 4.0d;
    row5[15] = 5.0d;
 
    table.Rows.Add(row1);
    table.Rows.Add(row2);
    table.Rows.Add(row3);
    table.Rows.Add(row4);
    table.Rows.Add(row5);
    table.Rows.Add(row6);
    table.Rows.Add(row7);
    table.Rows.Add(row8);
    table.Rows.Add(row9);
    table.Rows.Add(row10);
    table.Rows.Add(row11);
    table.Rows.Add(row12);
    table.Rows.Add(row13);
    table.Rows.Add(row14);
    table.Rows.Add(row15);
    table.Rows.Add(row16);
    table.Rows.Add(row17);
    table.Rows.Add(row18);
    table.Rows.Add(row19);
    table.Rows.Add(row20);
}


And here are my template column classes:

public class FacilityColumn : GridTemplateColumn
        {
            public FacilityColumn()
                : this(0, false)
            {
            }
            public FacilityColumn(decimal total, bool zeroAllocation)
                : base()
            {
                //this.UniqueName = RandomString(10, true);
                HeaderTemplate = new FacilityHeaderTemplate(this);
                ItemTemplate = new FacilityItemTemplate(this);
                EditItemTemplate = new FacilityEditItemTemplate(this);
                FooterTemplate = new FacilityFooterTemplate(this, total, zeroAllocation);
            }
 
             
        }
 
        public class FacilityEditItemTemplate : ITemplate, IBindableTemplate
        {
            private FacilityColumn _col;
            OrderedDictionary _changes;
 
            private OrderedDictionary Changes
            {
                get
                {
                    if (_changes == null)
                        _changes = new OrderedDictionary();
 
                    return _changes;
                }
            }
 
            public FacilityEditItemTemplate(FacilityColumn col)
            {
                _col = col;
            }
 
            public void InstantiateIn(Control container)
            {
                TextBox tb = new TextBox();
                tb.ID = "tb" + _col.UniqueName;
                tb.DataBinding += new EventHandler(tb_DataBinding);
                tb.TextChanged += new EventHandler(tb_TextChanged);
                tb.Width = Unit.Pixel(120);
                container.Controls.Add(tb);
            }
 
            void tb_TextChanged(object sender, EventArgs e)
            {
                Changes.Add("Fund|" + _col.UniqueName, (sender as TextBox).Text);
            }
 
            void tb_DataBinding(object sender, EventArgs e)
            {
                TextBox tb = (sender as TextBox);
                GridDataItem container = (GridDataItem)tb.NamingContainer;
                tb.Text = ((DataRowView)container.DataItem)[_col.DataField].ToString();
            }
 
            public IOrderedDictionary ExtractValues(Control container)
            {
                return Changes;
            }
        }
 
        public class FacilityHeaderTemplate : ITemplate
        {
            private FacilityColumn _col;
 
            public FacilityHeaderTemplate(FacilityColumn col)
                : base()
            {
                _col = col;
            }
 
            public void InstantiateIn(Control container)
            {
                Label lbl = new Label();
                lbl.DataBinding += new EventHandler(lbl_DataBinding);
                container.Controls.Add(lbl);
            }
 
            void lbl_DataBinding(object sender, EventArgs e)
            {
                (sender as Label).Text = _col.HeaderText;
            }
        }
 
        public class FacilityItemTemplate : ITemplate
        {
            private FacilityColumn _col;
            public FacilityItemTemplate(FacilityColumn col)
            {
                _col = col;
            }
 
            public void InstantiateIn(Control container)
            {
                Label lbl = new Label();
                lbl.DataBinding += new EventHandler(lbl_DataBinding);
                container.Controls.Add(lbl);
            }
 
            void lbl_DataBinding(object sender, EventArgs e)
            {
                Label lbl = (sender as Label);
                GridDataItem container = (GridDataItem)lbl.NamingContainer;
                string val = ((DataRowView)container.DataItem)[_col.DataField].ToString();
                if (String.IsNullOrEmpty(val))
                    val = " ";
                lbl.Text = string.Format("{0:C}", val);
            }
        }
 
        public class FacilityFooterTemplate:ITemplate
        {
            FacilityColumn _col;
            decimal _total;
            bool _zeroAllocation;
            public FacilityFooterTemplate(FacilityColumn col, decimal total, bool zeroAllocation)
            {
                _col = col;
                _total = total;
                _zeroAllocation = zeroAllocation;
            }
            #region ITemplate Members
 
            public void InstantiateIn(Control container)
            {
                Label label = new Label();
                RadioButtonList radioList = new RadioButtonList();
                 
                label.ID = _col.UniqueName + "-total";
                label.Text = _total.ToString("C");
                radioList.ID = _col.UniqueName + "-zero";
                radioList.Items.Add(new ListItem("yes", "1"));
                radioList.Items.Add(new ListItem("no", "0"));
                radioList.AutoPostBack = true;
                if (_zeroAllocation)
                    radioList.SelectedIndex = 0;
                else
                    radioList.SelectedIndex = 1;
                radioList.RepeatDirection = RepeatDirection.Horizontal;
                radioList.SelectedIndexChanged += new EventHandler(radioList_SelectedIndexChanged);
                container.Controls.Add(label);
                container.Controls.Add(radioList);
            }
 
            void radioList_SelectedIndexChanged(object sender, EventArgs e)
            {
                 
            }
            #endregion
        }
 
        private class ReadOnlyTemplate : ITemplate, IBindableTemplate
        {
            protected Label label;
            private string colname;
 
            public ReadOnlyTemplate(string cName)
            {
                colname = cName;
            }
 
            #region ITemplate Members
 
            public void InstantiateIn(Control container)
            {
                label = new Label();
                label.ID = "templateColumnLabel";
                label.DataBinding += label_DataBinding;
                container.Controls.Add(label);
            }
 
            void label_DataBinding(object sender, EventArgs e)
            {
                Label label = (Label)sender;
                GridDataItem container = (GridDataItem)label.NamingContainer;
                label.Text = (string)((DataRowView)container.DataItem)[colname];
            }
 
            #endregion
 
            #region IBindableTemplate Members
            OrderedDictionary _changes;
 
            private OrderedDictionary Changes
            {
                get
                {
                    if (_changes == null)
                        _changes = new OrderedDictionary();
 
                    return _changes;
                }
            }
            public System.Collections.Specialized.IOrderedDictionary ExtractValues(Control container)
            {
                return Changes;
            }
 
            #endregion
        }
    }

I apologize for the length, but I think that's everything you need to use in a test project.

So I'm creating the grid in Page_Init(), databinding in NeedDataSource(). What else can I try?

Thanks,
Brad
Jay
Top achievements
Rank 1
 answered on 31 Aug 2010
1 answer
305 views
Hi,

I am new to telerik controls and I have inherited a website that heavily relies on Telerik controls.

I have created 2 raddatepickers. One of them has a client event OnDateSelected that updates the 2nd datepicker with a calculated date based on the first one. This works fine until another control on the same page/panel causes a partial postback (using the RadAjaxManager). After the partial postback my client event can no longer access the raddatepicker client object.

I have set the client event to be reattached after the partial postback. I don't know if that is necessary. ( I assumed it was based on this page http://www.telerik.com/help/aspnet/toolbar/toolbar_clienteventsunattached.html). I know that the event is reattached b/c I have stepped into the code using Firebug. However, when the set_selectedDate function runs nothing happens to the 2nd datepicker.

Here is the code that I used:

              <telerik:RadDatePicker ID="dateTetanusReceived" runat="server">
           <ClientEvents OnDateSelected="TetanusDateSelected"></ClientEvents>
            </telerik:RadDatePicker>
              <telerik:RadDatePicker ID="dateTetanus" runat="server">
            </telerik:RadDatePicker>
var _TetanusExpiryPicker = $find("<%= dateTetanus.ClientID %>");
 var _TetanusPicker = $find("<%= dateTetanusReceived.ClientID %>");
 
function TetanusDateSelected(sender, e) {
 
    SetSecondDatePicker(_TetanusExpiryPicker, 10, e);
}
 
function SetSecondDatePicker(datePicker, yearsToAdd, e) {
    var expiryDate = e.get_newDate();
    expiryDate.setFullYear(expiryDate.getFullYear() + yearsToAdd);
    datePicker.set_selectedDate(expiryDate);
}
 
//Event gets called after a partial postback ends
function OnResponseEndHandler(sender, arguments) {
 
    _TetanusPicker.add_dateSelected(TetanusDateSelected);
}

Any help would be appreciated.

Oran
Mira
Telerik team
 answered on 31 Aug 2010
1 answer
101 views
I modifed the following demo
http://demos.telerik.com/aspnet-ajax/controls/examples/integration/gridandwindow/defaultcs.aspx?product=grid
and I added a RadFilter control connected to the grid.

I keep getting the following error "Microsoft JScript runtime error: Sys.InvalidOperationException: A control is already associated with the element." thrown
when I click the buton to add a filter criteria.

Can annyone help

thanks
Cherif diallo
Jay
Top achievements
Rank 1
 answered on 31 Aug 2010
2 answers
125 views

I am using a RadTabStrip, one of the dropdown boxes is loaded depending on a previous tab's controls (depending on what the user selects on a previous tab)

I have it set up with a TabStrip, MultiPageView and PageViews.

I used the RadTabStrip Unload event to figure out which tab is currently being viewed and load the dropdown box as follows:
Protected Sub RadTabStrip1_Unload(ByVal sender As Object, ByVal e As System.EventArgs) Handles RadTabStrip1.Unload
  
        Select Case RadTabStrip1.SelectedTab.Text
  
            Case "Case Info"
            Case "Client Info"
            Case "Experts"
            Case "Letter Details"
  
                'get office phone numbers
                Dim db As New RFIDataContext
  
                Dim q = (From o In db.Offices _
                         Where o.OfficeId = rcbOffice.SelectedValue _
                        Select o.Fax, o.Fax2, o.Fax3).First
  
                With q
  
                    If Not IsNothing(q.Fax) Then
                        If q.Fax.Trim <> String.Empty Then
                            ddlFaxes.Items.Add(FormatPhoneDots(q.Fax))
                        End If
                    End If
                    If Not IsNothing(q.Fax2) Then
                        If q.Fax2.Trim <> String.Empty Then
                            ddlFaxes.Items.Add(FormatPhoneDots(q.Fax2))
                        End If
                    End If
                    If Not IsNothing(q.Fax3) Then
                        If q.Fax3.Trim <> String.Empty Then
                            ddlFaxes.Items.Add(FormatPhoneDots(q.Fax3))
                        End If
                    End If
  
                End With
  
            Case "Sign & Save"
  
  
  
        End Select

The problem is that the dropdown box is still empty.  The event fires and the data is pulled and loaded but not updated on the page.  (I confirmed through debugging that everything works above just nothing is visually loaded)

What am I missing?

Coty
Simon
Telerik team
 answered on 31 Aug 2010
3 answers
189 views
Hello Telerik,

I just switched to the Q2 release and finally started implementing the persisting of grid settings.

Sadly, I experience a very unsatisfying behaviour.

I am populating the grid via OnNeedDataSource and explicitely checked that no simple binding happens anywhere in the code. I also create the column structure programmatically, no autocreatecolumns.

In the grid, I have a couple of columns (especially the first five columns) hidden by default.

When I persist grid settings after for example changing the order of columns via drag/drop or if I show a hidden column and then persist the settings, the settings are persisted with the wrong order.

If I have column a(hidden), b, c, d

then drag column b after c, so I have

a(hidden), c, b, d

then show column a, so I have

a,c,b,d

and then persist and reload the settings, the result is:

a (hidden (why?)), b (instead of c, with width of a!), c (with width of b), d (with width of c)

and the grid itself when resizing a column explodes into the right (maybe because one column "more" has been persisted than is currently shown? Furthermore, neither grouping, filter expressions or sorting is persisted. If I sort a column, after loading the settings the column is highlighted (like beeing sorted) but without a sort indicator and no sorting is done at all.

I tried many things, loading settings at different points in the control lifecycle, but basically have given up for now. I am using the code from the latest demo.

What can I check for to get on the right trail of fixing this problem?

best regards

Ulrik
Maria Ilieva
Telerik team
 answered on 31 Aug 2010
8 answers
538 views
Hi,

When I add a header image to a rad grid column the text disappears.  With the column code below I see the image but no text.  If I remove the HeaderImageUrl the text reappears. 

 

 

<Columns>

 

 

 

<telerik:GridBoundColumn HeaderText="OPPE Forms Not Started" HeaderImageUrl="../images/notstarted.png" ItemStyle-CssClass="gridNumberColumns" DataField="FormsNotStarted" DataType="System.Int32"

 

 

 

UniqueName="FormsNotStarted">

 

 

 

</telerik:GridBoundColumn>

 

 

 

</Columns>

 

Nathan
Top achievements
Rank 1
 answered on 31 Aug 2010
6 answers
238 views
Hi,

How do I set the font name and size when using the inline editing?  This feature would be most excellent.

Thanks,
Joe
Top achievements
Rank 1
 answered on 31 Aug 2010
Narrow your results
Selected tags
Tags
+? more
Top users last month
Jake
Top achievements
Rank 1
RBarnes
Top achievements
Rank 1
Iron
Iron
Rami
Top achievements
Rank 1
Iron
Veteran
Nathan
Top achievements
Rank 1
Kumeri
Top achievements
Rank 1
Iron
Veteran
Iron
Want to show your ninja superpower to fellow developers?
Top users last month
Jake
Top achievements
Rank 1
RBarnes
Top achievements
Rank 1
Iron
Iron
Rami
Top achievements
Rank 1
Iron
Veteran
Nathan
Top achievements
Rank 1
Kumeri
Top achievements
Rank 1
Iron
Veteran
Iron
Want to show your ninja superpower to fellow developers?
Want to show your ninja superpower to fellow developers?