Telerik Forums
Kendo UI for jQuery Forum
1 answer
116 views

Hello,

We recently stumbled across the Popup adjustSize option. It is actually incredibly useful for getting more fine grained control over tooltip positioning, as it lets us pad out the effective size of the tooltip bounds by a well defined fixed amount.

We had previously done this by using various CSS tricks, none of which were as robust as just using adjustSize.

Could this please be documented properly in future Kendo releases? 

thanks,

Rowan

 

Dimo
Telerik team
 answered on 17 Mar 2016
9 answers
328 views

Hi Telerik,

 

I would like to set a hyperlink for KENDO GANTT Task, so when the user click on a KENDO GANTT Task bar the browser opens for example www.google.com or www.telerik.com. 

I don't find any property, which I can use to do this.

My data ist in a JSON string.

Greetings and Thanks

Toni!

Toni
Top achievements
Rank 1
 answered on 17 Mar 2016
3 answers
1.8K+ views
I am using the KendoUI library. I have a list containing the supported languages for my application. Something like this:

var LanguagesTest = new List<LanguagesOptions>
                                {
                                   LanguagesOptions.Tr,
                                   LanguagesOptions.Gr
                                };

What I want to accomplish is display somehow all the supported languages in the grid and display them as links. I tried to list them in a single grid cell like this:

columns: [
                  
                    {
                        field: "LanguagesTest",
                        width: 30
                    }
                ]

but I receive [object Object] in the cell. How can I display the members of a list in a single grid row ? Is that possible ? If not, is there a way to enumerate through the list and display a grid column for every List member ? Any other suggestions will be welcome, too. Here is the complete code for my grid. It gets json data from a controller:

 $("#grid").kendoGrid({
                dataSource: {
                    transport: {
                        read: {
                            url: "FranchiseListData",
                            dataType: "json"
                        }
                    },
                    pageSize: 10
                },
                height: 400,
                filterable: true,
                sortable: true,
                pageable: true,
                columns: [
                    {
                        template: '<a href="FranchiseDetails/#=Id#">#=FolderName#</a>',
                        field: "FolderName",
                        title: "Name",
                        width: 50
                    },
                    {
                        field: "Afk",
                        width: 30,
                        filterable: false
                    },
                    {
                        field: "Associate",
                        width: 50
                    },
                    {
                        field: "LanguagesTest",
                        width: 30
                    },
                    {
                        field: "Network",
                        width: 40
                    },
                    {
                        field: "LobbyTemplate",
                        title: "Lobby",
                        width: 20
                    },
                    {
                        field: "TableTemplate",
                        title: "Table",
                        width: 30
                    },
                    {
                        field: "InstallerExeName",
                        title: "Installer Exe Name",
                        width: 50
                    },
                    {
                        field: "ExeIconName",
                        title: "Exe Icon Name",
                        width: 50
                    }
                    ]
            });

Any help with some code examples or suggestions will be greatly appreciated. Thank You!
Dimiter Topalov
Telerik team
 answered on 17 Mar 2016
2 answers
647 views
I havent been able to figure out how I can create a multi-page form/wizard using Kendo Window. Each page will also include a left tabstrip with a next/prev page on the bottom of the content. Has anyone been able to do this? Or can direct me to how I can figure this out? Please help! You guys are my only hope! Thanks.
Boyan Dimitrov
Telerik team
 answered on 17 Mar 2016
1 answer
151 views

Hi, 

Is it possible to show only the aggregate (sum) for the top level nodes (parentId == null)? I just want 1 single aggregate row at the very end of the table. Can this be achieved?

Best,

 

Ama

Nikolay Rusev
Telerik team
 answered on 17 Mar 2016
5 answers
382 views

I am trying to use spreadsheet.fromJSON method and getting this error.

 

Uncaught TypeError: Cannot read property 'start' of undefinede.support.browser.msie.e.support.browser.version.e.Class.extend.visible @ kendo.all.min.ext:80e.support.browser.msie.e.support.browser.version.e.Class.extend.visible @ kendo.all.min.ext:80e.support.browser.msie.e.support.browser.version.e.Class.extend.view @ kendo.all.min.ext:80e.support.browser.msie.e.support.browser.version.e.Class.extend.render @ kendo.all.min.ext:79(anonymous function) @ kendo.all.min.ext:79e.support.browser.msie.e.support.browser.version.e.Class.extend.render @ kendo.all.min.ext:79e.support.browser.msie.e.support.browser.version.e.ui.Widget.extend.refresh @ kendo.all.min.ext:85e.support.browser.msie.e.support.browser.version.e.ui.Widget.extend._workbookChange @ kendo.all.min.ext:85i.extend.trigger @ kendo.all.min.ext:25e.support.browser.msie.e.support.browser.version.e.Observable.extend._sheetChange @ kendo.all.min.ext:78i.extend.trigger @ kendo.all.min.ext:25e.support.browser.msie.e.support.browser.version.e.Observable.extend.triggerChange @ kendo.all.min.ext:76e.support.browser.msie.e.support.browser.version.e.Observable.extend.activeSheet @ kendo.all.min.ext:78e.support.browser.msie.e.support.browser.version.e.ui.Widget.extend.activeSheet @ kendo.all.min.ext:85e.support.browser.msie.e.support.browser.version.e.ui.Widget.extend.fromJSON @ kendo.all.min.ext:85(anonymous function) @ fire @ jquery-1.11.1.js:3119self.fireWith @ jquery-1.11.1.js:3231done @ jquery-1.11.1.js:9275callback @ jquery-1.11.1.js:9685

 

This is my response from the rest call .

[{"name":"2AChart","selection":null,"activeCell":null,"frozenRows":0,"frozenColumns":0,"rows":[{"index":0,"width":40,"cells":[{"format":"","background":"#91897E","color":"#ffffff","fontSize":13,"bold":false,"textAlign":"center","verticalAlign":"center","index":0,"value":"Calendar Year Performance Name"},{"format":"","background":"#91897E","color":"#ffffff","fontSize":13,"bold":false,"textAlign":"center","verticalAlign":"center","index":9,"value":"2007"},{"format":"","background":"#91897E","color":"#ffffff","fontSize":13,"bold":false,"textAlign":"center","verticalAlign":"center","index":8,"value":"2008"},{"format":"","background":"#91897E","color":"#ffffff","fontSize":13,"bold":false,"textAlign":"center","verticalAlign":"center","index":7,"value":"2009"},{"format":"","background":"#91897E","color":"#ffffff","fontSize":13,"bold":false,"textAlign":"center","verticalAlign":"center","index":6,"value":"2010"},{"format":"","background":"#91897E","color":"#ffffff","fontSize":13,"bold":false,"textAlign":"center","verticalAlign":"center","index":5,"value":"2011"},{"format":"","background":"#91897E","color":"#ffffff","fontSize":13,"bold":false,"textAlign":"center","verticalAlign":"center","index":4,"value":"2012"},{"format":"","background":"#91897E","color":"#ffffff","fontSize":13,"bold":false,"textAlign":"center","verticalAlign":"center","index":3,"value":"2013"},{"format":"","background":"#91897E","color":"#ffffff","fontSize":13,"bold":false,"textAlign":"center","verticalAlign":"center","index":2,"value":"2014"},{"format":"","background":"#91897E","color":"#ffffff","fontSize":13,"bold":false,"textAlign":"center","verticalAlign":"center","index":1,"value":"2015"}]},{"index":1,"width":40,"cells":[{"format":null,"background":"#E9E7E5","color":"#000000","fontSize":13,"bold":false,"textAlign":"center","verticalAlign":"center","index":0,"value":null},{"format":null,"background":"#E9E7E5","color":"#000000","fontSize":13,"bold":false,"textAlign":"center","verticalAlign":"center","index":1,"value":null},{"format":null,"background":"#E9E7E5","color":"#000000","fontSize":13,"bold":false,"textAlign":"center","verticalAlign":"center","index":2,"value":null},{"format":null,"background":"#E9E7E5","color":"#000000","fontSize":13,"bold":false,"textAlign":"center","verticalAlign":"center","index":3,"value":null},{"format":null,"background":"#E9E7E5","color":"#000000","fontSize":13,"bold":false,"textAlign":"center","verticalAlign":"center","index":4,"value":null},{"format":null,"background":"#E9E7E5","color":"#000000","fontSize":13,"bold":false,"textAlign":"center","verticalAlign":"center","index":5,"value":null},{"format":null,"background":"#E9E7E5","color":"#000000","fontSize":13,"bold":false,"textAlign":"center","verticalAlign":"center","index":6,"value":null},{"format":null,"background":"#E9E7E5","color":"#000000","fontSize":13,"bold":false,"textAlign":"center","verticalAlign":"center","index":7,"value":null},{"format":null,"background":"#E9E7E5","color":"#000000","fontSize":13,"bold":false,"textAlign":"center","verticalAlign":"center","index":8,"value":null},{"format":null,"background":"#E9E7E5","color":"#000000","fontSize":13,"bold":false,"textAlign":"center","verticalAlign":"center","index":9,"value":null},{"format":"","background":"#E9E7E5","color":"#000000","fontSize":13,"bold":false,"textAlign":"center","verticalAlign":"center","index":0,"value":"Tuttle Tactical Management US Core ETF"}]},{"index":2,"width":40,"cells":[{"format":"_(0.00_);[Red](0.00)","background":"#ffffff","color":"#000000","fontSize":13,"bold":false,"textAlign":"center","verticalAlign":"center","index":0,"value":-9.32},{"format":null,"background":"#ffffff","color":"#000000","fontSize":13,"bold":false,"textAlign":"center","verticalAlign":"center","index":1,"value":null},{"format":null,"background":"#ffffff","color":"#000000","fontSize":13,"bold":false,"textAlign":"center","verticalAlign":"center","index":2,"value":null},{"format":null,"background":"#ffffff","color":"#000000","fontSize":13,"bold":false,"textAlign":"center","verticalAlign":"center","index":3,"value":null},{"format":null,"background":"#ffffff","color":"#000000","fontSize":13,"bold":false,"textAlign":"center","verticalAlign":"center","index":4,"value":null},{"format":null,"background":"#ffffff","color":"#000000","fontSize":13,"bold":false,"textAlign":"center","verticalAlign":"center","index":5,"value":null},{"format":null,"background":"#ffffff","color":"#000000","fontSize":13,"bold":false,"textAlign":"center","verticalAlign":"center","index":6,"value":null},{"format":null,"background":"#ffffff","color":"#000000","fontSize":13,"bold":false,"textAlign":"center","verticalAlign":"center","index":7,"value":null},{"format":null,"background":"#ffffff","color":"#000000","fontSize":13,"bold":false,"textAlign":"center","verticalAlign":"center","index":8,"value":null},{"format":null,"background":"#ffffff","color":"#000000","fontSize":13,"bold":false,"textAlign":"center","verticalAlign":"center","index":9,"value":null},{"format":"","background":"#ffffff","color":"#000000","fontSize":13,"bold":false,"textAlign":"center","verticalAlign":"center","index":0,"value":"WBI Tactical SMG Shares ETF"}]},{"index":3,"width":40,"cells":[{"format":"_(0.00_);[Red](0.00)","background":"#E9E7E5","color":"#000000","fontSize":13,"bold":false,"textAlign":"center","verticalAlign":"center","index":0,"value":-8.31},{"format":"_(0.00_);[Red](0.00)","background":"#E9E7E5","color":"#000000","fontSize":13,"bold":false,"textAlign":"center","verticalAlign":"center","index":1,"value":1.08},{"format":"_(0.00_);[Red](0.00)","background":"#E9E7E5","color":"#000000","fontSize":13,"bold":false,"textAlign":"center","verticalAlign":"center","index":2,"value":8.43},{"format":null,"background":"#E9E7E5","color":"#000000","fontSize":13,"bold":false,"textAlign":"center","verticalAlign":"center","index":3,"value":null},{"format":null,"background":"#E9E7E5","color":"#000000","fontSize":13,"bold":false,"textAlign":"center","verticalAlign":"center","index":4,"value":null},{"format":null,"background":"#E9E7E5","color":"#000000","fontSize":13,"bold":false,"textAlign":"center","verticalAlign":"center","index":5,"value":null},{"format":null,"background":"#E9E7E5","color":"#000000","fontSize":13,"bold":false,"textAlign":"center","verticalAlign":"center","index":6,"value":null},{"format":null,"background":"#E9E7E5","color":"#000000","fontSize":13,"bold":false,"textAlign":"center","verticalAlign":"center","index":7,"value":null},{"format":null,"background":"#E9E7E5","color":"#000000","fontSize":13,"bold":false,"textAlign":"center","verticalAlign":"center","index":8,"value":null},{"format":null,"background":"#E9E7E5","color":"#000000","fontSize":13,"bold":false,"textAlign":"center","verticalAlign":"center","index":9,"value":null},{"format":"","background":"#E9E7E5","color":"#000000","fontSize":13,"bold":false,"textAlign":"center","verticalAlign":"center","index":0,"value":"YieldShares High Income ETF"}]},{"index":4,"width":40,"cells":[{"format":"_(0.00_);[Red](0.00)","background":"#ffffff","color":"#000000","fontSize":13,"bold":false,"textAlign":"center","verticalAlign":"center","index":0,"value":-0.99},{"format":"_(0.00_);[Red](0.00)","background":"#ffffff","color":"#000000","fontSize":13,"bold":false,"textAlign":"center","verticalAlign":"center","index":1,"value":6.01},{"format":"_(0.00_);[Red](0.00)","background":"#ffffff","color":"#000000","fontSize":13,"bold":false,"textAlign":"center","verticalAlign":"center","index":2,"value":22.4},{"format":"_(0.00_);[Red](0.00)","background":"#ffffff","color":"#000000","fontSize":13,"bold":false,"textAlign":"center","verticalAlign":"center","index":3,"value":15.14},{"format":"_(0.00_);[Red](0.00)","background":"#ffffff","color":"#000000","fontSize":13,"bold":false,"textAlign":"center","verticalAlign":"center","index":4,"value":-1.8},{"format":"_(0.00_);[Red](0.00)","background":"#ffffff","color":"#000000","fontSize":13,"bold":false,"textAlign":"center","verticalAlign":"center","index":5,"value":16.95},{"format":"_(0.00_);[Red](0.00)","background":"#ffffff","color":"#000000","fontSize":13,"bold":false,"textAlign":"center","verticalAlign":"center","index":6,"value":26.35},{"format":null,"background":"#ffffff","color":"#000000","fontSize":13,"bold":false,"textAlign":"center","verticalAlign":"center","index":7,"value":null},{"format":null,"background":"#ffffff","color":"#000000","fontSize":13,"bold":false,"textAlign":"center","verticalAlign":"center","index":8,"value":null},{"format":null,"background":"#ffffff","color":"#000000","fontSize":13,"bold":false,"textAlign":"center","verticalAlign":"center","index":9,"value":null},{"format":"","background":"#ffffff","color":"#000000","fontSize":13,"bold":false,"textAlign":"center","verticalAlign":"center","index":0,"value":"iShares Core Aggressive Allocation"}]}],"columns":[{"index":0,"width":120},{"index":1,"width":120},{"index":2,"width":120},{"index":3,"width":120},{"index":4,"width":120},{"index":5,"width":120},{"index":6,"width":120},{"index":7,"width":120},{"index":8,"width":120},{"index":9,"width":120},{"index":10,"width":120}],"mergedCells":null}]

and the request and response header is 

 

HTTP/1.1 200 OK Server: Apache-Coyote/1.1 Vary: Accept-Encoding Content-Encoding: gzip Content-Type: application/json Content-Length: 701 Date: Tue, 08 Mar 2016 22:26:32 GMT
Request Headersview source
Accept:
application/json, text/javascript, */*; q=0.01
Accept-Encoding:
gzip, deflate, sdch
Accept-Language:
en-US,en;q=0.8
Connection:
keep-alive
Host:
localhost:8080
Referer:
http://localhost:8080/product-connect-app/
User-Agent:
Mozilla/5.0 (Windows NT 6.1; WOW64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/48.0.2564.116 Safari/537.36
X-Requested-With:
XMLHttpRequest

Initially , I tried to set to use the data() property of the datasource for the fromJSON method . and then I tried

$.getJSON('rest/reporting/testing.json').done(function (sheet) {
                    spreadsheet.fromJSON({ sheets: sheet })
                });

However both the options failed and generated the error above .  However, if the paste the response as a string in sheets : "....." works . Please advice.

T. Tsonev
Telerik team
 answered on 17 Mar 2016
6 answers
1.7K+ views

I would like to turn off (and back on) the auto suggest/auto complete functionality based on user selection.

Here is the scenario:

I have an address form with the fields Suburb, State, Postcode and Country (screen shot attached)

  -   When the Country (kendoDropDownList) is set to “Australia” the Suburb box suggests items based on the Australia post listings (datasource is a webservice)  and the State and Post Code fields are also disabled as they are populated by the AutoComplete data item.

  -   Now, when the user selects a country other than “Australia” I want the Suburb box to stop suggesting Australian suburbs and re-enable the State and Post Code fields.

Binding to the DropDownList’s select event is fine and re-enabling the fields works, but I can’t work out how to stop the AutoComplete box.

Any help is greatly appreciated!
Thanks

Georgi Krustev
Telerik team
 answered on 17 Mar 2016
2 answers
70 views

Hi,

   I'm using kendo ui grid with some foreign columns.  I mean some dropdownlist to select Key/Value pair data.  It works fine in update mode, but not in add mode.

I started with this example

Here is a litle snippet.  AssignmentType is a column filled by an object with properties Id and Description (Edit mode is a dropdownlist).  You can see attach files to understand what I mean.

If I remove the column from grid, all works fine, but if the column is shown in the grid, the value for column AssignmentType is set to value "1" and not the object selected in the dropdownlist.

 

Thank you for your help

$scope.mainGridOptions = {
            dataSource: {
                transport: {
                    read: {
                        url: "/Request/GetRequests",
                        dataType: "json"
                    },
                    update: {
                        url: "/Request/UpdateRequest",
                        dataType: "json"
                    },
                    destroy: {
                        url: "/Request/DeleteRequest",
                        dataType: "json"
                    },
                    create: {
                        url: "/Request/CreateRequest",
                        dataType: "json"
                    },
                    parameterMap: function (options, operation) {
                        if (operation !== "read" && options.models) {
                            return { models: kendo.stringify(options.models) };
                        }
                    }
                },
                batch: true,
                pageSize: 20,
                schema: {
                    model: {
                        id: "RequestId",
                        fields: {
                            RequestId: { type: "number" },
                            AssignmentType: { },
                            RequestType: { },
                            CERType: { }
                        }
                    }
                }
            },
          pageable: true,
          height: 550,
          toolbar: ["create"],
          columns: [
                            { command: ["edit", "destroy"], title: "&nbsp;", width: "250px" },
                            {
                                field: "RequestId",
                                filterable: false
                            },
                            {
                                field: "AssignmentType",
                                title: "AssignmentType",
                                template: "#=AssignmentType == null ? '' : AssignmentType.Description#"

                            },
                            {
                                field: "RequestType",
                                title: "RequestType",
                                template: "#=RequestType == null ? '' : RequestType.Description#"
                            },
                            {
                                field: "CERType",
                                title: "CERType",
                                template: "#=CERType == null ? '' : CERType.Description#"
                            }            

Steve
Top achievements
Rank 1
 answered on 17 Mar 2016
1 answer
228 views

Hello, 

 

I`m having a bit of a problem, I have set up a tree view, everything get's loaded properly. The problem that I am facing is that I cannot for some reason access the source and target data items.

The thing that baffles me is that on the select using e.node event I`m getting the proper data: 

{_events: Object, _handlers: Object, _id: "56e687375f800af840a30683", name: "5", tenantId: "56bdcc6c3a0328620c306d72"…}
_childrenOptions: Object
_events: Object
_handlers: Object
_id: "56e687375f800af840a30683"
_loaded: false
address: me.extend.init
assets: me.extend.init[0]
attrs: me.extend.init[0]
childNodes: me.extend.init[0]
dirty: false
hasChildren: false
id: "56e687375f800af840a30683"
index: 1
name: "5"
parent: ()
parentId: "56e687305f800af840a30681"
path: "1/3/5"
tenantId: "56bdcc6c3a0328620c306d72"
uid: "a8b4032a-db93-452c-a622-3fe93a5b4ab4"

But in the drop using the same thing on e.destinationNode or e.targetNode I get something like this 

o {_events: Object, _handlers: Object, _loaded: true, text: "↵ ↵ 5↵", uid: "9030564d-9f42-491c-8824-21983e3cbe04"…}
_childrenOptions: Object
_events: Object
_handlers: Object
_loaded: true
children: J.extend.init
dirty: false
expanded: false
hasChildren: false
id: ""
items: me.extend.init[0]
parent: ()
text: "↵ ↵ 5↵"
uid: "9030564d-9f42-491c-8824-21983e3cbe04"
__proto__: i

In both cases I`m using: 

$("#treeview2").data("kendoTreeView").dataItem(e.destinationNode)

 

Treeview: 

$("#treeview2").kendoTreeView({
     dataSource: schema,
     dataTextField: "name",
     dragAndDrop: true,
     drag: drag,
     drop: drop,
     select: select,
     dataBound: onDataBound,
     template :kendo.template($("#treeview-template").html())
   });

Schema:

var schema = new kendo.data.HierarchicalDataSource({
    transport: {
      read: function (options) {
        // ajax request
      }
    },
    schema: {
      model: {
        id: "_id",
        hasChildren: "hasLocations",
        children: "chd"
      }
    }
  });

 

Alex Gyoshev
Telerik team
 answered on 17 Mar 2016
3 answers
247 views

So I have the recurrence editor in my edit form, and it works as its included with the code: 

<div class="k-edit-label"><label for="recurrenceRule">Repeat</label></div>
 
            <div data-container-for="recurrenceRule" class="k-edit-field">
              <div data-bind="value:recurrenceRule" name="recurrenceRule" data-role="recurrenceeditor"></div>
            </div>

And activated with the script:

editable: {
            template: $("#editorx").html()
        }

 

Is this possible in a custom add form? I have found no reference in the documentation on how to created kendo type templates for the add forms, only edit.

 

Thanks in advance.

Vladimir Iliev
Telerik team
 answered on 17 Mar 2016
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
Application
Map
Drag and Drop
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
ListBox
DropDownTree
PDFViewer
Sparkline
ActionSheet
TileLayout
PopOver (Mobile)
TreeMap
ButtonGroup
ColorPicker
Pager
Styling
Chat
MultiColumnComboBox
Dialog
DateRangePicker
Checkbox
Timeline
Drawer
DateInput
ProgressBar
MediaPlayer
ImageEditor
TextBox
OrgChart
Accessibility
Effects
PivotGridV2
ScrollView
Switch
TextArea
BulletChart
Licensing
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
+? more
Top users last month
Chester
Top achievements
Rank 1
Iron
Simon
Top achievements
Rank 1
Iron
Douglas
Top achievements
Rank 2
Iron
Iron
SUNIL
Top achievements
Rank 3
Iron
Iron
Iron
Marco
Top achievements
Rank 3
Iron
Iron
Iron
Want to show your ninja superpower to fellow developers?
Top users last month
Chester
Top achievements
Rank 1
Iron
Simon
Top achievements
Rank 1
Iron
Douglas
Top achievements
Rank 2
Iron
Iron
SUNIL
Top achievements
Rank 3
Iron
Iron
Iron
Marco
Top achievements
Rank 3
Iron
Iron
Iron
Want to show your ninja superpower to fellow developers?
Want to show your ninja superpower to fellow developers?