Telerik Forums
Kendo UI for jQuery Forum
0 answers
114 views
how to put validation on multiple checkbox with popup editor..?
Jaymin
Top achievements
Rank 1
 asked on 26 Oct 2012
6 answers
1.1K+ views
I have a numeric textbox that looks like this:
@(Html.Kendo().NumericTextBoxFor(m => m.Location.Latitude).Decimals(8).Min(-90).Max(90).Step(.01).Format("{0:0.########}").Events(events => events.Change("placeMarker")))
Every time someone hits the up/down arrow in the numerictextbox, i want the change event (placeMarker) to run.  But it only runs after the person has clicked outside of the numerictextbox, i.e. it loses focus.  Is there a way around this?
Marjan
Top achievements
Rank 1
 answered on 26 Oct 2012
0 answers
74 views
Hi,

Initially i will have the add button and when i click the add button the list view edit mode will appear and then i will add
the data. Then i will add another list and so on and finally i want to save all the listviews at a time.
how can i do that using kendo ui. Hope you will understand my question.

Thanks and Regards,
Srinivas
srinivas
Top achievements
Rank 1
 asked on 26 Oct 2012
1 answer
125 views
Hi guys,

think this example (http://docs.kendoui.com/api/framework/kendo) is wrong:

Instead of
kendo.format("MVVM - {1}", 12, 24); //12 - 24 
should there be
kendo.format("{0} - {1}", 12, 24); //12 - 24
Not very important but maybe a little bit confusing ....

Cu

Georg
Petur Subev
Telerik team
 answered on 26 Oct 2012
3 answers
427 views

Hello friends, I'm accessing an ASP.NET WebServices that return JSON. I can see the data correctly from the server to in FireBUG: (See Below)
 I am unable to fill my grid with my URL data returned.. What is my mistake?

var dataSource = new kendo.data.DataSource({
        transport: {
            read: {
                url: "WebService.asmx/getAllCustomerName",
                type: "POST",
                contentType: "application/json; charset=utf-8",
                dataType: "json"
            }
        },
        schema: {
            data: function (data) {
                alert(data.d);   /*Data Return Successfully*/
                return data.d;
            }
        },
        error: function (e) {
            alert("Error");
        },
        change: function (e) {
            alert("Change");
        },
        requestStart: function (e) {
            alert("Request Start");
        }
    });


    $("#try").kendoGrid({
        dataSource: dataSource, //No data...
        pageable: true,
        sortable: true,
        height: 450,
        scrollable: { virtual: true },
        selectable: true,
        dataBound: function (e) {
            alert("DataBound");
        },
        columns: [
                    { field: "CustomerID", title: "CustomerID" },
                    { field: "FirstName", title: "FirstName" },
                    { field: "LastName", title: "LastName" },
                    { field: "BalancePoint", title: "BalancePoint" }
                ]
    });


My URL return data of json type:--

{"d":"[{\"BalancePoint\":\"2017.000\",\"CustomerID\":\"000\",\"FirstName\":\"AA\",\"LastName\":\"ZX\"},
{\"BalancePoint\":\"224.000\",\"CustomerID\":\"001\",\"FirstName\":\"AB\",\"LastName\":\"ZY\"},
{\"BalancePoint\":\"1094.000\",\"CustomerID\":\"002\",\"FirstName\":\"AC\",\"LastName\":\"ZZ\"}
]"}
Sky
Top achievements
Rank 1
 answered on 26 Oct 2012
0 answers
292 views
Hi currently I am trying to insert a global javascript object that I have into a template for a column in a grid using a datasource variable as the key.

For example: 

title: columnOfGrid,
template: '#= field1 #, #= field2 #' + jsObject[#= field3 #]

Lets say that field3 = "text"

jsObject = {
"text" : "hello"
};

Why doesn't this work? Is there any way that I can insert the field3 value into the jsObject key selector?

Thanks in advance.
Brian
Top achievements
Rank 1
 asked on 26 Oct 2012
1 answer
197 views
I am working with the following grid and running into an issue with the DetailTemplate:

<%: Html.Kendo().Grid<Thread.Data.Models.Model>()
        .Name("Grid")
        .Columns(columns =>
        {
           columns.Command(command => { command.Edit(); command.Destroy(); }).Width(190).HtmlAttributes(new { style = "text-align:center;" });
           columns.Bound(m => m.ModelID).Hidden();
           columns.Bound(m => m.ModelName).Width(140);
           columns.Bound(m => m.Company).Width(160).ClientTemplate("#= (typeof Company === 'undefined') ? ' ' : Company.CompanyName #").EditorTemplateName("CompanyDropDownList");
            columns.Bound(m => m.DocumentCount).Width(90).ClientTemplate("#= (DocumentCount === null) ? '0' : DocumentCount #");
            columns.Bound(m => m.AlertCount).Width(90).ClientTemplate("#= (AlertCount === null) ? '0' : AlertCount #");
            columns.Bound(m => m.ArticleCount).Width(90).ClientTemplate("#= (ArticleCount === null) ? '0' : ArticleCount #");
           })
        .ClientDetailTemplateId("jobDetailTemplate")
        .ToolBar(toolBar =>
        {
            toolBar.Create();
        })
        .Editable(editable => editable.Mode(Kendo.Mvc.UI.GridEditMode.InLine))
        .HtmlAttributes(new { style = "height: 500px" })
        .Pageable()
        .Sortable()
        .Scrollable()
        .Filterable()
        .Events(events => events.DataBound("dataBound"))
        .DataSource(dataSource => dataSource
            .Ajax()
            .ServerOperation(false)
            .PageSize(2)
            .Events(events => events.Error("error_handler"))
            .Model(model =>
            {
                model.Id(j => j.ModelID);
                model.Field(j => j.ModelID).Editable(false);
                model.Field(j => j.AlertCount).Editable(false);
                model.Field(j => j.ArticleCount).Editable(false);
                model.Field(j => j.DocumentCount).Editable(false);
            })
            .Read(read => read.Action("Model_Read", "Models"))
            .Update(update => update.Action("Model_Save", "Models"))
            .Create(create => create.Action("Model_Save", "Models"))
            .Destroy(destroy => destroy.Action("Model_Destroy", "Models"))
        )
    %>

From there I'm trying to create a DetailTemplate that contains 3 tabs, and in one of the tabs another grid.  So far so good, it loads rows and works fine.  But I want to be able to create/edit/delete the rows in the grid.  When I remove the comments from toolbar, editable, columns.Command in the code below I get this error on the line creating the grid.

 The model item passed into the dictionary is of type 'System.Int32', but this dictionary requires a model item of type 'System.String'.

items.Add().Text("Documents").Content(obj => Html.Kendo().Grid<Thread.Data.Models.Article>()

Is this possible to achieve, or am I missing an obvious error?  I saw it in a Telerik ASP.NET demo and wanted to try it here.

   
<script id="jobDetailTemplate" type="text/kendo-tmpl">
       <%: Html.Kendo().TabStrip()
            .Name("TabStrip_#=ModelID#")
            .SelectedIndex(0)
            .Items(items =>
            {
                items.Add().Text("Articles").Content(
                    "<div class='employee-details'>" +
                        "<ul>" +
                            "<li><label>Country:</label>test 1</li>" +
                            "<li><label>City:</label>test 2</li>" +
                            "<li><label>Address:</label>test 3</li>" +
                            "<li><label>Home Phone:</label>test 4</li>" +
                        "</ul>" +
                    "</div>"
                );  
                items.Add().Text("Alerts").Content(
                    "<div class='employee-details'>" +
                        "<ul>" +
                            "<li><label>Country:</label>another test</li>" +
                            "<li><label>City:</label>1</li>" +
                            "<li><label>Address:</label>2</li>" +
                            "<li><label>Home Phone:</label>2</li>" +
                        "</ul>" +
                    "</div>"
                );
                items.Add().Text("Documents").Content(obj => Html.Kendo().Grid<Thread.Data.Models.Article>()
                    .Name("Articles_#ModelID#")
                    //.Toolbar(toolbar => toolbar.Create())
                    //.Editable(editable => editable.Mode(Kendo.Mvc.UI.GridEditMode.InLine))
                    .Columns(columns =>
                    {
                        //columns.Command(command => { command.Edit(); command.Destroy(); }).Width(190).HtmlAttributes(new { style = "text-align:center;" });
                        columns.Bound(a => a.ArticleID).Width(101);
                        columns.Bound(a => a.ArticleName).Width(140);
                        columns.Bound(a => a.CompanyID).Width(200);
                    })
                    .DataSource(dataSource => dataSource
                        .Ajax()
                        .Read(read => read.Action("ModelArticles_Read", "Models", new { modelID = "#=ModelID#" }))
                        .Update(update => update.Action("Article_Save", "Models"))
                        .Create(create => create.Action("Article_Save", "Models"))
                        .Destroy(destroy => destroy.Action("Article_Destroy", "Models"))
                    )
                    .Pageable()
                    .Sortable()
                    .ToClientTemplate()
                );           
            })
            .ToClientTemplate()
            %>
    </script>

Thanks,
Matt
Matt
Top achievements
Rank 1
 answered on 26 Oct 2012
0 answers
181 views
Would it be possible to use something like this for excel exporting?

http://www.kunalbabre.com/projects/table2CSV.php

Im thinking you could change the paging to show all rows then export it then change the paging back to what it was
Sean
Top achievements
Rank 1
 asked on 25 Oct 2012
0 answers
119 views
Hi guys! I'm new here with kendo.  I've already post a similar problem with radcharts, and because i didn't get a solution there I'll try with kendo.

My question is...how can I draw the chart only with the json string ? I have a json response that i get from a webservice, that's not the problem. I only want to draw the BAR CHART with the values ( i don't know how many results will be ).

For example: if a group (G2) got 2 records on 17/08/2012, 0 on 18/08/2012 and 4 the 19/08/2012  I would like to show ONLY THOSE BARS.

The same will be for every GROUP. 


here is my json response (my code is in spanish and for language purposes the translation is: CUANTOS - QUANTITY ; Grupo - GROUP ; FechaCorta - ShortDateString )
[
  {
    "CUANTOS": 2,
    "Grupo": "G3",
    "FechaCorta": "17/08/2012 "
  },
  {
    "CUANTOS": 1,
    "Grupo": "G2",
    "FechaCorta": "22/08/2012 "
  },
  {
    "CUANTOS": 1,
    "Grupo": "G3",
    "FechaCorta": "22/08/2012 "
  },
  {
    "CUANTOS": 1,
    "Grupo": "G1",
    "FechaCorta": "27/08/2012 "
  },
  {
    "CUANTOS": 1,
    "Grupo": "G8",
    "FechaCorta": "28/08/2012 "
  },
  {
    "CUANTOS": 1,
    "Grupo": "G4",
    "FechaCorta": "29/08/2012 "
  },
  {
    "CUANTOS": 2,
    "Grupo": "G8",
    "FechaCorta": "29/08/2012 "
  },
  {
    "CUANTOS": 1,
    "Grupo": "G7",
    "FechaCorta": "30/08/2012 "
  },
  {
    "CUANTOS": 1,
    "Grupo": "G9",
    "FechaCorta": "31/08/2012 "
  },
  {
    "CUANTOS": 3,
    "Grupo": "G6",
    "FechaCorta": "01/09/2012 "
  },
  {
    "CUANTOS": 1,
    "Grupo": "G1",
    "FechaCorta": "03/09/2012 "
  },
  {
    "CUANTOS": 2,
    "Grupo": "G7",
    "FechaCorta": "03/09/2012 "
  },
  {
    "CUANTOS": 1,
    "Grupo": "G5",
    "FechaCorta": "04/09/2012 "
  },
  {
    "CUANTOS": 1,
    "Grupo": "G7",
    "FechaCorta": "04/09/2012 "
  },
  {
    "CUANTOS": 2,
    "Grupo": "G9",
    "FechaCorta": "04/09/2012 "
  },
  {
    "CUANTOS": 2,
    "Grupo": "G5",
    "FechaCorta": "05/09/2012 "
  },
  {
    "CUANTOS": 1,
    "Grupo": "G7",
    "FechaCorta": "05/09/2012 "
  },
  {
    "CUANTOS": 1,
    "Grupo": "G8",
    "FechaCorta": "05/09/2012 "
  },
  {
    "CUANTOS": 1,
    "Grupo": "G6",
    "FechaCorta": "06/09/2012 "
  },
  {
    "CUANTOS": 1,
    "Grupo": "G5",
    "FechaCorta": "07/09/2012 "
  },
  {
    "CUANTOS": 2,
    "Grupo": "G6",
    "FechaCorta": "07/09/2012 "
  },
  {
    "CUANTOS": 1,
    "Grupo": "G7",
    "FechaCorta": "07/09/2012 "
  },
  {
    "CUANTOS": 1,
    "Grupo": "G9",
    "FechaCorta": "07/09/2012 "
  },
  {
    "CUANTOS": 2,
    "Grupo": "G7",
    "FechaCorta": "10/09/2012 "
  },
  {
    "CUANTOS": 1,
    "Grupo": "G4",
    "FechaCorta": "11/09/2012 "
  },
  {
    "CUANTOS": 2,
    "Grupo": "G5",
    "FechaCorta": "11/09/2012 "
  },
  {
    "CUANTOS": 1,
    "Grupo": "G7",
    "FechaCorta": "11/09/2012 "
  },
  {
    "CUANTOS": 1,
    "Grupo": "G6",
    "FechaCorta": "12/09/2012 "
  },
  {
    "CUANTOS": 1,
    "Grupo": "G8",
    "FechaCorta": "12/09/2012 "
  },
  {
    "CUANTOS": 1,
    "Grupo": "G7",
    "FechaCorta": "13/09/2012 "
  },
  {
    "CUANTOS": 1,
    "Grupo": "G9",
    "FechaCorta": "13/09/2012 "
  },
  {
    "CUANTOS": 1,
    "Grupo": "G9",
    "FechaCorta": "14/09/2012 "
  },
  {
    "CUANTOS": 1,
    "Grupo": "G1",
    "FechaCorta": "15/09/2012 "
  },
  {
    "CUANTOS": 2,
    "Grupo": "G7",
    "FechaCorta": "18/09/2012 "
  },
  {
    "CUANTOS": 1,
    "Grupo": "G5",
    "FechaCorta": "19/09/2012 "
  },
  {
    "CUANTOS": 1,
    "Grupo": "G6",
    "FechaCorta": "19/09/2012 "
  },
  {
    "CUANTOS": 1,
    "Grupo": "G7",
    "FechaCorta": "19/09/2012 "
  },
  {
    "CUANTOS": 1,
    "Grupo": "G2",
    "FechaCorta": "20/09/2012 "
  },
  {
    "CUANTOS": 2,
    "Grupo": "G4",
    "FechaCorta": "20/09/2012 "
  },
  {
    "CUANTOS": 1,
    "Grupo": "G5",
    "FechaCorta": "20/09/2012 "
  },
  {
    "CUANTOS": 1,
    "Grupo": "G9",
    "FechaCorta": "20/09/2012 "
  },
  {
    "CUANTOS": 1,
    "Grupo": "G6",
    "FechaCorta": "21/09/2012 "
  },
  {
    "CUANTOS": 1,
    "Grupo": "G8",
    "FechaCorta": "21/09/2012 "
  },
  {
    "CUANTOS": 1,
    "Grupo": "G4",
    "FechaCorta": "29/09/2012 "
  },
  {
    "CUANTOS": 2,
    "Grupo": "G6",
    "FechaCorta": "29/09/2012 "
  },
  {
    "CUANTOS": 3,
    "Grupo": "G3",
    "FechaCorta": "02/10/2012 "
  },
  {
    "CUANTOS": 1,
    "Grupo": "G9",
    "FechaCorta": "02/10/2012 "
  },
  {
    "CUANTOS": 1,
    "Grupo": "G2",
    "FechaCorta": "03/10/2012 "
  },
  {
    "CUANTOS": 1,
    "Grupo": "G3",
    "FechaCorta": "03/10/2012 "
  },
  {
    "CUANTOS": 1,
    "Grupo": "G6",
    "FechaCorta": "03/10/2012 "
  },
  {
    "CUANTOS": 1,
    "Grupo": "G7",
    "FechaCorta": "03/10/2012 "
  },
  {
    "CUANTOS": 2,
    "Grupo": "G8",
    "FechaCorta": "04/10/2012 "
  },
  {
    "CUANTOS": 1,
    "Grupo": "G1",
    "FechaCorta": "05/10/2012 "
  },
  {
    "CUANTOS": 6,
    "Grupo": "G4",
    "FechaCorta": "05/10/2012 "
  },
  {
    "CUANTOS": 1,
    "Grupo": "G6",
    "FechaCorta": "05/10/2012 "
  },
  {
    "CUANTOS": 2,
    "Grupo": "G9",
    "FechaCorta": "05/10/2012 "
  },
  {
    "CUANTOS": 1,
    "Grupo": "G4",
    "FechaCorta": "09/10/2012 "
  },
  {
    "CUANTOS": 1,
    "Grupo": "G6",
    "FechaCorta": "09/10/2012 "
  },
  {
    "CUANTOS": 1,
    "Grupo": "G8",
    "FechaCorta": "09/10/2012 "
  },
  {
    "CUANTOS": 1,
    "Grupo": "G3",
    "FechaCorta": "10/10/2012 "
  },
  {
    "CUANTOS": 2,
    "Grupo": "G4",
    "FechaCorta": "10/10/2012 "
  },
  {
    "CUANTOS": 1,
    "Grupo": "G5",
    "FechaCorta": "10/10/2012 "
  },
  {
    "CUANTOS": 1,
    "Grupo": "G8",
    "FechaCorta": "10/10/2012 "
  },
  {
    "CUANTOS": 1,
    "Grupo": "G9",
    "FechaCorta": "10/10/2012 "
  },
  {
    "CUANTOS": 2,
    "Grupo": "G6",
    "FechaCorta": "11/10/2012 "
  },
  {
    "CUANTOS": 2,
    "Grupo": "G7",
    "FechaCorta": "11/10/2012 "
  },
  {
    "CUANTOS": 2,
    "Grupo": "G8",
    "FechaCorta": "11/10/2012 "
  },
  {
    "CUANTOS": 3,
    "Grupo": "G8",
    "FechaCorta": "12/10/2012 "
  },
  {
    "CUANTOS": 1,
    "Grupo": "G3",
    "FechaCorta": "13/10/2012 "
  },
  {
    "CUANTOS": 6,
    "Grupo": "G8",
    "FechaCorta": "13/10/2012 "
  },
  {
    "CUANTOS": 1,
    "Grupo": "G5",
    "FechaCorta": "14/10/2012 "
  },
  {
    "CUANTOS": 1,
    "Grupo": "G3",
    "FechaCorta": "15/10/2012 "
  },
  {
    "CUANTOS": 1,
    "Grupo": "G4",
    "FechaCorta": "15/10/2012 "
  },
  {
    "CUANTOS": 1,
    "Grupo": "G8",
    "FechaCorta": "15/10/2012 "
  },
  {
    "CUANTOS": 1,
    "Grupo": "G5",
    "FechaCorta": "16/10/2012 "
  },
  {
    "CUANTOS": 1,
    "Grupo": "G7",
    "FechaCorta": "16/10/2012 "
  },
  {
    "CUANTOS": 2,
    "Grupo": "G8",
    "FechaCorta": "16/10/2012 "
  },
  {
    "CUANTOS": 1,
    "Grupo": "G9",
    "FechaCorta": "16/10/2012 "
  },
  {
    "CUANTOS": 2,
    "Grupo": "G7",
    "FechaCorta": "17/10/2012 "
  },
  {
    "CUANTOS": 1,
    "Grupo": "G8",
    "FechaCorta": "17/10/2012 "
  },
  {
    "CUANTOS": 1,
    "Grupo": "G3",
    "FechaCorta": "18/10/2012 "
  },
  {
    "CUANTOS": 1,
    "Grupo": "G4",
    "FechaCorta": "18/10/2012 "
  },
  {
    "CUANTOS": 1,
    "Grupo": "G6",
    "FechaCorta": "18/10/2012 "
  },
  {
    "CUANTOS": 1,
    "Grupo": "G7",
    "FechaCorta": "18/10/2012 "
  },
  {
    "CUANTOS": 1,
    "Grupo": "G7",
    "FechaCorta": "19/10/2012 "
  },
  {
    "CUANTOS": 1,
    "Grupo": "G9",
    "FechaCorta": "19/10/2012 "
  },
  {
    "CUANTOS": 1,
    "Grupo": "G3",
    "FechaCorta": "20/10/2012 "
  },
  {
    "CUANTOS": 2,
    "Grupo": "G4",
    "FechaCorta": "20/10/2012 "
  },
  {
    "CUANTOS": 3,
    "Grupo": "G7",
    "FechaCorta": "20/10/2012 "
  },
  {
    "CUANTOS": 3,
    "Grupo": "G4",
    "FechaCorta": "21/10/2012 "
  },
  {
    "CUANTOS": 1,
    "Grupo": "G4",
    "FechaCorta": "22/10/2012 "
  },
  {
    "CUANTOS": 1,
    "Grupo": "G6",
    "FechaCorta": "22/10/2012 "
  },
  {
    "CUANTOS": 2,
    "Grupo": "G3",
    "FechaCorta": "23/10/2012 "
  },
  {
    "CUANTOS": 4,
    "Grupo": "G4",
    "FechaCorta": "23/10/2012 "
  },
  {
    "CUANTOS": 1,
    "Grupo": "G7",
    "FechaCorta": "23/10/2012 "
  },
  {
    "CUANTOS": 1,
    "Grupo": "G8",
    "FechaCorta": "23/10/2012 "
  }
]
Arturo
Top achievements
Rank 1
 asked on 25 Oct 2012
2 answers
102 views
I have a k-grid with a column that contains an image which fires a k-window when clicked.

This event is removed when using the built-in grouping functionality. I just need to know what event(s) I need to hook in to in order to re-bind the image clicks.
Mike
Top achievements
Rank 1
 answered on 25 Oct 2012
Narrow your results
Selected tags
Tags
Grid
General Discussions
Charts
Data Source
Scheduler
DropDownList
TreeView
MVVM
Editor
Window
DatePicker
Spreadsheet
Upload
ListView (Mobile)
ComboBox
TabStrip
MultiSelect
AutoComplete
ListView
Menu
Templates
Gantt
Validation
TreeList
Diagram
NumericTextBox
Splitter
PanelBar
Drag and Drop
Application
Map
ToolTip
Calendar
PivotGrid
ScrollView (Mobile)
Toolbar
TabStrip (Mobile)
Slider
Button (Mobile)
Filter
SPA
Drawing API
Drawer (Mobile)
Globalization
LinearGauge
Sortable
ModalView
Hierarchical Data Source
Button
FileManager
MaskedTextBox
View
Form
NavBar
Notification
Switch (Mobile)
SplitView
DropDownTree
ListBox
PDFViewer
Sparkline
ActionSheet
TileLayout
PopOver (Mobile)
TreeMap
ButtonGroup
Styling
ColorPicker
Pager
Chat
MultiColumnComboBox
Dialog
DateRangePicker
Checkbox
Timeline
Drawer
DateInput
ProgressBar
MediaPlayer
ImageEditor
TextBox
OrgChart
Accessibility
Effects
Licensing
PivotGridV2
ScrollView
Switch
TextArea
BulletChart
QRCode
ResponsivePanel
Wizard
CheckBoxGroup
Localization
Barcode
Breadcrumb
Collapsible
MultiViewCalendar
Touch
RadioButton
Stepper
Card
ExpansionPanel
Rating
RadioGroup
Badge
Captcha
Heatmap
AppBar
Loader
Security
TaskBoard
Popover
DockManager
TimePicker
FloatingActionButton
CircularGauge
ColorGradient
ColorPalette
DropDownButton
TimeDurationPicker
ToggleButton
BottomNavigation
Ripple
SkeletonContainer
Avatar
Circular ProgressBar
FlatColorPicker
SplitButton
Signature
Chip
ChipList
VS Code Extension
AIPrompt
PropertyGrid
Sankey
Chart Wizard
OTP Input
SpeechToTextButton
InlineAIPrompt
StockChart
ContextMenu
DateTimePicker
RadialGauge
ArcGauge
AICodingAssistant
SmartPasteButton
PromptBox
SegmentedControl
LLM Kit
+? 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?