SlideShare a Scribd company logo
Inside Wijmo 5
A Large-scale JavaScript Product
Chris Bannon
Product Manager, Wijmo
What is Wijmo 5?
 JavaScript UI Controls
 Zero dependencies
 Specialize in data grids and charts
 Includes the famous FlexGrid control
 Focus on performance
 Small core controls and extensible
 Offer additional features as optional extensions
Wijmo Stats
 Distributed Team
 US, Brazil, Canada, Russia, China, India, Myanmar, Japan
 Over 100,000 lines of code (just in Wijmo 5, millions company-wide)
 Over 25 years of experience (first control written in VB)
 Our FlexGrid control can data-bind 1,000,000 records in under 1 second
What Makes Wijmo 5 Special?
 True Controls (Control Classes like in .NET)
 Not Widgets
Control
//Initialize
var myFlexGrid = new wijmo.grid.FlexGrid('#myFlexGrid');
//Show Row Headers
myFlexGrid.headersVisibility = wijmo.grid.HeadersVisibility.All;
Widget
//Initialize
$('#mywijgrid').wijgrid();
//Show Row Headers
$('#mywijgrid').wijgrid('option', 'showRowHeader', true);
Wijmo 5: Architecture
Core
wijmo.js/css
FlexGrid
wijmo.grid.js
FlexChart
wijmo.chart.js
Gauge
wijmo.gauge.js
Input
wijmo.input.js
More to come...
Interop
wijmo.angular.js
Event
CollectionView
Control
Globalize
Styles
Directives
<wj-flex-grid>
<wj-flex-grid-column>
…
FlexGrid Filter
wijmo.grid.filter.js
FlexGrid GroupPanel
wijmo.grid.groupanel.js
FlexGrid DetailRow
wijmo.grid.detail.js
Extensions
FlexChart Analytics
wijmo.chart.analytics.js
FlexChart Annotation
wijmo.chart.annotation.js
FlexChart Interaction
wijmo.chart.interaction.js
Wijmo Demo
Our Tools
 Visual Studio
 TypeScript
 AngularJS
 Bootstrap
 Browser Dev Tools
 BrowserStack
Visual Studio Project Setup
 Visual Studio Project for Control Library
 Folders for Namespaces
 TypeScript files for Classes
 Builds like a standard VS PRoject
Sample Setup
 Each Sample has a VS Solution and Project
 Solution contains
 Sample Project
 Wijmo 5 Project
 Wijmo 5 source is compiled when sample is
run
 Wijmo 5 source can be debugged when
running samples
Debugging Source Code in Visual Studio
Builds
 TFS used for Source Control
 Nightly Builds
 Use MSBuild tasks
 Compile TypeScript
 Add headers/license/copyright to files
 Run Unit Tests
 Build passes/fails based on Unit Tests
TypeScript
 Language from Microsoft
 Created by Anders Hejlsberg, the creator of C#
 Object-oriented with Classes etc.
 Compiles to JavaScript (ES5 or ES6)
 Offers C#-like syntax and features
 Inheritance
 Type safety, design-time error checking
 Based on ECMAScript standards (ES 6)
 Adopted by Google in Angular 2
Wijmo Uses TypeScript
 Our Source Code is all written in TypeScript
 Our developers can apply their C# experience and skill to JS
 We can structure our control library like we would in C#
 Base Control Class
 UI Controls that inherit Base Control Class
 We get C# features when developing
 IntelliSense (autocomplete) in Visual Studio
 Error warnings while programming (no need to wait until runtime to see errors)
 Our controls are extensible
 We can extend our controls easily to add features as extension Classes (like FlexGridFilter)
TypeScript Demo
AngularJS
 MVVM Framework
 Similar to .NET/XAML in JavaScript
 Two-way binding
 Components
Wijmo Supports AngularJS
 We create AngularJS directives for each of our JavaScript Controls
 Our directives support two-way bindings for properties that benefit from it
 We offer templates to make declaring controls even richer (like Cell Templates in
FlexGrid)
 Many of our samples are created with AngularJS
 It is really nice to declare Controls using markup
AngularJS Demo
Bootstrap
 Mobile-first UI framework
 Building blocks for UI
 Forms (Input, Buttons, etc.)
 Navigation
 Layout (Responsive)
 Icons
 Easy way to jump-start UI for an application
Wijmo Likes Bootstrap
 Our default theme matches Bootstrap
 We use Bootstrap in our Samples
 Layout
 Navigation
 Simple UI (buttons, tabs, etc.)
 Using Bootstrap for simple stuff allows us to focus
on the complicated UI controls like Grids/Charts
Browser Dev Tools
 Spend a lot of our time in Dev Tools
 Inspecting Elements
 Stepping through code
 Profiling for performance
 Memory profiling (for leaks)
 FPS monitoring (preventing jank)
 Emulating devices
Browser Stack
 Web-based Cross-device testing
 Test any browser, on any device, running any
OS
 Ideal to quickly confirm issues/fixes in
environments you don’t have setup
 Can also easily connect to localhost (with perf
cost)
 Covers most needs for testing
 Not ideal for debugging
 Not ideal for testing performance issues since
it is an emulation across web
Browser Testing Demo
Thanks
 http://wijmo.com
 https://www.visualstudio.com/en-us/visual-studio-homepage-vs.aspx
 http://www.typescriptlang.org/
 https://angularjs.org/
 http://getbootstrap.com/
 https://developer.mozilla.org/en-US/Learn/Discover_browser_developer_tools
 https://www.browserstack.com/

More Related Content

PPTX
Wijmo 5 - GrapeCity Echo Tokyo
PPTX
Visualizing large data sets with wijmo enterprise webinar
PPTX
AngularJS - GrapeCity Echo Tokyo
PPTX
Welcome to Wijmo 5
PPTX
Migrating MVVM Applications to HTML5
PPTX
XAML/C# to HTML5/JS
PPTX
A Smooth Transition to HTML5 Using MVVM
PDF
Easy HTML5 Data Visualization with Kendo UI DataViz
Wijmo 5 - GrapeCity Echo Tokyo
Visualizing large data sets with wijmo enterprise webinar
AngularJS - GrapeCity Echo Tokyo
Welcome to Wijmo 5
Migrating MVVM Applications to HTML5
XAML/C# to HTML5/JS
A Smooth Transition to HTML5 Using MVVM
Easy HTML5 Data Visualization with Kendo UI DataViz

What's hot (20)

PPTX
AngularJS
PPTX
Building web applications using kendo ui and the mvvm pattern
PPTX
MVVM & Validation with Kendo UI
PPTX
HTML5 Charting in ASP.NET using RadHtmlChart
PPTX
Developing ASP.NET MVC Applications Quicker With Kendo UI
PDF
Fork CMS
PPTX
Scaffolding in One Asp.Net
PDF
Introduction to ASP.NET MVC
PPTX
You know what iMEAN? Using MEAN stack for application dev on Informix
PPTX
Kendo UI Wrappers in ASP.NET Core
PDF
Angular JS - Wikilogia
PPTX
MEAN stack
PPTX
SnapyX - ParisJS
PPTX
Choosing a JavaScript Framework
PPTX
Mvc summary
PPTX
PPTX
Building SPA with Kendo UI
PPTX
Introduction to mean stack
PPTX
Modern Applications With Asp.net Core 5 and Vue JS 3
PDF
ASP.NET MVC 3
AngularJS
Building web applications using kendo ui and the mvvm pattern
MVVM & Validation with Kendo UI
HTML5 Charting in ASP.NET using RadHtmlChart
Developing ASP.NET MVC Applications Quicker With Kendo UI
Fork CMS
Scaffolding in One Asp.Net
Introduction to ASP.NET MVC
You know what iMEAN? Using MEAN stack for application dev on Informix
Kendo UI Wrappers in ASP.NET Core
Angular JS - Wikilogia
MEAN stack
SnapyX - ParisJS
Choosing a JavaScript Framework
Mvc summary
Building SPA with Kendo UI
Introduction to mean stack
Modern Applications With Asp.net Core 5 and Vue JS 3
ASP.NET MVC 3
Ad

Similar to Inside Wijmo 5, a Large-scale JavaScript Product (20)

PPTX
Inside Wijmo 5 - GrapeCity Echo 2016
PPTX
Better User Experience with .NET
PPTX
Improving Software Quality- 2-day Tester Training
PPTX
GOSIM 2024 - GenUI: Declarative Rust Cross-platform Framework Based on Makepad
PPSX
Practical alm testing
PPTX
STARWEST 2010 - 7 Steps To Improving Software Quality using Microsoft Test Ma...
PPTX
10 commandments for writing spiffy Lightning Apps
PPTX
Coded ui in a nutshell
PPTX
STARWEST 2011 - 7 Steps To Improving Software Quality using Microsoft Test Ma...
PPTX
Lap Around Visual Studio 2010 Ultimate And TFS 2010
PPTX
STAREAST 2011 - 7 Steps To Improving Software Quality using Microsoft Test Ma...
ODP
Plug yourself in and your app will never be the same (1 hr edition)
PPTX
Coded ui - lesson 1 - overview
PPT
Stepin evening presented
PDF
Automation Open Source tools
PPTX
Debugging VBScript in InduSoft Web Studio Projects
PPTX
What is New in Wonderware InduSoft Web Studio 8.0+SP1+Patch 1
PPTX
Whats New In 2010 (Msdn & Visual Studio)
PPT
Vsts 2
PPT
Silverlight2 Unit Testing Slides
Inside Wijmo 5 - GrapeCity Echo 2016
Better User Experience with .NET
Improving Software Quality- 2-day Tester Training
GOSIM 2024 - GenUI: Declarative Rust Cross-platform Framework Based on Makepad
Practical alm testing
STARWEST 2010 - 7 Steps To Improving Software Quality using Microsoft Test Ma...
10 commandments for writing spiffy Lightning Apps
Coded ui in a nutshell
STARWEST 2011 - 7 Steps To Improving Software Quality using Microsoft Test Ma...
Lap Around Visual Studio 2010 Ultimate And TFS 2010
STAREAST 2011 - 7 Steps To Improving Software Quality using Microsoft Test Ma...
Plug yourself in and your app will never be the same (1 hr edition)
Coded ui - lesson 1 - overview
Stepin evening presented
Automation Open Source tools
Debugging VBScript in InduSoft Web Studio Projects
What is New in Wonderware InduSoft Web Studio 8.0+SP1+Patch 1
Whats New In 2010 (Msdn & Visual Studio)
Vsts 2
Silverlight2 Unit Testing Slides
Ad

Recently uploaded (20)

PDF
Per capita expenditure prediction using model stacking based on satellite ima...
PDF
Electronic commerce courselecture one. Pdf
PDF
Build a system with the filesystem maintained by OSTree @ COSCUP 2025
PDF
Unlocking AI with Model Context Protocol (MCP)
PDF
NewMind AI Weekly Chronicles - August'25-Week II
PPTX
sap open course for s4hana steps from ECC to s4
PDF
Dropbox Q2 2025 Financial Results & Investor Presentation
PDF
7 ChatGPT Prompts to Help You Define Your Ideal Customer Profile.pdf
PPTX
ACSFv1EN-58255 AWS Academy Cloud Security Foundations.pptx
PDF
Profit Center Accounting in SAP S/4HANA, S4F28 Col11
PDF
The Rise and Fall of 3GPP – Time for a Sabbatical?
PDF
Review of recent advances in non-invasive hemoglobin estimation
PDF
Encapsulation_ Review paper, used for researhc scholars
PDF
Advanced methodologies resolving dimensionality complications for autism neur...
PPTX
Digital-Transformation-Roadmap-for-Companies.pptx
DOCX
The AUB Centre for AI in Media Proposal.docx
PPTX
20250228 LYD VKU AI Blended-Learning.pptx
PPTX
A Presentation on Artificial Intelligence
PDF
TokAI - TikTok AI Agent : The First AI Application That Analyzes 10,000+ Vira...
PDF
Machine learning based COVID-19 study performance prediction
Per capita expenditure prediction using model stacking based on satellite ima...
Electronic commerce courselecture one. Pdf
Build a system with the filesystem maintained by OSTree @ COSCUP 2025
Unlocking AI with Model Context Protocol (MCP)
NewMind AI Weekly Chronicles - August'25-Week II
sap open course for s4hana steps from ECC to s4
Dropbox Q2 2025 Financial Results & Investor Presentation
7 ChatGPT Prompts to Help You Define Your Ideal Customer Profile.pdf
ACSFv1EN-58255 AWS Academy Cloud Security Foundations.pptx
Profit Center Accounting in SAP S/4HANA, S4F28 Col11
The Rise and Fall of 3GPP – Time for a Sabbatical?
Review of recent advances in non-invasive hemoglobin estimation
Encapsulation_ Review paper, used for researhc scholars
Advanced methodologies resolving dimensionality complications for autism neur...
Digital-Transformation-Roadmap-for-Companies.pptx
The AUB Centre for AI in Media Proposal.docx
20250228 LYD VKU AI Blended-Learning.pptx
A Presentation on Artificial Intelligence
TokAI - TikTok AI Agent : The First AI Application That Analyzes 10,000+ Vira...
Machine learning based COVID-19 study performance prediction

Inside Wijmo 5, a Large-scale JavaScript Product

  • 1. Inside Wijmo 5 A Large-scale JavaScript Product
  • 3. What is Wijmo 5?  JavaScript UI Controls  Zero dependencies  Specialize in data grids and charts  Includes the famous FlexGrid control  Focus on performance  Small core controls and extensible  Offer additional features as optional extensions
  • 4. Wijmo Stats  Distributed Team  US, Brazil, Canada, Russia, China, India, Myanmar, Japan  Over 100,000 lines of code (just in Wijmo 5, millions company-wide)  Over 25 years of experience (first control written in VB)  Our FlexGrid control can data-bind 1,000,000 records in under 1 second
  • 5. What Makes Wijmo 5 Special?  True Controls (Control Classes like in .NET)  Not Widgets Control //Initialize var myFlexGrid = new wijmo.grid.FlexGrid('#myFlexGrid'); //Show Row Headers myFlexGrid.headersVisibility = wijmo.grid.HeadersVisibility.All; Widget //Initialize $('#mywijgrid').wijgrid(); //Show Row Headers $('#mywijgrid').wijgrid('option', 'showRowHeader', true);
  • 6. Wijmo 5: Architecture Core wijmo.js/css FlexGrid wijmo.grid.js FlexChart wijmo.chart.js Gauge wijmo.gauge.js Input wijmo.input.js More to come... Interop wijmo.angular.js Event CollectionView Control Globalize Styles Directives <wj-flex-grid> <wj-flex-grid-column> … FlexGrid Filter wijmo.grid.filter.js FlexGrid GroupPanel wijmo.grid.groupanel.js FlexGrid DetailRow wijmo.grid.detail.js Extensions FlexChart Analytics wijmo.chart.analytics.js FlexChart Annotation wijmo.chart.annotation.js FlexChart Interaction wijmo.chart.interaction.js
  • 8. Our Tools  Visual Studio  TypeScript  AngularJS  Bootstrap  Browser Dev Tools  BrowserStack
  • 9. Visual Studio Project Setup  Visual Studio Project for Control Library  Folders for Namespaces  TypeScript files for Classes  Builds like a standard VS PRoject
  • 10. Sample Setup  Each Sample has a VS Solution and Project  Solution contains  Sample Project  Wijmo 5 Project  Wijmo 5 source is compiled when sample is run  Wijmo 5 source can be debugged when running samples
  • 11. Debugging Source Code in Visual Studio
  • 12. Builds  TFS used for Source Control  Nightly Builds  Use MSBuild tasks  Compile TypeScript  Add headers/license/copyright to files  Run Unit Tests  Build passes/fails based on Unit Tests
  • 13. TypeScript  Language from Microsoft  Created by Anders Hejlsberg, the creator of C#  Object-oriented with Classes etc.  Compiles to JavaScript (ES5 or ES6)  Offers C#-like syntax and features  Inheritance  Type safety, design-time error checking  Based on ECMAScript standards (ES 6)  Adopted by Google in Angular 2
  • 14. Wijmo Uses TypeScript  Our Source Code is all written in TypeScript  Our developers can apply their C# experience and skill to JS  We can structure our control library like we would in C#  Base Control Class  UI Controls that inherit Base Control Class  We get C# features when developing  IntelliSense (autocomplete) in Visual Studio  Error warnings while programming (no need to wait until runtime to see errors)  Our controls are extensible  We can extend our controls easily to add features as extension Classes (like FlexGridFilter)
  • 16. AngularJS  MVVM Framework  Similar to .NET/XAML in JavaScript  Two-way binding  Components
  • 17. Wijmo Supports AngularJS  We create AngularJS directives for each of our JavaScript Controls  Our directives support two-way bindings for properties that benefit from it  We offer templates to make declaring controls even richer (like Cell Templates in FlexGrid)  Many of our samples are created with AngularJS  It is really nice to declare Controls using markup
  • 19. Bootstrap  Mobile-first UI framework  Building blocks for UI  Forms (Input, Buttons, etc.)  Navigation  Layout (Responsive)  Icons  Easy way to jump-start UI for an application
  • 20. Wijmo Likes Bootstrap  Our default theme matches Bootstrap  We use Bootstrap in our Samples  Layout  Navigation  Simple UI (buttons, tabs, etc.)  Using Bootstrap for simple stuff allows us to focus on the complicated UI controls like Grids/Charts
  • 21. Browser Dev Tools  Spend a lot of our time in Dev Tools  Inspecting Elements  Stepping through code  Profiling for performance  Memory profiling (for leaks)  FPS monitoring (preventing jank)  Emulating devices
  • 22. Browser Stack  Web-based Cross-device testing  Test any browser, on any device, running any OS  Ideal to quickly confirm issues/fixes in environments you don’t have setup  Can also easily connect to localhost (with perf cost)  Covers most needs for testing  Not ideal for debugging  Not ideal for testing performance issues since it is an emulation across web
  • 24. Thanks  http://wijmo.com  https://www.visualstudio.com/en-us/visual-studio-homepage-vs.aspx  http://www.typescriptlang.org/  https://angularjs.org/  http://getbootstrap.com/  https://developer.mozilla.org/en-US/Learn/Discover_browser_developer_tools  https://www.browserstack.com/

Editor's Notes

  • #2: GrapeCity has been developing JavaScript products for over six years. The browser landscape has changed greatly since we started and we have learned a lot along the way. Today, we manage Wijmo 5, a suite of JavaScript UI controls, specializing in a high-performance datagrid and powerful charts. In this session, we will give you a look inside our project. We will go over the collections of tools, frameworks, languages and patterns that we have refined over the years. You walk away from this session with useful tips for managing large-scale JavaScript applications.
  • #7: Wijmo 5 is modular. The core is required, everything else is optional. Modules are small (less than 100k minified). The core contains general-purpose classes such as Event and CollectionView. FlexGrid is our data grid, with the same object model as the XAML version. FlexChart is our chart component, with support for multiple data types. Input contains controls such as ComboBox, InputDate, InputTime, InputNumber, etc. All controls are MVVM-compatible with object modes similar to their XAML counterparts. All this makes creating HTML5 applications as easy as creating Silverlight applications. And it also makes porting Silverlight applications much easier.
  • #8: Explore Benchmark
  • #16: Custom Wijmo Control Sample
  • #19: FlexGrid 101 (Angular) JSFiddle Angular