SlideShare uma empresa Scribd logo
1 de 85
Baixar para ler offline
Wednesday, November 2, 2011
jARV.US SPOTLIGHT
                              Chris Alfano & Ryon Coleman
                                 @themightychris @ryon55




Wednesday, November 2, 2011
Overview




Wednesday, November 2, 2011
Overview
                   SENCHA TOUCH               EXTJS 4

                   Eagles Draft 2011              Jarv.us

                 Consumer Reports            DynamicWear

                              Christie’s      GoLive.TV




Wednesday, November 2, 2011
Philadelphia Eagles Draft 2011

Wednesday, November 2, 2011
Insta-style
       <!DOCTYPE html>
       <html lang="en">
       <head>
       ! <style>body{background-color:#033}</style>
       ! <link rel="stylesheet" href="css/eagles-init.css+eagles-
       sencha.css+eagles-fonts.css+eagles-overrides.css" type="text/
       css">
       ! <!-- ... -->
       </head>
       <body></body>
       </html>




Wednesday, November 2, 2011
Stretchy backgrounds
           body {
           ! background: url(../img/backgroundLogo.jpg)
                  no-repeat center center #033;
           ! -webkit-background-size: cover;
           }

                                    /* OR */

           .storeCard {
           ! background: url(../img/storeCard.jpg)
                   no-repeat center top;
           ! -webkit-background-size: contain;
           }




Wednesday, November 2, 2011
On-the-fly CSS & JS minifier
       <link rel="stylesheet" type="text/css"
          href="css/eagles-init.css+eagles-sencha.css+eagles-fonts.css
       +eagles-overrides.css" />

       <link rel="stylesheet" href="css/eagles2x.css" media="only
       screen and (-webkit-min-device-pixel-ratio: 1.5)" />

       <script type="text/javascript" src="js/sencha-touch.js+app.js
       +views/*+models/TwitterProxy.js+models/*"></script>




Wednesday, November 2, 2011
<link rel="stylesheet"   href="css/eagles-init.css?debug=1"
       type="text/css">
       <link rel="stylesheet"   href="css/eagles-sencha.css?debug=1"
       type="text/css">
       <link rel="stylesheet"   href="css/eagles-fonts.css?debug=1"
       type="text/css">
       <link rel="stylesheet"   href="css/eagles-overrides.css?debug=1"
       type="text/css">

       <link rel="stylesheet" href="css/eagles2x.css" media="only
       screen and (-webkit-min-device-pixel-ratio: 1.5)" />

       <script type="text/javascript"   src="js/sencha-touch.js?
       debug=1"></script>
       <script type="text/javascript"   src="js/app.js?debug=1"></
       script>
       <script type="text/javascript"   src="js/views/AppViewport.js?
       debug=1"></script>
       <script type="text/javascript"   src="js/views/ArticleCard.js?
       debug=1"></script>
       <script type="text/javascript"   src="js/views/DraftCard.js?
       debug=1"></script>
       <script type="text/javascript"   src="js/views/LandingCard.js?


Wednesday, November 2, 2011
,startAutoRefresh: function() {
       ! this.autoRefreshInterval = setInterval(
       ! ! Ext.createDelegate(this.picksStore.load, this.picksStore)
       ! ! ,this.autoRefreshSeconds * 1000
       ! );
       }

       ,onPicksLoaded: function(store, records, success){!!
       ! if(this.isVisible() && this.liveDraft.isVisible())
       ! ! this.seenPicks = records.length;
       ! else
       ! ! this.updateUnseen(records.length);
       }

       ,onDraftCardActivated: function() {
       ! this.markSeen();
       }
            
       ,markSeen: function() {
       ! this.seenPicks = this.picksStore.getCount();
       ! this.updateUnseen(this.seenPicks);
       }




Wednesday, November 2, 2011
Challenges




       Lessons Learned



Wednesday, November 2, 2011
Challenges
       Learn Sencha Touch and SASS theming :)




       Lessons Learned



Wednesday, November 2, 2011
Challenges
       Learn Sencha Touch and SASS theming :)
       Get and display live updates




       Lessons Learned



Wednesday, November 2, 2011
Challenges
       Learn Sencha Touch and SASS theming :)
       Get and display live updates
       Adapt static images to different screen ratios




       Lessons Learned



Wednesday, November 2, 2011
Challenges
       Learn Sencha Touch and SASS theming :)
       Get and display live updates
       Adapt static images to different screen ratios




       Lessons Learned
       Destroy DOM when you’re done with it




Wednesday, November 2, 2011
Challenges
       Learn Sencha Touch and SASS theming :)
       Get and display live updates
       Adapt static images to different screen ratios




       Lessons Learned
       Destroy DOM when you’re done with it
       Establish clear parameters for post-launch content




Wednesday, November 2, 2011
Challenges
       Learn Sencha Touch and SASS theming :)
       Get and display live updates
       Adapt static images to different screen ratios




       Lessons Learned
       Destroy DOM when you’re done with it
       Establish clear parameters for post-launch content
       -webkit-background-size


Wednesday, November 2, 2011
Wednesday, November 2, 2011
Barcode scanning
       ,onScanPress: function() {
       ! if(window.device) {
       ! ! window.plugins.barcodeScanner.scan(
       ! ! ! Ext.createDelegate(this.onBarcodeSuccess, this)
       ! ! ! ,Ext.createDelegate(this.onBarcodeFailure, this)
       ! ! );
       ! } else {
       ! ! alert('barcode scanning is currently only available in
       native builds');
       ! }
       }

       ,onBarcodeSuccess: function(upc) {
       ! CR.views.viewport.executeBarcodeSearch(upc);
       }




Wednesday, November 2, 2011
StackPanel viewport
       CR.views.viewport.loadCard({
       ! xtype: 'aboutpanel'
       ! ,prevCard: this
       },{
       ! // optional animation controls
       ! animate: 'slide'
       ! ,direction: 'left'
       ! ,reverse: false
       ! ,cover: false
       ! ,reveal: false
       !
       ! // optional stack management
       ! ,clearStack: false // true to erase history stack
       ! ,clearAfter: false // pass a panel instance to clear any
       forward history
       });
                                   https://github.com/JarvusInnovations/Jarvus.mobile.StackPanel




Wednesday, November 2, 2011
DOM destruction
       this.on('beforeactivate', function() {
       !   this.setLoading(true);!
       }, this, {delay: 10});

       this.on('activate', function() {
       !   if(this.loaded) {
       !   !   this.setLoading(false);
       !   !   this.list.refresh(); // redraw existing store contents
       !   } else {
       !   !   this.list.store.load({
       !   !   !   scope: this
       !   !   !   ,callback: function() {
       !   !   !   !   this.setLoading(false);
       !   !   !   }
       !   !   });
       !   }
       }, this);

       this.on('beforedeactivate', function() {
       !   this.list.update('');
       }, this);


Wednesday, November 2, 2011
.x-list-item {
       ! .product {
       ! ! -webkit-box-align: stretch;
       ! ! -webkit-box-orient: horizontal;
       ! ! display: -webkit-box;
       ! ! overflow: hidden;
       ! !
       ! ! & > div { -webkit-transition: -webkit-transform 250ms; }
       !
       ! ! .delete-button-ct {
       ! ! ! -webkit-box-align: center;
       ! ! ! display: -webkit-box;
       ! ! ! margin-right: -85px;
       ! ! ! width: 85px;
       ! ! !
       ! ! ! .x-button { -webkit-box-flex: 1; }
       ! ! }
       ! }
       !
       ! &.confirm-delete .product > * {
             -webkit-transform: translate3d(-85px, 0, 0)
          }
       }


Wednesday, November 2, 2011
Challenges




       Lessons Learned



Wednesday, November 2, 2011
Challenges
       Access native APIs for barcode scanner




       Lessons Learned



Wednesday, November 2, 2011
Challenges
       Access native APIs for barcode scanner
       Locked grid for comparison view




       Lessons Learned



Wednesday, November 2, 2011
Challenges
       Access native APIs for barcode scanner
       Locked grid for comparison view
       Complex history tracking




       Lessons Learned



Wednesday, November 2, 2011
Challenges
       Access native APIs for barcode scanner
       Locked grid for comparison view
       Complex history tracking
       Aggregation of disparate data sources in a single view



       Lessons Learned



Wednesday, November 2, 2011
Challenges
       Access native APIs for barcode scanner
       Locked grid for comparison view
       Complex history tracking
       Aggregation of disparate data sources in a single view
       Animated swipe-to-delete


       Lessons Learned



Wednesday, November 2, 2011
Challenges
       Access native APIs for barcode scanner
       Locked grid for comparison view
       Complex history tracking
       Aggregation of disparate data sources in a single view
       Animated swipe-to-delete


       Lessons Learned
       Don’t use tabpanel




Wednesday, November 2, 2011
Challenges
       Access native APIs for barcode scanner
       Locked grid for comparison view
       Complex history tracking
       Aggregation of disparate data sources in a single view
       Animated swipe-to-delete


       Lessons Learned
       Don’t use tabpanel
       Wrap card layout for history




Wednesday, November 2, 2011
Challenges
       Access native APIs for barcode scanner
       Locked grid for comparison view
       Complex history tracking
       Aggregation of disparate data sources in a single view
       Animated swipe-to-delete


       Lessons Learned
       Don’t use tabpanel
       Wrap card layout for history
       -webkit-box and -webkit-transform3d


Wednesday, November 2, 2011
Wednesday, November 2, 2011
Make it pop!
       @mixin background-gradient($bg-color, $type: $base-gradient) {
       ...
           } @else if $type == 'supergloss' {
             @include background-image(
                linear-gradient(color_stops(
                    lighten($bg-color, 40%),
                    lighten($bg-color, 15%) 50%,
                    $bg-color 51%,
                    lighten($bg-color, 5%)
                ))
             );
           }
       ...

       @include sencha-button-ui('action', darken($christies-red,
       10%), 'supergloss');



Wednesday, November 2, 2011
Challenges




       Lessons Learned


Wednesday, November 2, 2011
Challenges
       Random access thumbnail gallery




       Lessons Learned


Wednesday, November 2, 2011
Challenges
       Random access thumbnail gallery
       Third-party SOAP backend




       Lessons Learned


Wednesday, November 2, 2011
Challenges
       Random access thumbnail gallery
       Third-party SOAP backend
       Custom gradient types




       Lessons Learned


Wednesday, November 2, 2011
Challenges
       Random access thumbnail gallery
       Third-party SOAP backend
       Custom gradient types
       Form styling




       Lessons Learned


Wednesday, November 2, 2011
Challenges
       Random access thumbnail gallery
       Third-party SOAP backend
       Custom gradient types
       Form styling
       Zoomable image carousel




       Lessons Learned


Wednesday, November 2, 2011
Challenges
       Random access thumbnail gallery
       Third-party SOAP backend
       Custom gradient types
       Form styling
       Zoomable image carousel
       (https://github.com/JarvusInnovations/Jarvus.mobile.PinchCarousel)




       Lessons Learned


Wednesday, November 2, 2011
Challenges
       Random access thumbnail gallery
       Third-party SOAP backend
       Custom gradient types
       Form styling
       Zoomable image carousel
       (https://github.com/JarvusInnovations/Jarvus.mobile.PinchCarousel)




       Lessons Learned
       Defer loading data until after screen is rendered




Wednesday, November 2, 2011
Challenges
       Random access thumbnail gallery
       Third-party SOAP backend
       Custom gradient types
       Form styling
       Zoomable image carousel
       (https://github.com/JarvusInnovations/Jarvus.mobile.PinchCarousel)




       Lessons Learned
       Defer loading data until after screen is rendered
       Override mixins


Wednesday, November 2, 2011
Challenges
       Random access thumbnail gallery
       Third-party SOAP backend
       Custom gradient types
       Form styling
       Zoomable image carousel
       (https://github.com/JarvusInnovations/Jarvus.mobile.PinchCarousel)




       Lessons Learned
       Defer loading data until after screen is rendered
       Override mixins
       Reusable list tpls and box layout

Wednesday, November 2, 2011
Wednesday, November 2, 2011
Challenges




       Lessons Learned



Wednesday, November 2, 2011
Challenges
       Performance on a HEAVY page full of images




       Lessons Learned



Wednesday, November 2, 2011
Challenges
       Performance on a HEAVY page full of images
       Make an animated dataview appear & init quickly




       Lessons Learned



Wednesday, November 2, 2011
Challenges
       Performance on a HEAVY page full of images
       Make an animated dataview appear & init quickly




       Lessons Learned
       Stack JS builds to minimize load times, avoid dupes




Wednesday, November 2, 2011
Challenges
       Performance on a HEAVY page full of images
       Make an animated dataview appear & init quickly




       Lessons Learned
       Stack JS builds to minimize load times, avoid dupes
       “Stunt double” hack




Wednesday, November 2, 2011
Challenges
       Performance on a HEAVY page full of images
       Make an animated dataview appear & init quickly




       Lessons Learned
       Stack JS builds to minimize load times, avoid dupes
       “Stunt double” hack
       Lazy loading via data- attributes


Wednesday, November 2, 2011
Wednesday, November 2, 2011
Challenges




       Lessons Learned



Wednesday, November 2, 2011
Challenges
       Realtime node.js integration




       Lessons Learned



Wednesday, November 2, 2011
Challenges
       Realtime node.js integration
       Make page render immediately, then update with latest info




       Lessons Learned



Wednesday, November 2, 2011
Challenges
       Realtime node.js integration
       Make page render immediately, then update with latest info




       Lessons Learned
       Socket.IO is fun!




Wednesday, November 2, 2011
Challenges
       Realtime node.js integration
       Make page render immediately, then update with latest info




       Lessons Learned
       Socket.IO is fun!
       Old-school progressive enhancement = good practice




Wednesday, November 2, 2011
Wednesday, November 2, 2011
Use iconCls for buttons
       .x-btn-icon {
       ! background-position: center center;
       ! background-repeat: no-repeat;

       !      &.shirts! {
                 background-image: url(/img/icons/nav/shirts.png); }
       !      &.orders! {
                 background-image: url(/img/icons/nav/orders.png); }
       !      &.settings! {
                 background-image: url(/img/icons/nav/settings.png); }
       }




Wednesday, November 2, 2011
Toolset & Workflow




Wednesday, November 2, 2011
Toolset & Workflow
                              Emergence framework

                                 TotalTerminal

                                   Dropbox

                                     Coda




Wednesday, November 2, 2011
DOs and DON’Ts




Wednesday, November 2, 2011
Wrangling Dependencies
                              DO   DON’T




Wednesday, November 2, 2011
Wrangling Dependencies
                              DO         DON’T

           Define requirements as close
             to their use as possible




Wednesday, November 2, 2011
Wrangling Dependencies
                              DO         DON’T

           Define requirements as close
             to their use as possible

         Use Ext.create for all object
                 instantiation




Wednesday, November 2, 2011
Wrangling Dependencies
                              DO                  DON’T

           Define requirements as close   Define requirements as close
             to their use as possible      to their use as possible

         Use Ext.create for all object
                 instantiation




Wednesday, November 2, 2011
Wrangling Dependencies
                              DO                   DON’T

           Define requirements as close   Define requirements as close
             to their use as possible      to their use as possible

         Use Ext.create for all object   Use Ext.create for all object
                 instantiation                   instantiation




Wednesday, November 2, 2011
Custom Builds
                              DO         DO!




Wednesday, November 2, 2011
Custom Builds
                              DO            DO!

          Load your whole site on ext-
          core.js (sans manifest) for the
                 auto-build script




Wednesday, November 2, 2011
Custom Builds
                              DO            DO!

          Load your whole site on ext-
          core.js (sans manifest) for the
                 auto-build script

        Separate your classes from Ext
         classes into different builds




Wednesday, November 2, 2011
Custom Builds
                              DO                        DO!

          Load your whole site on ext-      Create builds on top of ext.js
          core.js (sans manifest) for the   at milestones to reduce load
                 auto-build script                      times

        Separate your classes from Ext
         classes into different builds




Wednesday, November 2, 2011
Custom Builds
                              DO                        DO!

          Load your whole site on ext-      Create builds on top of ext.js
          core.js (sans manifest) for the   at milestones to reduce load
                 auto-build script                      times

        Separate your classes from Ext        Mix compiled and static
         classes into different builds      loading during development
                                                 for quick iteratoin




Wednesday, November 2, 2011
Page Loading
                              DO         DON’T




Wednesday, November 2, 2011
Page Loading
                              DO          DON’T

            Create a minimal CSS file to
               load first—show that
              something is happening




Wednesday, November 2, 2011
Page Loading
                              DO          DON’T

            Create a minimal CSS file to
               load first—show that
              something is happening

           Load modernizr and any font
              loaders in the <head>




Wednesday, November 2, 2011
Page Loading
                              DO                    DON’T

            Create a minimal CSS file to   Load all of your JavaScript in
               load first—show that                 the <head>
              something is happening

           Load modernizr and any font
              loaders in the <head>




Wednesday, November 2, 2011
Working with SASS
                              DO     DON’T




Wednesday, November 2, 2011
Working with SASS
                              DO            DON’T
         Explore Ext’s default .scss files




Wednesday, November 2, 2011
Working with SASS
                              DO            DON’T
         Explore Ext’s default .scss files

           Enjoy mixins, variables, color
                functions, nesting




Wednesday, November 2, 2011
Working with SASS
                              DO            DON’T
         Explore Ext’s default .scss files

           Enjoy mixins, variables, color
                functions, nesting

             Be OCD about indentation!




Wednesday, November 2, 2011
Working with SASS
                              DO            DON’T
         Explore Ext’s default .scss files

           Enjoy mixins, variables, color
                functions, nesting

             Be OCD about indentation!

            Use Compass for CSS3 and
                 tricky techniques




Wednesday, November 2, 2011
Working with SASS
                              DO                    DON’T
         Explore Ext’s default .scss files   Go too crazy with nesting

           Enjoy mixins, variables, color
                functions, nesting

             Be OCD about indentation!

            Use Compass for CSS3 and
                 tricky techniques




Wednesday, November 2, 2011
Working with SASS
                              DO                      DON’T
         Explore Ext’s default .scss files    Go too crazy with nesting

           Enjoy mixins, variables, color   Battle defaults; instead work
                functions, nesting           with the variables provided

             Be OCD about indentation!

            Use Compass for CSS3 and
                 tricky techniques




Wednesday, November 2, 2011
Working with SASS
                              DO                      DON’T
         Explore Ext’s default .scss files    Go too crazy with nesting

           Enjoy mixins, variables, color   Battle defaults; instead work
                functions, nesting           with the variables provided

             Be OCD about indentation!       Overdo it with ‘ui’ configs
                                            when regular classes will do
            Use Compass for CSS3 and
                 tricky techniques




Wednesday, November 2, 2011
Working with SASS
                              DO                      DON’T
         Explore Ext’s default .scss files    Go too crazy with nesting

           Enjoy mixins, variables, color   Battle defaults; instead work
                functions, nesting           with the variables provided

             Be OCD about indentation!       Overdo it with ‘ui’ configs
                                            when regular classes will do
            Use Compass for CSS3 and
                 tricky techniques           Be afraid to line-by-line it




Wednesday, November 2, 2011
tHANK YOU!
                              Chris Alfano & Ryon Coleman
                                 @themightychris @ryon55




Wednesday, November 2, 2011

Mais conteúdo relacionado

Mais de Sencha

Sencha Roadshow 2017: Best Practices for Implementing Continuous Web App Testing
Sencha Roadshow 2017: Best Practices for Implementing Continuous Web App TestingSencha Roadshow 2017: Best Practices for Implementing Continuous Web App Testing
Sencha Roadshow 2017: Best Practices for Implementing Continuous Web App TestingSencha
 
Sencha Roadshow 2017: What's New in Sencha Test
Sencha Roadshow 2017: What's New in Sencha TestSencha Roadshow 2017: What's New in Sencha Test
Sencha Roadshow 2017: What's New in Sencha TestSencha
 
Sencha Roadshow 2017: Sencha Upgrades - The Good. The Bad. The Ugly - Eva Luc...
Sencha Roadshow 2017: Sencha Upgrades - The Good. The Bad. The Ugly - Eva Luc...Sencha Roadshow 2017: Sencha Upgrades - The Good. The Bad. The Ugly - Eva Luc...
Sencha Roadshow 2017: Sencha Upgrades - The Good. The Bad. The Ugly - Eva Luc...Sencha
 
Sencha Roadshow 2017: Modernizing the Ext JS Class System and Tooling
Sencha Roadshow 2017: Modernizing the Ext JS Class System and ToolingSencha Roadshow 2017: Modernizing the Ext JS Class System and Tooling
Sencha Roadshow 2017: Modernizing the Ext JS Class System and ToolingSencha
 
Sencha Roadshow 2017: Sencha Best Practices: Coworkee App
Sencha Roadshow 2017: Sencha Best Practices: Coworkee App Sencha Roadshow 2017: Sencha Best Practices: Coworkee App
Sencha Roadshow 2017: Sencha Best Practices: Coworkee App Sencha
 
Sencha Roadshow 2017: Mobile First or Desktop First
Sencha Roadshow 2017: Mobile First or Desktop FirstSencha Roadshow 2017: Mobile First or Desktop First
Sencha Roadshow 2017: Mobile First or Desktop FirstSencha
 
Sencha Roadshow 2017: Innovations in Ext JS 6.5 and Beyond
Sencha Roadshow 2017: Innovations in Ext JS 6.5 and BeyondSencha Roadshow 2017: Innovations in Ext JS 6.5 and Beyond
Sencha Roadshow 2017: Innovations in Ext JS 6.5 and BeyondSencha
 
Leveraging React and GraphQL to Create a Performant, Scalable Data Grid
Leveraging React and GraphQL to Create a Performant, Scalable Data GridLeveraging React and GraphQL to Create a Performant, Scalable Data Grid
Leveraging React and GraphQL to Create a Performant, Scalable Data GridSencha
 
Learn Key Insights from The State of Web Application Testing Research Report
Learn Key Insights from The State of Web Application Testing Research ReportLearn Key Insights from The State of Web Application Testing Research Report
Learn Key Insights from The State of Web Application Testing Research ReportSencha
 
Introducing ExtReact: Adding Powerful Sencha Components to React Apps
Introducing ExtReact: Adding Powerful Sencha Components to React AppsIntroducing ExtReact: Adding Powerful Sencha Components to React Apps
Introducing ExtReact: Adding Powerful Sencha Components to React AppsSencha
 
SenchaCon 2016: Keynote Presentation - Art Landro, Gautam Agrawal, Mark Brocato
SenchaCon 2016: Keynote Presentation - Art Landro, Gautam Agrawal, Mark BrocatoSenchaCon 2016: Keynote Presentation - Art Landro, Gautam Agrawal, Mark Brocato
SenchaCon 2016: Keynote Presentation - Art Landro, Gautam Agrawal, Mark BrocatoSencha
 
SenchaCon 2016: Add Magic to Your Ext JS Apps with D3 Visualizations - Vitaly...
SenchaCon 2016: Add Magic to Your Ext JS Apps with D3 Visualizations - Vitaly...SenchaCon 2016: Add Magic to Your Ext JS Apps with D3 Visualizations - Vitaly...
SenchaCon 2016: Add Magic to Your Ext JS Apps with D3 Visualizations - Vitaly...Sencha
 
SenchaCon 2016: LinkRest - Modern RESTful API Framework for Ext JS Apps - Rou...
SenchaCon 2016: LinkRest - Modern RESTful API Framework for Ext JS Apps - Rou...SenchaCon 2016: LinkRest - Modern RESTful API Framework for Ext JS Apps - Rou...
SenchaCon 2016: LinkRest - Modern RESTful API Framework for Ext JS Apps - Rou...Sencha
 
SenchaCon 2016: Expect the Unexpected - Dealing with Errors in Web Apps
SenchaCon 2016: Expect the Unexpected - Dealing with Errors in Web AppsSenchaCon 2016: Expect the Unexpected - Dealing with Errors in Web Apps
SenchaCon 2016: Expect the Unexpected - Dealing with Errors in Web AppsSencha
 
Ext JS Architecture Best Practices - Mitchell Simeons
Ext JS Architecture Best Practices - Mitchell SimeonsExt JS Architecture Best Practices - Mitchell Simeons
Ext JS Architecture Best Practices - Mitchell SimeonsSencha
 
SenchaCon 2016: Mobile First? Desktop First? Or Should you Think Universal Ap...
SenchaCon 2016: Mobile First? Desktop First? Or Should you Think Universal Ap...SenchaCon 2016: Mobile First? Desktop First? Or Should you Think Universal Ap...
SenchaCon 2016: Mobile First? Desktop First? Or Should you Think Universal Ap...Sencha
 
Building Ext JS Using HATEOAS - Jeff Stano
Building Ext JS Using HATEOAS - Jeff StanoBuilding Ext JS Using HATEOAS - Jeff Stano
Building Ext JS Using HATEOAS - Jeff StanoSencha
 
SenchaCon 2016: Improve Workflow Driven Applications with Ext JS Draw Package...
SenchaCon 2016: Improve Workflow Driven Applications with Ext JS Draw Package...SenchaCon 2016: Improve Workflow Driven Applications with Ext JS Draw Package...
SenchaCon 2016: Improve Workflow Driven Applications with Ext JS Draw Package...Sencha
 
SenchaCon 2016: Developing and Delivering Quality Code, Frequently - Neil Manvar
SenchaCon 2016: Developing and Delivering Quality Code, Frequently - Neil ManvarSenchaCon 2016: Developing and Delivering Quality Code, Frequently - Neil Manvar
SenchaCon 2016: Developing and Delivering Quality Code, Frequently - Neil ManvarSencha
 
SenchaCon 2016: Creating a Flexible and Usable Industry Specific Solution - D...
SenchaCon 2016: Creating a Flexible and Usable Industry Specific Solution - D...SenchaCon 2016: Creating a Flexible and Usable Industry Specific Solution - D...
SenchaCon 2016: Creating a Flexible and Usable Industry Specific Solution - D...Sencha
 

Mais de Sencha (20)

Sencha Roadshow 2017: Best Practices for Implementing Continuous Web App Testing
Sencha Roadshow 2017: Best Practices for Implementing Continuous Web App TestingSencha Roadshow 2017: Best Practices for Implementing Continuous Web App Testing
Sencha Roadshow 2017: Best Practices for Implementing Continuous Web App Testing
 
Sencha Roadshow 2017: What's New in Sencha Test
Sencha Roadshow 2017: What's New in Sencha TestSencha Roadshow 2017: What's New in Sencha Test
Sencha Roadshow 2017: What's New in Sencha Test
 
Sencha Roadshow 2017: Sencha Upgrades - The Good. The Bad. The Ugly - Eva Luc...
Sencha Roadshow 2017: Sencha Upgrades - The Good. The Bad. The Ugly - Eva Luc...Sencha Roadshow 2017: Sencha Upgrades - The Good. The Bad. The Ugly - Eva Luc...
Sencha Roadshow 2017: Sencha Upgrades - The Good. The Bad. The Ugly - Eva Luc...
 
Sencha Roadshow 2017: Modernizing the Ext JS Class System and Tooling
Sencha Roadshow 2017: Modernizing the Ext JS Class System and ToolingSencha Roadshow 2017: Modernizing the Ext JS Class System and Tooling
Sencha Roadshow 2017: Modernizing the Ext JS Class System and Tooling
 
Sencha Roadshow 2017: Sencha Best Practices: Coworkee App
Sencha Roadshow 2017: Sencha Best Practices: Coworkee App Sencha Roadshow 2017: Sencha Best Practices: Coworkee App
Sencha Roadshow 2017: Sencha Best Practices: Coworkee App
 
Sencha Roadshow 2017: Mobile First or Desktop First
Sencha Roadshow 2017: Mobile First or Desktop FirstSencha Roadshow 2017: Mobile First or Desktop First
Sencha Roadshow 2017: Mobile First or Desktop First
 
Sencha Roadshow 2017: Innovations in Ext JS 6.5 and Beyond
Sencha Roadshow 2017: Innovations in Ext JS 6.5 and BeyondSencha Roadshow 2017: Innovations in Ext JS 6.5 and Beyond
Sencha Roadshow 2017: Innovations in Ext JS 6.5 and Beyond
 
Leveraging React and GraphQL to Create a Performant, Scalable Data Grid
Leveraging React and GraphQL to Create a Performant, Scalable Data GridLeveraging React and GraphQL to Create a Performant, Scalable Data Grid
Leveraging React and GraphQL to Create a Performant, Scalable Data Grid
 
Learn Key Insights from The State of Web Application Testing Research Report
Learn Key Insights from The State of Web Application Testing Research ReportLearn Key Insights from The State of Web Application Testing Research Report
Learn Key Insights from The State of Web Application Testing Research Report
 
Introducing ExtReact: Adding Powerful Sencha Components to React Apps
Introducing ExtReact: Adding Powerful Sencha Components to React AppsIntroducing ExtReact: Adding Powerful Sencha Components to React Apps
Introducing ExtReact: Adding Powerful Sencha Components to React Apps
 
SenchaCon 2016: Keynote Presentation - Art Landro, Gautam Agrawal, Mark Brocato
SenchaCon 2016: Keynote Presentation - Art Landro, Gautam Agrawal, Mark BrocatoSenchaCon 2016: Keynote Presentation - Art Landro, Gautam Agrawal, Mark Brocato
SenchaCon 2016: Keynote Presentation - Art Landro, Gautam Agrawal, Mark Brocato
 
SenchaCon 2016: Add Magic to Your Ext JS Apps with D3 Visualizations - Vitaly...
SenchaCon 2016: Add Magic to Your Ext JS Apps with D3 Visualizations - Vitaly...SenchaCon 2016: Add Magic to Your Ext JS Apps with D3 Visualizations - Vitaly...
SenchaCon 2016: Add Magic to Your Ext JS Apps with D3 Visualizations - Vitaly...
 
SenchaCon 2016: LinkRest - Modern RESTful API Framework for Ext JS Apps - Rou...
SenchaCon 2016: LinkRest - Modern RESTful API Framework for Ext JS Apps - Rou...SenchaCon 2016: LinkRest - Modern RESTful API Framework for Ext JS Apps - Rou...
SenchaCon 2016: LinkRest - Modern RESTful API Framework for Ext JS Apps - Rou...
 
SenchaCon 2016: Expect the Unexpected - Dealing with Errors in Web Apps
SenchaCon 2016: Expect the Unexpected - Dealing with Errors in Web AppsSenchaCon 2016: Expect the Unexpected - Dealing with Errors in Web Apps
SenchaCon 2016: Expect the Unexpected - Dealing with Errors in Web Apps
 
Ext JS Architecture Best Practices - Mitchell Simeons
Ext JS Architecture Best Practices - Mitchell SimeonsExt JS Architecture Best Practices - Mitchell Simeons
Ext JS Architecture Best Practices - Mitchell Simeons
 
SenchaCon 2016: Mobile First? Desktop First? Or Should you Think Universal Ap...
SenchaCon 2016: Mobile First? Desktop First? Or Should you Think Universal Ap...SenchaCon 2016: Mobile First? Desktop First? Or Should you Think Universal Ap...
SenchaCon 2016: Mobile First? Desktop First? Or Should you Think Universal Ap...
 
Building Ext JS Using HATEOAS - Jeff Stano
Building Ext JS Using HATEOAS - Jeff StanoBuilding Ext JS Using HATEOAS - Jeff Stano
Building Ext JS Using HATEOAS - Jeff Stano
 
SenchaCon 2016: Improve Workflow Driven Applications with Ext JS Draw Package...
SenchaCon 2016: Improve Workflow Driven Applications with Ext JS Draw Package...SenchaCon 2016: Improve Workflow Driven Applications with Ext JS Draw Package...
SenchaCon 2016: Improve Workflow Driven Applications with Ext JS Draw Package...
 
SenchaCon 2016: Developing and Delivering Quality Code, Frequently - Neil Manvar
SenchaCon 2016: Developing and Delivering Quality Code, Frequently - Neil ManvarSenchaCon 2016: Developing and Delivering Quality Code, Frequently - Neil Manvar
SenchaCon 2016: Developing and Delivering Quality Code, Frequently - Neil Manvar
 
SenchaCon 2016: Creating a Flexible and Usable Industry Specific Solution - D...
SenchaCon 2016: Creating a Flexible and Usable Industry Specific Solution - D...SenchaCon 2016: Creating a Flexible and Usable Industry Specific Solution - D...
SenchaCon 2016: Creating a Flexible and Usable Industry Specific Solution - D...
 

Último

What Are The Drone Anti-jamming Systems Technology?
What Are The Drone Anti-jamming Systems Technology?What Are The Drone Anti-jamming Systems Technology?
What Are The Drone Anti-jamming Systems Technology?Antenna Manufacturer Coco
 
IAC 2024 - IA Fast Track to Search Focused AI Solutions
IAC 2024 - IA Fast Track to Search Focused AI SolutionsIAC 2024 - IA Fast Track to Search Focused AI Solutions
IAC 2024 - IA Fast Track to Search Focused AI SolutionsEnterprise Knowledge
 
Slack Application Development 101 Slides
Slack Application Development 101 SlidesSlack Application Development 101 Slides
Slack Application Development 101 Slidespraypatel2
 
Tata AIG General Insurance Company - Insurer Innovation Award 2024
Tata AIG General Insurance Company - Insurer Innovation Award 2024Tata AIG General Insurance Company - Insurer Innovation Award 2024
Tata AIG General Insurance Company - Insurer Innovation Award 2024The Digital Insurer
 
Boost Fertility New Invention Ups Success Rates.pdf
Boost Fertility New Invention Ups Success Rates.pdfBoost Fertility New Invention Ups Success Rates.pdf
Boost Fertility New Invention Ups Success Rates.pdfsudhanshuwaghmare1
 
Presentation on how to chat with PDF using ChatGPT code interpreter
Presentation on how to chat with PDF using ChatGPT code interpreterPresentation on how to chat with PDF using ChatGPT code interpreter
Presentation on how to chat with PDF using ChatGPT code interpreternaman860154
 
Powerful Google developer tools for immediate impact! (2023-24 C)
Powerful Google developer tools for immediate impact! (2023-24 C)Powerful Google developer tools for immediate impact! (2023-24 C)
Powerful Google developer tools for immediate impact! (2023-24 C)wesley chun
 
Scaling API-first – The story of a global engineering organization
Scaling API-first – The story of a global engineering organizationScaling API-first – The story of a global engineering organization
Scaling API-first – The story of a global engineering organizationRadu Cotescu
 
Boost PC performance: How more available memory can improve productivity
Boost PC performance: How more available memory can improve productivityBoost PC performance: How more available memory can improve productivity
Boost PC performance: How more available memory can improve productivityPrincipled Technologies
 
Real Time Object Detection Using Open CV
Real Time Object Detection Using Open CVReal Time Object Detection Using Open CV
Real Time Object Detection Using Open CVKhem
 
A Domino Admins Adventures (Engage 2024)
A Domino Admins Adventures (Engage 2024)A Domino Admins Adventures (Engage 2024)
A Domino Admins Adventures (Engage 2024)Gabriella Davis
 
Finology Group – Insurtech Innovation Award 2024
Finology Group – Insurtech Innovation Award 2024Finology Group – Insurtech Innovation Award 2024
Finology Group – Insurtech Innovation Award 2024The Digital Insurer
 
Apidays Singapore 2024 - Building Digital Trust in a Digital Economy by Veron...
Apidays Singapore 2024 - Building Digital Trust in a Digital Economy by Veron...Apidays Singapore 2024 - Building Digital Trust in a Digital Economy by Veron...
Apidays Singapore 2024 - Building Digital Trust in a Digital Economy by Veron...apidays
 
The Role of Taxonomy and Ontology in Semantic Layers - Heather Hedden.pdf
The Role of Taxonomy and Ontology in Semantic Layers - Heather Hedden.pdfThe Role of Taxonomy and Ontology in Semantic Layers - Heather Hedden.pdf
The Role of Taxonomy and Ontology in Semantic Layers - Heather Hedden.pdfEnterprise Knowledge
 
Workshop - Best of Both Worlds_ Combine KG and Vector search for enhanced R...
Workshop - Best of Both Worlds_ Combine  KG and Vector search for  enhanced R...Workshop - Best of Both Worlds_ Combine  KG and Vector search for  enhanced R...
Workshop - Best of Both Worlds_ Combine KG and Vector search for enhanced R...Neo4j
 
Bajaj Allianz Life Insurance Company - Insurer Innovation Award 2024
Bajaj Allianz Life Insurance Company - Insurer Innovation Award 2024Bajaj Allianz Life Insurance Company - Insurer Innovation Award 2024
Bajaj Allianz Life Insurance Company - Insurer Innovation Award 2024The Digital Insurer
 
Histor y of HAM Radio presentation slide
Histor y of HAM Radio presentation slideHistor y of HAM Radio presentation slide
Histor y of HAM Radio presentation slidevu2urc
 
A Year of the Servo Reboot: Where Are We Now?
A Year of the Servo Reboot: Where Are We Now?A Year of the Servo Reboot: Where Are We Now?
A Year of the Servo Reboot: Where Are We Now?Igalia
 
08448380779 Call Girls In Civil Lines Women Seeking Men
08448380779 Call Girls In Civil Lines Women Seeking Men08448380779 Call Girls In Civil Lines Women Seeking Men
08448380779 Call Girls In Civil Lines Women Seeking MenDelhi Call girls
 
Driving Behavioral Change for Information Management through Data-Driven Gree...
Driving Behavioral Change for Information Management through Data-Driven Gree...Driving Behavioral Change for Information Management through Data-Driven Gree...
Driving Behavioral Change for Information Management through Data-Driven Gree...Enterprise Knowledge
 

Último (20)

What Are The Drone Anti-jamming Systems Technology?
What Are The Drone Anti-jamming Systems Technology?What Are The Drone Anti-jamming Systems Technology?
What Are The Drone Anti-jamming Systems Technology?
 
IAC 2024 - IA Fast Track to Search Focused AI Solutions
IAC 2024 - IA Fast Track to Search Focused AI SolutionsIAC 2024 - IA Fast Track to Search Focused AI Solutions
IAC 2024 - IA Fast Track to Search Focused AI Solutions
 
Slack Application Development 101 Slides
Slack Application Development 101 SlidesSlack Application Development 101 Slides
Slack Application Development 101 Slides
 
Tata AIG General Insurance Company - Insurer Innovation Award 2024
Tata AIG General Insurance Company - Insurer Innovation Award 2024Tata AIG General Insurance Company - Insurer Innovation Award 2024
Tata AIG General Insurance Company - Insurer Innovation Award 2024
 
Boost Fertility New Invention Ups Success Rates.pdf
Boost Fertility New Invention Ups Success Rates.pdfBoost Fertility New Invention Ups Success Rates.pdf
Boost Fertility New Invention Ups Success Rates.pdf
 
Presentation on how to chat with PDF using ChatGPT code interpreter
Presentation on how to chat with PDF using ChatGPT code interpreterPresentation on how to chat with PDF using ChatGPT code interpreter
Presentation on how to chat with PDF using ChatGPT code interpreter
 
Powerful Google developer tools for immediate impact! (2023-24 C)
Powerful Google developer tools for immediate impact! (2023-24 C)Powerful Google developer tools for immediate impact! (2023-24 C)
Powerful Google developer tools for immediate impact! (2023-24 C)
 
Scaling API-first – The story of a global engineering organization
Scaling API-first – The story of a global engineering organizationScaling API-first – The story of a global engineering organization
Scaling API-first – The story of a global engineering organization
 
Boost PC performance: How more available memory can improve productivity
Boost PC performance: How more available memory can improve productivityBoost PC performance: How more available memory can improve productivity
Boost PC performance: How more available memory can improve productivity
 
Real Time Object Detection Using Open CV
Real Time Object Detection Using Open CVReal Time Object Detection Using Open CV
Real Time Object Detection Using Open CV
 
A Domino Admins Adventures (Engage 2024)
A Domino Admins Adventures (Engage 2024)A Domino Admins Adventures (Engage 2024)
A Domino Admins Adventures (Engage 2024)
 
Finology Group – Insurtech Innovation Award 2024
Finology Group – Insurtech Innovation Award 2024Finology Group – Insurtech Innovation Award 2024
Finology Group – Insurtech Innovation Award 2024
 
Apidays Singapore 2024 - Building Digital Trust in a Digital Economy by Veron...
Apidays Singapore 2024 - Building Digital Trust in a Digital Economy by Veron...Apidays Singapore 2024 - Building Digital Trust in a Digital Economy by Veron...
Apidays Singapore 2024 - Building Digital Trust in a Digital Economy by Veron...
 
The Role of Taxonomy and Ontology in Semantic Layers - Heather Hedden.pdf
The Role of Taxonomy and Ontology in Semantic Layers - Heather Hedden.pdfThe Role of Taxonomy and Ontology in Semantic Layers - Heather Hedden.pdf
The Role of Taxonomy and Ontology in Semantic Layers - Heather Hedden.pdf
 
Workshop - Best of Both Worlds_ Combine KG and Vector search for enhanced R...
Workshop - Best of Both Worlds_ Combine  KG and Vector search for  enhanced R...Workshop - Best of Both Worlds_ Combine  KG and Vector search for  enhanced R...
Workshop - Best of Both Worlds_ Combine KG and Vector search for enhanced R...
 
Bajaj Allianz Life Insurance Company - Insurer Innovation Award 2024
Bajaj Allianz Life Insurance Company - Insurer Innovation Award 2024Bajaj Allianz Life Insurance Company - Insurer Innovation Award 2024
Bajaj Allianz Life Insurance Company - Insurer Innovation Award 2024
 
Histor y of HAM Radio presentation slide
Histor y of HAM Radio presentation slideHistor y of HAM Radio presentation slide
Histor y of HAM Radio presentation slide
 
A Year of the Servo Reboot: Where Are We Now?
A Year of the Servo Reboot: Where Are We Now?A Year of the Servo Reboot: Where Are We Now?
A Year of the Servo Reboot: Where Are We Now?
 
08448380779 Call Girls In Civil Lines Women Seeking Men
08448380779 Call Girls In Civil Lines Women Seeking Men08448380779 Call Girls In Civil Lines Women Seeking Men
08448380779 Call Girls In Civil Lines Women Seeking Men
 
Driving Behavioral Change for Information Management through Data-Driven Gree...
Driving Behavioral Change for Information Management through Data-Driven Gree...Driving Behavioral Change for Information Management through Data-Driven Gree...
Driving Behavioral Change for Information Management through Data-Driven Gree...
 

Community Code: Jarvus Innovations

  • 2. jARV.US SPOTLIGHT Chris Alfano & Ryon Coleman @themightychris @ryon55 Wednesday, November 2, 2011
  • 4. Overview SENCHA TOUCH EXTJS 4 Eagles Draft 2011 Jarv.us Consumer Reports DynamicWear Christie’s GoLive.TV Wednesday, November 2, 2011
  • 5. Philadelphia Eagles Draft 2011 Wednesday, November 2, 2011
  • 6. Insta-style <!DOCTYPE html> <html lang="en"> <head> ! <style>body{background-color:#033}</style> ! <link rel="stylesheet" href="css/eagles-init.css+eagles- sencha.css+eagles-fonts.css+eagles-overrides.css" type="text/ css"> ! <!-- ... --> </head> <body></body> </html> Wednesday, November 2, 2011
  • 7. Stretchy backgrounds body { ! background: url(../img/backgroundLogo.jpg) no-repeat center center #033; ! -webkit-background-size: cover; } /* OR */ .storeCard { ! background: url(../img/storeCard.jpg) no-repeat center top; ! -webkit-background-size: contain; } Wednesday, November 2, 2011
  • 8. On-the-fly CSS & JS minifier <link rel="stylesheet" type="text/css" href="css/eagles-init.css+eagles-sencha.css+eagles-fonts.css +eagles-overrides.css" /> <link rel="stylesheet" href="css/eagles2x.css" media="only screen and (-webkit-min-device-pixel-ratio: 1.5)" /> <script type="text/javascript" src="js/sencha-touch.js+app.js +views/*+models/TwitterProxy.js+models/*"></script> Wednesday, November 2, 2011
  • 9. <link rel="stylesheet" href="css/eagles-init.css?debug=1" type="text/css"> <link rel="stylesheet" href="css/eagles-sencha.css?debug=1" type="text/css"> <link rel="stylesheet" href="css/eagles-fonts.css?debug=1" type="text/css"> <link rel="stylesheet" href="css/eagles-overrides.css?debug=1" type="text/css"> <link rel="stylesheet" href="css/eagles2x.css" media="only screen and (-webkit-min-device-pixel-ratio: 1.5)" /> <script type="text/javascript" src="js/sencha-touch.js? debug=1"></script> <script type="text/javascript" src="js/app.js?debug=1"></ script> <script type="text/javascript" src="js/views/AppViewport.js? debug=1"></script> <script type="text/javascript" src="js/views/ArticleCard.js? debug=1"></script> <script type="text/javascript" src="js/views/DraftCard.js? debug=1"></script> <script type="text/javascript" src="js/views/LandingCard.js? Wednesday, November 2, 2011
  • 10. ,startAutoRefresh: function() { ! this.autoRefreshInterval = setInterval( ! ! Ext.createDelegate(this.picksStore.load, this.picksStore) ! ! ,this.autoRefreshSeconds * 1000 ! ); } ,onPicksLoaded: function(store, records, success){!! ! if(this.isVisible() && this.liveDraft.isVisible()) ! ! this.seenPicks = records.length; ! else ! ! this.updateUnseen(records.length); } ,onDraftCardActivated: function() { ! this.markSeen(); }     ,markSeen: function() { ! this.seenPicks = this.picksStore.getCount(); ! this.updateUnseen(this.seenPicks); } Wednesday, November 2, 2011
  • 11. Challenges Lessons Learned Wednesday, November 2, 2011
  • 12. Challenges Learn Sencha Touch and SASS theming :) Lessons Learned Wednesday, November 2, 2011
  • 13. Challenges Learn Sencha Touch and SASS theming :) Get and display live updates Lessons Learned Wednesday, November 2, 2011
  • 14. Challenges Learn Sencha Touch and SASS theming :) Get and display live updates Adapt static images to different screen ratios Lessons Learned Wednesday, November 2, 2011
  • 15. Challenges Learn Sencha Touch and SASS theming :) Get and display live updates Adapt static images to different screen ratios Lessons Learned Destroy DOM when you’re done with it Wednesday, November 2, 2011
  • 16. Challenges Learn Sencha Touch and SASS theming :) Get and display live updates Adapt static images to different screen ratios Lessons Learned Destroy DOM when you’re done with it Establish clear parameters for post-launch content Wednesday, November 2, 2011
  • 17. Challenges Learn Sencha Touch and SASS theming :) Get and display live updates Adapt static images to different screen ratios Lessons Learned Destroy DOM when you’re done with it Establish clear parameters for post-launch content -webkit-background-size Wednesday, November 2, 2011
  • 19. Barcode scanning ,onScanPress: function() { ! if(window.device) { ! ! window.plugins.barcodeScanner.scan( ! ! ! Ext.createDelegate(this.onBarcodeSuccess, this) ! ! ! ,Ext.createDelegate(this.onBarcodeFailure, this) ! ! ); ! } else { ! ! alert('barcode scanning is currently only available in native builds'); ! } } ,onBarcodeSuccess: function(upc) { ! CR.views.viewport.executeBarcodeSearch(upc); } Wednesday, November 2, 2011
  • 20. StackPanel viewport CR.views.viewport.loadCard({ ! xtype: 'aboutpanel' ! ,prevCard: this },{ ! // optional animation controls ! animate: 'slide' ! ,direction: 'left' ! ,reverse: false ! ,cover: false ! ,reveal: false ! ! // optional stack management ! ,clearStack: false // true to erase history stack ! ,clearAfter: false // pass a panel instance to clear any forward history }); https://github.com/JarvusInnovations/Jarvus.mobile.StackPanel Wednesday, November 2, 2011
  • 21. DOM destruction this.on('beforeactivate', function() { ! this.setLoading(true);! }, this, {delay: 10}); this.on('activate', function() { ! if(this.loaded) { ! ! this.setLoading(false); ! ! this.list.refresh(); // redraw existing store contents ! } else { ! ! this.list.store.load({ ! ! ! scope: this ! ! ! ,callback: function() { ! ! ! ! this.setLoading(false); ! ! ! } ! ! }); ! } }, this); this.on('beforedeactivate', function() { ! this.list.update(''); }, this); Wednesday, November 2, 2011
  • 22. .x-list-item { ! .product { ! ! -webkit-box-align: stretch; ! ! -webkit-box-orient: horizontal; ! ! display: -webkit-box; ! ! overflow: hidden; ! ! ! ! & > div { -webkit-transition: -webkit-transform 250ms; } ! ! ! .delete-button-ct { ! ! ! -webkit-box-align: center; ! ! ! display: -webkit-box; ! ! ! margin-right: -85px; ! ! ! width: 85px; ! ! ! ! ! ! .x-button { -webkit-box-flex: 1; } ! ! } ! } ! ! &.confirm-delete .product > * { -webkit-transform: translate3d(-85px, 0, 0) } } Wednesday, November 2, 2011
  • 23. Challenges Lessons Learned Wednesday, November 2, 2011
  • 24. Challenges Access native APIs for barcode scanner Lessons Learned Wednesday, November 2, 2011
  • 25. Challenges Access native APIs for barcode scanner Locked grid for comparison view Lessons Learned Wednesday, November 2, 2011
  • 26. Challenges Access native APIs for barcode scanner Locked grid for comparison view Complex history tracking Lessons Learned Wednesday, November 2, 2011
  • 27. Challenges Access native APIs for barcode scanner Locked grid for comparison view Complex history tracking Aggregation of disparate data sources in a single view Lessons Learned Wednesday, November 2, 2011
  • 28. Challenges Access native APIs for barcode scanner Locked grid for comparison view Complex history tracking Aggregation of disparate data sources in a single view Animated swipe-to-delete Lessons Learned Wednesday, November 2, 2011
  • 29. Challenges Access native APIs for barcode scanner Locked grid for comparison view Complex history tracking Aggregation of disparate data sources in a single view Animated swipe-to-delete Lessons Learned Don’t use tabpanel Wednesday, November 2, 2011
  • 30. Challenges Access native APIs for barcode scanner Locked grid for comparison view Complex history tracking Aggregation of disparate data sources in a single view Animated swipe-to-delete Lessons Learned Don’t use tabpanel Wrap card layout for history Wednesday, November 2, 2011
  • 31. Challenges Access native APIs for barcode scanner Locked grid for comparison view Complex history tracking Aggregation of disparate data sources in a single view Animated swipe-to-delete Lessons Learned Don’t use tabpanel Wrap card layout for history -webkit-box and -webkit-transform3d Wednesday, November 2, 2011
  • 33. Make it pop! @mixin background-gradient($bg-color, $type: $base-gradient) { ... } @else if $type == 'supergloss' { @include background-image( linear-gradient(color_stops( lighten($bg-color, 40%), lighten($bg-color, 15%) 50%, $bg-color 51%, lighten($bg-color, 5%) )) ); } ... @include sencha-button-ui('action', darken($christies-red, 10%), 'supergloss'); Wednesday, November 2, 2011
  • 34. Challenges Lessons Learned Wednesday, November 2, 2011
  • 35. Challenges Random access thumbnail gallery Lessons Learned Wednesday, November 2, 2011
  • 36. Challenges Random access thumbnail gallery Third-party SOAP backend Lessons Learned Wednesday, November 2, 2011
  • 37. Challenges Random access thumbnail gallery Third-party SOAP backend Custom gradient types Lessons Learned Wednesday, November 2, 2011
  • 38. Challenges Random access thumbnail gallery Third-party SOAP backend Custom gradient types Form styling Lessons Learned Wednesday, November 2, 2011
  • 39. Challenges Random access thumbnail gallery Third-party SOAP backend Custom gradient types Form styling Zoomable image carousel Lessons Learned Wednesday, November 2, 2011
  • 40. Challenges Random access thumbnail gallery Third-party SOAP backend Custom gradient types Form styling Zoomable image carousel (https://github.com/JarvusInnovations/Jarvus.mobile.PinchCarousel) Lessons Learned Wednesday, November 2, 2011
  • 41. Challenges Random access thumbnail gallery Third-party SOAP backend Custom gradient types Form styling Zoomable image carousel (https://github.com/JarvusInnovations/Jarvus.mobile.PinchCarousel) Lessons Learned Defer loading data until after screen is rendered Wednesday, November 2, 2011
  • 42. Challenges Random access thumbnail gallery Third-party SOAP backend Custom gradient types Form styling Zoomable image carousel (https://github.com/JarvusInnovations/Jarvus.mobile.PinchCarousel) Lessons Learned Defer loading data until after screen is rendered Override mixins Wednesday, November 2, 2011
  • 43. Challenges Random access thumbnail gallery Third-party SOAP backend Custom gradient types Form styling Zoomable image carousel (https://github.com/JarvusInnovations/Jarvus.mobile.PinchCarousel) Lessons Learned Defer loading data until after screen is rendered Override mixins Reusable list tpls and box layout Wednesday, November 2, 2011
  • 45. Challenges Lessons Learned Wednesday, November 2, 2011
  • 46. Challenges Performance on a HEAVY page full of images Lessons Learned Wednesday, November 2, 2011
  • 47. Challenges Performance on a HEAVY page full of images Make an animated dataview appear & init quickly Lessons Learned Wednesday, November 2, 2011
  • 48. Challenges Performance on a HEAVY page full of images Make an animated dataview appear & init quickly Lessons Learned Stack JS builds to minimize load times, avoid dupes Wednesday, November 2, 2011
  • 49. Challenges Performance on a HEAVY page full of images Make an animated dataview appear & init quickly Lessons Learned Stack JS builds to minimize load times, avoid dupes “Stunt double” hack Wednesday, November 2, 2011
  • 50. Challenges Performance on a HEAVY page full of images Make an animated dataview appear & init quickly Lessons Learned Stack JS builds to minimize load times, avoid dupes “Stunt double” hack Lazy loading via data- attributes Wednesday, November 2, 2011
  • 52. Challenges Lessons Learned Wednesday, November 2, 2011
  • 53. Challenges Realtime node.js integration Lessons Learned Wednesday, November 2, 2011
  • 54. Challenges Realtime node.js integration Make page render immediately, then update with latest info Lessons Learned Wednesday, November 2, 2011
  • 55. Challenges Realtime node.js integration Make page render immediately, then update with latest info Lessons Learned Socket.IO is fun! Wednesday, November 2, 2011
  • 56. Challenges Realtime node.js integration Make page render immediately, then update with latest info Lessons Learned Socket.IO is fun! Old-school progressive enhancement = good practice Wednesday, November 2, 2011
  • 58. Use iconCls for buttons .x-btn-icon { ! background-position: center center; ! background-repeat: no-repeat; ! &.shirts! { background-image: url(/img/icons/nav/shirts.png); } ! &.orders! { background-image: url(/img/icons/nav/orders.png); } ! &.settings! { background-image: url(/img/icons/nav/settings.png); } } Wednesday, November 2, 2011
  • 59. Toolset & Workflow Wednesday, November 2, 2011
  • 60. Toolset & Workflow Emergence framework TotalTerminal Dropbox Coda Wednesday, November 2, 2011
  • 61. DOs and DON’Ts Wednesday, November 2, 2011
  • 62. Wrangling Dependencies DO DON’T Wednesday, November 2, 2011
  • 63. Wrangling Dependencies DO DON’T Define requirements as close to their use as possible Wednesday, November 2, 2011
  • 64. Wrangling Dependencies DO DON’T Define requirements as close to their use as possible Use Ext.create for all object instantiation Wednesday, November 2, 2011
  • 65. Wrangling Dependencies DO DON’T Define requirements as close Define requirements as close to their use as possible to their use as possible Use Ext.create for all object instantiation Wednesday, November 2, 2011
  • 66. Wrangling Dependencies DO DON’T Define requirements as close Define requirements as close to their use as possible to their use as possible Use Ext.create for all object Use Ext.create for all object instantiation instantiation Wednesday, November 2, 2011
  • 67. Custom Builds DO DO! Wednesday, November 2, 2011
  • 68. Custom Builds DO DO! Load your whole site on ext- core.js (sans manifest) for the auto-build script Wednesday, November 2, 2011
  • 69. Custom Builds DO DO! Load your whole site on ext- core.js (sans manifest) for the auto-build script Separate your classes from Ext classes into different builds Wednesday, November 2, 2011
  • 70. Custom Builds DO DO! Load your whole site on ext- Create builds on top of ext.js core.js (sans manifest) for the at milestones to reduce load auto-build script times Separate your classes from Ext classes into different builds Wednesday, November 2, 2011
  • 71. Custom Builds DO DO! Load your whole site on ext- Create builds on top of ext.js core.js (sans manifest) for the at milestones to reduce load auto-build script times Separate your classes from Ext Mix compiled and static classes into different builds loading during development for quick iteratoin Wednesday, November 2, 2011
  • 72. Page Loading DO DON’T Wednesday, November 2, 2011
  • 73. Page Loading DO DON’T Create a minimal CSS file to load first—show that something is happening Wednesday, November 2, 2011
  • 74. Page Loading DO DON’T Create a minimal CSS file to load first—show that something is happening Load modernizr and any font loaders in the <head> Wednesday, November 2, 2011
  • 75. Page Loading DO DON’T Create a minimal CSS file to Load all of your JavaScript in load first—show that the <head> something is happening Load modernizr and any font loaders in the <head> Wednesday, November 2, 2011
  • 76. Working with SASS DO DON’T Wednesday, November 2, 2011
  • 77. Working with SASS DO DON’T Explore Ext’s default .scss files Wednesday, November 2, 2011
  • 78. Working with SASS DO DON’T Explore Ext’s default .scss files Enjoy mixins, variables, color functions, nesting Wednesday, November 2, 2011
  • 79. Working with SASS DO DON’T Explore Ext’s default .scss files Enjoy mixins, variables, color functions, nesting Be OCD about indentation! Wednesday, November 2, 2011
  • 80. Working with SASS DO DON’T Explore Ext’s default .scss files Enjoy mixins, variables, color functions, nesting Be OCD about indentation! Use Compass for CSS3 and tricky techniques Wednesday, November 2, 2011
  • 81. Working with SASS DO DON’T Explore Ext’s default .scss files Go too crazy with nesting Enjoy mixins, variables, color functions, nesting Be OCD about indentation! Use Compass for CSS3 and tricky techniques Wednesday, November 2, 2011
  • 82. Working with SASS DO DON’T Explore Ext’s default .scss files Go too crazy with nesting Enjoy mixins, variables, color Battle defaults; instead work functions, nesting with the variables provided Be OCD about indentation! Use Compass for CSS3 and tricky techniques Wednesday, November 2, 2011
  • 83. Working with SASS DO DON’T Explore Ext’s default .scss files Go too crazy with nesting Enjoy mixins, variables, color Battle defaults; instead work functions, nesting with the variables provided Be OCD about indentation! Overdo it with ‘ui’ configs when regular classes will do Use Compass for CSS3 and tricky techniques Wednesday, November 2, 2011
  • 84. Working with SASS DO DON’T Explore Ext’s default .scss files Go too crazy with nesting Enjoy mixins, variables, color Battle defaults; instead work functions, nesting with the variables provided Be OCD about indentation! Overdo it with ‘ui’ configs when regular classes will do Use Compass for CSS3 and tricky techniques Be afraid to line-by-line it Wednesday, November 2, 2011
  • 85. tHANK YOU! Chris Alfano & Ryon Coleman @themightychris @ryon55 Wednesday, November 2, 2011