SlideShare a Scribd company logo
Inside Wijmo 5
A Large-scale JavaScript Product
Chris Bannon
Global 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, Korea
 Over 100,000 lines of code (just in Wijmo 5, millions company-wide)
 Over 25 years of experience (first control written for 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
OLAP
wijmo.olap.js
Gauge
wijmo.gauge.js
Input
wijmo.input.js
Interop
wijmo.angular.js
Event
CollectionView
Control
Globalize
Styles
Directives
<wj-flex-grid>
<wj-flex-grid-column>
…
FlexSheet
wijmo.grid.sheet.js
MultiRow
wijmo.grid.multirow.js
More…
Extensions
FlexChart Analytics
wijmo.chart.analytics.js
Financial Chart
wijmo.chart.afinance.js
More…
Wijmo Demo
Our Tools
Code
 Visual Studio (and TFS)
 TypeScript
Design
 Less
 Bootstrap
Automated Testing
 QUnit
 Selenium
Manual Testing
 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
Application Setup
 Each sample app 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
Build Process
TFS Server
Devs
Build
Server
Automated QA QA Testers
Unit
Tests
Selenium
Tests
Failed
(Bugs Filed)
Release
Sln
CSProj
TypeScript
Less CSS MSBuild
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
QUnit
 JavaScript Unit Testing Framework
 Created and used by the jQuery Team
 Performance: QUnit is not only easy, but fast.
 Opinionated and lean API, but extensible.
 Compatible: It works on many different environments.
Wijmo Uses QUnit
 We have tests for key features of controls
 Tests are run with release candidate and nightly builds
 We create tests when bugs are found to prevent
regression issues
 Allow us to have some confidence in each build before
it goes through QA
Selenium
 Browser Automation Tool
 Create robust, browser-based regression automation tests
 Scale and distribute scripts across many environments
 Tests can be scripted or recorded
 Can be run from Visual Studio
Wijmo Uses Selenium
 We have tests for key features of controls
 Tests are run with release candidate and nightly builds
 We create tests when bugs are found to prevent regression
issues
 QA and Developers can create tests to add to our collection
 Saves countless hours of manual testing time across many
browsers
LessCSS
 CSS pre-processor
 Supports variables, mixins, etc.
 Functions (math, etc.)
 Wijmo has a core CSS and themes are
lightweight extensions that only change some
shared variables using Less.
 Customers can easily make themes by using
our Less files
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
 Wijmo also integrates with other theme
frameworks like Material Design
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/
 http://lesscss.org/
 http://getbootstrap.com/
 https://qunitjs.com/
 http://www.seleniumhq.org/
 https://developer.mozilla.org/en-US/Learn/Discover_browser_developer_tools
 https://www.browserstack.com/

More Related Content

PPTX
Angular 2 and Wijmo 5 - GrapeCity Echo 2016 Tokyo
PDF
Angular 2 - Core Concepts
PPTX
AngularJS: Service, factory & provider
PDF
Tutto quello che avreste voluto sapere sull'API Management (e non avete mai o...
PPTX
Angular 4 Introduction Tutorial
PDF
An Intro to Angular 2
PDF
Angular js best practice
PPTX
Introduction to Angular js 2.0
Angular 2 and Wijmo 5 - GrapeCity Echo 2016 Tokyo
Angular 2 - Core Concepts
AngularJS: Service, factory & provider
Tutto quello che avreste voluto sapere sull'API Management (e non avete mai o...
Angular 4 Introduction Tutorial
An Intro to Angular 2
Angular js best practice
Introduction to Angular js 2.0

What's hot (20)

PDF
Muhammad azamuddin introduction-to-reactjs
PDF
Introduction to React JS
ODP
Mvc - Titanium
PDF
Introduction to React Native
DOCX
PPTX
AngularJS
PDF
Introduction to angular 4
PPTX
What’s new in angular 2
PPTX
Talk for DevFest 2021 - GDG Bénin
PDF
Angular 4 Tutorial | What's New In Angular 4 | Angular Training | Edureka
PPTX
MVC3 Development with visual studio 2010
PPTX
Introduction to Angular 2
PDF
What angular 13 will bring to the table
PDF
The Ultimate Getting Started with Angular Workshop - Devoxx UK 2017
ODP
Angular 6 - The Complete Guide
PPTX
Dnc2015 azure-microservizi-vforusso
PDF
Isomorphic javascript - Uppsala.js #8
PDF
Angular 2: What's New?
PPSX
Angular 4 fronts
PDF
Angular 2 interview questions and answers
Muhammad azamuddin introduction-to-reactjs
Introduction to React JS
Mvc - Titanium
Introduction to React Native
AngularJS
Introduction to angular 4
What’s new in angular 2
Talk for DevFest 2021 - GDG Bénin
Angular 4 Tutorial | What's New In Angular 4 | Angular Training | Edureka
MVC3 Development with visual studio 2010
Introduction to Angular 2
What angular 13 will bring to the table
The Ultimate Getting Started with Angular Workshop - Devoxx UK 2017
Angular 6 - The Complete Guide
Dnc2015 azure-microservizi-vforusso
Isomorphic javascript - Uppsala.js #8
Angular 2: What's New?
Angular 4 fronts
Angular 2 interview questions and answers
Ad

Viewers also liked (11)

DOCX
Garry's CV
PPTX
How to write a business plan
PDF
basics of css
PPTX
Employee Training - SAP Training Module Project and Injection Mold Training
ZIP
National Mole Day
DOCX
business plan
DOC
Generating searchable public key ciphertexts with hidden structures for fast ...
PPTX
Intro to Manual Testing
PPTX
Introduction to JAVA
PPT
Mathematics of chemistry
PPT
Introducing the New DSpace User Interface
Garry's CV
How to write a business plan
basics of css
Employee Training - SAP Training Module Project and Injection Mold Training
National Mole Day
business plan
Generating searchable public key ciphertexts with hidden structures for fast ...
Intro to Manual Testing
Introduction to JAVA
Mathematics of chemistry
Introducing the New DSpace User Interface
Ad

Similar to Inside Wijmo 5 - GrapeCity Echo 2016 (20)

PPTX
Inside Wijmo 5, a Large-scale JavaScript Product
PPTX
Wijmo 5 - GrapeCity Echo Tokyo
PPTX
Welcome to Wijmo 5
PPTX
JavaScript for ASP.NET programmers (webcast) upload
PPTX
UI5con 2025 - Keynote - Ignite the Future
PDF
Masterin Large Scale Java Script Applications
PDF
Wijmo 2013v1
PPTX
A Smooth Transition to HTML5
PPTX
f8db413453b33e4ffrointend development bbasics.pptx
PPTX
Migrating MVVM Applications to HTML5
PDF
HTML5 Up and Running
PPTX
Visualizing large data sets with wijmo enterprise webinar
PPTX
Get Started with JavaScript Frameworks
PDF
Building frameworks: from concept to completion
PDF
ITCamp 2013 - Lorant Domokos - Chasing the one codebase, multiple platforms d...
PPTX
AI introduction to modern web technologies.pptx
PDF
Building Real-World Dojo Web Applications
PPTX
UI5con 2019 - Keynote for Bangalore
PDF
New Features Coming in Browsers (RIT '09)
PDF
Download Complete JavaScript for NET Developers 1st Edition Ovais Mehboob Ahm...
Inside Wijmo 5, a Large-scale JavaScript Product
Wijmo 5 - GrapeCity Echo Tokyo
Welcome to Wijmo 5
JavaScript for ASP.NET programmers (webcast) upload
UI5con 2025 - Keynote - Ignite the Future
Masterin Large Scale Java Script Applications
Wijmo 2013v1
A Smooth Transition to HTML5
f8db413453b33e4ffrointend development bbasics.pptx
Migrating MVVM Applications to HTML5
HTML5 Up and Running
Visualizing large data sets with wijmo enterprise webinar
Get Started with JavaScript Frameworks
Building frameworks: from concept to completion
ITCamp 2013 - Lorant Domokos - Chasing the one codebase, multiple platforms d...
AI introduction to modern web technologies.pptx
Building Real-World Dojo Web Applications
UI5con 2019 - Keynote for Bangalore
New Features Coming in Browsers (RIT '09)
Download Complete JavaScript for NET Developers 1st Edition Ovais Mehboob Ahm...

Recently uploaded (20)

PDF
Assigned Numbers - 2025 - Bluetooth® Document
PDF
Building Integrated photovoltaic BIPV_UPV.pdf
PDF
A comparative analysis of optical character recognition models for extracting...
PPTX
Spectroscopy.pptx food analysis technology
PDF
Empathic Computing: Creating Shared Understanding
PDF
gpt5_lecture_notes_comprehensive_20250812015547.pdf
PDF
TokAI - TikTok AI Agent : The First AI Application That Analyzes 10,000+ Vira...
PPTX
1. Introduction to Computer Programming.pptx
PPT
“AI and Expert System Decision Support & Business Intelligence Systems”
PPTX
Tartificialntelligence_presentation.pptx
PDF
Optimiser vos workloads AI/ML sur Amazon EC2 et AWS Graviton
PDF
Dropbox Q2 2025 Financial Results & Investor Presentation
PDF
Unlocking AI with Model Context Protocol (MCP)
PDF
Electronic commerce courselecture one. Pdf
PDF
Profit Center Accounting in SAP S/4HANA, S4F28 Col11
PPTX
Machine Learning_overview_presentation.pptx
PDF
Architecting across the Boundaries of two Complex Domains - Healthcare & Tech...
PDF
Spectral efficient network and resource selection model in 5G networks
PDF
Blue Purple Modern Animated Computer Science Presentation.pdf.pdf
PPTX
Programs and apps: productivity, graphics, security and other tools
Assigned Numbers - 2025 - Bluetooth® Document
Building Integrated photovoltaic BIPV_UPV.pdf
A comparative analysis of optical character recognition models for extracting...
Spectroscopy.pptx food analysis technology
Empathic Computing: Creating Shared Understanding
gpt5_lecture_notes_comprehensive_20250812015547.pdf
TokAI - TikTok AI Agent : The First AI Application That Analyzes 10,000+ Vira...
1. Introduction to Computer Programming.pptx
“AI and Expert System Decision Support & Business Intelligence Systems”
Tartificialntelligence_presentation.pptx
Optimiser vos workloads AI/ML sur Amazon EC2 et AWS Graviton
Dropbox Q2 2025 Financial Results & Investor Presentation
Unlocking AI with Model Context Protocol (MCP)
Electronic commerce courselecture one. Pdf
Profit Center Accounting in SAP S/4HANA, S4F28 Col11
Machine Learning_overview_presentation.pptx
Architecting across the Boundaries of two Complex Domains - Healthcare & Tech...
Spectral efficient network and resource selection model in 5G networks
Blue Purple Modern Animated Computer Science Presentation.pdf.pdf
Programs and apps: productivity, graphics, security and other tools

Inside Wijmo 5 - GrapeCity Echo 2016

  • 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, Korea  Over 100,000 lines of code (just in Wijmo 5, millions company-wide)  Over 25 years of experience (first control written for 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);
  • 8. Our Tools Code  Visual Studio (and TFS)  TypeScript Design  Less  Bootstrap Automated Testing  QUnit  Selenium Manual Testing  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. Application Setup  Each sample app 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. Build Process TFS Server Devs Build Server Automated QA QA Testers Unit Tests Selenium Tests Failed (Bugs Filed) Release Sln CSProj TypeScript Less CSS MSBuild
  • 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. QUnit  JavaScript Unit Testing Framework  Created and used by the jQuery Team  Performance: QUnit is not only easy, but fast.  Opinionated and lean API, but extensible.  Compatible: It works on many different environments.
  • 17. Wijmo Uses QUnit  We have tests for key features of controls  Tests are run with release candidate and nightly builds  We create tests when bugs are found to prevent regression issues  Allow us to have some confidence in each build before it goes through QA
  • 18. Selenium  Browser Automation Tool  Create robust, browser-based regression automation tests  Scale and distribute scripts across many environments  Tests can be scripted or recorded  Can be run from Visual Studio
  • 19. Wijmo Uses Selenium  We have tests for key features of controls  Tests are run with release candidate and nightly builds  We create tests when bugs are found to prevent regression issues  QA and Developers can create tests to add to our collection  Saves countless hours of manual testing time across many browsers
  • 20. LessCSS  CSS pre-processor  Supports variables, mixins, etc.  Functions (math, etc.)  Wijmo has a core CSS and themes are lightweight extensions that only change some shared variables using Less.  Customers can easily make themes by using our Less files
  • 21. 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
  • 22. 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  Wijmo also integrates with other theme frameworks like Material Design
  • 23. 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
  • 24. 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
  • 26. Thanks  http://wijmo.com  https://www.visualstudio.com/en-us/visual-studio-homepage-vs.aspx  http://www.typescriptlang.org/  http://lesscss.org/  http://getbootstrap.com/  https://qunitjs.com/  http://www.seleniumhq.org/  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 MultiRow
  • #13: TFS used for Source Control Nightly Builds Use MSBuild tasks Compile TypeScript Add headers/license/copyright to files Run Unit Tests (QUnit) Run Automated UI Tests (Selenium) Build passes/fails based on Tests
  • #16: Custom Wijmo Control Sample
  • #23: FlexGrid 101 (Angular) JSFiddle Angular