Telerik Forums
UI for ASP.NET AJAX Forum
2 answers
681 views
Hi, I have a really weird problem.

 I've an aspx page which dynamically loads web user controls into a panel. It loads about 10 user controls, 1 at a time. However, only 3 are causing issues.

FYI, I'm loading the user controls in the onint event as below:

protected override void OnInit(EventArgs e)
        {
            //If we're loading for the first time load default page.
            if (Session["wuc_location"] == null)
           {
               Session["wuc_location"] = "default_wuc.ascx";
               Session["wuc_ID"] = "WUC_default_wuc";
           }
           else
           {
               //Choose which WUC to load based on button clicked!
               switch ((string)Request.Form["__EVENTTARGET"])
               {
                   case "LinkButton_MM_Inbox":
                       Session["wuc_location"] = "administration_wuc.ascx";
                       Session["wuc_ID"] = "WUC_administration_wuc";
                       Session["Page_First_Load"] = true;
                       break;
                   case "LinkButton_MM_System_Logs":
                       Session["wuc_location"] = "logs_main_wuc.ascx";
                       Session["wuc_ID"] = "WUC_logs_main_wuc";
                       Session["Page_First_Load"] = true;
                       break;
                   case "LinkButton_MM_Preferences":
                       Session["wuc_location"] = "user_preferences_wuc.ascx";
                       Session["wuc_ID"] = "WUC_user_preferences_wuc";
                       Session["Page_First_Load"] = true;
                       break;
                   case "LinkButton_P20T":
                       Session["wuc_location"] = "previous_20_transactions_wuc.ascx";
                       Session["wuc_ID"] = "WUC_previous_20_transactions_wuc";
                       Session["Page_First_Load"] = true;
                       break;
                   case "WUC_administration_wuc$LinkButton_ADMIN_SMS_Settings":
                       Session["wuc_location"] = "sms_settings_wuc.ascx";
                       Session["wuc_ID"] = "WUC_sms_settings_wuc";
                       Session["Page_First_Load"] = true;
                       break;
                   case "WUC_administration_wuc$LinkButton_ADMIN_Department_Setup":
                       Session["wuc_location"] = "department_setup_wuc.ascx";
                       Session["wuc_ID"] = "WUC_department_setup_wuc";
                       Session["Page_First_Load"] = true;
                       break;
                   case "WUC_administration_wuc$LinkButton_ADMIN_Terminal_Setup":
                       Session["wuc_location"] = "terminal_setup_wuc.ascx";
                       Session["wuc_ID"] = "WUC_terminal_setup_wuc";
                       Session["Page_First_Load"] = true;
                       break;
                     
                   default:
                       //
                       break;
               }
           }
  
            //Load the selected user control
            Main_PH.Controls.Clear();
            WUC_default_wuc = new Control();
            WUC_default_wuc = this.LoadControl((string)Session["wuc_location"]);
            WUC_default_wuc.ID = (string)Session["wuc_ID"];
            Main_PH.Controls.Add(WUC_default_wuc);
            base.OnInit(e);
        }

I've deleted a lot of "cases" in the switch above to reduce the size of the code.

So below is one of the problems I'm having:

The aspx page has a menu on the left with links such as ADMINISTRATION, SYSTEM LOGS, USER PREFERENCES - If I click on Administration, the wuc_administration.ascx is loaded into Main_PH. I could have another 10 links from within administration.ascx - 1 in particular is the SMS settings page. Clicking on SMS settings loads:

case "WUC_administration_wuc$LinkButton_ADMIN_SMS_Settings":
                       Session["wuc_location"] = "sms_settings_wuc.ascx";
                       Session["wuc_ID"] = "WUC_sms_settings_wuc";
                       Session["Page_First_Load"] = true;
                       break;

Now if I click on the USER PREFERENCES link on the left menu which loads:

case "LinkButton_MM_Preferences":
                       Session["wuc_location"] = "user_preferences_wuc.ascx";
                       Session["wuc_ID"] = "WUC_user_preferences_wuc";
                       Session["Page_First_Load"] = true;
                       break;

I get a view state error:

Microsoft JScript runtime error: Sys.WebForms.PageRequestManagerServerErrorException: Failed to load viewstate.  The control tree into which viewstate is being loaded must match the control tree that was used to save viewstate during the previous request.  For example, when adding controls dynamically, the controls added during a post-back must match the type and position of the controls added during the initial request.

Its driving me insane. I understand Viewstate and the way it works... but I don't see how I could be getting viewstate errors when a user control is removed and a new one is added? This error only occurs when traversing from certain user controls. I could go to the email settings control and then to the user preferences control with no problem.....

To make things more interesting I did some debugging.... check out the pictures.

1. - A screen of sms settings (sms.jpg)
2. - A screen of user preferences (user_pref.jpg)
3. - A screen of user preferences after I swap the 2nd dropdown for a label. (user_pref1.jpg)

Screen 3 is the most important. After the user_preferences_wuc.ascx control kept throwing the viewstate error when you click to it from sms_settings_wuc.ascx, I got rid of the 2nd dropdown from user preferences and replaced it with a label:

<asp:Label ID="Label1" runat="server" Text="Label"></asp:Label>


When I did this, the result was screen 3. There was no viewstate error but the label got populated with the viewstate from the previous sms_settings_wuc.ascx control..... How is this possible?????? Can somebody shed some light on what is happening??
Sunil
Top achievements
Rank 1
 answered on 26 Aug 2010
4 answers
186 views

Through the eventArgs param in my OnRowSelected function, I'm using eventArgs.getDataKeyValue(columnName) to get the column's value. (After setting that column name in the ClientDataKeyNames property.)

Is it possible to change that column's value in the underlying datatable in the client-side code? Or do I have to call server-side code to change it? Thanks.

Jeremy Yoder
Top achievements
Rank 1
 answered on 26 Aug 2010
6 answers
171 views
I know that I can make a toolbar will the width of a page by simply setting "Width='100%'" but if I have set Orientation="Vertical" how do I get the toolbar to fill the full height of the page? The obvious "Height= '100%'" doesn't work.

-- 
Stuart
Stuart Hemming
Top achievements
Rank 2
 answered on 26 Aug 2010
2 answers
97 views
I have a tree view that is controled client-side.  I want it to be displayed fully expanded when it is initially displayed.  How do I do this?
Michael
Top achievements
Rank 1
 answered on 26 Aug 2010
2 answers
128 views
Hello,

I am trying to implement a solution similar to the one shown in this demo:

http://demos.telerik.com/aspnet-ajax/grid/examples/dataediting/clienteditbatchupdates/defaultcs.aspx

In my scenario, the columns are variable. (I am implementing a form to enter index fund monthly returns, and the index funds will grow over time. So each row represents a month ending date and each column represents an index fund. The cell intersection represents the rate of return for an index fund for a period.) I have successfully implemented the edit capability as provided in the example, with modifications due to the fact that the columns defined dynamically. 

Now I need to address the insert issue. Specifically, when the "Add a new row" button is clicked, I need to change the styles of the controls in each cell of the insert row such that the label does not display and the edit controls (all are textboxes) display. I have not yet figured out how to accomplish this. I can trap the ItemCommand "InitInsert" in the code-behind, but what to do then? Any help would be appreciated.

Thanks, Steve
neebs
Top achievements
Rank 2
 answered on 26 Aug 2010
2 answers
104 views
With the Rad Editor for ASP.NET Ajax, the behavior when attempting to delete a root path is different than with the older Rad Editor version we are upgrading from.

In the old version, attempting to delete the root folder displays the message "A root folder may not be deleted".

In the latest version, a confirmation dialog is displayed, just like when deleting any other folder.  When OK is clicked however, the folder is simply not deleted, but no error message is displayed.

I realize I can modify the permission on the root folder to disable the delete button, but this seems like it should be built in.

Thanks. Josh

The following a sample application that will reproduce the issue (note you should have a folder in your web root called images_root).

<%@ Page Language="C#" AutoEventWireup="true" %>
  
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
  
<head runat="server">
    <title></title>
</head>
<body>
    <form id="form1" runat="server">
    <div>
        <asp:ScriptManager ID="ScriptManager1" runat="server" />
        <telerik:RadEditor ID="RadEditor1" runat="server">
            <ImageManager ViewPaths="~/images_root" UploadPaths="~/images_root" DeletePaths="~/images_root" />
        </telerik:RadEditor>
    </div>
    </form>
</body>
</html>
Joshua
Top achievements
Rank 1
 answered on 26 Aug 2010
1 answer
289 views
Hi All,
          I already use one dataset to bind the data. I want add some other rows in same radgrid. I dont want insert command item. i want to show values from two stored procedures in the same radgrid. please help me out.
   
Daniel
Telerik team
 answered on 26 Aug 2010
8 answers
291 views
I have a situation where I have a TreeNode that the user is associating data (via the OnNodeClick event) with other controls on the page. Meaning, if the user clicks on node1 and fills in data (to the right of the treeview), but doesn't save the data, then tries to click on node2, before they get to that node, I want to prompt them to Save their data first for node1 before moving to node2.

If the user responds No, I want the rest of the code in this event to not execute (which basically gets the info for the node2 they clicked) and stay at node1, instead of node2. If they respond Yes, I would like the rest of the code to execute and proceed to node2.

I can't get the radconfirm to work. I have the following code in the OnNodeClick event of the treeview.

RadAjaxManager1.ResponseScripts.Add("radconfirm('Are you sure you want to navigate to a different node without saving your data?', confirmCallBackFn);");

I have a RadAjaxManager in my markup and a javascript function as follows:

function

 

confirmCallBackFn(arg) {

 

 

if (arg == false) {

return

}

}


The RadConfirm box doesn't come up at all and proceeds with executing the code within the event....

How can I accomplish this with the Radconfirm? Please don't refer me to another post since I have scoured the internet & this website and am unable to find a concise way on how to do this relatively simple task. A simple code example would be great...
Bill
Top achievements
Rank 2
 answered on 26 Aug 2010
1 answer
760 views
Hello,

I'm using Telerik FileExplorer control with a custom provider from this KB article that allows to browse a shared folder in my local network.

It works fine when I specify a shared folder path like "\\myServer\mySharedFolder", however it does not work with a network path that has just a server name in it (e.g. "\\myServer").

I would like to be able to provide a server name and see the list of all shared folders on such server and then browse these folders.
Is it possible to do?

Thanks,
Michael
Michael
Top achievements
Rank 1
 answered on 26 Aug 2010
2 answers
177 views
Hi,

when i am loading around 1000 to 2000 event , radscheduler geting very slow.
we are written functionality to retrive the recurring event from the data base by reading the rule.
but it is very slow.

check the below code . can you please give me some idea. what's worng with my code.

in future there may around lakhs of appointments. what can we do if we want to improve the performance.

Thanking you
Shashi

   private void BindFamilyCalender()
        {
            string memberIDList = string.Empty;
            for (int counter = 0; counter < dlMyFamily.Items.Count; counter++)
            {
                CheckBox chkMember = (CheckBox)dlMyFamily.Items[counter].FindControl("chkMember");
                HiddenField hdMemberID = (HiddenField)dlMyFamily.Items[counter].FindControl("HidMemberID");
                if ((chkMember != null) && (chkMember.Checked == true))
                {
                    if (memberIDList.Equals(""))
                        memberIDList += hdMemberID.Value;
                    else
                        memberIDList += "," + hdMemberID.Value;
                }
            }
            int FamilyID = Convert.ToInt32(Session["FamilyID"].ToString());
            if (!string.IsNullOrEmpty(memberIDList))
            {
                Members members = qest.BusinessLogic.Member.SelectAllFamilyMembersByFamilyID1(FamilyID, memberIDList);
                RadCalenders radcals = new RadCalenders();
                RadCalenders radcals1 = new RadCalenders();
                RadCalenders radcals2 = new RadCalenders();
                radcals = AddAppointmentByType("2");  

                for (int i = 0; i < members.Count; i++)
                {

                    foreach (MemberCalendar memcal in MemberCalendarBase.GetFamilyMembersAppointmentsByFamilyIDMemberID(FamilyID, Convert.ToInt32(members[i].MemberID)))
                    {
                       
                        if ((members[i].FamilyMember.IsSharedCalenderWithFamily == true && memcal.IsConfidential == false) || Convert.ToInt32(Session["MemberID"].ToString()) == memcal.MemberID || (members[i].FamilyMember.IsSharedCalenderWithFamily == false && memcal.SpecialAppointment != 0))
                        {
                            RadCalender radcal = new RadCalender();
                            radcal.ID = memcal.MemberID;
                            radcal.StartDate = memcal.ApptStartDate.Value;
                            radcal.EndDate = memcal.ApptEndDate.Value;

                            radcal.Content = memcal.ApptContent;
                            radcal.RecurrenceRule = memcal.RecurrenceRule;
                            radcal.RecurrenceParentKey = Convert.ToInt32(memcal.MemberID);
                            radcal.MCID = memcal.MemberCalendarID;
                            if (members[i].FamilyMember.Color.ToString() != "")
                            {
                                radcal.Color = Convert.ToInt32(members[i].FamilyMember.Color);
                            }
                            radcal.IsAdmin = members[i].FamilyMember.IsAdmin.ToString();
                            radcal.Fullname = members[i].FirstName.ToString();                       
                            if (memcal.IsRepeating == true)
                            { radcal.IsRepeating = true; }
                            else
                            { radcal.IsRepeating = false; }

                            radcal.RecurrencePattern = memcal.RecurrencePattern;
                            radcal.RepeatingInterval = memcal.RepeatingInterval;
                            radcal.EventAssociated = memcal.EventAssociated;
                            radcal.Description = memcal.Description;
                            radcal.street = memcal.Street;
                            radcal.city = memcal.City;
                            radcal.state = memcal.State;
                            radcal.zip = memcal.Zip;
                            radcal.IsConfidential = (bool)memcal.IsConfidential; 
                            radcal.Types = 1;
                            radcal.SpecialAppointment = Convert.ToInt32(memcal.SpecialAppointment);

                            if (memcal.RecurrenceRule != "" && memcal.RecurrenceRule != null)
                            {
                                #region Reading recurrence rule for MemberCalener
                                RadCalender radcalRec;
                                Appointment recurringAppointment = new Appointment(radcal.ID, Convert.ToDateTime(memcal.ApptStartDate.Value),
                                Convert.ToDateTime(memcal.ApptEndDate.Value), radcal.Content, radcal.RecurrenceRule);

                                RecurrenceRange range = new RecurrenceRange();
                                range.Start = recurringAppointment.Start;
                                range.EventDuration = recurringAppointment.End - recurringAppointment.Start;

                                if (memcal.maxocc.ToString() != "")
                                {
                                    range.MaxOccurences = Convert.ToInt32(memcal.maxocc);
                                }
                                else
                                {
                                    range.MaxOccurences = 1;
                                }

                                string rruleAsString = "";
                                int DayOfMonth = 0;
                                int pIntervel;

                                if (recurringAppointment.RecurrenceRule.Contains("HOURLY") == true)      
                                {
                                    if (memcal.RepeatingInterval != "")
                                    {
                                        pIntervel = Convert.ToInt32(memcal.RepeatingInterval);

                                    }
                                    else
                                    {
                                        pIntervel = 1;

                                    }
                                    HourlyRecurrenceRule rrule = new HourlyRecurrenceRule(pIntervel, range);
                                    rruleAsString = rrule.ToString();

                                    foreach (DateTime occurrence in rrule.Occurrences)
                                    {
                                        radcalRec = new RadCalender();
                                        string pEndDate = (Convert.ToDateTime(occurrence.ToString()) + range.EventDuration).ToString();
                                        radcalRec.ID = memcal.MemberID;
                                        radcalRec.StartDate = occurrence;
                                        radcalRec.EndDate = Convert.ToDateTime(pEndDate);
                                        radcalRec.Content = memcal.ApptContent;
                                        radcalRec.RecurrenceParentKey = Convert.ToInt32(memcal.MemberID);
                                        radcalRec.MCID = memcal.MemberCalendarID;
                                        radcalRec.Types = 1;

                                        if (members[i].FamilyMember.Color.ToString() != "")
                                        {
                                            radcalRec.Color = Convert.ToInt32(members[i].FamilyMember.Color);
                                        }
                                        radcalRec.IsAdmin = members[i].FamilyMember.IsAdmin.ToString();
                                        radcalRec.Fullname = members[i].FirstName.ToString();

                                        radcalRec.RecurrencePattern = memcal.RecurrencePattern;
                                        radcalRec.RepeatingInterval = memcal.RepeatingInterval;
                                        radcalRec.EventAssociated = memcal.EventAssociated;
                                        radcalRec.Description = memcal.Description;
                                        radcalRec.street = memcal.Street;
                                        radcalRec.city = memcal.City;
                                        radcalRec.state = memcal.State;
                                        radcalRec.zip = memcal.Zip;
                                        radcalRec.IsConfidential = (bool)memcal.IsConfidential;
                                        if (memcal.maxocc.ToString() != "")
                                        {
                                            radcalRec.Maxocc = Convert.ToInt32(memcal.maxocc);
                                        }
                                        else
                                        {
                                            radcalRec.Maxocc = 1;
                                        }

                                        radcals.Add(radcalRec);
                                        radcals2.Add(radcalRec);
                                    }
                                }
                                if (recurringAppointment.RecurrenceRule.Contains("DAILY") == true)          // FOR DAILY APPOINTMENTS
                                {
                                    if (memcal.RepeatingInterval != "")
                                    {
                                        pIntervel = Convert.ToInt32(memcal.RepeatingInterval);
                                    }
                                    else
                                    {
                                        pIntervel = 1;
                                    }

                                    DailyRecurrenceRule rrule = new DailyRecurrenceRule(pIntervel, range);
                                    rruleAsString = rrule.ToString();
                                    hidRRule.Value = rruleAsString;
                                    foreach (DateTime occurrence in rrule.Occurrences)
                                    {
                                        radcalRec = new RadCalender();
                                        string pEndDate = (Convert.ToDateTime(occurrence.ToString()) + range.EventDuration).ToString();
                                        radcalRec.ID = memcal.MemberID;
                                        radcalRec.StartDate = occurrence;
                                        radcalRec.EndDate = Convert.ToDateTime(pEndDate);
                                        radcalRec.Content = memcal.ApptContent;
                                        radcalRec.RecurrenceParentKey = Convert.ToInt32(memcal.MemberID);
                                        radcalRec.MCID = memcal.MemberCalendarID;
                                        radcalRec.Types = 1;
                                        if (members[i].FamilyMember.Color.ToString() != "")
                                        {
                                            radcalRec.Color = Convert.ToInt32(members[i].FamilyMember.Color);
                                        }
                                        radcalRec.IsAdmin = members[i].FamilyMember.IsAdmin.ToString();
                                        radcalRec.Fullname = members[i].FirstName.ToString();
                                        radcalRec.RecurrencePattern = memcal.RecurrencePattern;
                                        radcalRec.RepeatingInterval = memcal.RepeatingInterval;
                                        radcalRec.EventAssociated = memcal.EventAssociated;
                                        radcalRec.Description = memcal.Description;
                                        radcalRec.street = memcal.Street;
                                        radcalRec.city = memcal.City;
                                        radcalRec.state = memcal.State;
                                        radcalRec.zip = memcal.Zip;
                                        radcalRec.IsConfidential = (bool)memcal.IsConfidential; 
                                        if (memcal.maxocc.ToString() != "")
                                        {
                                            radcalRec.Maxocc = Convert.ToInt32(memcal.maxocc);
                                        }
                                        else
                                        {
                                            radcalRec.Maxocc = 1;
                                        }
                                        radcals.Add(radcalRec);
                                        radcals2.Add(radcalRec);
                                    }
                                }
                                if (recurringAppointment.RecurrenceRule.Contains("YEARLY") == true)            
                                {
                                    int MonthOfDay = 0;
                                    if (memcal.monthday.ToString() != "")
                                    {
                                        MonthOfDay = Convert.ToInt32(memcal.monthday);
                                    }
                                    else
                                    {
                                        MonthOfDay = 1;
                                    }
                                    if (memcal.RepeatingInterval.ToString() != "")
                                    {
                                        // 21st May 2010 new code
                                        // new code on 21st May 2010 for early recurrence rule.
                                        string MonthIndex = memcal.RepeatingInterval.ToString();
                                        RecurrenceMonth MonthMask = RecurrenceMonth.None;
                                        switch (MonthIndex)
                                        {
                                            case "1":
                                                MonthMask |= RecurrenceMonth.January;
                                                break;
                                            case "2":
                                                MonthMask |= RecurrenceMonth.February;
                                                break;
                                            case "3":
                                                MonthMask |= RecurrenceMonth.March;
                                                break;
                                            case "4":
                                                MonthMask |= RecurrenceMonth.April;
                                                break;
                                            case "5":
                                                MonthMask |= RecurrenceMonth.May;
                                                break;
                                            case "6":
                                                MonthMask |= RecurrenceMonth.June;
                                                break;
                                            case "7":
                                                MonthMask |= RecurrenceMonth.July;
                                                break;
                                            case "8":
                                                MonthMask |= RecurrenceMonth.August;
                                                break;
                                            case "9":
                                                MonthMask |= RecurrenceMonth.September;
                                                break;
                                            case "10":
                                                MonthMask |= RecurrenceMonth.October;
                                                break;
                                            case "11":
                                                MonthMask |= RecurrenceMonth.November;
                                                break;
                                            case "12":
                                                MonthMask |= RecurrenceMonth.December;
                                                break;
                                            default:
                                                MonthMask |= RecurrenceMonth.January;
                                                break;
                                        }
                                        YearlyRecurrenceRule yrrule = new YearlyRecurrenceRule(MonthMask, MonthOfDay, range);
                                        rruleAsString = yrrule.ToString();
                                        foreach (DateTime occurrence in yrrule.Occurrences)
                                        {
                                            radcalRec = new RadCalender();
                                            string pEndDate = (Convert.ToDateTime(occurrence.ToString()) + range.EventDuration).ToString();
                                            radcalRec.ID = memcal.MemberID;
                                            radcalRec.StartDate = occurrence;
                                            radcalRec.EndDate = Convert.ToDateTime(pEndDate);
                                            radcalRec.Content = memcal.ApptContent;
                                            radcalRec.RecurrenceParentKey = Convert.ToInt32(memcal.MemberID);
                                            radcalRec.MCID = memcal.MemberCalendarID;
                                            radcalRec.Types = 1;
                                            if (memcal.monthday.ToString() != "")
                                            {
                                                radcalRec.Monthday = Convert.ToInt32(memcal.monthday);
                                            }
                                            else
                                            {
                                                radcalRec.Monthday = 1;
                                            }
                                            if (members[i].FamilyMember.Color.ToString() != "")
                                            {
                                                radcalRec.Color = Convert.ToInt32(members[i].FamilyMember.Color);
                                            }

                                            radcalRec.IsAdmin = members[i].FamilyMember.IsAdmin.ToString();
                                            radcalRec.Fullname = members[i].FirstName.ToString();

                                            radcalRec.RecurrencePattern = memcal.RecurrencePattern;
                                            radcalRec.RepeatingInterval = memcal.RepeatingInterval;
                                            radcalRec.EventAssociated = memcal.EventAssociated;
                                            radcalRec.Description = memcal.Description;
                                            radcalRec.street = memcal.Street;
                                            radcalRec.city = memcal.City;
                                            radcalRec.state = memcal.State;
                                            radcalRec.zip = memcal.Zip;
                                            radcalRec.SpecialAppointment = Convert.ToInt32(memcal.SpecialAppointment);
                                            radcalRec.IsConfidential = (bool)memcal.IsConfidential;
                                            if (memcal.maxocc.ToString() != "")
                                            {
                                                radcalRec.Maxocc = Convert.ToInt32(memcal.maxocc);
                                            }
                                            else
                                            {
                                                radcalRec.Maxocc = 1;
                                            }

                                            radcals.Add(radcalRec);
                                            radcals2.Add(radcalRec);

                                        }
                                    }
                                }

                                #endregion
                            }
                            else
                            {
                                radcals.Add(radcal);
                                radcals2.Add(radcal);

                            }

                        }

                    }

                }
                radcals1 = BindHolidayCalender1();
                foreach (qest.WebUI.RadCalender objRadCal in radcals1)
                {
                    radcals2.Add(objRadCal);
                }

                radMyScheduler.DataSource = radcals2;
                radMyScheduler.DataBind();
            }
            else
            {
                return;
            }
          
        }

shashidhar ch
Top achievements
Rank 1
 answered on 26 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?