Telerik Forums
UI for ASP.NET AJAX Forum
2 answers
139 views
I am using a radmenu on the same page as a custom control.  The custom control shows a PDF reader in the web page.
In IE 6 and 7, the menu choices will overlay the custom control when you roll the mouse over them as expected.  In Firefox 3.0, the radmenu choices open but they are underneath the custom control.
Here is what the HTML looks like:

    <asp:Panel ID="pnlShowPDFDocument" runat="server" CssClass="NonCatalogData"
        <telerik:RadMenu ID="RadMenu1" runat="server" Width="1000px" > 
        <CollapseAnimation Type="OutQuint" Duration="200"></CollapseAnimation> 
        <Items> 
            <telerik:RadMenuItem runat="server" Text="Shopping Activities" meta:resourcekey="rmiShoppingActivtiesResource"
                <Items> 
                    <telerik:RadMenuItem runat="server" Text="Favorites" Value="Favorites" meta:resourcekey="rmiFavoritesResource" /> 
                    <telerik:RadMenuItem runat="server" Text="View Cart" Value="ViewCart" meta:resourcekey="rmiViewCartResource" /> 
                    <telerik:RadMenuItem runat="server" Text="Crash Catalog" Value="CrashCatalog" meta:resourcekey="rmiCrashCatalogResource" /> 
                    <telerik:RadMenuItem runat="server" Text="PBE Catalog" Value="PBECatalog" meta:resourcekey="rmiPBECatalogResource" /> 
                    <telerik:RadMenuItem runat="server" Text="Quick Order Entry" Value="QuickOrderEntry" meta:resourcekey="rmiQuickOrderEntryResource" /> 
                    <telerik:RadMenuItem runat="server" Text="EMS Upload" Value="EMSUpload" meta:resourcekey="rmiEMSUploadResource" /> 
                </Items> 
            </telerik:RadMenuItem> 
            <telerik:RadMenuItem runat="server" Text="Inquiries" meta:resourcekey="rmiInquiriesResource"
                <Items> 
                    <telerik:RadMenuItem runat="server" Text="Open Orders" Value="OpenOrders" meta:resourcekey="rmiOpenOrdersResource" /> 
                    <telerik:RadMenuItem runat="server" Text="Order History" Value="OrderHistory" meta:resourcekey="rmiOrderHistoryResource" /> 
                </Items> 
            </telerik:RadMenuItem> 
            <telerik:RadMenuItem runat="server" Text="Site Access" meta:resourcekey="rmiSiteAccessResource"
                <Items> 
                    <telerik:RadMenuItem runat="server" Text="Log Out" Value="LogOut" meta:resourcekey="rmiLogOutResource" /> 
                    <telerik:RadMenuItem runat="server" Text="Select Customer" Value="SelectCustomer" meta:resourcekey="rmiSelectCustomerResource" /> 
                    <telerik:RadMenuItem runat="server" Text="Change Password" Value="ChangePassword" meta:resourcekey="rmiChangePasswordResource" /> 
                </Items> 
            </telerik:RadMenuItem> 
            <telerik:RadMenuItem runat="server" Text="Help" meta:resourcekey="rmiHelpResource"
                <Items> 
                    <telerik:RadMenuItem runat="server" Text="User Instructions" Value="UserInstructions" meta:resourcekey="rmiUserInstructionsResource" /> 
                    <telerik:RadMenuItem runat="server" Text="New Features" Value="NewFeatures" meta:resourcekey="rmiNewFeaturesResource" /> 
                    <telerik:RadMenuItem runat="server" Text="Contact Us" Value="ContactUs" meta:resourcekey="rmiContactUsResource" /> 
                    <telerik:RadMenuItem runat="server" Text="Warranty Info" Value="WarrantyInfo" meta:resourcekey="rmiWarrantyInfoResource" /> 
                    <telerik:RadMenuItem runat="server" Text="Magnuson-Moss Warranty Act" Value="MagMossWarrantyAct" meta:resourcekey="rmiMagMossWarrantyActResource" /> 
                    <telerik:RadMenuItem runat="server" Text="Keyless" Value="Keyless" PostBack="false" NavigateUrl="javascript:GoToKeyless()" meta:resourcekey="rmiKeylessResource" /> 
                </Items> 
            </telerik:RadMenuItem> 
            <telerik:RadMenuItem runat="server" Text="Catalogs" meta:resourcekey="rmiCatalogsResource"
                <Items> 
                    <telerik:RadMenuItem runat="server" Text="Crash Catalog" Value="CrashCatalog" meta:resourcekey="rmiCrashCatalogResource" /> 
                    <telerik:RadMenuItem runat="server" Text="PBE Catalog" Value="PBECatalog" meta:resourcekey="rmiPBECatalogResource" /> 
                </Items> 
            </telerik:RadMenuItem> 
            <telerik:RadMenuItem runat="server" Text="Specials" meta:resourcekey="rmiSpecialsResource"
                <Items> 
                    <telerik:RadMenuItem runat="server" Text="PBE Monthly Specials" Value="PBEMonthlySpecials" meta:resourcekey="rmiPBEMonthlySpecialsResource" /> 
                </Items> 
            </telerik:RadMenuItem> 
        </Items> 
        </telerik:RadMenu> 
        <br /> 
        <cc1:ShowPdf ID="ShowPdf1" runat="server" FilePath="~/Documents/UserInstructions.pdf" BorderStyle="Inset" BorderWidth="2px" 
            Height="600px" Width="990px" /> 
    </asp:Panel> 

Thanks in advance for any suggestions that will resolve this issue.
James
Top achievements
Rank 2
 answered on 08 Jan 2009
7 answers
294 views
I'm evaluating Telerik's Rad Controls for my company. We are currently using ComponentArt but aren't satisfied with it.  I've been looking into the Rad controls. I really like what I've been able to accomplish using the RadControls with minimal effort. However, I'm having trouble getting the virtual scrolling to work at all.  I can get the scroll bar to appear. If I use paging the scroll bar will work for a single page, but not for the whole returned data set and it will not automatically go back and pull the next set of data like the yahoo-style example.  I'm sure I'm doing something wrong but haven't figured it out.

I'm using .net 3.5 and c# and asp.net AJax Rad Grid Control.  My datasource is a collection List.
I've been using the demos: Virtual scrolling and paging as guidance.  My final goal would be to have my app use the Yahoo-style scrolling. However, I'd like to get both types to work.

Any guidance on this would be appreciated.

Code posted below:
ASPX:
                       <telerik:RadGrid ID="RadGrid1" Skin="Office2007" Width="97%"   
                            AllowSorting="True" AllowPaging="True" PageSize="15"   
                         OnNeedDataSource="RadGrid1_NeedDataSource" AllowFilteringByColumn="True"   
                            GridLines="None" ShowGroupPanel="True" runat="server">  
                          <MasterTableView Width="100%" AllowMultiColumnSorting="true" DataKeyNames="RecNo"   
                                AutoGenerateColumns="False" AllowPaging="true"   
                                AllowCustomPaging="True">  
                                <RowIndicatorColumn> 
                                <HeaderStyle Width="20px"></HeaderStyle> 
                                </RowIndicatorColumn> 
 
                                <ExpandCollapseColumn> 
                                <HeaderStyle Width="20px"></HeaderStyle> 
                                </ExpandCollapseColumn> 
                                <Columns> 
                                    <telerik:GridBoundColumn DataField="RecNo" Display="false" Visible="false" UniqueName="recno"></telerik:GridBoundColumn> 
                                    <telerik:GridBoundColumn DataField="CompanyId" HeaderText="Company"   
                                        UniqueName="column1">  
                                    </telerik:GridBoundColumn> 
                                    <telerik:GridBoundColumn DataField="DrafterUserId" HeaderText="Drafter User Id"   
                                        UniqueName="column2">  
                                    </telerik:GridBoundColumn> 
                                    <telerik:GridBoundColumn DataField="IssueNumber" HeaderText="Issue"   
                                        UniqueName="column3">  
                                    </telerik:GridBoundColumn> 
                                    <telerik:GridBoundColumn DataField="OrderNumber" HeaderText="Order Number"   
                                        UniqueName="column4">  
                                    </telerik:GridBoundColumn> 
                                    <telerik:GridBoundColumn DataField="DwgCode" HeaderText="Drawing Code"   
                                        UniqueName="column5">  
                                    </telerik:GridBoundColumn> 
                                    <telerik:GridBoundColumn DataField="Base" HeaderText="Base"   
                                        UniqueName="column6">  
                                    </telerik:GridBoundColumn> 
                                    <telerik:GridBoundColumn DataField="UserId" HeaderText="User Id"   
                                        UniqueName="column7">  
                                    </telerik:GridBoundColumn> 
                                    <telerik:GridBoundColumn DataField="DrawingNumber" HeaderText="Drawing Num."   
                                        UniqueName="column8">  
                                    </telerik:GridBoundColumn> 
                                    <telerik:GridDateTimeColumn DataField="DraftStartDt" DataType="System.DateTime"   
                                        HeaderText="Draft Start Date" UniqueName="column9">  
                                    </telerik:GridDateTimeColumn> 
                                </Columns> 
                                <PagerStyle Visible="False" /> 
                            </MasterTableView> 
                            <HeaderContextMenu Skin="Office2007" EnableTheming="True">  
                            <CollapseAnimation Type="OutQuint" Duration="200"></CollapseAnimation> 
                            </HeaderContextMenu> 
                            <PagerStyle Mode="NextPrevAndNumeric" Visible="false"  /> 
                            <ClientSettings AllowDragToGroup="True" AllowColumnsReorder="True"   
                                ReorderColumnsOnClient="True" ColumnsReorderMethod="Reorder" > 
                                <Scrolling AllowScroll="true" UseStaticHeaders="true"  ScrollHeight="100%" SaveScrollPosition="true" EnableVirtualScrollPaging="true"/>  
                                <Resizing AllowColumnResize="true" /> 
                            </ClientSettings> 
                            <FilterMenu EnableTheming="True" Skin="Office2007">  
                                <CollapseAnimation Duration="200" Type="OutQuint" /> 
                            </FilterMenu> 
                        </telerik:RadGrid> 
 
    <telerik:RadAjaxManager ID="RadAjaxManager1" runat="server" DefaultLoadingPanelID="RadAjaxLoadingPanel1">  
        <AjaxSettings> 
            <telerik:AjaxSetting AjaxControlID="RadGrid1">  
                <UpdatedControls> 
                    <telerik:AjaxUpdatedControl ControlID="RadGrid1"   
                        LoadingPanelID="RadAjaxLoadingPanel1" /> 
                </UpdatedControls> 
            </telerik:AjaxSetting> 
        </AjaxSettings> 
    </telerik:RadAjaxManager> 
    <telerik:RadAjaxLoadingPanel ID="RadAjaxLoadingPanel1" runat="server" Height="75px" 
        Width="75px" Transparency="25" > 
        <img alt="Loading..." src='images/Grid/spinner.gif' style="border: 0px;" /> 
    </telerik:RadAjaxLoadingPanel> 

C# code behind:
.........          
protected void RadGrid1_NeedDataSource(object source, GridNeedDataSourceEventArgs e)  
        {  
            RadGrid1.DataSource = buildGridData();  
            //throw new NotImplementedException();  
        }  
 
        protected void Page_Load(object sender, EventArgs e)  
        {  
            MenuHeader.BuildBaseMenu();  
        }  
 
        public List<Issue> GetIssList()  
        {  
            List<Issue> tmpiss = Issue.getByCompanyId(23);  
            issues = tmpiss;  
            return tmpiss;  
        }  
 
        private List<Issue> buildGridData()  
        {  
            return GetIssList();  
 
        }  
 
........... 
Iana Tsolova
Telerik team
 answered on 08 Jan 2009
1 answer
170 views
I defined a RadTreeView using a template for nodes.
Every node must contain a dropDownList and a Label, filled from a DataTable.

I have 2 problems:
1) When i try Drag & Drop nodes i get an error derived from the DropDownList;
2) if i don't put the DropDownList in the Template (so only the Label) after the drag & drop i lost the template and data fails.

How can i solve this 2 problems?
Above the code.
Thanks a lot.

<%@ Page Language="VB" AutoEventWireup="false" CodeFile="Default.aspx.vb" Inherits="_Default" %>  
  
<%@ Register assembly="Telerik.Web.UI" namespace="Telerik.Web.UI" tagprefix="telerik" %>  
  
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">  
  
<html xmlns="http://www.w3.org/1999/xhtml">  
<head runat="server">  
    <title></title>  
</head>  
<body>  
    <form id="form1" runat="server">  
      
    <asp:ScriptManager ID="ScriptManager1" runat="server">  
    </asp:ScriptManager>     
    <div>  
        <asp:UpdatePanel ID="UpdatePanel1" runat="server">  
            <ContentTemplate>  
                <telerik:RadTreeView ID="RadTreeView1" Runat="server" EnableDragAndDrop="True" EnableDragAndDropBetweenNodes="True" Skin="Outlook" >  
                </telerik:RadTreeView>  
            </ContentTemplate>  
        </asp:UpdatePanel>  
      
    </div>  
    </form>  
</body>  
</html>  
  

Option Strict On  
  
Imports System.Data  
Imports System.Web.UI  
Imports Telerik.Web.UI  
  
  
  
Partial Class _Default : Inherits System.Web.UI.Page  
  
    Dim myDataSet As DataSet  
  
    Protected Sub Page_Load(ByVal sender As ObjectByVal e As EventArgs) Handles Me.Load  
        If Not Page.IsPostBack Then  
  
            myDataSet = New DataSet  
            Dim tb As DataTable = New DataTable("Prova")  
            tb.Columns.Add(New DataColumn("id"))  
            tb.Columns.Add(New DataColumn("name"))  
            tb.Columns.Add(New DataColumn("code"))  
            tb.Columns.Add(New DataColumn("parent"))  
            tb.Columns.Add(New DataColumn("sign"))  
  
            myDataSet.Tables.Add(tb)  
            Dim row As DataRow = myDataSet.Tables("Prova").NewRow()  
            row("id") = 1  
            row("name") = "total"  
            row("code") = 0  
            row("parent") = DBNull.Value  
            row("sign") = DBNull.Value  
            myDataSet.Tables("Prova").Rows.Add(row)  
  
            row = myDataSet.Tables("Prova").NewRow()  
            row("id") = 2  
            row("name") = "liv1"  
            row("code") = 1  
            row("parent") = 0  
            row("sign") = "+"  
            myDataSet.Tables("prova").Rows.Add(row)  
  
            row = myDataSet.Tables("Prova").NewRow()  
            row("id") = 3  
            row("name") = "liv2"  
            row("code") = 2  
            row("parent") = 0  
            row("sign") = "-"  
            myDataSet.Tables("prova").Rows.Add(row)  
  
            row = myDataSet.Tables("Prova").NewRow()  
            row("id") = 4  
            row("name") = "sub-liv1"  
            row("code") = 3  
            row("parent") = 1  
            row("sign") = "tilde"  
            myDataSet.Tables("prova").Rows.Add(row)  
  
            Dim keyColumn(1) As DataColumn  
            keyColumn(0) = myDataSet.Tables("Prova").Columns.Item("id")  
            myDataSet.Tables("Prova").PrimaryKey = keyColumn  
  
            RadTreeView1.NodeTemplate = New myNodeTemplate(myDataSet)  
  
            RadTreeView1.DataSource = myDataSet.Tables("Prova")  
            RadTreeView1.DataTextField = "name"  
            RadTreeView1.DataFieldID = "code"  
            RadTreeView1.DataFieldParentID = "parent"  
            RadTreeView1.DataValueField = "id"  
            RadTreeView1.DataBind()  
            RadTreeView1.ExpandAllNodes()  
  
            Session("RicordaDataSet") = myDataSet  
        Else  
            myDataSet = CType(Session("RicordaDataSet"), DataSet)  
        End If  
  
    End Sub  
  
    Protected Sub RadTreeView1_HandleDrop(ByVal sender As ObjectByVal e As RadTreeNodeDragDropEventArgs) Handles RadTreeView1.NodeDrop  
        Dim sourceNode As RadTreeNode = e.SourceDragNode  
        Dim destNode As RadTreeNode = e.DestDragNode  
        Dim dropPosition As RadTreeViewDropPosition = e.DropPosition  
  
        If destNode IsNot Nothing Then  
            If (sourceNode.TreeView.SelectedNodes.Count <= 1) Then  
                PerformDragAndDrop(dropPosition, sourceNode, destNode)  
            ElseIf (sourceNode.TreeView.SelectedNodes.Count > 1) Then  
                For Each node As RadTreeNode In sourceNode.TreeView.SelectedNodes  
                    PerformDragAndDrop(dropPosition, node, destNode)  
                Next  
            End If  
  
            destNode.Expanded = True  
            sourceNode.TreeView.ClearSelectedNodes()  
        End If  
    End Sub  
  
  
    Private Sub PerformDragAndDrop(ByVal dropPosition As RadTreeViewDropPosition, ByVal sourceNode As RadTreeNode, ByVal destNode As RadTreeNode)  
        If (sourceNode.Equals(destNode) OrElse sourceNode.IsAncestorOf(destNode)) Then  
            Return  
        End If  
        sourceNode.Owner.Nodes.Remove(sourceNode)  
        Select Case (dropPosition)  
            Case RadTreeViewDropPosition.Over ' child  
                If Not sourceNode.IsAncestorOf(destNode) Then  
                    modifyDataSetAfterDragAndDrop(sourceNode, destNode, 1)  
                    destNode.Nodes.Add(sourceNode)  
                End If  
            Case RadTreeViewDropPosition.Above ' sibling - above              
                modifyDataSetAfterDragAndDrop(sourceNode, destNode, 0)  
                destNode.InsertBefore(sourceNode)  
            Case RadTreeViewDropPosition.Below ' sibling - below  
                modifyDataSetAfterDragAndDrop(sourceNode, destNode, 0)  
                destNode.InsertAfter(sourceNode)  
        End Select  
    End Sub  
  
  
    Protected Sub modifyDataSetAfterDragAndDrop(ByVal sourceNode As RadTreeNode, ByVal destNode As RadTreeNode, ByVal flag As Integer)  
        Dim sourceRow As DataRow = myDataSet.Tables("Prova").Rows.Find(sourceNode.Value)  
        Dim destRow As DataRow = myDataSet.Tables("Prova").Rows.Find(destNode.Value)  
        If flag = 1 Then ' Nodo spostato a sotto-nodo di un altro  
            sourceRow("parent") = destRow("code")  
        Else ' Nodo inserito tra altri 2 nodi  
            sourceRow("parent") = destRow("parent")  
        End If  
    End Sub  
  
  
    Class myNodeTemplate : Implements ITemplate  
  
        Dim myDataSetHere As DataSet  
  
        Sub New(ByVal type As DataSet)  
            myDataSetHere = type  
        End Sub  
  
  
        Public Sub InstantiateIn(ByVal container As Control) Implements ITemplate.InstantiateIn  
            Dim ddl1 As New DropDownList()  
            ddl1.Items.Add(New ListItem("Nothing", DBNull.Value.ToString))  
            ddl1.Items.Add(New ListItem("+""+"))  
            ddl1.Items.Add(New ListItem("-""-"))  
            ddl1.Items.Add(New ListItem("tilde""tilde"))  
            ddl1.ID = "ItemDropDownList"  
            ddl1.Text = "Text"  
  
            Dim label1 As New Label()  
            label1.ID = "ItemLabel"  
            label1.Text = "Text"  
            label1.Font.Size = 10  
            label1.Font.Bold = True  
  
            AddHandler label1.DataBinding, AddressOf label1_DataBinding  
            AddHandler ddl1.DataBinding, AddressOf ddl1_DataBinding  
            container.Controls.Add(ddl1)  
            Dim ll As Label = New Label  
            ll.Text = "   "  
            container.Controls.Add(ll)  
            container.Controls.Add(label1)  
        End Sub  
  
  
        Private Sub label1_DataBinding(ByVal sender As ObjectByVal e As EventArgs)  
            Dim target As Label = DirectCast(sender, Label)  
            Dim node As RadTreeNode = DirectCast(target.BindingContainer, RadTreeNode)  
            Dim nodeText As String = DirectCast(DataBinder.Eval(node, "Text"), String)  
            target.Text = nodeText  
        End Sub  
  
  
        Private Sub ddl1_DataBinding(ByVal sender As ObjectByVal e As EventArgs)  
            Dim target As DropDownList = DirectCast(sender, DropDownList)  
            Dim node As RadTreeNode = DirectCast(target.BindingContainer, RadTreeNode)  
            Dim nodeId As String = node.Value  
  
            Dim keyColumn(1) As DataColumn  
            keyColumn(0) = myDataSetHere.Tables("Prova").Columns.Item("id")  
            myDataSetHere.Tables("Prova").PrimaryKey = keyColumn  
  
            Dim row As DataRow = myDataSetHere.Tables("Prova").Rows.Find(node.Value)  
            target.SelectedValue = row("sign").ToString  
        End Sub  
    End Class  
End Class  
  
  
laplace82
Top achievements
Rank 1
 answered on 08 Jan 2009
2 answers
116 views
i want to have a grid that has a format like this
                             Student 1                                            Student 2
              Point            Total           percent           Point          Total          Percent
rank
score
sport
Total      

so every three columns there is a student header, also each column has its own header, and the rank, score are also header. and last is total of all the points for column point. can we do this with telerik grad?
appdev
Top achievements
Rank 1
 answered on 08 Jan 2009
7 answers
143 views
Hi
I have a rad tree with allowEdit = true, I add this line of code
protected override void OnInit(EventArgs e)  
        {  
            base.OnInit(e);  
            RadTreeView1.NodeClick += new Telerik.Web.UI.RadTreeViewEventHandler(RadTreeView1_NodeClick);  
        } 
Now, if I select a node and press the F2 key the node doesn't enter an edit mode.but if I select a node and click on it second time the node enter a edit mode.
If i remove "RadTreeView1.NodeClick +=..." F2 work fine.

any idea or work around to solve it will be great because I have to use nodeClick

Thanks
Roiy
Manoj
Top achievements
Rank 1
 answered on 08 Jan 2009
1 answer
161 views

Hi,
    I am trying to set backcolor of every timeslot according to working hours in a day. This means that if the slot comes between 0800 hrs and 1700hrs, the backcolor of the timeslot is white and if it falls beyond the given range i'm setting the backcolor to gray. This I am doing in the RadScheduler_TimeSlotCreated event. But it is not working.

 

protected

void RadScheduler_TimeSlotCreated(object sender, TimeSlotCreatedEventArgs e)

 

{

 

    if (e.TimeSlot.Start.Hour < 8)

 

    {

        e.TimeSlot.CssClass =

"extended_business_hrs";

 

    }

}

 

I am not even sure if the event is getting fired or not

Simon
Telerik team
 answered on 08 Jan 2009
1 answer
122 views
hi

i have a webcustomcontrol that dynamically adds a file upload, a submit button, an image and various links to update the image via Ajax. all of these are wrapped in an RadAjaxPanel. The ajax bits owrk fine and the image gets updated and all via ajax. The upload button is registered with the ScriptManager on the parent page (which is passed into constructor of cusotmcontrol) as being a postback control rather than an ajax callback control - when user hits upload gets the above javascript message - any ideas?

thanks
Kieran
Sebastian
Telerik team
 answered on 08 Jan 2009
0 answers
61 views
Hi, 
    Is there a way to cause a postback when the user doubleclicks on a timeslot inside the radscheduler and can there be an event handler to handle this event??

Indranik
Top achievements
Rank 1
 asked on 08 Jan 2009
2 answers
141 views
Hello,

As I don't know if I will have content in the datatable I am using as a hierachical datasource for a radtreeview, I want to always have a root node on level 0 and have the hirarchical databinding occuring from level 1.
This to allow adding first node with a contextmenu 'Add' method.
How to do this in codebehind (c#)?
Thanks.

CS
CSurieux
Top achievements
Rank 2
 answered on 08 Jan 2009
1 answer
126 views
How do I make RadWindow popup when clicked on active region on RadChart?
Ves
Telerik team
 answered on 08 Jan 2009
Narrow your results
Selected tags
Tags
+? 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?