Sencha Touch 2 Quick Start

Total Page:16

File Type:pdf, Size:1020Kb

Sencha Touch 2 Quick Start Contents of document: Ø The Class System Sencha Touch 2 Ø The Component System Quick Start Ø The Event System Ø Selectors Ø Data Package Ø And more… The Class System hondaMotercycle.isExpensive(); //returns false hondaMotercycle.getPrice(); //returns 2000 The Sencha Touch class system allows creation of new JavaScript classes, providing inheritance, dependency loading, var suzukiGSXR = Ext.create('SuperBike', { mixins, configuration options, and more. buildYear: 2015, topSpeed: 300, price: 12000, Ext.define('Motercycle', { model: 'gsxr1000', config: { brand: 'Suzuki' buildYear: null, }); topSpeed: null, suzukiGSXR.isExpensive(); //returns true price: null suzukiGSXR.getModel(); //returns "gsxr1000" }, constructor: function (config) { this.initConfig(config); You may notice the use of some functions that we have not }, explicitly defined, for example getModel(). The Sencha Touch isExpensive: function () { class system does us a favor and generates 4 types of return this.getPrice() > 2000; convenience functions: } • Getter – return current value; getName() }); • Setter – set new value; setName() Ext.define('SuperBike', { • Applier – called by setter, execute logic when extend: 'Motercycle', property changes; applyName() config: { • Updater – called by setter, execute logic when the model: null, value for a property changes; updateName() brand: null }, Please note that the applier and updater isSuzuki: function () { functions require implementation. The return this.getBrand() === 'Suzuki'; applier function requires a return of the value }, that will be set to the property. The updater isExpensive: function () { TIP gets fired after the applier and does not return this.getPrice() > 10000; handle a return, rather, it just informs of a } value change }); Let’s assume we want to round the price of the Motercycle to We defined a Motorcycle class with a Superbike subclass. The the nearest 1000. To do so we would implement the Motorcycle class has some basic properties defined in the applyPrice function in the Motercycle class: config object. Besides class properties we defined some basic class methods as well. The Superbike class extends the Motorcycle class and thereby inherits its properties and applyPrice : function (newPrice, oldPrice) { methods. In addition we are able to define a unique return Math.round(newPrice / 1000) * 1000; implementation of each method. } We can instantiate a class by using Ext.create instead of the new keyword. Using the former leverages Sencha Touch’s Usage: dynamic dependency loader and allows for using aliases, as well as easily applying the config object. hondaMotercycle.setPrice(1995); hondaMotercycle.getPrice(); //returns 2000 var hondaMotercycle = Ext.create('Motercycle', { buildYear: 2002, topSpeed: 180, price: 2000 }); Based on: ‘Sencha Touch - Open-Source HTML5 Mobile Web Development Made Easy’ by Stan Bershadskiy Sencha Touch provides the JsonReader, JsonWriter, Data Package XmlReader and XmlWriter classes. These reader and writer types are specified on the proxy definition. A crucial requirement for many mobile applications is to Example Store with Proxy consume data from external sources as well as maintain internal application specific data. for these situations Sencha Touch provides the Data Package, a set of classes responsible Ext.define('MyApp.store.Cars', { for loading, storing, manipulating and saving data. extend: 'Ext.data.Store', requires : [ Three types of classes generally leverage the data package: 'Ext.data.reader.Json', • Model – an entity that represents a single record, 'Ext.data.writer.Json' defining its fields, validation, associations and ], conversion parameters. config: { • Store – collection of model instances with support for model: 'MyApp.model.Car', sorting, filtering, and grouping proxy: { • Proxy – medium that interacts with the remote or type: 'ajax', local data source and performs the necessary reading url: '/cars', and writing operations. reader: { type : 'json', Models rootProperty: 'cars' Models are data objects that are managed in your application. } Models are defined by a set of data fields. Each field is defined } by its name, type, and optional defaultValue. } }); Supported field types are: • string Proxies can be attached to both Models and • int Stores. The result is the same, the Store will • float be looking for a Proxy config on itself and if • boolean none is present it will look for it on the • date Model. however, if the Proxy is defined inside the Model, multiple Stores using the A convert function can also be implemented on the field to TIP same Model don’t have to define the config. perform processing on the field’s data. Furthermore, defining a Proxy inside a Model allows you to save and load an Here is a sample model: instance of that Model without needing a Store Ext.define('MyApp.model.Car', { extend: 'Ext.data.Model', To access a store from anywhere in the application you can config : { use the Ext. getStore() function and pass in either a defined fields : [ storeId or the store’s classname, excluding namespace. { name: 'make', type: 'string' }, { name: 'model', type: 'string' }, Example of loading data into a store: { name: 'topSpeed', type: 'int' }, { name: 'price', type: 'float' }, { name: 'options', type: 'auto' } Ext.getStore("Cars").load(); ] } }); Data Proxies There are four proxies provided by Sencha Touch that can be used in a Store or Model. • LocalStorage – saves data to localStorage • Memory – saves data in memory, extremely volatile • Ajax – communicates with a RESTful resource on the same domain • JsonP – communicates with a service on an external domain using JSON-P Each proxy type implements four basic operations create, read, update, and destroy. When interacting with Server Proxies, there is a need for serializing the data sent and retrieved from the server. for this Based on: ‘Sencha Touch - Open-Source HTML5 Mobile Web Development Made Easy’ by Stan Bershadskiy The Component System Common Components Useful Properties Component Purpose & Functions The Sencha Touch Component system is the foundation of all the visual elements in the framework. The Component system Component Basic Visual Class xtype Ext.Component cls makes full use of the Class system’s dependency injection and xtype: component html hierarchical support. Every Sencha Touch view class is a tpl subclass of Ext.Component, and thus follows its lifecycle. data show() / hide() Components are generally defined by an xtype. An xtype is a /destroy() shortcut for the full component Class name allowing for lazy instantiation. Using xtypes to instantiate components allows Container Manages Component layout Ext.Container rendering and items the creation of the object to be deferred to when it’s actually xtype: container arrangement scrollable needed, thus saving resources. add(component) / remove(component) There may be times when you want to display multiple components, either all at once or individually. The Panel Ext.Panel Container designed showBy(component) xtype: panel to float as overlays Ext.Container class exists for these situations. Containers provide functionality for adding child Components, removing Toolbar Ext.Toolbar Docked containers title Components and specifying a Layout that determines how xtype: panel that generally hold left / right these components are displayed. Buttons and a Title ui Button Ext.Button Basic tappable text xtype: button component ui iconCls iconAlign Based on: ‘Sencha Touch - Open-Source HTML5 Mobile Web Development Made Easy’ by Stan Bershadskiy Tab Panel Container that allows tabBarPosition Ext.create('Ext.Container', { Ext.tab.Panel user to easily switch fullscreen: true, xtype: tabpanel between components using a Toolbar layout: 'hbox', items: [ MessageBox Modal Container for Ext.Msg.alert(title, { Ext.Msg displaying alerts and msg, callback) xtype: 'panel', Ext.MessageBox notifications. Ext.Msg Ext.Msg.confirm(titl html: 'message list', is a singleton that e, msg, callback) flex: 1 allows for creation of Ext.Msg.prompt(titl }, predefined e, msg, callback) { MessageBox xtype: 'panel', instances. html: 'message preview', flex: 2 Carousel Container that allows ui Ext.Carousel user to switch active direction } xtype: carousel components by indicator ] swiping next() / previous() }); List Container of store Vbox layout Ext.dataview.List dynamically rendered itemTpl xtype: list components from a itemCls Data Store onItemDisclosure grouped indexBar Form Panel Panel that contains a getValues() / Ext.form.Panel set of form fields to be setValues(data) xtype: displayed submit(options, formpanel params, headers) Form Fields Base class for all data name Ext.field.field input form fields label / labelCls / xtype: field labelAlign inputCls required Card layout Sometimes you want to show several information screens Layouts information on a small device screen. TabPanels and Carousels both enable you to see one screen of many at a Layouts describe the sizing and positioning time, and underneath they both use a Card Layout. on Components inside your app. for example, an email client might have a list of messages pinned to the left, taking up one Card Layout takes the size of the Container it is applied to third of the available width, and a message viewing panel in the and sizes the currently active item so as to completely fill the rest of the screen. Container. It then hides the rest of the items, allowing you to change which one is currently visible, but only showing one We can achieve this using an hbox layout and its ability at
Recommended publications
  • Sencha Touch and Ext JS Developer Description
    Sencha Touch and Ext JS Developer Description: Health Outcomes Worldwide (HOW), a diverse and rapidly growing Canadian company seeks a motivated developer to work with an agile virtual team creating cutting-edge web and mobile applications for use by healthcare professionals. HOW provides solutions used by nurses in healthcare environments across Canada. The mobile application is a hybrid HTML5 (Sencha Touch)/Cordova solution designed for tablet devices (iOS and Android). Plans for a revamped browser-based solution (using ExtJS 5) are also in development. The selected developer will play an integral role in both mobile and desktop solution design and development using Sencha tools. The ideal candidate will have: • 4+ years of extensive experience with Sencha Ext JS framework and 2+ experience with Sencha Touch framework. • In-depth knowledge of javascript. • Experience building iOS, Android, Windows and Blackberry apps with PhoneGap/ Cordova platform. • Solid knowledge of HTML5, CSS3, EcmaScript 6 and their integration in a standards-based fashion with each other. • Proficiency with the DOM and asynchronous event programming model. • Experience with cross-platform (PC/Mac, desktop, laptop, tablet) and cross-browser (IE, Firefox, Chrome, Safari) development. • Experience with AJAX, JSON and RESTful web services. • Server-side development with ASP.NET WebForms, ASP.NET MVC and Node.js. • Database design and programming using MS SQL Server and SQLite. • Familiarity with Design Patterns, particularly Model-View-Controller (MVC). • Experience with mobile development and Touch interfaces. • Solid understanding and experience with Agile software development methodologies. Qualified, interested parties should submit a resume to [email protected].
    [Show full text]
  • 85324630.Pdf
    About NetTantra NetTantra is a creative technology and design company based out of India, US and UK. We provide web based solutions and mobile solutions to various industries like manufacturing, consulting, education. We have expertise in various sectors of the web including an array of server-side languages, OpenSource CMS/Blog frameworks, Linux/UNIX system administration, production server backup and recovery solutions, cloud infrastructure set-up and much more. Our expertise in providing WordPress based solutions has been acclaimed by many of our clients and the OpenSource community. We also provide cloud based solutions like migrating existing applications and building cloud applications for public or private cloud setups. We are known among our clients for on-time delivery and extraordinary quality of service. In mobile based solutions, we have expertise in developing native applications for iOS and Android platforms. We also develop cross-platform mobile applications using Sencha Touch and jQuery Mobile frameworks. 2 of 14 pages Why Hire Us ✔ Technology ◦ We have expertise in the most cutting edge tools and technologies used in the industry with special focus on OpenSource Technologies ◦ We pay special attention to web and network security for all projects ◦ Our team follows highly optimized project delivery life cycles and processes ✔ Cost ◦ We offer the best price to quality ratio ✔ Infrastructure ◦ Advanced workstations ◦ Cutting edge computing and network systems ◦ Power packed online servers ◦ Smart communications systems ◦ Conference halls, CBT and video learning facilities ◦ High-speed uninterrupted Internet connection ✔ Quality of Service ◦ Guaranteed client satisfaction ◦ Real-time customer support with the least turn-around in the industry ◦ Pre-sales technical and business related support to partners and agencies ✔ Ethics and Principles ◦ We ensure confidentiality in all our dealings.
    [Show full text]
  • ODOT Default Web Application Architecture
    The Ohio Department of Transportation (ODOT) Division of Information Technology ODOT Default Web Application Architecture Filename:ODOT Web Application Architecture.doc Version: 8.0 Author: Michael Jordan Last Modified: 11/16/2017 Project Site: Document Summary: Prepared by the ODOT Division of Information Technology (DoIT) [Document Header] Contents 1 Introduction ......................................................................................................................... 3 1.1 About This Document ..................................................................................................... 3 1.2 Document Location ......................................................................................................... 3 2 Architecture ......................................................................................................................... 4 2.1 A Layered Approach ....................................................................................................... 4 2.1.1 User Interface Layer ............................................................................................... 4 2.1.2 Domain Layer ......................................................................................................... 4 2.1.3 Service Layer .......................................................................................................... 5 3 Technologies ....................................................................................................................... 6 3.1 Microsoft .NET Platform.................................................................................................
    [Show full text]
  • Qooxdoo Interview Questions and Answers Guide
    Qooxdoo Interview Questions And Answers Guide. Global Guideline. https://www.globalguideline.com/ Qooxdoo Interview Questions And Answers Global Guideline . COM Qooxdoo Job Interview Preparation Guide. Question # 1 What is Qooxdoo? Answer:- qooxdoo is an open source Ajax web application framework. It is an LGPL- and/or EPL-licensed multipurpose framework that includes support for professional JavaScript development, a graphical user interface (GUI) toolkit and high-level client-server communication. Read More Answers. Question # 2 Is qooxdoo freely available? Answer:- Yes. qooxdoo is Open Source, dual-licensed under LGPL/EPL, i.e. the "GNU Lesser General Public License (LGPL)" and the "Eclipse Public License (EPL)". As a recipient of qooxdoo, you may choose which license to receive the code under. Read More Answers. Question # 3 Who developed qooxdoo? Answer:- qooxdoo was initiated and is maintained by 1&1, the world's biggest web hosting company. There is a team of full-time core developers as well as many committers and contributors. Read More Answers. Question # 4 Which browsers are supported? Answer:- A qooxdoo application runs in all major web browsers - with identical look & feel. Read More Answers. Question # 5 Does qooxdoo come with a server? Answer:- No. If you already have an existing backend that serves HTTP (or HTTPS) requests, it's probably fine to continue using it. Optionally qooxdoo offers several RPC servers for an elegant client-server communication. BTW, during development of your client application the local file system often is sufficient, without the need to use a real server. Read More Answers. Question # 6 What languages and technologies do we need to know? Answer:- Not many.
    [Show full text]
  • Preview Extjs Tutorial (PDF Version)
    About the Tutorial ExtJS stands for Extended JavaScript. It is a JavaScript framework and a product of Sencha, based on YUI (Yahoo User Interface). It is basically a desktop application development platform with modern UI. This tutorial gives a complete understanding of Ext JS. This reference will take you through simple and practical approaches while learning Ext JS. Audience This tutorial has been prepared for beginners to help them understand the concepts of ExtJS to build dynamic web UI. Prerequisites For this tutorial, the reader should have prior knowledge of HTML, CSS, and JavaScript coding. It would be helpful if the reader knows the concepts of object-oriented programming and has a general idea on creating web applications. Execute ExtJS Online For most of the examples given in this tutorial you will find a Try it option. Make use of this option to execute your ExtJS programs on the spot and enjoy your learning. Try the following example using the Try it option available at the top right corner of the following sample code box − <!DOCTYPE html> <html> <head> <link href="https://cdnjs.cloudflare.com/ajax/libs/extjs/6.0.0/classic/theme- classic/resources/theme-classic-all.css" rel="stylesheet" /> <script type="text/javascript" src="https://cdnjs.cloudflare.com/ajax/libs/extjs/6.0.0/ext-all.js"></script> <script type="text/javascript"> Ext.onReady(function() { Ext.create('Ext.Panel', { renderTo: 'helloWorldPanel', height: 100, i width: 200, title: 'Hello world', html: 'First Ext JS Hello World Program' }); }); </script> </head> <body> <div id="helloWorldPanel"></div> </body> </html> Copyright & Disclaimer Copyright 2017 by Tutorials Point (I) Pvt.
    [Show full text]
  • Ext JS 4 Next Steps
    Ext JS 4 Next Steps The Ext JS 4 library is one of the most powerful libraries for building Rich Internet Applications. Through this book we have learned how the library works and what capabilities it has. Now that we have a full working application and have learned how to use the library, we must know that there are a lot of other things around this awesome library. In this chapter we will see what other concepts may help us to improve our development process when using Ext JS 4. In this chapter we will cover the following topics: • The Ext JS 4 API documentation • Using JSDuck • Want to go mobile? • The Sencha forums The Ext JS 4 API documentation Ext JS 4 has some of the best documentation; it is easy to use and very powerful. The Sencha team has always put so much effort when delivering their frameworks' documentation, but the Ext JS 4 and Sencha Touch 2 APIs are a state of art in documentation. Ext JS 4 Next Steps When we are new to Ext JS 4, one of the most important things we have to know is how the API works. We don't need to memorize each class and class methods, we just need to know where to find them. The following screenshot shows the Sencha Docs structure: In the Sencha Docs we have five main regions. On the left-hand side we have the package tree list with all the packages and classes Ext JS 4 has in its library. In the top right-hand corner we have the search component where we can search almost anything like classes, methods, guides, xtypes, and more.
    [Show full text]
  • Java Script Libraries
    Java Script Libraries www.LifeMichael.com What is JavaScript? ● The JavaScript code is executed within the scope of the web browser. ● JavaScript is an object oriented programming language with functional programming capabilities. © 2010 Haim Michael. All Rights Reserved. Sample <!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN" "http://www.w3.org/TR/html4/loose.dtd"> <html> <head> <title></title> <script src="mycode.js" type="text/javascript"></script> </head> <body> bla bla <script type="text/javascript"> alert("sum="+sum(3,4)); </script> </body> </html> © 2010 Haim Michael. All Rights Reserved. Sample function sum(numA,numB) { return numA+numB; } © 2010 Haim Michael. All Rights Reserved. Sample © 2010 Haim Michael. All Rights Reserved. Ajax ● We can develop JavaScript code that perform the HTTP interaction with the server side. © 2010 Haim Michael. All Rights Reserved. DOM ● The JavaScript programming language allows us to interact with the web page DOM and even change it. © 2010 Haim Michael. All Rights Reserved. CSS ● CSS files are responsible for the look & feel of our web site. We can use Java Script to introduce changes in the look & feel CSS properties. © 2010 Haim Michael. All Rights Reserved. CSS body {background-color:yellow} h2 {color:red} simple.css © 2010 Haim Michael. All Rights Reserved. CSS <html> <head> <title>demo</title> <link rel="stylesheet" type="text/css" href="simple.css"/> </head> <body> <h1>great places</h1> <h2>jogaga</h2> <h2>gongogo</h2> </body> </html> © 2010 Haim Michael. All Rights Reserved. CSS © 2010 Haim Michael. All Rights Reserved. HTML5 ● HTML5 new coming standard is mainly about JavaScript. The new coming HTML5 specification defines various JavaScript APIs for performing various useful operations.
    [Show full text]
  • The Well Project Mobile App Case Study
    www.armedia.com [email protected] The Well Project Mobile App Case Study unique and extensive focus on women. Since 2002, The Well Project has worked to achieve this goal by developing new resources to educate, nurture and support the international community of HIV+ women, their loved ones, and their healthcare providers. Customer The Well Project them in reaching a broader audience, increase the agility of their messaging, and further cement the community - style feel of their Solution Mobile Application Development Objective: To create a mobile application that not onl y promotes informational articles but also serves as community of support for Products Drupal WCM WordPress WCM PhoneGap Framework This Project Goal had Several parts: Sencha Touch Webkit -Build an app optimized for community engagement that would User Interface provide the ability for information to be spread on a global and Web 2.0 (HTML 5 / CSS 3 / JavaScript) viral scale. Thus, The Well Project Mobile App was built to: o Provide users with the ability to comment on blog posts written by other women from around the world from their mobile device. o Provide users with the ability to share Articles or Blog posts with others In an age of ever changing technology, we “ o Provide the ability for users to be able to access realized we needed to expand our resources to information when they are not able to access Internet “ provide for women in need of HIV/AIDS informa- through their mobile devices by giving posts marked as tion world wide, and we were excited to work favorites the ability to be stored locally.
    [Show full text]
  • Mastering Ext JS
    Mastering Ext JS Learn how to build powerful and professional applications by mastering the Ext JS framework Loiane Groner BIRMINGHAM - MUMBAI Mastering Ext JS Copyright © 2013 Packt Publishing All rights reserved. No part of this book may be reproduced, stored in a retrieval system, or transmitted in any form or by any means, without the prior written permission of the publisher, except in the case of brief quotations embedded in critical articles or reviews. Every effort has been made in the preparation of this book to ensure the accuracy of the information presented. However, the information contained in this book is sold without warranty, either express or implied. Neither the author, nor Packt Publishing, and its dealers and distributors will be held liable for any damages caused or alleged to be caused directly or indirectly by this book. Packt Publishing has endeavored to provide trademark information about all of the companies and products mentioned in this book by the appropriate use of capitals. However, Packt Publishing cannot guarantee the accuracy of this information. First published: July 2013 Production Reference: 1010713 Published by Packt Publishing Ltd. Livery Place 35 Livery Street Birmingham B3 2PB, UK.. ISBN 978-1-78216-400-5 www.packtpub.com Cover Image by Asher Wishkerman ([email protected]) Credits Author Project Coordinator Loiane Groner Hardik Patel Reviewers Proofreader Aafrin Chris Smith Vincenzo Ampolo Yiyu Jia Indexer Hemangini Bari Joel Watson Graphics Acquisition Editor Abhinash Sahu Edward Gordon Production Coordinator Lead Technical Editor Shantanu Zagade Anila Vincent Cover Work Technical Editors Shantanu Zagade Arvind Koul Worrell Lewis Vaibhav Pawar Amit Ramadas About the Author Loiane Groner lives in São Paulo, Brazil and has over eight years of software development experience.
    [Show full text]
  • Introducción a Sencha Touch
    Introducción a Sencha Touch Índice 1 Introducción..................................................................................................................2 2 Sencha Touch vs. JQuery Mobile.................................................................................3 3 Instalar Sencha Touch.................................................................................................. 4 4 Estructura de carpetas...................................................................................................5 5 Código HTML básico de una aplicación......................................................................6 6 Instanciar una aplicación.............................................................................................. 8 7 Comprobando los resultados...................................................................................... 10 8 Todo en un único fichero............................................................................................11 9 Paneles y Layouts.......................................................................................................11 10 Identificadores.......................................................................................................... 13 11 Toolbars.................................................................................................................... 14 12 Docked items............................................................................................................ 15 13 Botones....................................................................................................................
    [Show full text]
  • Mobile Applications Development
    Mobile Applications Development www.LifeMichael.com (c) 2012 Haim Michael. All Rights Reserved. Table of Content 1. Web, Native & Hybrid Applications 2. Rapid Applications Development 3. The Hybrid Application Advantages 4. The Application Native Parts 5. Native Application Cases 6. Future Mobile Operating Systems 7. Summary, Questions & Answers (c) 2012 Haim Michael. All Rights Reserved. Web Applications ● HTML, CSS, JavaScript, Ajax, HTML5, jQuery, jQuery Mobile, Mootools, AngularJS, Sencha Touch, Google Charts API etc... (c) 2012 Haim Michael. All Rights Reserved. Native Applications ● Java ● Objective C ● C#, F# and VB.NET ● C++ (c) 2012 Haim Michael. All Rights Reserved. Hybrid Applications ● The hybrid mobile application is a relatively small native application that includes a small component that functions as a web browser. application Web Browser webkit www.webkit.org (c) 2012 Haim Michael. All Rights Reserved. Hybrid Applications ● The code written in Java Script running within the native application web browser component can invoke functions that belong to the native part. code in java code in java script public void doSomething() { Web Browser ... } doSomething() (c) 2012 Haim Michael. All Rights Reserved. Table of Content 1. Web, Native & Hybrid Applications 2. Rapid Applications Development 3. The Hybrid Application Advantages 4. The Application Native Parts 5. Native Application Cases 6. Future Mobile Operating Systems 7. Summary, Questions & Answers (c) 2012 Haim Michael. All Rights Reserved. RAD Tools ● We can either have a direct control over the code running on the android platform or take the easy way. Basic4Android (www.basic4ppc.com) RAD Studio XE2 (www.embarcadero.com) Tiggzi (www.tiggzi.com) Dragon RAD (www.dragonrad.com) (c) 2012 Haim Michael.
    [Show full text]
  • Technical Expertise
    www.ultantechnologies.com Technical Expertise Subject: Ultan Technologies Technical Expertise Author: Cathal Brady Date Published: 01/03/2016 Version Number: Version 1 www.ultantechnologies.com Contents 1 INTRODUCTION ..................................................................................................................... 1 2 .NET ....................................................................................................................................... 1 3 DATABASES ........................................................................................................................... 2 4 BIG DATA ............................................................................................................................... 2 5 JAVA ...................................................................................................................................... 3 6 PHP, RUBY, PYTHON .............................................................................................................. 3 7 FRONT END............................................................................................................................ 4 8 3RD PARTY INTEGRATION, APIs, PLUGINS ............................................................................. 4 9 CONTINUOUS INTEGRATION / BUILD AUTOMATION / VERSION CONTROL .......................... 4 10 MOBILE DEVELOPMENT ........................................................................................................ 5 11 CRM CUSTOMISATION .........................................................................................................
    [Show full text]