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/
Ad

More Related Content

What's hot (20)

AngularJS
AngularJS AngularJS
AngularJS
Vineeth Nair
 
Building web applications using kendo ui and the mvvm pattern
Building web applications using kendo ui and the mvvm patternBuilding web applications using kendo ui and the mvvm pattern
Building web applications using kendo ui and the mvvm pattern
Aspenware
 
MVVM & Validation with Kendo UI
MVVM & Validation with Kendo UIMVVM & Validation with Kendo UI
MVVM & Validation with Kendo UI
Lohith Goudagere Nagaraj
 
HTML5 Charting in ASP.NET using RadHtmlChart
HTML5 Charting in ASP.NET using RadHtmlChartHTML5 Charting in ASP.NET using RadHtmlChart
HTML5 Charting in ASP.NET using RadHtmlChart
Lohith Goudagere Nagaraj
 
Developing ASP.NET MVC Applications Quicker With Kendo UI
Developing ASP.NET MVC Applications Quicker With Kendo UIDeveloping ASP.NET MVC Applications Quicker With Kendo UI
Developing ASP.NET MVC Applications Quicker With Kendo UI
Lohith Goudagere Nagaraj
 
Fork CMS
Fork CMSFork CMS
Fork CMS
Lester Lievens
 
Scaffolding in One Asp.Net
Scaffolding in One Asp.NetScaffolding in One Asp.Net
Scaffolding in One Asp.Net
Lohith Goudagere Nagaraj
 
Introduction to ASP.NET MVC
Introduction to ASP.NET MVCIntroduction to ASP.NET MVC
Introduction to ASP.NET MVC
Sirwan Afifi
 
You know what iMEAN? Using MEAN stack for application dev on Informix
You know what iMEAN? Using MEAN stack for application dev on InformixYou know what iMEAN? Using MEAN stack for application dev on Informix
You know what iMEAN? Using MEAN stack for application dev on Informix
Keshav Murthy
 
Kendo UI Wrappers in ASP.NET Core
Kendo UI Wrappers in ASP.NET CoreKendo UI Wrappers in ASP.NET Core
Kendo UI Wrappers in ASP.NET Core
Lohith Goudagere Nagaraj
 
Angular JS - Wikilogia
Angular JS - WikilogiaAngular JS - Wikilogia
Angular JS - Wikilogia
Mohammed Aljuboori
 
MEAN stack
MEAN stackMEAN stack
MEAN stack
Iryney Baran
 
SnapyX - ParisJS
SnapyX - ParisJSSnapyX - ParisJS
SnapyX - ParisJS
florianharmel
 
Choosing a JavaScript Framework
Choosing a JavaScript FrameworkChoosing a JavaScript Framework
Choosing a JavaScript Framework
Tim Rayburn
 
Mvc summary
Mvc summaryMvc summary
Mvc summary
Muhammad Younis
 
Mean PPT
Mean PPTMean PPT
Mean PPT
Harendra Singh Bisht
 
Building SPA with Kendo UI
Building SPA with Kendo UIBuilding SPA with Kendo UI
Building SPA with Kendo UI
Lohith Goudagere Nagaraj
 
Introduction to mean stack
Introduction to mean stackIntroduction to mean stack
Introduction to mean stack
Praveen Gubbala
 
Modern Applications With Asp.net Core 5 and Vue JS 3
Modern Applications With Asp.net Core 5 and Vue JS 3Modern Applications With Asp.net Core 5 and Vue JS 3
Modern Applications With Asp.net Core 5 and Vue JS 3
Alexandre Malavasi
 
ASP.NET MVC 3
ASP.NET MVC 3ASP.NET MVC 3
ASP.NET MVC 3
Buu Nguyen
 
Building web applications using kendo ui and the mvvm pattern
Building web applications using kendo ui and the mvvm patternBuilding web applications using kendo ui and the mvvm pattern
Building web applications using kendo ui and the mvvm pattern
Aspenware
 
HTML5 Charting in ASP.NET using RadHtmlChart
HTML5 Charting in ASP.NET using RadHtmlChartHTML5 Charting in ASP.NET using RadHtmlChart
HTML5 Charting in ASP.NET using RadHtmlChart
Lohith Goudagere Nagaraj
 
Developing ASP.NET MVC Applications Quicker With Kendo UI
Developing ASP.NET MVC Applications Quicker With Kendo UIDeveloping ASP.NET MVC Applications Quicker With Kendo UI
Developing ASP.NET MVC Applications Quicker With Kendo UI
Lohith Goudagere Nagaraj
 
Introduction to ASP.NET MVC
Introduction to ASP.NET MVCIntroduction to ASP.NET MVC
Introduction to ASP.NET MVC
Sirwan Afifi
 
You know what iMEAN? Using MEAN stack for application dev on Informix
You know what iMEAN? Using MEAN stack for application dev on InformixYou know what iMEAN? Using MEAN stack for application dev on Informix
You know what iMEAN? Using MEAN stack for application dev on Informix
Keshav Murthy
 
Choosing a JavaScript Framework
Choosing a JavaScript FrameworkChoosing a JavaScript Framework
Choosing a JavaScript Framework
Tim Rayburn
 
Introduction to mean stack
Introduction to mean stackIntroduction to mean stack
Introduction to mean stack
Praveen Gubbala
 
Modern Applications With Asp.net Core 5 and Vue JS 3
Modern Applications With Asp.net Core 5 and Vue JS 3Modern Applications With Asp.net Core 5 and Vue JS 3
Modern Applications With Asp.net Core 5 and Vue JS 3
Alexandre Malavasi
 

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

Inside Wijmo 5 - GrapeCity Echo 2016
Inside Wijmo 5 - GrapeCity Echo 2016Inside Wijmo 5 - GrapeCity Echo 2016
Inside Wijmo 5 - GrapeCity Echo 2016
Chris Bannon
 
Better User Experience with .NET
Better User Experience with .NETBetter User Experience with .NET
Better User Experience with .NET
Peter Gfader
 
Improving Software Quality- 2-day Tester Training
Improving Software Quality- 2-day Tester TrainingImproving Software Quality- 2-day Tester Training
Improving Software Quality- 2-day Tester Training
Anna Russo
 
GOSIM 2024 - GenUI: Declarative Rust Cross-platform Framework Based on Makepad
GOSIM 2024 - GenUI: Declarative Rust Cross-platform Framework Based on MakepadGOSIM 2024 - GenUI: Declarative Rust Cross-platform Framework Based on Makepad
GOSIM 2024 - GenUI: Declarative Rust Cross-platform Framework Based on Makepad
GOSIM Foundation
 
Practical alm testing
Practical alm   testingPractical alm   testing
Practical alm testing
Igor Moochnick
 
STARWEST 2010 - 7 Steps To Improving Software Quality using Microsoft Test Ma...
STARWEST 2010 - 7 Steps To Improving Software Quality using Microsoft Test Ma...STARWEST 2010 - 7 Steps To Improving Software Quality using Microsoft Test Ma...
STARWEST 2010 - 7 Steps To Improving Software Quality using Microsoft Test Ma...
Anna Russo
 
10 commandments for writing spiffy Lightning Apps
10 commandments for writing spiffy Lightning Apps10 commandments for writing spiffy Lightning Apps
10 commandments for writing spiffy Lightning Apps
Anup Jadhav
 
Coded ui in a nutshell
Coded ui in a nutshellCoded ui in a nutshell
Coded ui in a nutshell
Omer Karpas
 
STARWEST 2011 - 7 Steps To Improving Software Quality using Microsoft Test Ma...
STARWEST 2011 - 7 Steps To Improving Software Quality using Microsoft Test Ma...STARWEST 2011 - 7 Steps To Improving Software Quality using Microsoft Test Ma...
STARWEST 2011 - 7 Steps To Improving Software Quality using Microsoft Test Ma...
Anna Russo
 
yourfirstcodedui-121217152431-phpapp02.pdf
yourfirstcodedui-121217152431-phpapp02.pdfyourfirstcodedui-121217152431-phpapp02.pdf
yourfirstcodedui-121217152431-phpapp02.pdf
Patiento Del Mar
 
Lap Around Visual Studio 2010 Ultimate And TFS 2010
Lap Around Visual Studio 2010 Ultimate And TFS 2010Lap Around Visual Studio 2010 Ultimate And TFS 2010
Lap Around Visual Studio 2010 Ultimate And TFS 2010
Ed Blankenship
 
STAREAST 2011 - 7 Steps To Improving Software Quality using Microsoft Test Ma...
STAREAST 2011 - 7 Steps To Improving Software Quality using Microsoft Test Ma...STAREAST 2011 - 7 Steps To Improving Software Quality using Microsoft Test Ma...
STAREAST 2011 - 7 Steps To Improving Software Quality using Microsoft Test Ma...
Anna Russo
 
Plug yourself in and your app will never be the same (1 hr edition)
Plug yourself in and your app will never be the same (1 hr edition)Plug yourself in and your app will never be the same (1 hr edition)
Plug yourself in and your app will never be the same (1 hr edition)
Mikkel Flindt Heisterberg
 
Coded ui - lesson 1 - overview
Coded ui - lesson 1 - overviewCoded ui - lesson 1 - overview
Coded ui - lesson 1 - overview
Omer Karpas
 
Stepin evening presented
Stepin evening presentedStepin evening presented
Stepin evening presented
Vijayan Reddy
 
Automation Open Source tools
Automation Open Source toolsAutomation Open Source tools
Automation Open Source tools
QA Club Kiev
 
Debugging VBScript in InduSoft Web Studio Projects
Debugging VBScript in InduSoft Web Studio ProjectsDebugging VBScript in InduSoft Web Studio Projects
Debugging VBScript in InduSoft Web Studio Projects
AVEVA
 
What is New in Wonderware InduSoft Web Studio 8.0+SP1+Patch 1
What is New in Wonderware InduSoft Web Studio 8.0+SP1+Patch 1What is New in Wonderware InduSoft Web Studio 8.0+SP1+Patch 1
What is New in Wonderware InduSoft Web Studio 8.0+SP1+Patch 1
AVEVA
 
Whats New In 2010 (Msdn & Visual Studio)
Whats New In 2010 (Msdn & Visual Studio)Whats New In 2010 (Msdn & Visual Studio)
Whats New In 2010 (Msdn & Visual Studio)
Steve Lange
 
Vsts 2
Vsts 2Vsts 2
Vsts 2
Mohamed Samy
 
Inside Wijmo 5 - GrapeCity Echo 2016
Inside Wijmo 5 - GrapeCity Echo 2016Inside Wijmo 5 - GrapeCity Echo 2016
Inside Wijmo 5 - GrapeCity Echo 2016
Chris Bannon
 
Better User Experience with .NET
Better User Experience with .NETBetter User Experience with .NET
Better User Experience with .NET
Peter Gfader
 
Improving Software Quality- 2-day Tester Training
Improving Software Quality- 2-day Tester TrainingImproving Software Quality- 2-day Tester Training
Improving Software Quality- 2-day Tester Training
Anna Russo
 
GOSIM 2024 - GenUI: Declarative Rust Cross-platform Framework Based on Makepad
GOSIM 2024 - GenUI: Declarative Rust Cross-platform Framework Based on MakepadGOSIM 2024 - GenUI: Declarative Rust Cross-platform Framework Based on Makepad
GOSIM 2024 - GenUI: Declarative Rust Cross-platform Framework Based on Makepad
GOSIM Foundation
 
STARWEST 2010 - 7 Steps To Improving Software Quality using Microsoft Test Ma...
STARWEST 2010 - 7 Steps To Improving Software Quality using Microsoft Test Ma...STARWEST 2010 - 7 Steps To Improving Software Quality using Microsoft Test Ma...
STARWEST 2010 - 7 Steps To Improving Software Quality using Microsoft Test Ma...
Anna Russo
 
10 commandments for writing spiffy Lightning Apps
10 commandments for writing spiffy Lightning Apps10 commandments for writing spiffy Lightning Apps
10 commandments for writing spiffy Lightning Apps
Anup Jadhav
 
Coded ui in a nutshell
Coded ui in a nutshellCoded ui in a nutshell
Coded ui in a nutshell
Omer Karpas
 
STARWEST 2011 - 7 Steps To Improving Software Quality using Microsoft Test Ma...
STARWEST 2011 - 7 Steps To Improving Software Quality using Microsoft Test Ma...STARWEST 2011 - 7 Steps To Improving Software Quality using Microsoft Test Ma...
STARWEST 2011 - 7 Steps To Improving Software Quality using Microsoft Test Ma...
Anna Russo
 
yourfirstcodedui-121217152431-phpapp02.pdf
yourfirstcodedui-121217152431-phpapp02.pdfyourfirstcodedui-121217152431-phpapp02.pdf
yourfirstcodedui-121217152431-phpapp02.pdf
Patiento Del Mar
 
Lap Around Visual Studio 2010 Ultimate And TFS 2010
Lap Around Visual Studio 2010 Ultimate And TFS 2010Lap Around Visual Studio 2010 Ultimate And TFS 2010
Lap Around Visual Studio 2010 Ultimate And TFS 2010
Ed Blankenship
 
STAREAST 2011 - 7 Steps To Improving Software Quality using Microsoft Test Ma...
STAREAST 2011 - 7 Steps To Improving Software Quality using Microsoft Test Ma...STAREAST 2011 - 7 Steps To Improving Software Quality using Microsoft Test Ma...
STAREAST 2011 - 7 Steps To Improving Software Quality using Microsoft Test Ma...
Anna Russo
 
Plug yourself in and your app will never be the same (1 hr edition)
Plug yourself in and your app will never be the same (1 hr edition)Plug yourself in and your app will never be the same (1 hr edition)
Plug yourself in and your app will never be the same (1 hr edition)
Mikkel Flindt Heisterberg
 
Coded ui - lesson 1 - overview
Coded ui - lesson 1 - overviewCoded ui - lesson 1 - overview
Coded ui - lesson 1 - overview
Omer Karpas
 
Stepin evening presented
Stepin evening presentedStepin evening presented
Stepin evening presented
Vijayan Reddy
 
Automation Open Source tools
Automation Open Source toolsAutomation Open Source tools
Automation Open Source tools
QA Club Kiev
 
Debugging VBScript in InduSoft Web Studio Projects
Debugging VBScript in InduSoft Web Studio ProjectsDebugging VBScript in InduSoft Web Studio Projects
Debugging VBScript in InduSoft Web Studio Projects
AVEVA
 
What is New in Wonderware InduSoft Web Studio 8.0+SP1+Patch 1
What is New in Wonderware InduSoft Web Studio 8.0+SP1+Patch 1What is New in Wonderware InduSoft Web Studio 8.0+SP1+Patch 1
What is New in Wonderware InduSoft Web Studio 8.0+SP1+Patch 1
AVEVA
 
Whats New In 2010 (Msdn & Visual Studio)
Whats New In 2010 (Msdn & Visual Studio)Whats New In 2010 (Msdn & Visual Studio)
Whats New In 2010 (Msdn & Visual Studio)
Steve Lange
 
Ad

Recently uploaded (20)

2025-05-Q4-2024-Investor-Presentation.pptx
2025-05-Q4-2024-Investor-Presentation.pptx2025-05-Q4-2024-Investor-Presentation.pptx
2025-05-Q4-2024-Investor-Presentation.pptx
Samuele Fogagnolo
 
Cybersecurity Identity and Access Solutions using Azure AD
Cybersecurity Identity and Access Solutions using Azure ADCybersecurity Identity and Access Solutions using Azure AD
Cybersecurity Identity and Access Solutions using Azure AD
VICTOR MAESTRE RAMIREZ
 
Enhancing ICU Intelligence: How Our Functional Testing Enabled a Healthcare I...
Enhancing ICU Intelligence: How Our Functional Testing Enabled a Healthcare I...Enhancing ICU Intelligence: How Our Functional Testing Enabled a Healthcare I...
Enhancing ICU Intelligence: How Our Functional Testing Enabled a Healthcare I...
Impelsys Inc.
 
Heap, Types of Heap, Insertion and Deletion
Heap, Types of Heap, Insertion and DeletionHeap, Types of Heap, Insertion and Deletion
Heap, Types of Heap, Insertion and Deletion
Jaydeep Kale
 
Noah Loul Shares 5 Steps to Implement AI Agents for Maximum Business Efficien...
Noah Loul Shares 5 Steps to Implement AI Agents for Maximum Business Efficien...Noah Loul Shares 5 Steps to Implement AI Agents for Maximum Business Efficien...
Noah Loul Shares 5 Steps to Implement AI Agents for Maximum Business Efficien...
Noah Loul
 
UiPath Community Berlin: Orchestrator API, Swagger, and Test Manager API
UiPath Community Berlin: Orchestrator API, Swagger, and Test Manager APIUiPath Community Berlin: Orchestrator API, Swagger, and Test Manager API
UiPath Community Berlin: Orchestrator API, Swagger, and Test Manager API
UiPathCommunity
 
Electronic_Mail_Attacks-1-35.pdf by xploit
Electronic_Mail_Attacks-1-35.pdf by xploitElectronic_Mail_Attacks-1-35.pdf by xploit
Electronic_Mail_Attacks-1-35.pdf by xploit
niftliyevhuseyn
 
ThousandEyes Partner Innovation Updates for May 2025
ThousandEyes Partner Innovation Updates for May 2025ThousandEyes Partner Innovation Updates for May 2025
ThousandEyes Partner Innovation Updates for May 2025
ThousandEyes
 
IEDM 2024 Tutorial2_Advances in CMOS Technologies and Future Directions for C...
IEDM 2024 Tutorial2_Advances in CMOS Technologies and Future Directions for C...IEDM 2024 Tutorial2_Advances in CMOS Technologies and Future Directions for C...
IEDM 2024 Tutorial2_Advances in CMOS Technologies and Future Directions for C...
organizerofv
 
Semantic Cultivators : The Critical Future Role to Enable AI
Semantic Cultivators : The Critical Future Role to Enable AISemantic Cultivators : The Critical Future Role to Enable AI
Semantic Cultivators : The Critical Future Role to Enable AI
artmondano
 
Transcript: #StandardsGoals for 2025: Standards & certification roundup - Tec...
Transcript: #StandardsGoals for 2025: Standards & certification roundup - Tec...Transcript: #StandardsGoals for 2025: Standards & certification roundup - Tec...
Transcript: #StandardsGoals for 2025: Standards & certification roundup - Tec...
BookNet Canada
 
Dev Dives: Automate and orchestrate your processes with UiPath Maestro
Dev Dives: Automate and orchestrate your processes with UiPath MaestroDev Dives: Automate and orchestrate your processes with UiPath Maestro
Dev Dives: Automate and orchestrate your processes with UiPath Maestro
UiPathCommunity
 
TrustArc Webinar: Consumer Expectations vs Corporate Realities on Data Broker...
TrustArc Webinar: Consumer Expectations vs Corporate Realities on Data Broker...TrustArc Webinar: Consumer Expectations vs Corporate Realities on Data Broker...
TrustArc Webinar: Consumer Expectations vs Corporate Realities on Data Broker...
TrustArc
 
Into The Box Conference Keynote Day 1 (ITB2025)
Into The Box Conference Keynote Day 1 (ITB2025)Into The Box Conference Keynote Day 1 (ITB2025)
Into The Box Conference Keynote Day 1 (ITB2025)
Ortus Solutions, Corp
 
Cyber Awareness overview for 2025 month of security
Cyber Awareness overview for 2025 month of securityCyber Awareness overview for 2025 month of security
Cyber Awareness overview for 2025 month of security
riccardosl1
 
HCL Nomad Web – Best Practices and Managing Multiuser Environments
HCL Nomad Web – Best Practices and Managing Multiuser EnvironmentsHCL Nomad Web – Best Practices and Managing Multiuser Environments
HCL Nomad Web – Best Practices and Managing Multiuser Environments
panagenda
 
HCL Nomad Web – Best Practices und Verwaltung von Multiuser-Umgebungen
HCL Nomad Web – Best Practices und Verwaltung von Multiuser-UmgebungenHCL Nomad Web – Best Practices und Verwaltung von Multiuser-Umgebungen
HCL Nomad Web – Best Practices und Verwaltung von Multiuser-Umgebungen
panagenda
 
Special Meetup Edition - TDX Bengaluru Meetup #52.pptx
Special Meetup Edition - TDX Bengaluru Meetup #52.pptxSpecial Meetup Edition - TDX Bengaluru Meetup #52.pptx
Special Meetup Edition - TDX Bengaluru Meetup #52.pptx
shyamraj55
 
Technology Trends in 2025: AI and Big Data Analytics
Technology Trends in 2025: AI and Big Data AnalyticsTechnology Trends in 2025: AI and Big Data Analytics
Technology Trends in 2025: AI and Big Data Analytics
InData Labs
 
Role of Data Annotation Services in AI-Powered Manufacturing
Role of Data Annotation Services in AI-Powered ManufacturingRole of Data Annotation Services in AI-Powered Manufacturing
Role of Data Annotation Services in AI-Powered Manufacturing
Andrew Leo
 
2025-05-Q4-2024-Investor-Presentation.pptx
2025-05-Q4-2024-Investor-Presentation.pptx2025-05-Q4-2024-Investor-Presentation.pptx
2025-05-Q4-2024-Investor-Presentation.pptx
Samuele Fogagnolo
 
Cybersecurity Identity and Access Solutions using Azure AD
Cybersecurity Identity and Access Solutions using Azure ADCybersecurity Identity and Access Solutions using Azure AD
Cybersecurity Identity and Access Solutions using Azure AD
VICTOR MAESTRE RAMIREZ
 
Enhancing ICU Intelligence: How Our Functional Testing Enabled a Healthcare I...
Enhancing ICU Intelligence: How Our Functional Testing Enabled a Healthcare I...Enhancing ICU Intelligence: How Our Functional Testing Enabled a Healthcare I...
Enhancing ICU Intelligence: How Our Functional Testing Enabled a Healthcare I...
Impelsys Inc.
 
Heap, Types of Heap, Insertion and Deletion
Heap, Types of Heap, Insertion and DeletionHeap, Types of Heap, Insertion and Deletion
Heap, Types of Heap, Insertion and Deletion
Jaydeep Kale
 
Noah Loul Shares 5 Steps to Implement AI Agents for Maximum Business Efficien...
Noah Loul Shares 5 Steps to Implement AI Agents for Maximum Business Efficien...Noah Loul Shares 5 Steps to Implement AI Agents for Maximum Business Efficien...
Noah Loul Shares 5 Steps to Implement AI Agents for Maximum Business Efficien...
Noah Loul
 
UiPath Community Berlin: Orchestrator API, Swagger, and Test Manager API
UiPath Community Berlin: Orchestrator API, Swagger, and Test Manager APIUiPath Community Berlin: Orchestrator API, Swagger, and Test Manager API
UiPath Community Berlin: Orchestrator API, Swagger, and Test Manager API
UiPathCommunity
 
Electronic_Mail_Attacks-1-35.pdf by xploit
Electronic_Mail_Attacks-1-35.pdf by xploitElectronic_Mail_Attacks-1-35.pdf by xploit
Electronic_Mail_Attacks-1-35.pdf by xploit
niftliyevhuseyn
 
ThousandEyes Partner Innovation Updates for May 2025
ThousandEyes Partner Innovation Updates for May 2025ThousandEyes Partner Innovation Updates for May 2025
ThousandEyes Partner Innovation Updates for May 2025
ThousandEyes
 
IEDM 2024 Tutorial2_Advances in CMOS Technologies and Future Directions for C...
IEDM 2024 Tutorial2_Advances in CMOS Technologies and Future Directions for C...IEDM 2024 Tutorial2_Advances in CMOS Technologies and Future Directions for C...
IEDM 2024 Tutorial2_Advances in CMOS Technologies and Future Directions for C...
organizerofv
 
Semantic Cultivators : The Critical Future Role to Enable AI
Semantic Cultivators : The Critical Future Role to Enable AISemantic Cultivators : The Critical Future Role to Enable AI
Semantic Cultivators : The Critical Future Role to Enable AI
artmondano
 
Transcript: #StandardsGoals for 2025: Standards & certification roundup - Tec...
Transcript: #StandardsGoals for 2025: Standards & certification roundup - Tec...Transcript: #StandardsGoals for 2025: Standards & certification roundup - Tec...
Transcript: #StandardsGoals for 2025: Standards & certification roundup - Tec...
BookNet Canada
 
Dev Dives: Automate and orchestrate your processes with UiPath Maestro
Dev Dives: Automate and orchestrate your processes with UiPath MaestroDev Dives: Automate and orchestrate your processes with UiPath Maestro
Dev Dives: Automate and orchestrate your processes with UiPath Maestro
UiPathCommunity
 
TrustArc Webinar: Consumer Expectations vs Corporate Realities on Data Broker...
TrustArc Webinar: Consumer Expectations vs Corporate Realities on Data Broker...TrustArc Webinar: Consumer Expectations vs Corporate Realities on Data Broker...
TrustArc Webinar: Consumer Expectations vs Corporate Realities on Data Broker...
TrustArc
 
Into The Box Conference Keynote Day 1 (ITB2025)
Into The Box Conference Keynote Day 1 (ITB2025)Into The Box Conference Keynote Day 1 (ITB2025)
Into The Box Conference Keynote Day 1 (ITB2025)
Ortus Solutions, Corp
 
Cyber Awareness overview for 2025 month of security
Cyber Awareness overview for 2025 month of securityCyber Awareness overview for 2025 month of security
Cyber Awareness overview for 2025 month of security
riccardosl1
 
HCL Nomad Web – Best Practices and Managing Multiuser Environments
HCL Nomad Web – Best Practices and Managing Multiuser EnvironmentsHCL Nomad Web – Best Practices and Managing Multiuser Environments
HCL Nomad Web – Best Practices and Managing Multiuser Environments
panagenda
 
HCL Nomad Web – Best Practices und Verwaltung von Multiuser-Umgebungen
HCL Nomad Web – Best Practices und Verwaltung von Multiuser-UmgebungenHCL Nomad Web – Best Practices und Verwaltung von Multiuser-Umgebungen
HCL Nomad Web – Best Practices und Verwaltung von Multiuser-Umgebungen
panagenda
 
Special Meetup Edition - TDX Bengaluru Meetup #52.pptx
Special Meetup Edition - TDX Bengaluru Meetup #52.pptxSpecial Meetup Edition - TDX Bengaluru Meetup #52.pptx
Special Meetup Edition - TDX Bengaluru Meetup #52.pptx
shyamraj55
 
Technology Trends in 2025: AI and Big Data Analytics
Technology Trends in 2025: AI and Big Data AnalyticsTechnology Trends in 2025: AI and Big Data Analytics
Technology Trends in 2025: AI and Big Data Analytics
InData Labs
 
Role of Data Annotation Services in AI-Powered Manufacturing
Role of Data Annotation Services in AI-Powered ManufacturingRole of Data Annotation Services in AI-Powered Manufacturing
Role of Data Annotation Services in AI-Powered Manufacturing
Andrew Leo
 
Ad

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