├── .gitignore ├── LICENSE.txt ├── package.json ├── readme.md ├── src ├── api │ ├── carriers.json │ ├── dell-streak-7.json │ ├── dell-venue.json │ ├── droid-2-global-by-motorola.json │ ├── droid-pro-by-motorola.json │ ├── lg-axis.json │ ├── motorola-atrix-4g.json │ ├── motorola-bravo-with-motoblur.json │ ├── motorola-charm-with-motoblur.json │ ├── motorola-defy-with-motoblur.json │ ├── motorola-xoom-with-wi-fi.json │ ├── motorola-xoom.json │ ├── nexus-s.json │ ├── phones.json │ ├── samsung-galaxy-tab.json │ ├── samsung-gem.json │ ├── samsung-mesmerize-a-galaxy-s-phone.json │ ├── samsung-showcase-a-galaxy-s-phone.json │ ├── samsung-transform.json │ ├── sanyo-zio.json │ ├── t-mobile-g2.json │ └── t-mobile-mytouch-4g.json ├── app │ ├── components │ │ ├── bootstrap-select │ │ │ ├── bootstrap-select.component.js │ │ │ └── bootstrap-select.tpl.html │ │ ├── carrier-select │ │ │ ├── carrier-select.component.js │ │ │ └── carrier-select.tpl.html │ │ ├── copyright │ │ │ ├── copyright.component.js │ │ │ └── copyright.tpl.html │ │ ├── phone-app │ │ │ ├── phone-app.component.js │ │ │ └── phone-app.tpl.html │ │ ├── phone-list-app │ │ │ ├── phone-list-app.component.js │ │ │ └── phone-list-app.tpl.html │ │ ├── phone-list-item │ │ │ ├── phone-list-item.component.js │ │ │ └── phone-list-item.tpl.html │ │ └── search-box │ │ │ ├── search-box.component.js │ │ │ └── search-box.tpl.html │ ├── filters │ │ └── short-description │ │ │ └── short-description.filter.js │ ├── main.js │ ├── polyfill.js │ ├── services │ │ ├── carrier-repository │ │ │ └── carrier-repository.service.js │ │ ├── filtered-phone-list │ │ │ └── filtered-phone-list.service.js │ │ └── phone-repository │ │ │ └── phone-repository.service.js │ ├── style.js │ └── vendor.js ├── favicon.ico ├── img │ ├── angular-logo.png │ ├── emarsys-logo.png │ └── phones │ │ ├── dell-streak-7.0.jpg │ │ ├── dell-streak-7.1.jpg │ │ ├── dell-streak-7.2.jpg │ │ ├── dell-streak-7.3.jpg │ │ ├── dell-streak-7.4.jpg │ │ ├── dell-venue.0.jpg │ │ ├── dell-venue.1.jpg │ │ ├── dell-venue.2.jpg │ │ ├── dell-venue.3.jpg │ │ ├── dell-venue.4.jpg │ │ ├── dell-venue.5.jpg │ │ ├── droid-2-global-by-motorola.0.jpg │ │ ├── droid-2-global-by-motorola.1.jpg │ │ ├── droid-2-global-by-motorola.2.jpg │ │ ├── droid-pro-by-motorola.0.jpg │ │ ├── droid-pro-by-motorola.1.jpg │ │ ├── lg-axis.0.jpg │ │ ├── lg-axis.1.jpg │ │ ├── lg-axis.2.jpg │ │ ├── motorola-atrix-4g.0.jpg │ │ ├── motorola-atrix-4g.1.jpg │ │ ├── motorola-atrix-4g.2.jpg │ │ ├── motorola-atrix-4g.3.jpg │ │ ├── motorola-bravo-with-motoblur.0.jpg │ │ ├── motorola-bravo-with-motoblur.1.jpg │ │ ├── motorola-bravo-with-motoblur.2.jpg │ │ ├── motorola-charm-with-motoblur.0.jpg │ │ ├── motorola-charm-with-motoblur.1.jpg │ │ ├── motorola-charm-with-motoblur.2.jpg │ │ ├── motorola-defy-with-motoblur.0.jpg │ │ ├── motorola-defy-with-motoblur.1.jpg │ │ ├── motorola-defy-with-motoblur.2.jpg │ │ ├── motorola-xoom-with-wi-fi.0.jpg │ │ ├── motorola-xoom-with-wi-fi.1.jpg │ │ ├── motorola-xoom-with-wi-fi.2.jpg │ │ ├── motorola-xoom-with-wi-fi.3.jpg │ │ ├── motorola-xoom-with-wi-fi.4.jpg │ │ ├── motorola-xoom-with-wi-fi.5.jpg │ │ ├── motorola-xoom.0.jpg │ │ ├── motorola-xoom.1.jpg │ │ ├── motorola-xoom.2.jpg │ │ ├── nexus-s.0.jpg │ │ ├── nexus-s.1.jpg │ │ ├── nexus-s.2.jpg │ │ ├── nexus-s.3.jpg │ │ ├── samsung-galaxy-tab.0.jpg │ │ ├── samsung-galaxy-tab.1.jpg │ │ ├── samsung-galaxy-tab.2.jpg │ │ ├── samsung-galaxy-tab.3.jpg │ │ ├── samsung-galaxy-tab.4.jpg │ │ ├── samsung-galaxy-tab.5.jpg │ │ ├── samsung-galaxy-tab.6.jpg │ │ ├── samsung-gem.0.jpg │ │ ├── samsung-gem.1.jpg │ │ ├── samsung-gem.2.jpg │ │ ├── samsung-mesmerize-a-galaxy-s-phone.0.jpg │ │ ├── samsung-mesmerize-a-galaxy-s-phone.1.jpg │ │ ├── samsung-mesmerize-a-galaxy-s-phone.2.jpg │ │ ├── samsung-mesmerize-a-galaxy-s-phone.3.jpg │ │ ├── samsung-showcase-a-galaxy-s-phone.0.jpg │ │ ├── samsung-showcase-a-galaxy-s-phone.1.jpg │ │ ├── samsung-showcase-a-galaxy-s-phone.2.jpg │ │ ├── samsung-transform.0.jpg │ │ ├── samsung-transform.1.jpg │ │ ├── samsung-transform.2.jpg │ │ ├── samsung-transform.3.jpg │ │ ├── samsung-transform.4.jpg │ │ ├── sanyo-zio.0.jpg │ │ ├── sanyo-zio.1.jpg │ │ ├── sanyo-zio.2.jpg │ │ ├── t-mobile-g2.0.jpg │ │ ├── t-mobile-g2.1.jpg │ │ ├── t-mobile-g2.2.jpg │ │ ├── t-mobile-mytouch-4g.0.jpg │ │ ├── t-mobile-mytouch-4g.1.jpg │ │ ├── t-mobile-mytouch-4g.2.jpg │ │ ├── t-mobile-mytouch-4g.3.jpg │ │ ├── t-mobile-mytouch-4g.4.jpg │ │ └── t-mobile-mytouch-4g.5.jpg ├── index.html └── style │ └── app.css ├── webpack.common.config.js └── webpack.config.js /.gitignore: -------------------------------------------------------------------------------- 1 | node_modules 2 | .idea 3 | dist 4 | -------------------------------------------------------------------------------- /LICENSE.txt: -------------------------------------------------------------------------------- 1 | Copyright 2018 Emarsys 2 | 3 | Permission is hereby granted, free of charge, to any person obtaining a copy of this software and associated documentation files (the "Software"), to deal in the Software without restriction, including without limitation the rights to use, copy, modify, merge, publish, distribute, sublicense, and/or sell copies of the Software, and to permit persons to whom the Software is furnished to do so, subject to the following conditions: 4 | 5 | The above copyright notice and this permission notice shall be included in all copies or substantial portions of the Software. 6 | 7 | THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE. 8 | -------------------------------------------------------------------------------- /package.json: -------------------------------------------------------------------------------- 1 | { 2 | "name": "angular-phonecat-components", 3 | "version": "1.0.0", 4 | "description": "Component based AngularJS application example (Phonecat) in modern Javascript with Webpack", 5 | "main": "client/app/main.js", 6 | "scripts": { 7 | "build": "webpack", 8 | "deploy": "gh-pages -d dist", 9 | "start": "webpack-dev-server" 10 | }, 11 | "contributors": [ 12 | "Gábor Soós (https://github.com/blacksonic)", 13 | "András Fincza (https://github.com/drawain)" 14 | ], 15 | "repository": { 16 | "type": "git", 17 | "url": "https://github.com/emartech/angular-phonecat-components.git" 18 | }, 19 | "license": "MIT", 20 | "keywords": [ 21 | "angular", 22 | "components", 23 | "javascript", 24 | "webpack", 25 | "babel" 26 | ], 27 | "dependencies": { 28 | "angular": "1.5.8", 29 | "angular-route": "1.5.8", 30 | "bootstrap": "3.3.7", 31 | "font-awesome": "4.6.3" 32 | }, 33 | "devDependencies": { 34 | "babel-core": "6.14.0", 35 | "babel-loader": "6.2.5", 36 | "babel-preset-latest": "6.14.0", 37 | "copy-webpack-plugin": "3.0.1", 38 | "core-js": "2.4.1", 39 | "css-loader": "0.25.0", 40 | "extract-text-webpack-plugin": "1.0.1", 41 | "file-loader": "0.9.0", 42 | "gh-pages": "0.11.0", 43 | "html-loader": "0.4.4", 44 | "http-server": "0.9.0", 45 | "progress-bar-webpack-plugin": "1.9.0", 46 | "raw-loader": "0.5.1", 47 | "style-loader": "0.13.1", 48 | "url-loader": "0.5.7", 49 | "webpack": "1.13.2", 50 | "webpack-dev-server": "1.16.1", 51 | "webpack-merge": "0.14.1" 52 | } 53 | } 54 | -------------------------------------------------------------------------------- /readme.md: -------------------------------------------------------------------------------- 1 | # Angular Phonecat Components 2 | [![devDependency Status](https://david-dm.org/emartech/angular-phonecat-components/dev-status.svg)](https://david-dm.org/emartech/angular-phonecat-components?type=dev) 3 | 4 | Component based AngularJS application example (Phonecat) in modern Javascript with Webpack. 5 | 6 | ### Introduction 7 | 8 | The idea came from the [original Angular Phonecat application](https://github.com/angular/angular-phonecat) 9 | to recreate it using modern tooling (using Angular 1.5 with components and new language features in ES6/ES7). 10 | It was first introduced [in our workshop](https://jsconfbp.com/workshops/angular2.html) 11 | ([source code](https://github.com/emartech/journey-towards-angular-2)) 12 | where we migrated the application to it's final stage what you can see in this repository. 13 | 14 | This final stage is intended to show how close an Angular 1 application can be to Angular 2 in concepts and data flow. 15 | 16 | For those not knowing the original repository, it is a phone listing application 17 | where you can filter the list on the main page and view detailed description on phones at the details page. 18 | 19 | ### Technical details 20 | 21 | It uses the latest Angular available (1.5) and many features from ES6 (imports, classes, let etc.). 22 | To make it work in browsers, the code is transpiled with [Babel](https://babeljs.io/) 23 | ([latest preset](https://babeljs.io/docs/plugins/preset-latest/)) and bundled into single files 24 | with [Webpack](https://webpack.github.io/). 25 | 26 | It consists of 3 different entry points. 27 | 28 | - ```client/app/main.js``` is the main entry point and holds the application logic 29 | - ```client/app/vendor.js``` is where the third party libraries reside like angular itself 30 | - ```client/app/styles.js``` consists of required stylesheets for the pretty display 31 | 32 | For Http calls and data access only services are used. 33 | Components (introduced in Angular 1.5) access data through these services 34 | and pass down to child components if necessary. 35 | 36 | Only one way data binding is used in combination with lifecycle events, data flows only up or downwards. 37 | Components don't use the scope or the root scope for any communication. 38 | 39 | Components containing application specific business logic considered as smart components. 40 | Those without application specific logic, such as the select component, considered dumb components. 41 | More on this topic can be found in this article. 42 | 43 | ### Getting started 44 | 45 | ```bash 46 | git clone https://github.com/emartech/angular-phonecat-components.git 47 | cd angular-phonecat-components 48 | npm i 49 | npm start 50 | ``` 51 | 52 | Now the application is running, open your browser and visit the link ```http://localhost:3000```. 53 | -------------------------------------------------------------------------------- /src/api/carriers.json: -------------------------------------------------------------------------------- 1 | [ 2 | "AT&T", 3 | "Cellular South", 4 | "Verizon", 5 | "T-Mobile", 6 | "Best Buy", 7 | "Dell" 8 | ] 9 | -------------------------------------------------------------------------------- /src/api/dell-streak-7.json: -------------------------------------------------------------------------------- 1 | { 2 | "additionalFeatures": "Front Facing 1.3MP Camera", 3 | "android": { 4 | "os": "Android 2.2", 5 | "ui": "Dell Stage" 6 | }, 7 | "availability": [ 8 | "T-Mobile" 9 | ], 10 | "battery": { 11 | "standbyTime": "", 12 | "talkTime": "", 13 | "type": "Lithium Ion (Li-Ion) (2780 mAH)" 14 | }, 15 | "camera": { 16 | "features": [ 17 | "Flash", 18 | "Video" 19 | ], 20 | "primary": "5.0 megapixels" 21 | }, 22 | "connectivity": { 23 | "bluetooth": "Bluetooth 2.1", 24 | "cell": "T-mobile HSPA+ @ 2100/1900/AWS/850 MHz", 25 | "gps": true, 26 | "infrared": false, 27 | "wifi": "802.11 b/g" 28 | }, 29 | "description": "Introducing Dell\u2122 Streak 7. Share photos, videos and movies together. It\u2019s small enough to carry around, big enough to gather around. Android\u2122 2.2-based tablet with over-the-air upgrade capability for future OS releases. A vibrant 7-inch, multitouch display with full Adobe\u00ae Flash 10.1 pre-installed. Includes a 1.3 MP front-facing camera for face-to-face chats on popular services such as Qik or Skype. 16 GB of internal storage, plus Wi-Fi, Bluetooth and built-in GPS keeps you in touch with the world around you. Connect on your terms. Save with 2-year contract or flexibility with prepaid pay-as-you-go plans", 30 | "display": { 31 | "screenResolution": "WVGA (800 x 480)", 32 | "screenSize": "7.0 inches", 33 | "touchScreen": true 34 | }, 35 | "hardware": { 36 | "accelerometer": true, 37 | "audioJack": "3.5mm", 38 | "cpu": "nVidia Tegra T20", 39 | "fmRadio": false, 40 | "physicalKeyboard": false, 41 | "usb": "USB 2.0" 42 | }, 43 | "id": "dell-streak-7", 44 | "images": [ 45 | "img/phones/dell-streak-7.0.jpg", 46 | "img/phones/dell-streak-7.1.jpg", 47 | "img/phones/dell-streak-7.2.jpg", 48 | "img/phones/dell-streak-7.3.jpg", 49 | "img/phones/dell-streak-7.4.jpg" 50 | ], 51 | "name": "Dell Streak 7", 52 | "sizeAndWeight": { 53 | "dimensions": [ 54 | "199.9 mm (w)", 55 | "119.8 mm (h)", 56 | "12.4 mm (d)" 57 | ], 58 | "weight": "450.0 grams" 59 | }, 60 | "storage": { 61 | "flash": "16000MB", 62 | "ram": "512MB" 63 | } 64 | } 65 | -------------------------------------------------------------------------------- /src/api/dell-venue.json: -------------------------------------------------------------------------------- 1 | { 2 | "additionalFeatures": "Gorilla Glass display, Dedicated Camera Key, Ring Silence Switch, Swype keyboard.", 3 | "android": { 4 | "os": "Android 2.2", 5 | "ui": "Dell Stage" 6 | }, 7 | "availability": [ 8 | "AT&T,", 9 | "KT,", 10 | "T-Mobile" 11 | ], 12 | "battery": { 13 | "standbyTime": "400 hours", 14 | "talkTime": "7 hours", 15 | "type": "Lithium Ion (Li-Ion) (1400 mAH)" 16 | }, 17 | "camera": { 18 | "features": [ 19 | "Flash", 20 | "Video" 21 | ], 22 | "primary": "8.0 megapixels" 23 | }, 24 | "connectivity": { 25 | "bluetooth": "Bluetooth 2.1", 26 | "cell": "850/1900/2100 3G; 850/900/1800/1900 GSM/GPRS/EDGE\n900/1700/2100 3G; 850/900/1800/1900 GSM/GPRS/EDGE", 27 | "gps": true, 28 | "infrared": false, 29 | "wifi": "802.11 b/g/n" 30 | }, 31 | "description": "The Venue is the perfect one-touch, Smart Phone providing instant access to everything you love. All of Venue's features make it perfect for on-the-go students, mobile professionals, and active social communicators who love style and performance.\n\nElegantly designed, the Venue offers a vibrant, curved glass display that\u2019s perfect for viewing all types of content. The Venue\u2019s slender form factor feels great in your hand and also slips easily into your pocket. A mobile entertainment powerhouse that lets you download the latest tunes from Amazon MP3 or books from Kindle, watch video, or stream your favorite radio stations. All on the go, anytime, anywhere.", 32 | "display": { 33 | "screenResolution": "WVGA (800 x 480)", 34 | "screenSize": "4.1 inches", 35 | "touchScreen": true 36 | }, 37 | "hardware": { 38 | "accelerometer": true, 39 | "audioJack": "3.5mm", 40 | "cpu": "1 Ghz processor", 41 | "fmRadio": false, 42 | "physicalKeyboard": false, 43 | "usb": "USB 2.0" 44 | }, 45 | "id": "dell-venue", 46 | "images": [ 47 | "img/phones/dell-venue.0.jpg", 48 | "img/phones/dell-venue.1.jpg", 49 | "img/phones/dell-venue.2.jpg", 50 | "img/phones/dell-venue.3.jpg", 51 | "img/phones/dell-venue.4.jpg", 52 | "img/phones/dell-venue.5.jpg" 53 | ], 54 | "name": "Dell Venue", 55 | "sizeAndWeight": { 56 | "dimensions": [ 57 | "64.0 mm (w)", 58 | "121.0 mm (h)", 59 | "12.9 mm (d)" 60 | ], 61 | "weight": "164.0 grams" 62 | }, 63 | "storage": { 64 | "flash": "1000MB", 65 | "ram": "512MB" 66 | } 67 | } 68 | -------------------------------------------------------------------------------- /src/api/droid-2-global-by-motorola.json: -------------------------------------------------------------------------------- 1 | { 2 | "additionalFeatures": "Adobe Flash Player 10, Quadband GSM Worldphone, Advance Business Security, Complex Password Secure, Review & Edit Documents with Quick Office, Personal 3G Mobile Hotspot for up to 5 WiFi enabled Devices, Advanced Social Networking brings all social content into a single homescreen widget", 3 | "android": { 4 | "os": "Android 2.2", 5 | "ui": "" 6 | }, 7 | "availability": [ 8 | "Verizon" 9 | ], 10 | "battery": { 11 | "standbyTime": "230 hours", 12 | "talkTime": "8 hours", 13 | "type": "Lithium Ion (Li-Ion) (1400 mAH)" 14 | }, 15 | "camera": { 16 | "features": [ 17 | "Flash", 18 | "Video" 19 | ], 20 | "primary": "5.0 megapixels" 21 | }, 22 | "connectivity": { 23 | "bluetooth": "Bluetooth 2.1", 24 | "cell": "WCDMA 850/1900/2100, CDMA 800/1900, GSM 850/900/1800/1900, HSDPA 10.2 Mbps (Category 9/10), CDMA EV-DO Release A, EDGE Class 12, GPRS Class 12, HSUPA 1.8 Mbps", 25 | "gps": true, 26 | "infrared": false, 27 | "wifi": "802.11 b/g/n" 28 | }, 29 | "description": "With Quad Band GSM, the DROID 2 Global can send email and make and receive calls from more than 200 countries. It features an improved QWERTY keyboard, super-fast 1.2 GHz processor and enhanced security for all your business needs.", 30 | "display": { 31 | "screenResolution": "FWVGA (854 x 480)", 32 | "screenSize": "3.7 inches", 33 | "touchScreen": true 34 | }, 35 | "hardware": { 36 | "accelerometer": true, 37 | "audioJack": "3.5mm", 38 | "cpu": "1.2 GHz TI OMAP", 39 | "fmRadio": false, 40 | "physicalKeyboard": true, 41 | "usb": "USB 2.0" 42 | }, 43 | "id": "droid-2-global-by-motorola", 44 | "images": [ 45 | "img/phones/droid-2-global-by-motorola.0.jpg", 46 | "img/phones/droid-2-global-by-motorola.1.jpg", 47 | "img/phones/droid-2-global-by-motorola.2.jpg" 48 | ], 49 | "name": "DROID\u2122 2 Global by Motorola", 50 | "sizeAndWeight": { 51 | "dimensions": [ 52 | "60.5 mm (w)", 53 | "116.3 mm (h)", 54 | "13.7 mm (d)" 55 | ], 56 | "weight": "169.0 grams" 57 | }, 58 | "storage": { 59 | "flash": "8192MB", 60 | "ram": "512MB" 61 | } 62 | } 63 | -------------------------------------------------------------------------------- /src/api/droid-pro-by-motorola.json: -------------------------------------------------------------------------------- 1 | { 2 | "additionalFeatures": "Adobe Flash Player 10, Quadband GSM Worldphone, Advance Business Security, Complex Password Secure, Review & Edit Documents with Quick Office, Personal 3G Mobile Hotspot for up to 5 WiFi enabled Devices, Advanced Social Networking brings all social content into a single homescreen widget", 3 | "android": { 4 | "os": "Android 2.2", 5 | "ui": "" 6 | }, 7 | "availability": [ 8 | "Verizon" 9 | ], 10 | "battery": { 11 | "standbyTime": "330 hours", 12 | "talkTime": "7 hours", 13 | "type": "Lithium Ion (Li-Ion) (1400 mAH)" 14 | }, 15 | "camera": { 16 | "features": [ 17 | "Flash", 18 | "Video" 19 | ], 20 | "primary": "5.0 megapixels" 21 | }, 22 | "connectivity": { 23 | "bluetooth": "Bluetooth 2.1", 24 | "cell": "800/1900 CDMA EVDO Rev. A with dual diversity antenna, 850/900/1800/1900MHz GSM, GPRS Class 12, EDGE Class 12, 850/1900/2100 WCDMA (category 9/10), HSDPA 10.2mbps, HSUPA 1.8 mbps", 25 | "gps": true, 26 | "infrared": false, 27 | "wifi": "802.11 b/g/n" 28 | }, 29 | "description": "Access your work directory, email or calendar with DROID Pro by Motorola., an Android-for-business smartphone with corporate-level security. It features both a QWERTY keyboard and touchscreen, a speedy 1 GHz processor and Adobe\u00ae Flash\u00ae Player 10.", 30 | "display": { 31 | "screenResolution": "HVGA (480 x 320)", 32 | "screenSize": "3.1 inches", 33 | "touchScreen": true 34 | }, 35 | "hardware": { 36 | "accelerometer": true, 37 | "audioJack": "3.5mm", 38 | "cpu": "1 GHz TI OMAP", 39 | "fmRadio": false, 40 | "physicalKeyboard": true, 41 | "usb": "USB 2.0" 42 | }, 43 | "id": "droid-pro-by-motorola", 44 | "images": [ 45 | "img/phones/droid-pro-by-motorola.0.jpg", 46 | "img/phones/droid-pro-by-motorola.1.jpg" 47 | ], 48 | "name": "DROID\u2122 Pro by Motorola", 49 | "sizeAndWeight": { 50 | "dimensions": [ 51 | "61.0 mm (w)", 52 | "119.0 mm (h)", 53 | "11.7 mm (d)" 54 | ], 55 | "weight": "134.0 grams" 56 | }, 57 | "storage": { 58 | "flash": "2048MB", 59 | "ram": "512MB" 60 | } 61 | } 62 | -------------------------------------------------------------------------------- /src/api/lg-axis.json: -------------------------------------------------------------------------------- 1 | { 2 | "additionalFeatures": "Accessibility features: Tactile QWERTY keyboard, four-direction keypad, start and end call buttons, dedicated number keys, camera button, TalkBack screen reader", 3 | "android": { 4 | "os": "Android 2.1", 5 | "ui": "LG Home" 6 | }, 7 | "availability": [ 8 | "Cellular South" 9 | ], 10 | "battery": { 11 | "standbyTime": "500 hours", 12 | "talkTime": "8 hours", 13 | "type": "Lithium Ion (Li-Ion) (1500 mAH)" 14 | }, 15 | "camera": { 16 | "features": [ 17 | "Flash", 18 | "Video" 19 | ], 20 | "primary": "3.0 megapixels" 21 | }, 22 | "connectivity": { 23 | "bluetooth": "Bluetooth 2.1", 24 | "cell": "1.9 GHz CDMA PCS, 800 MHz CDMA, EVDO Rev. A, 1xRTT", 25 | "gps": true, 26 | "infrared": false, 27 | "wifi": "802.11 b/g" 28 | }, 29 | "description": "Android plus QWERTY is a powerful duo. LG Axis melds a speedy UI with the limitless micro-entertainment of 80,000+ apps including voice-activated Google. Feel the tactile vibration on its tempered glass touchscreen. Take the fuzziness out of your fun with a 3.2MP camera that does 360\u00b0 panoramics. And customize your home screens with shortcuts to your apps, favorites, and widgets. It's the centerpiece of your life.", 30 | "display": { 31 | "screenResolution": "WVGA (800 x 480)", 32 | "screenSize": "3.2 inches", 33 | "touchScreen": true 34 | }, 35 | "hardware": { 36 | "accelerometer": true, 37 | "audioJack": "", 38 | "cpu": "600 MHz Qualcomm MSM7627", 39 | "fmRadio": false, 40 | "physicalKeyboard": true, 41 | "usb": "USB 2.0" 42 | }, 43 | "id": "lg-axis", 44 | "images": [ 45 | "img/phones/lg-axis.0.jpg", 46 | "img/phones/lg-axis.1.jpg", 47 | "img/phones/lg-axis.2.jpg" 48 | ], 49 | "name": "LG Axis", 50 | "sizeAndWeight": { 51 | "dimensions": [ 52 | "56.0 mm (w)", 53 | "116.0 mm (h)", 54 | "16.0 mm (d)" 55 | ], 56 | "weight": "158.0 grams" 57 | }, 58 | "storage": { 59 | "flash": "126MB", 60 | "ram": "256MB" 61 | } 62 | } 63 | -------------------------------------------------------------------------------- /src/api/motorola-atrix-4g.json: -------------------------------------------------------------------------------- 1 | { 2 | "additionalFeatures": "", 3 | "android": { 4 | "os": "Android 2.2", 5 | "ui": "MOTOBLUR" 6 | }, 7 | "availability": [ 8 | "AT&T" 9 | ], 10 | "battery": { 11 | "standbyTime": "400 hours", 12 | "talkTime": "5 hours", 13 | "type": "Lithium Ion (Li-Ion) (1930 mAH)" 14 | }, 15 | "camera": { 16 | "features": [ 17 | "" 18 | ], 19 | "primary": "" 20 | }, 21 | "connectivity": { 22 | "bluetooth": "Bluetooth 2.1", 23 | "cell": "WCDMA 850/1900/2100, GSM 850/900/1800/1900, HSDPA 14Mbps (Category 10) Edge Class 12, GPRS Class 12, eCompass, AGPS", 24 | "gps": true, 25 | "infrared": false, 26 | "wifi": "802.11 a/b/g/n" 27 | }, 28 | "description": "MOTOROLA ATRIX 4G gives you dual-core processing power and the revolutionary webtop application. With webtop and a compatible Motorola docking station, sold separately, you can surf the Internet with a full Firefox browser, create and edit docs, or access multimedia on a large screen almost anywhere.", 29 | "display": { 30 | "screenResolution": "QHD (960 x 540)", 31 | "screenSize": "4.0 inches", 32 | "touchScreen": true 33 | }, 34 | "hardware": { 35 | "accelerometer": true, 36 | "audioJack": "3.5mm", 37 | "cpu": "1 GHz Dual Core", 38 | "fmRadio": false, 39 | "physicalKeyboard": false, 40 | "usb": "USB 2.0" 41 | }, 42 | "id": "motorola-atrix-4g", 43 | "images": [ 44 | "img/phones/motorola-atrix-4g.0.jpg", 45 | "img/phones/motorola-atrix-4g.1.jpg", 46 | "img/phones/motorola-atrix-4g.2.jpg", 47 | "img/phones/motorola-atrix-4g.3.jpg" 48 | ], 49 | "name": "MOTOROLA ATRIX\u2122 4G", 50 | "sizeAndWeight": { 51 | "dimensions": [ 52 | "63.5 mm (w)", 53 | "117.75 mm (h)", 54 | "10.95 mm (d)" 55 | ], 56 | "weight": "135.0 grams" 57 | }, 58 | "storage": { 59 | "flash": "", 60 | "ram": "" 61 | } 62 | } 63 | -------------------------------------------------------------------------------- /src/api/motorola-bravo-with-motoblur.json: -------------------------------------------------------------------------------- 1 | { 2 | "additionalFeatures": "Adobe\u00ae Flash\u00ae Lite\u00ae 3, DNLA, CrystalTalk\u2122 PLUS technology", 3 | "android": { 4 | "os": "Android 2.1", 5 | "ui": "MOTOBLUR\u2122" 6 | }, 7 | "availability": [ 8 | "AT&T" 9 | ], 10 | "battery": { 11 | "standbyTime": "216 hours", 12 | "talkTime": "6 hours", 13 | "type": "Lithium Ion (Li-Ion) (1540 mAH)" 14 | }, 15 | "camera": { 16 | "features": [ 17 | "Video" 18 | ], 19 | "primary": "3.0 megapixels" 20 | }, 21 | "connectivity": { 22 | "bluetooth": "Bluetooth 2.1", 23 | "cell": "WCDMA 850/1900, GSM 850/900/1800/1900, HSDPA 7.2 Mbps (Category 7/8), EDGE Class 12, GPRS Class 12, HSUPA 2.0 Mbps", 24 | "gps": true, 25 | "infrared": false, 26 | "wifi": "802.11 b/g/n" 27 | }, 28 | "description": "MOTOROLA BRAVO\u2122 with MOTOBLUR\u2122 with its large 3.7-inch touchscreen and web-browsing capabilities is sure to make an impression. And it keeps your life updated and secure through MOTOBLUR.", 29 | "display": { 30 | "screenResolution": "WVGA (800 x 480)", 31 | "screenSize": "3.7 inches", 32 | "touchScreen": true 33 | }, 34 | "hardware": { 35 | "accelerometer": true, 36 | "audioJack": "3.5mm", 37 | "cpu": "800 Mhz", 38 | "fmRadio": true, 39 | "physicalKeyboard": false, 40 | "usb": "USB 2.0" 41 | }, 42 | "id": "motorola-bravo-with-motoblur", 43 | "images": [ 44 | "img/phones/motorola-bravo-with-motoblur.0.jpg", 45 | "img/phones/motorola-bravo-with-motoblur.1.jpg", 46 | "img/phones/motorola-bravo-with-motoblur.2.jpg" 47 | ], 48 | "name": "MOTOROLA BRAVO\u2122 with MOTOBLUR\u2122", 49 | "sizeAndWeight": { 50 | "dimensions": [ 51 | "63.0 mm (w)", 52 | "109.0 mm (h)", 53 | "13.3 mm (d)" 54 | ], 55 | "weight": "130.0 grams" 56 | }, 57 | "storage": { 58 | "flash": "", 59 | "ram": "" 60 | } 61 | } 62 | -------------------------------------------------------------------------------- /src/api/motorola-charm-with-motoblur.json: -------------------------------------------------------------------------------- 1 | { 2 | "additionalFeatures": "MOTOBLUR-enabled; battery manager; seven home screens; customize by moving or resizing widgets; Android HTML WebKit w/Flash Lite; BACKTRACK\u2122 navigation pad behind screen", 3 | "android": { 4 | "os": "Android 2.1", 5 | "ui": "MOTOBLUR" 6 | }, 7 | "availability": [ 8 | "T-Mobile,", 9 | "Telus" 10 | ], 11 | "battery": { 12 | "standbyTime": "267 hours", 13 | "talkTime": "5 hours", 14 | "type": "Lithium Ion (Li-Ion) (1170 mAH)" 15 | }, 16 | "camera": { 17 | "features": [ 18 | "Video" 19 | ], 20 | "primary": "3.0 megapixels" 21 | }, 22 | "connectivity": { 23 | "bluetooth": "Bluetooth 2.0", 24 | "cell": "WCDMA 1700/2100, GSM 850/900/1800/1900, HSDPA 3.6 Mbps (Category 5/6), EDGE Class 12, GPRS Class 12", 25 | "gps": true, 26 | "infrared": false, 27 | "wifi": "802.11 b/g" 28 | }, 29 | "description": "Motorola CHARM fits easily in your pocket or palm. Includes MOTOBLUR so you can sync and merge your contacts, emails, messages and posts with continuous updates and back-ups.", 30 | "display": { 31 | "screenResolution": "QVGA (320 x 240)", 32 | "screenSize": "2.8 inches", 33 | "touchScreen": true 34 | }, 35 | "hardware": { 36 | "accelerometer": true, 37 | "audioJack": "3.5mm", 38 | "cpu": "600 MHz", 39 | "fmRadio": false, 40 | "physicalKeyboard": true, 41 | "usb": "USB 2.0" 42 | }, 43 | "id": "motorola-charm-with-motoblur", 44 | "images": [ 45 | "img/phones/motorola-charm-with-motoblur.0.jpg", 46 | "img/phones/motorola-charm-with-motoblur.1.jpg", 47 | "img/phones/motorola-charm-with-motoblur.2.jpg" 48 | ], 49 | "name": "Motorola CHARM\u2122 with MOTOBLUR\u2122", 50 | "sizeAndWeight": { 51 | "dimensions": [ 52 | "67.2 mm (w)", 53 | "98.4 mm (h)", 54 | "11.4 mm (d)" 55 | ], 56 | "weight": "110.0 grams" 57 | }, 58 | "storage": { 59 | "flash": "150MB", 60 | "ram": "512MB" 61 | } 62 | } 63 | -------------------------------------------------------------------------------- /src/api/motorola-defy-with-motoblur.json: -------------------------------------------------------------------------------- 1 | { 2 | "additionalFeatures": "Blockbuster On Demand\u00ae movies and music downloads with connected music player\nWater-resistant and dustproof", 3 | "android": { 4 | "os": "Android 2.1", 5 | "ui": "MOTOBLUR" 6 | }, 7 | "availability": [ 8 | "SFR,", 9 | "T-Mobile,", 10 | "Vodafone" 11 | ], 12 | "battery": { 13 | "standbyTime": "400 hours", 14 | "talkTime": "6 hours", 15 | "type": "Lithium Ion (Li-Ion) (1540 mAH)" 16 | }, 17 | "camera": { 18 | "features": [ 19 | "Flash", 20 | "Video" 21 | ], 22 | "primary": "5.0 megapixels" 23 | }, 24 | "connectivity": { 25 | "bluetooth": "Bluetooth 2.1", 26 | "cell": "WCDMA 850/1700/2100, GSM 850/900/1800/1900, HSDPA 7.2 Mbps (Category 7/8), EDGE Class 12, GPRS Class 12, HSUPA 2.0 Mbps", 27 | "gps": true, 28 | "infrared": false, 29 | "wifi": "802.11 b/g/n" 30 | }, 31 | "description": "DEFY with MOTOBLUR is ready for everything life throws your way. It's water-resistant and dustproof, with plenty of entertainment options; and, with MOTOBLUR, it automatically delivers messages and status updates right to your home screen.", 32 | "display": { 33 | "screenResolution": "FWVGA (854 x 480)", 34 | "screenSize": "3.7 inches", 35 | "touchScreen": true 36 | }, 37 | "hardware": { 38 | "accelerometer": true, 39 | "audioJack": "3.5mm", 40 | "cpu": "800 MHz TI OMAP3610", 41 | "fmRadio": false, 42 | "physicalKeyboard": false, 43 | "usb": "USB 2.0" 44 | }, 45 | "id": "motorola-defy-with-motoblur", 46 | "images": [ 47 | "img/phones/motorola-defy-with-motoblur.0.jpg", 48 | "img/phones/motorola-defy-with-motoblur.1.jpg", 49 | "img/phones/motorola-defy-with-motoblur.2.jpg" 50 | ], 51 | "name": "Motorola DEFY\u2122 with MOTOBLUR\u2122", 52 | "sizeAndWeight": { 53 | "dimensions": [ 54 | "59.0 mm (w)", 55 | "107.0 mm (h)", 56 | "13.4 mm (d)" 57 | ], 58 | "weight": "118.0 grams" 59 | }, 60 | "storage": { 61 | "flash": "2000MB", 62 | "ram": "512MB" 63 | } 64 | } 65 | -------------------------------------------------------------------------------- /src/api/motorola-xoom-with-wi-fi.json: -------------------------------------------------------------------------------- 1 | { 2 | "additionalFeatures": "Sensors: proximity, ambient light, barometer, gyroscope", 3 | "android": { 4 | "os": "Android 3.0", 5 | "ui": "Honeycomb" 6 | }, 7 | "availability": [ 8 | "" 9 | ], 10 | "battery": { 11 | "standbyTime": "336 hours", 12 | "talkTime": "24 hours", 13 | "type": "Other ( mAH)" 14 | }, 15 | "camera": { 16 | "features": [ 17 | "Flash", 18 | "Video" 19 | ], 20 | "primary": "5.0 megapixels" 21 | }, 22 | "connectivity": { 23 | "bluetooth": "Bluetooth 2.1", 24 | "cell": "", 25 | "gps": true, 26 | "infrared": false, 27 | "wifi": "802.11 b/g/n" 28 | }, 29 | "description": "Motorola XOOM with Wi-Fi has a super-powerful dual-core processor and Android\u2122 3.0 (Honeycomb) \u2014 the Android platform designed specifically for tablets. With its 10.1-inch HD widescreen display, you\u2019ll enjoy HD video in a thin, light, powerful and upgradeable tablet.", 30 | "display": { 31 | "screenResolution": "WXGA (1200 x 800)", 32 | "screenSize": "10.1 inches", 33 | "touchScreen": true 34 | }, 35 | "hardware": { 36 | "accelerometer": true, 37 | "audioJack": "3.5mm", 38 | "cpu": "1 GHz Dual Core Tegra 2", 39 | "fmRadio": false, 40 | "physicalKeyboard": false, 41 | "usb": "USB 2.0" 42 | }, 43 | "id": "motorola-xoom-with-wi-fi", 44 | "images": [ 45 | "img/phones/motorola-xoom-with-wi-fi.0.jpg", 46 | "img/phones/motorola-xoom-with-wi-fi.1.jpg", 47 | "img/phones/motorola-xoom-with-wi-fi.2.jpg", 48 | "img/phones/motorola-xoom-with-wi-fi.3.jpg", 49 | "img/phones/motorola-xoom-with-wi-fi.4.jpg", 50 | "img/phones/motorola-xoom-with-wi-fi.5.jpg" 51 | ], 52 | "name": "Motorola XOOM\u2122 with Wi-Fi", 53 | "sizeAndWeight": { 54 | "dimensions": [ 55 | "249.1 mm (w)", 56 | "167.8 mm (h)", 57 | "12.9 mm (d)" 58 | ], 59 | "weight": "708.0 grams" 60 | }, 61 | "storage": { 62 | "flash": "32000MB", 63 | "ram": "1000MB" 64 | } 65 | } 66 | -------------------------------------------------------------------------------- /src/api/motorola-xoom.json: -------------------------------------------------------------------------------- 1 | { 2 | "additionalFeatures": "Front-facing camera. Sensors: proximity, ambient light, barometer, gyroscope.", 3 | "android": { 4 | "os": "Android 3.0", 5 | "ui": "Android" 6 | }, 7 | "availability": [ 8 | "Verizon" 9 | ], 10 | "battery": { 11 | "standbyTime": "336 hours", 12 | "talkTime": "24 hours", 13 | "type": "Other (3250 mAH)" 14 | }, 15 | "camera": { 16 | "features": [ 17 | "Flash", 18 | "Video" 19 | ], 20 | "primary": "5.0 megapixels" 21 | }, 22 | "connectivity": { 23 | "bluetooth": "Bluetooth 2.1", 24 | "cell": "CDMA 800 /1900 LTE 700, Rx diversity in all bands", 25 | "gps": true, 26 | "infrared": false, 27 | "wifi": "802.11 a/b/g/n" 28 | }, 29 | "description": "MOTOROLA XOOM has a super-powerful dual-core processor and Android\u2122 3.0 (Honeycomb) \u2014 the Android platform designed specifically for tablets. With its 10.1-inch HD widescreen display, you\u2019ll enjoy HD video in a thin, light, powerful and upgradeable tablet.", 30 | "display": { 31 | "screenResolution": "WXGA (1200 x 800)", 32 | "screenSize": "10.1 inches", 33 | "touchScreen": true 34 | }, 35 | "hardware": { 36 | "accelerometer": true, 37 | "audioJack": "3.5mm", 38 | "cpu": "1 GHz Dual Core Tegra 2", 39 | "fmRadio": false, 40 | "physicalKeyboard": false, 41 | "usb": "USB 2.0" 42 | }, 43 | "id": "motorola-xoom", 44 | "images": [ 45 | "img/phones/motorola-xoom.0.jpg", 46 | "img/phones/motorola-xoom.1.jpg", 47 | "img/phones/motorola-xoom.2.jpg" 48 | ], 49 | "name": "MOTOROLA XOOM\u2122", 50 | "sizeAndWeight": { 51 | "dimensions": [ 52 | "249.0 mm (w)", 53 | "168.0 mm (h)", 54 | "12.7 mm (d)" 55 | ], 56 | "weight": "726.0 grams" 57 | }, 58 | "storage": { 59 | "flash": "32000MB", 60 | "ram": "1000MB" 61 | } 62 | } 63 | -------------------------------------------------------------------------------- /src/api/nexus-s.json: -------------------------------------------------------------------------------- 1 | { 2 | "additionalFeatures": "Contour Display, Near Field Communications (NFC), Three-axis gyroscope, Anti-fingerprint display coating, Internet Calling support (VoIP/SIP)", 3 | "android": { 4 | "os": "Android 2.3", 5 | "ui": "Android" 6 | }, 7 | "availability": [ 8 | "M1,", 9 | "O2,", 10 | "Orange,", 11 | "Singtel,", 12 | "StarHub,", 13 | "T-Mobile,", 14 | "Vodafone" 15 | ], 16 | "battery": { 17 | "standbyTime": "428 hours", 18 | "talkTime": "6 hours", 19 | "type": "Lithium Ion (Li-Ion) (1500 mAH)" 20 | }, 21 | "camera": { 22 | "features": [ 23 | "Flash", 24 | "Video" 25 | ], 26 | "primary": "5.0 megapixels" 27 | }, 28 | "connectivity": { 29 | "bluetooth": "Bluetooth 2.1", 30 | "cell": "Quad-band GSM: 850, 900, 1800, 1900\r\nTri-band HSPA: 900, 2100, 1700\r\nHSPA type: HSDPA (7.2Mbps) HSUPA (5.76Mbps)", 31 | "gps": true, 32 | "infrared": false, 33 | "wifi": "802.11 b/g/n" 34 | }, 35 | "description": "Nexus S is the next generation of Nexus devices, co-developed by Google and Samsung. The latest Android platform (Gingerbread), paired with a 1 GHz Hummingbird processor and 16GB of memory, makes Nexus S one of the fastest phones on the market. It comes pre-installed with the best of Google apps and enabled with new and popular features like true multi-tasking, Wi-Fi hotspot, Internet Calling, NFC support, and full web browsing. With this device, users will also be the first to receive software upgrades and new Google mobile apps as soon as they become available. For more details, visit http://www.google.com/nexus.", 36 | "display": { 37 | "screenResolution": "WVGA (800 x 480)", 38 | "screenSize": "4.0 inches", 39 | "touchScreen": true 40 | }, 41 | "hardware": { 42 | "accelerometer": true, 43 | "audioJack": "3.5mm", 44 | "cpu": "1GHz Cortex A8 (Hummingbird) processor", 45 | "fmRadio": false, 46 | "physicalKeyboard": false, 47 | "usb": "USB 2.0" 48 | }, 49 | "id": "nexus-s", 50 | "images": [ 51 | "img/phones/nexus-s.0.jpg", 52 | "img/phones/nexus-s.1.jpg", 53 | "img/phones/nexus-s.2.jpg", 54 | "img/phones/nexus-s.3.jpg" 55 | ], 56 | "name": "Nexus S", 57 | "sizeAndWeight": { 58 | "dimensions": [ 59 | "63.0 mm (w)", 60 | "123.9 mm (h)", 61 | "10.88 mm (d)" 62 | ], 63 | "weight": "129.0 grams" 64 | }, 65 | "storage": { 66 | "flash": "16384MB", 67 | "ram": "512MB" 68 | } 69 | } 70 | -------------------------------------------------------------------------------- /src/api/phones.json: -------------------------------------------------------------------------------- 1 | [ 2 | { 3 | "age": 0, 4 | "carrier": "Not specified", 5 | "id": "motorola-xoom-with-wi-fi", 6 | "imageUrl": "img/phones/motorola-xoom-with-wi-fi.0.jpg", 7 | "name": "Motorola XOOM\u2122 with Wi-Fi", 8 | "snippet": "The Next, Next Generation\r\n\r\nExperience the future with Motorola XOOM with Wi-Fi, the world's first tablet powered by Android 3.0 (Honeycomb)." 9 | }, 10 | { 11 | "age": 1, 12 | "carrier": "Not specified", 13 | "id": "motorola-xoom", 14 | "imageUrl": "img/phones/motorola-xoom.0.jpg", 15 | "name": "MOTOROLA XOOM\u2122", 16 | "snippet": "The Next, Next Generation\n\nExperience the future with MOTOROLA XOOM, the world's first tablet powered by Android 3.0 (Honeycomb)." 17 | }, 18 | { 19 | "age": 2, 20 | "carrier": "AT&T", 21 | "id": "motorola-atrix-4g", 22 | "imageUrl": "img/phones/motorola-atrix-4g.0.jpg", 23 | "name": "MOTOROLA ATRIX\u2122 4G", 24 | "snippet": "MOTOROLA ATRIX 4G the world's most powerful smartphone." 25 | }, 26 | { 27 | "age": 3, 28 | "carrier": "Not specified", 29 | "id": "dell-streak-7", 30 | "imageUrl": "img/phones/dell-streak-7.0.jpg", 31 | "name": "Dell Streak 7", 32 | "snippet": "Introducing Dell\u2122 Streak 7. Share photos, videos and movies together. It\u2019s small enough to carry around, big enough to gather around." 33 | }, 34 | { 35 | "age": 4, 36 | "carrier": "Cellular South", 37 | "id": "samsung-gem", 38 | "imageUrl": "img/phones/samsung-gem.0.jpg", 39 | "name": "Samsung Gem\u2122", 40 | "snippet": "The Samsung Gem\u2122 brings you everything that you would expect and more from a touch display smart phone \u2013 more apps, more features and a more affordable price." 41 | }, 42 | { 43 | "age": 5, 44 | "carrier": "Dell", 45 | "id": "dell-venue", 46 | "imageUrl": "img/phones/dell-venue.0.jpg", 47 | "name": "Dell Venue", 48 | "snippet": "The Dell Venue; Your Personal Express Lane to Everything" 49 | }, 50 | { 51 | "age": 6, 52 | "carrier": "Best Buy", 53 | "id": "nexus-s", 54 | "imageUrl": "img/phones/nexus-s.0.jpg", 55 | "name": "Nexus S", 56 | "snippet": "Fast just got faster with Nexus S. A pure Google experience, Nexus S is the first phone to run Gingerbread (Android 2.3), the fastest version of Android yet." 57 | }, 58 | { 59 | "age": 7, 60 | "carrier": "Cellular South", 61 | "id": "lg-axis", 62 | "imageUrl": "img/phones/lg-axis.0.jpg", 63 | "name": "LG Axis", 64 | "snippet": "Android Powered, Google Maps Navigation, 5 Customizable Home Screens" 65 | }, 66 | { 67 | "age": 8, 68 | "carrier": "Not specified", 69 | "id": "samsung-galaxy-tab", 70 | "imageUrl": "img/phones/samsung-galaxy-tab.0.jpg", 71 | "name": "Samsung Galaxy Tab\u2122", 72 | "snippet": "The Samsung Galaxy Tab\u2122 brings you an ultra-mobile entertainment experience through its 7\u201d display and high-power processor." 73 | }, 74 | { 75 | "age": 9, 76 | "carrier": "Cellular South", 77 | "id": "samsung-showcase-a-galaxy-s-phone", 78 | "imageUrl": "img/phones/samsung-showcase-a-galaxy-s-phone.0.jpg", 79 | "name": "Samsung Showcase\u2122 a Galaxy S\u2122 phone", 80 | "snippet": "The Samsung Showcase\u2122 delivers a cinema quality experience like you\u2019ve never seen before." 81 | }, 82 | { 83 | "age": 10, 84 | "carrier": "Verizon", 85 | "id": "droid-2-global-by-motorola", 86 | "imageUrl": "img/phones/droid-2-global-by-motorola.0.jpg", 87 | "name": "DROID\u2122 2 Global by Motorola", 88 | "snippet": "The first smartphone with a 1.2 GHz processor and global capabilities." 89 | }, 90 | { 91 | "age": 11, 92 | "carrier": "Verizon", 93 | "id": "droid-pro-by-motorola", 94 | "imageUrl": "img/phones/droid-pro-by-motorola.0.jpg", 95 | "name": "DROID\u2122 Pro by Motorola", 96 | "snippet": "The next generation of DOES." 97 | }, 98 | { 99 | "age": 12, 100 | "carrier": "AT&T", 101 | "id": "motorola-bravo-with-motoblur", 102 | "imageUrl": "img/phones/motorola-bravo-with-motoblur.0.jpg", 103 | "name": "MOTOROLA BRAVO\u2122 with MOTOBLUR\u2122", 104 | "snippet": "An experience to cheer about." 105 | }, 106 | { 107 | "age": 13, 108 | "carrier": "T-Mobile", 109 | "id": "motorola-defy-with-motoblur", 110 | "imageUrl": "img/phones/motorola-defy-with-motoblur.0.jpg", 111 | "name": "Motorola DEFY\u2122 with MOTOBLUR\u2122", 112 | "snippet": "Are you ready for everything life throws your way?" 113 | }, 114 | { 115 | "age": 14, 116 | "carrier": "T-Mobile", 117 | "id": "t-mobile-mytouch-4g", 118 | "imageUrl": "img/phones/t-mobile-mytouch-4g.0.jpg", 119 | "name": "T-Mobile myTouch 4G", 120 | "snippet": "The T-Mobile myTouch 4G is a premium smartphone designed to deliver blazing fast 4G speeds so that you can video chat from practically anywhere, with or without Wi-Fi." 121 | }, 122 | { 123 | "age": 15, 124 | "carrier": "US Cellular", 125 | "id": "samsung-mesmerize-a-galaxy-s-phone", 126 | "imageUrl": "img/phones/samsung-mesmerize-a-galaxy-s-phone.0.jpg", 127 | "name": "Samsung Mesmerize\u2122 a Galaxy S\u2122 phone", 128 | "snippet": "The Samsung Mesmerize\u2122 delivers a cinema quality experience like you\u2019ve never seen before." 129 | }, 130 | { 131 | "age": 16, 132 | "carrier": "Sprint", 133 | "id": "sanyo-zio", 134 | "imageUrl": "img/phones/sanyo-zio.0.jpg", 135 | "name": "SANYO ZIO", 136 | "snippet": "The Sanyo Zio by Kyocera is an Android smartphone with a combination of ultra-sleek styling, strong performance and unprecedented value." 137 | }, 138 | { 139 | "age": 17, 140 | "carrier": "Not specified", 141 | "id": "samsung-transform", 142 | "imageUrl": "img/phones/samsung-transform.0.jpg", 143 | "name": "Samsung Transform\u2122", 144 | "snippet": "The Samsung Transform\u2122 brings you a fun way to customize your Android powered touch screen phone to just the way you like it." 145 | }, 146 | { 147 | "age": 18, 148 | "carrier": "Not specified", 149 | "id": "t-mobile-g2", 150 | "imageUrl": "img/phones/t-mobile-g2.0.jpg", 151 | "name": "T-Mobile G2", 152 | "snippet": "The T-Mobile G2 with Google is the first smartphone built for 4G speeds on T-Mobile's new network. Get the information you need, faster than you ever thought possible." 153 | }, 154 | { 155 | "age": 19, 156 | "carrier": "Not specified", 157 | "id": "motorola-charm-with-motoblur", 158 | "imageUrl": "img/phones/motorola-charm-with-motoblur.0.jpg", 159 | "name": "Motorola CHARM\u2122 with MOTOBLUR\u2122", 160 | "snippet": "Motorola CHARM fits easily in your pocket or palm. Includes MOTOBLUR service." 161 | } 162 | ] 163 | -------------------------------------------------------------------------------- /src/api/samsung-galaxy-tab.json: -------------------------------------------------------------------------------- 1 | { 2 | "additionalFeatures": "Adobe\u00ae Flash\u00ae Player compatible; 1.3MP front-facing camera for video chat; eReader pre-loaded; Swype text input technology\r\n", 3 | "android": { 4 | "os": "Android 2.2", 5 | "ui": "TouchWiz" 6 | }, 7 | "availability": [ 8 | "AT&T,", 9 | "Sprint,", 10 | "T-Mobile,", 11 | "Verizon" 12 | ], 13 | "battery": { 14 | "standbyTime": "780 hours", 15 | "talkTime": "", 16 | "type": "Lithium Ion (Li-Ion) (4000 mAH)" 17 | }, 18 | "camera": { 19 | "features": [ 20 | "Flash", 21 | "Video" 22 | ], 23 | "primary": "3.0 megapixels" 24 | }, 25 | "connectivity": { 26 | "bluetooth": "Bluetooth 3.0", 27 | "cell": "AT&T: GSM/EDGE : 850/900/1800/1900; 3G : 850/1900/2100\r\n\r\nSprint: CDMA : 850/1900MHz\r\n\r\nT-Mobile: GSM/EDGE : 850/900/1800/1900; 3G : 1700/1900\r\n\r\nVerizon: CDMA : 800MHz/1900MHz", 28 | "gps": true, 29 | "infrared": false, 30 | "wifi": "802.11 b/g/n" 31 | }, 32 | "description": "Feel Free to Tab\u2122. The Samsung Galaxy Tab\u2122, the tablet device that delivers enhanced capabilities with advanced mobility, has a large, perfectly sized, 7.0\" screen that offers plenty of room for the thousands of interactive games and apps available for the Android\u2122 platform, and its slim design makes it perfect for travel and one-handed grip. Use the Galaxy Tab to relax and enjoy an e-book, watch rich video or full web content with its Adobe\u00ae Flash\u00ae Player compatibility, video chat using the front-facing camera, or send user-generated content wirelessly to other devices like your TV via AllShare\u2122. With so many options for customization and interactivity, the Galaxy Tab gives you everything you want, anywhere you go\u2026Feel Free to Tab\u2122.", 33 | "display": { 34 | "screenResolution": "WSVGA (1024 x 600)", 35 | "screenSize": "7.0 inches", 36 | "touchScreen": true 37 | }, 38 | "hardware": { 39 | "accelerometer": true, 40 | "audioJack": "3.5mm", 41 | "cpu": "1GHz", 42 | "fmRadio": false, 43 | "physicalKeyboard": false, 44 | "usb": "USB 2.0" 45 | }, 46 | "id": "samsung-galaxy-tab", 47 | "images": [ 48 | "img/phones/samsung-galaxy-tab.0.jpg", 49 | "img/phones/samsung-galaxy-tab.1.jpg", 50 | "img/phones/samsung-galaxy-tab.2.jpg", 51 | "img/phones/samsung-galaxy-tab.3.jpg", 52 | "img/phones/samsung-galaxy-tab.4.jpg", 53 | "img/phones/samsung-galaxy-tab.5.jpg", 54 | "img/phones/samsung-galaxy-tab.6.jpg" 55 | ], 56 | "name": "Samsung Galaxy Tab\u2122", 57 | "sizeAndWeight": { 58 | "dimensions": [ 59 | "120.39 mm (w)", 60 | "189.99 mm (h)", 61 | "11.9 mm (d)" 62 | ], 63 | "weight": "379.88 grams" 64 | }, 65 | "storage": { 66 | "flash": "16384MB", 67 | "ram": "640MB" 68 | } 69 | } 70 | -------------------------------------------------------------------------------- /src/api/samsung-gem.json: -------------------------------------------------------------------------------- 1 | { 2 | "additionalFeatures": "3.2\u201d Full touch screen with Advanced anti smudge, anti reflective and anti scratch glass; Swype text input for easy and fast message creation; multiple messaging options, including text with threaded messaging for organized, easy-to-follow text; Social Community support, including Facebook and MySpace; Next generation Address book; Visual Voice Mail\n", 3 | "android": { 4 | "os": "Android 2.1", 5 | "ui": "TouchWiz" 6 | }, 7 | "availability": [ 8 | "Cellular South" 9 | ], 10 | "battery": { 11 | "standbyTime": "800 hours", 12 | "talkTime": "7 hours", 13 | "type": "Nickel Cadmium (NiCd) (1500 mAH)" 14 | }, 15 | "camera": { 16 | "features": [ 17 | "" 18 | ], 19 | "primary": "3.0 megapixels" 20 | }, 21 | "connectivity": { 22 | "bluetooth": "Bluetooth 3.0", 23 | "cell": "3G/CDMA : 850MHz/1900MHz\n", 24 | "gps": true, 25 | "infrared": false, 26 | "wifi": "802.11 b/g" 27 | }, 28 | "description": "The Samsung Gem\u2122 maps a route to a smarter mobile experience. By pairing one of the fastest processors in the category with the Android\u2122 platform, the Gem delivers maximum multitasking speed and social networking capabilities to let you explore new territory online. A smart phone at an even smarter price is a real find, so uncover the Gem and discover what\u2019s next.", 29 | "display": { 30 | "screenResolution": "WQVGA (400 x 240)", 31 | "screenSize": "3.2 inches", 32 | "touchScreen": true 33 | }, 34 | "hardware": { 35 | "accelerometer": true, 36 | "audioJack": "3.5mm", 37 | "cpu": "800 MHz", 38 | "fmRadio": false, 39 | "physicalKeyboard": false, 40 | "usb": "USB 2.0" 41 | }, 42 | "id": "samsung-gem", 43 | "images": [ 44 | "img/phones/samsung-gem.0.jpg", 45 | "img/phones/samsung-gem.1.jpg", 46 | "img/phones/samsung-gem.2.jpg" 47 | ], 48 | "name": "Samsung Gem\u2122", 49 | "sizeAndWeight": { 50 | "dimensions": [ 51 | "55.5 mm (w)", 52 | "113.0 mm (h)", 53 | "12.4 mm (d)" 54 | ], 55 | "weight": "110.0 grams" 56 | }, 57 | "storage": { 58 | "flash": "220MB", 59 | "ram": "256MB" 60 | } 61 | } 62 | -------------------------------------------------------------------------------- /src/api/samsung-mesmerize-a-galaxy-s-phone.json: -------------------------------------------------------------------------------- 1 | { 2 | "additionalFeatures": "Swype", 3 | "android": { 4 | "os": "Android 2.1", 5 | "ui": "TouchWiz" 6 | }, 7 | "availability": [ 8 | "US Cellular" 9 | ], 10 | "battery": { 11 | "standbyTime": "1000 hours", 12 | "talkTime": "7 hours", 13 | "type": "Lithium Ion (Li-Ion) (1500 mAH)" 14 | }, 15 | "camera": { 16 | "features": [ 17 | "Flash", 18 | "Video" 19 | ], 20 | "primary": "5.0 megapixels" 21 | }, 22 | "connectivity": { 23 | "bluetooth": "Bluetooth 3.0", 24 | "cell": "3G :800MHz/1900MHz\nCDMA :800MHz/1900MHz", 25 | "gps": true, 26 | "infrared": false, 27 | "wifi": "802.11 b/g/n" 28 | }, 29 | "description": "Experience entertainment in a whole new light. The stylish and slim Samsung Mesmerize\u2122, with its vivid 4-inch Super AMOLED\u2122 display, makes everything from Hollywood blockbusters to music videos to Amazon\u2019s bestsellers look absolutely brilliant \u2013 even outside in the sun. Android\u2122 Market rockets you into a universe filled with equally brilliant apps; download them at blistering speeds thanks to the powerful 1GHz Hummingbird processor. Keep your social life organized and continuously updated with the pre-loaded social networking apps, while uploading all the 5.0MP pics you\u2019ve snapped and 720p HD videos you\u2019ve recorded.", 30 | "display": { 31 | "screenResolution": "WVGA (800 x 480)", 32 | "screenSize": "4.0 inches", 33 | "touchScreen": true 34 | }, 35 | "hardware": { 36 | "accelerometer": true, 37 | "audioJack": "", 38 | "cpu": "1GHz", 39 | "fmRadio": false, 40 | "physicalKeyboard": false, 41 | "usb": "USB 2.0" 42 | }, 43 | "id": "samsung-mesmerize-a-galaxy-s-phone", 44 | "images": [ 45 | "img/phones/samsung-mesmerize-a-galaxy-s-phone.0.jpg", 46 | "img/phones/samsung-mesmerize-a-galaxy-s-phone.1.jpg", 47 | "img/phones/samsung-mesmerize-a-galaxy-s-phone.2.jpg", 48 | "img/phones/samsung-mesmerize-a-galaxy-s-phone.3.jpg" 49 | ], 50 | "name": "Samsung Mesmerize\u2122 a Galaxy S\u2122 phone", 51 | "sizeAndWeight": { 52 | "dimensions": [ 53 | "64.2 mm (w)", 54 | "125.0 mm (h)", 55 | "9.97 mm (d)" 56 | ], 57 | "weight": "118.0 grams" 58 | }, 59 | "storage": { 60 | "flash": "2048MB", 61 | "ram": "512MB" 62 | } 63 | } 64 | -------------------------------------------------------------------------------- /src/api/samsung-showcase-a-galaxy-s-phone.json: -------------------------------------------------------------------------------- 1 | { 2 | "additionalFeatures": "Swype", 3 | "android": { 4 | "os": "Android 2.1", 5 | "ui": "TouchWiz" 6 | }, 7 | "availability": [ 8 | "Cellular South" 9 | ], 10 | "battery": { 11 | "standbyTime": "800 hours", 12 | "talkTime": "7 hours", 13 | "type": "Lithium Ion (Li-Ion) (1500 mAH)" 14 | }, 15 | "camera": { 16 | "features": [ 17 | "Flash", 18 | "Video" 19 | ], 20 | "primary": "5.0 megapixels" 21 | }, 22 | "connectivity": { 23 | "bluetooth": "Bluetooth 3.0", 24 | "cell": "3G : 900MHz/1900MHz\nCDMA : 800MHz/1900MHz", 25 | "gps": true, 26 | "infrared": false, 27 | "wifi": "802.11 b/g/n" 28 | }, 29 | "description": "Experience entertainment in a whole new light. The stylish and slim Samsung Showcase\u2122, with its vivid 4-inch Super AMOLED\u2122 display, makes everything from Hollywood blockbusters to music videos to Amazon\u2019s bestsellers look absolutely brilliant \u2013 even outside in the sun. Android\u2122 Market rockets you into a universe filled with equally brilliant apps; download them at blistering speeds thanks to the powerful 1GHz Hummingbird processor. Keep your social life organized and continuously updated with the pre-loaded social networking apps, while uploading all the 5.0MP pics you\u2019ve snapped and 720p HD videos you\u2019ve recorded", 30 | "display": { 31 | "screenResolution": "WVGA (800 x 480)", 32 | "screenSize": "4.0 inches", 33 | "touchScreen": true 34 | }, 35 | "hardware": { 36 | "accelerometer": true, 37 | "audioJack": "3.5mm", 38 | "cpu": "1 GHz", 39 | "fmRadio": false, 40 | "physicalKeyboard": false, 41 | "usb": "USB 2.0" 42 | }, 43 | "id": "samsung-showcase-a-galaxy-s-phone", 44 | "images": [ 45 | "img/phones/samsung-showcase-a-galaxy-s-phone.0.jpg", 46 | "img/phones/samsung-showcase-a-galaxy-s-phone.1.jpg", 47 | "img/phones/samsung-showcase-a-galaxy-s-phone.2.jpg" 48 | ], 49 | "name": "Samsung Showcase\u2122 a Galaxy S\u2122 phone", 50 | "sizeAndWeight": { 51 | "dimensions": [ 52 | "64.2 mm (w)", 53 | "125.0 mm (h)", 54 | "9.97 mm (d)" 55 | ], 56 | "weight": "118.0 grams" 57 | }, 58 | "storage": { 59 | "flash": "2048MB", 60 | "ram": "512MB" 61 | } 62 | } 63 | -------------------------------------------------------------------------------- /src/api/samsung-transform.json: -------------------------------------------------------------------------------- 1 | { 2 | "additionalFeatures": "Access to Sprint ID Service Packs, front and rear facing cameras\n", 3 | "android": { 4 | "os": "Android 2.1", 5 | "ui": "Stock Android + Sprint ID Pack" 6 | }, 7 | "availability": [ 8 | "Sprint" 9 | ], 10 | "battery": { 11 | "standbyTime": "930 hours", 12 | "talkTime": "9 hours", 13 | "type": "Lithium Ion (Li-Ion) (1500 mAH)" 14 | }, 15 | "camera": { 16 | "features": [ 17 | "Flash", 18 | "Video" 19 | ], 20 | "primary": "3.0 megapixels" 21 | }, 22 | "connectivity": { 23 | "bluetooth": "Bluetooth 2.1", 24 | "cell": "800Mhz, 1900MHz", 25 | "gps": true, 26 | "infrared": false, 27 | "wifi": "802.11 b/g/n" 28 | }, 29 | "description": "Change your perspective. The Samsung Transform\u2122 is an Android powered device that delivers the truly customizable experience you want your phone to provide. Enjoy a new and easy way to personalize your device for business or for entertainment, showcasing your own favorite theme and more through the new open software platform and the ability to download individual \u2018Sprint ID Service Packs\u2019 that combine and deliver multiple content items and applications specifically for the features you want. Combine this with the 3.5\u201d touch display, QWERTY keyboard, high-speed processor, and both a front and rear facing camera to bring your unique mobile experience to life.", 30 | "display": { 31 | "screenResolution": "HVGA (480 x 320)", 32 | "screenSize": "3.5 inches", 33 | "touchScreen": true 34 | }, 35 | "hardware": { 36 | "accelerometer": true, 37 | "audioJack": "3.5mm", 38 | "cpu": "800 MHz", 39 | "fmRadio": false, 40 | "physicalKeyboard": true, 41 | "usb": "USB 2.0" 42 | }, 43 | "id": "samsung-transform", 44 | "images": [ 45 | "img/phones/samsung-transform.0.jpg", 46 | "img/phones/samsung-transform.1.jpg", 47 | "img/phones/samsung-transform.2.jpg", 48 | "img/phones/samsung-transform.3.jpg", 49 | "img/phones/samsung-transform.4.jpg" 50 | ], 51 | "name": "Samsung Transform\u2122", 52 | "sizeAndWeight": { 53 | "dimensions": [ 54 | "61.5 mm (w)", 55 | "117.0 mm (h)", 56 | "15.3 mm (d)" 57 | ], 58 | "weight": "148.0 grams" 59 | }, 60 | "storage": { 61 | "flash": "180MB", 62 | "ram": "384MB" 63 | } 64 | } 65 | -------------------------------------------------------------------------------- /src/api/sanyo-zio.json: -------------------------------------------------------------------------------- 1 | { 2 | "additionalFeatures": "Trackball Navigation Control", 3 | "android": { 4 | "os": "Android 2.2", 5 | "ui": "" 6 | }, 7 | "availability": [ 8 | "Sprint" 9 | ], 10 | "battery": { 11 | "standbyTime": "", 12 | "talkTime": "4 hours", 13 | "type": "Lithium Ion (Li-Ion) (1130 mAH)" 14 | }, 15 | "camera": { 16 | "features": [ 17 | "Video" 18 | ], 19 | "primary": "3.2 megapixels" 20 | }, 21 | "connectivity": { 22 | "bluetooth": "Bluetooth 2.1", 23 | "cell": "CDMA2000 1xEV-DO Rev.A", 24 | "gps": true, 25 | "infrared": false, 26 | "wifi": "802.11 b/g" 27 | }, 28 | "description": "Zio uses CDMA2000 1xEV-DO rev. A and Wi-Fi technologies and features a 3.5-inch WVGA touch-screen display as a backdrop for a fully customizable mobile multimedia experience. Along with the touch-screen, a trackball helps users navigate features such as the 3.2 MP camera with video record/playback, media player and full HTML Web browser. Zio supports up to 32GB through its external microSD memory slot.", 29 | "display": { 30 | "screenResolution": "WVGA (800 x 480)", 31 | "screenSize": "3.5 inches", 32 | "touchScreen": true 33 | }, 34 | "hardware": { 35 | "accelerometer": true, 36 | "audioJack": "3.5mm", 37 | "cpu": "600MHz Qualcomm MSM7627", 38 | "fmRadio": false, 39 | "physicalKeyboard": false, 40 | "usb": "USB 2.0" 41 | }, 42 | "id": "sanyo-zio", 43 | "images": [ 44 | "img/phones/sanyo-zio.0.jpg", 45 | "img/phones/sanyo-zio.1.jpg", 46 | "img/phones/sanyo-zio.2.jpg" 47 | ], 48 | "name": "SANYO ZIO", 49 | "sizeAndWeight": { 50 | "dimensions": [ 51 | "58.6 mm (w)", 52 | "116.0 mm (h)", 53 | "12.2 mm (d)" 54 | ], 55 | "weight": "105.0 grams" 56 | }, 57 | "storage": { 58 | "flash": "130MB", 59 | "ram": "256MB" 60 | } 61 | } 62 | -------------------------------------------------------------------------------- /src/api/t-mobile-g2.json: -------------------------------------------------------------------------------- 1 | { 2 | "additionalFeatures": "Accessibility features: tactile QWERTY keyboard, trackpad, three programmable keys, camera button", 3 | "android": { 4 | "os": "Android 2.2", 5 | "ui": "Android" 6 | }, 7 | "availability": [ 8 | "T-Mobile" 9 | ], 10 | "battery": { 11 | "standbyTime": "420 hours", 12 | "talkTime": "7 hours", 13 | "type": "Lithium Ion (Li-Ion) (1300 mAH)" 14 | }, 15 | "camera": { 16 | "features": [ 17 | "Flash", 18 | "Video" 19 | ], 20 | "primary": "5.0 megapixels" 21 | }, 22 | "connectivity": { 23 | "bluetooth": "Bluetooth 2.1", 24 | "cell": "GSM: 850, 900, 1800, 1900 UMTS: Yes", 25 | "gps": true, 26 | "infrared": false, 27 | "wifi": "802.11 b/g/n" 28 | }, 29 | "description": "The T-Mobile G1 was the world's first Android-powered phone. Launched nearly two years ago, it created an entirely new class of mobile phones and apps. Its successor, the T-Mobile G2 with Google, will continue the revolution.\n\nThe T-Mobile G2 will deliver tight integration with Google services and break new ground as the first smartphone designed to run at 4G speeds on our new HSPA+ network.", 30 | "display": { 31 | "screenResolution": "WVGA (800 x 480)", 32 | "screenSize": "3.7 inches", 33 | "touchScreen": true 34 | }, 35 | "hardware": { 36 | "accelerometer": true, 37 | "audioJack": "3.5mm", 38 | "cpu": "800 MHz Qualcomm\u00ae Snapdragon\u2122 MSM7230", 39 | "fmRadio": false, 40 | "physicalKeyboard": true, 41 | "usb": "USB 2.0" 42 | }, 43 | "id": "t-mobile-g2", 44 | "images": [ 45 | "img/phones/t-mobile-g2.0.jpg", 46 | "img/phones/t-mobile-g2.1.jpg", 47 | "img/phones/t-mobile-g2.2.jpg" 48 | ], 49 | "name": "T-Mobile G2", 50 | "sizeAndWeight": { 51 | "dimensions": [ 52 | "60.4 mm (w)", 53 | "119.0 mm (h)", 54 | "14.2 mm (d)" 55 | ], 56 | "weight": "180.0 grams" 57 | }, 58 | "storage": { 59 | "flash": "4000MB", 60 | "ram": "512MB" 61 | } 62 | } 63 | -------------------------------------------------------------------------------- /src/api/t-mobile-mytouch-4g.json: -------------------------------------------------------------------------------- 1 | { 2 | "additionalFeatures": "Mobile Video Chat, HD Camcorder, Screen Share (DLNA), Genius Button, Wi-Fi Calling, Wi-Fi HotSpot, T-Mobile TV, Slacker Radio, Rock Band, Monopoly, Asphalt 5, myModes, Faves Gallery", 3 | "android": { 4 | "os": "Android 2.2", 5 | "ui": "HTC Sense\u2122" 6 | }, 7 | "availability": [ 8 | "T-Mobile" 9 | ], 10 | "battery": { 11 | "standbyTime": "285 hours", 12 | "talkTime": "7 hours", 13 | "type": "Lithium Ion (Li-Ion) (1400 mAH)" 14 | }, 15 | "camera": { 16 | "features": [ 17 | "Flash", 18 | "Video" 19 | ], 20 | "primary": "5.0 megapixels" 21 | }, 22 | "connectivity": { 23 | "bluetooth": "Bluetooth 2.0", 24 | "cell": "GSM: 850, 900, 1800, 1900; UMTS: Band I/IV", 25 | "gps": true, 26 | "infrared": false, 27 | "wifi": "802.11 b/g/n" 28 | }, 29 | "description": "The myTouch 4G lets you connect fast, communicate easily, and share\u2014all on America\u2019s largest 4G network.\n\nBuilt with families in mind, the newest T-Mobile myTouch 4G helps solve the challenges of staying physically and emotionally connected by sharing photos and video with the HD Camcorder, spontaneous face-to-face conversations through Video Chat, and the ability to reach 4G speeds on T-Mobile\u2019s HSPA+ network.", 30 | "display": { 31 | "screenResolution": "WVGA (800 x 480)", 32 | "screenSize": "3.8 inches", 33 | "touchScreen": true 34 | }, 35 | "hardware": { 36 | "accelerometer": true, 37 | "audioJack": "3.5mm", 38 | "cpu": "2nd Generation 1GHz Qualcomm Snapdragon MSM8255", 39 | "fmRadio": true, 40 | "physicalKeyboard": false, 41 | "usb": "USB 2.0" 42 | }, 43 | "id": "t-mobile-mytouch-4g", 44 | "images": [ 45 | "img/phones/t-mobile-mytouch-4g.0.jpg", 46 | "img/phones/t-mobile-mytouch-4g.1.jpg", 47 | "img/phones/t-mobile-mytouch-4g.2.jpg", 48 | "img/phones/t-mobile-mytouch-4g.3.jpg", 49 | "img/phones/t-mobile-mytouch-4g.4.jpg", 50 | "img/phones/t-mobile-mytouch-4g.5.jpg" 51 | ], 52 | "name": "T-Mobile myTouch 4G", 53 | "sizeAndWeight": { 54 | "dimensions": [ 55 | "62.5 mm (w)", 56 | "122.0 mm (h)", 57 | "11.0 mm (d)" 58 | ], 59 | "weight": "156.0 grams" 60 | }, 61 | "storage": { 62 | "flash": "1100MB", 63 | "ram": "768MB" 64 | } 65 | } 66 | -------------------------------------------------------------------------------- /src/app/components/bootstrap-select/bootstrap-select.component.js: -------------------------------------------------------------------------------- 1 | 'use strict'; 2 | 3 | 4 | export class BootstrapSelectComponent { 5 | 6 | constructor() { 7 | this.selectedOption = ''; 8 | this.isOpened = false; 9 | } 10 | 11 | 12 | displaySelectedOption() { 13 | return this.selectedOption || this.placeholder; 14 | } 15 | 16 | 17 | toggle() { 18 | this.isOpened = !this.isOpened; 19 | } 20 | 21 | 22 | select(option) { 23 | this.isOpened = false; 24 | this.selectedOption = option; 25 | this.onSelect({ option }); 26 | } 27 | 28 | 29 | static create() { 30 | return { 31 | bindings: { 32 | options: '<', 33 | onSelect: '&', 34 | placeholder: '@' 35 | }, 36 | controller: [BootstrapSelectComponent], 37 | template: require('./bootstrap-select.tpl.html') 38 | }; 39 | } 40 | 41 | } 42 | -------------------------------------------------------------------------------- /src/app/components/bootstrap-select/bootstrap-select.tpl.html: -------------------------------------------------------------------------------- 1 |
2 | 5 | 13 |
14 | -------------------------------------------------------------------------------- /src/app/components/carrier-select/carrier-select.component.js: -------------------------------------------------------------------------------- 1 | 'use strict'; 2 | 3 | 4 | export class CarrierSelectComponent { 5 | 6 | constructor(carrierRepository) { 7 | this._carrierRepository = carrierRepository; 8 | this.carriers = []; 9 | } 10 | 11 | 12 | $onInit() { 13 | this._carrierRepository 14 | .getAll() 15 | .then((carriers) => this.carriers = carriers); 16 | } 17 | 18 | 19 | select(carrier) { 20 | this.onSelect({ carrier }); 21 | } 22 | 23 | 24 | static create() { 25 | return { 26 | bindings: { 27 | onSelect: '&' 28 | }, 29 | controller: ['carrierRepository', CarrierSelectComponent], 30 | template: require('./carrier-select.tpl.html') 31 | }; 32 | } 33 | 34 | } 35 | 36 | -------------------------------------------------------------------------------- /src/app/components/carrier-select/carrier-select.tpl.html: -------------------------------------------------------------------------------- 1 | 2 | 3 | -------------------------------------------------------------------------------- /src/app/components/copyright/copyright.component.js: -------------------------------------------------------------------------------- 1 | 'use strict'; 2 | 3 | 4 | export class CopyrightComponent { 5 | 6 | constructor(ACTUAL_YEAR) { 7 | this.actualYear = ACTUAL_YEAR; 8 | } 9 | 10 | static create() { 11 | return { 12 | controller: ['ACTUAL_YEAR', CopyrightComponent], 13 | template: require('./copyright.tpl.html') 14 | }; 15 | } 16 | 17 | } 18 | -------------------------------------------------------------------------------- /src/app/components/copyright/copyright.tpl.html: -------------------------------------------------------------------------------- 1 |
2 |
3 |
4 |

Copyright © Emartech {{ $ctrl.actualYear }}

5 |
6 |
7 |
8 | -------------------------------------------------------------------------------- /src/app/components/phone-app/phone-app.component.js: -------------------------------------------------------------------------------- 1 | 'use strict'; 2 | 3 | 4 | export class PhoneAppComponent { 5 | 6 | constructor($routeParams, phoneRepository) { 7 | this.phone = {}; 8 | 9 | this._phoneId = $routeParams.phoneId; 10 | this._phoneRepository = phoneRepository; 11 | } 12 | 13 | 14 | $onInit() { 15 | this._phoneRepository 16 | .getOne(this._phoneId) 17 | .then((phone) => this.phone = phone); 18 | } 19 | 20 | 21 | static create() { 22 | return { 23 | controller: ['$routeParams', 'phoneRepository', PhoneAppComponent], 24 | template: require('./phone-app.tpl.html') 25 | }; 26 | } 27 | 28 | } 29 | -------------------------------------------------------------------------------- /src/app/components/phone-app/phone-app.tpl.html: -------------------------------------------------------------------------------- 1 |
2 |
3 |

{{ $ctrl.phone.name }}

4 |
5 |
6 | 7 |
8 |
9 | 10 |
11 |
12 |

{{ $ctrl.phone.description }}

13 |
14 |
15 |
16 |
17 |

Battery

18 |

Type

19 | {{ $ctrl.phone.battery.type }} 20 |

Talk Time

21 | {{ $ctrl.phone.battery.talkTime }} 22 |

Standby time (max)

23 | {{ $ctrl.phone.battery.standbyTime }} 24 |
25 |
26 |

Technical specs

27 |

RAM

28 | {{ $ctrl.phone.storage.ram }} 29 |

Internal Storage

30 | {{ $ctrl.phone.storage.flash }} 31 |

CPU

32 | {{ $ctrl.phone.hardware.cpu }} 33 |
34 |
35 |
36 | 37 |
38 | 39 |
40 |
41 | 42 |
43 | 44 |
45 | 46 |
47 |
48 | 49 | 50 | -------------------------------------------------------------------------------- /src/app/components/phone-list-app/phone-list-app.component.js: -------------------------------------------------------------------------------- 1 | 'use strict'; 2 | 3 | 4 | export class PhoneListAppComponent { 5 | 6 | constructor(filteredPhoneList) { 7 | this.phones = filteredPhoneList; 8 | } 9 | 10 | 11 | $onInit() { 12 | this.phones.load(); 13 | } 14 | 15 | 16 | static create() { 17 | return { 18 | controller: ['filteredPhoneList', PhoneListAppComponent], 19 | template: require('./phone-list-app.tpl.html') 20 | }; 21 | } 22 | 23 | } 24 | -------------------------------------------------------------------------------- /src/app/components/phone-list-app/phone-list-app.tpl.html: -------------------------------------------------------------------------------- 1 |
2 |
3 |

Phones

4 |
5 |
6 | 7 |
8 |
9 | 10 | 11 |
12 |
13 | 14 |
15 |
16 | 17 |
18 |
19 | 20 |
21 |
22 | 23 | 24 | -------------------------------------------------------------------------------- /src/app/components/phone-list-item/phone-list-item.component.js: -------------------------------------------------------------------------------- 1 | 'use strict'; 2 | 3 | 4 | export class PhoneListItemComponent { 5 | 6 | static create() { 7 | return { 8 | bindings: { 9 | phone: '<' 10 | }, 11 | controller: [PhoneListItemComponent], 12 | template: require('./phone-list-item.tpl.html') 13 | }; 14 | } 15 | 16 | 17 | } 18 | -------------------------------------------------------------------------------- /src/app/components/phone-list-item/phone-list-item.tpl.html: -------------------------------------------------------------------------------- 1 |
2 | 3 | 4 | 5 |
6 | 7 |

{{ $ctrl.phone.name }}

8 |
9 |

{{ $ctrl.phone.snippet | shortDescription }}

10 |
11 |
12 | -------------------------------------------------------------------------------- /src/app/components/search-box/search-box.component.js: -------------------------------------------------------------------------------- 1 | 'use strict'; 2 | 3 | 4 | export class SearchBoxComponent { 5 | 6 | handleKeyUp($event) { 7 | this.onInputChange({ value: $event.target.value }); 8 | } 9 | 10 | 11 | static create() { 12 | return { 13 | bindings: { 14 | onInputChange: '&' 15 | }, 16 | controller: [SearchBoxComponent], 17 | template: require('./search-box.tpl.html') 18 | }; 19 | } 20 | 21 | } 22 | -------------------------------------------------------------------------------- /src/app/components/search-box/search-box.tpl.html: -------------------------------------------------------------------------------- 1 |
2 | 3 | 4 | 5 | 6 |
7 | -------------------------------------------------------------------------------- /src/app/filters/short-description/short-description.filter.js: -------------------------------------------------------------------------------- 1 | 'use strict'; 2 | 3 | const MAX_LENGTH = 100; 4 | 5 | export class ShortDescriptionFilter { 6 | 7 | transform(input, length) { 8 | length = this._calculateLength(length); 9 | 10 | if (this._inputExceedsLimit(input, length)) { 11 | return this._truncate(input, length); 12 | } else { 13 | return input; 14 | } 15 | } 16 | 17 | 18 | _inputExceedsLimit(input, length) { 19 | return input.length > length; 20 | } 21 | 22 | 23 | _truncate(input, length) { 24 | return input.substring(0, length) + '...'; 25 | } 26 | 27 | 28 | _calculateLength(length) { 29 | return length || MAX_LENGTH; 30 | } 31 | 32 | 33 | static create() { 34 | return () => { 35 | const shortDescription = new ShortDescriptionFilter(); 36 | return shortDescription.transform.bind(shortDescription); 37 | }; 38 | } 39 | 40 | } 41 | -------------------------------------------------------------------------------- /src/app/main.js: -------------------------------------------------------------------------------- 1 | 'use strict'; 2 | 3 | import angular from 'angular'; 4 | import ngRoute from 'angular-route'; 5 | 6 | import { PhoneRepositoryService } from './services/phone-repository/phone-repository.service'; 7 | import { CarrierRepositoryService } from './services/carrier-repository/carrier-repository.service'; 8 | import { FilteredPhoneListService } from './services/filtered-phone-list/filtered-phone-list.service'; 9 | 10 | import { ShortDescriptionFilter } from './filters/short-description/short-description.filter'; 11 | 12 | import { PhoneAppComponent } from './components/phone-app/phone-app.component'; 13 | import { PhoneListAppComponent } from './components/phone-list-app/phone-list-app.component'; 14 | import { BootstrapSelectComponent } from './components/bootstrap-select/bootstrap-select.component'; 15 | import { CarrierSelectComponent } from './components/carrier-select/carrier-select.component'; 16 | import { SearchBoxComponent } from './components/search-box/search-box.component'; 17 | import { PhoneListItemComponent } from './components/phone-list-item/phone-list-item.component'; 18 | import { CopyrightComponent } from './components/copyright/copyright.component'; 19 | 20 | 21 | angular 22 | .module('phoneApp', [ 23 | ngRoute 24 | ]) 25 | 26 | .constant('ACTUAL_YEAR', 2016) 27 | 28 | .service('phoneRepository', PhoneRepositoryService.create()) 29 | .service('carrierRepository', CarrierRepositoryService.create()) 30 | .service('filteredPhoneList', FilteredPhoneListService.create()) 31 | 32 | .component('phoneApp', PhoneAppComponent.create()) 33 | .component('phoneListApp', PhoneListAppComponent.create()) 34 | .component('bootstrapSelect', BootstrapSelectComponent.create()) 35 | .component('carrierSelect', CarrierSelectComponent.create()) 36 | .component('searchBox', SearchBoxComponent.create()) 37 | .component('phoneListItem', PhoneListItemComponent.create()) 38 | .component('copyright', CopyrightComponent.create()) 39 | 40 | .filter('shortDescription', ShortDescriptionFilter.create()) 41 | 42 | .config(['$routeProvider', function($routeProvider) { 43 | $routeProvider 44 | .when('/', { 45 | template: '' 46 | }) 47 | .when('/phone/:phoneId', { 48 | template: '' 49 | }) 50 | .otherwise({ 51 | redirectTo: '/' 52 | }); 53 | }]); 54 | -------------------------------------------------------------------------------- /src/app/polyfill.js: -------------------------------------------------------------------------------- 1 | import 'core-js/client/shim'; 2 | -------------------------------------------------------------------------------- /src/app/services/carrier-repository/carrier-repository.service.js: -------------------------------------------------------------------------------- 1 | 'use strict'; 2 | 3 | 4 | export class CarrierRepositoryService { 5 | 6 | constructor($http) { 7 | this._$http = $http; 8 | } 9 | 10 | 11 | getAll() { 12 | return this._$http 13 | .get('api/carriers.json') 14 | .then((response) => response.data); 15 | } 16 | 17 | 18 | static create() { 19 | return ['$http', CarrierRepositoryService]; 20 | } 21 | 22 | } 23 | -------------------------------------------------------------------------------- /src/app/services/filtered-phone-list/filtered-phone-list.service.js: -------------------------------------------------------------------------------- 1 | 'use strict'; 2 | 3 | 4 | export class FilteredPhoneListService { 5 | 6 | constructor($filter, phoneRepository) { 7 | this._filter = $filter('filter'); 8 | this._phoneRepository = phoneRepository; 9 | 10 | this._allPhones = []; 11 | this._phones = []; 12 | this._searchText = ''; 13 | this._selectedCarrier = ''; 14 | } 15 | 16 | 17 | load() { 18 | this._phoneRepository 19 | .getAll() 20 | .then((phones) => this._phones = this._allPhones = phones); 21 | } 22 | 23 | 24 | getAll() { 25 | return this._phones; 26 | } 27 | 28 | 29 | hasAny() { 30 | return this._phones.length > 0; 31 | } 32 | 33 | 34 | setSelectedCarrier(carrier) { 35 | this._selectedCarrier = carrier; 36 | this._filterPhones(); 37 | } 38 | 39 | 40 | setSearchText(value) { 41 | this._searchText = value; 42 | this._filterPhones(); 43 | } 44 | 45 | 46 | _filterPhones() { 47 | this._phones = this._filter(this._allPhones, { name: this._searchText, carrier: this._selectedCarrier }); 48 | } 49 | 50 | 51 | static create() { 52 | return ['$filter', 'phoneRepository', FilteredPhoneListService]; 53 | } 54 | 55 | } 56 | -------------------------------------------------------------------------------- /src/app/services/phone-repository/phone-repository.service.js: -------------------------------------------------------------------------------- 1 | 'use strict'; 2 | 3 | export class PhoneRepositoryService { 4 | 5 | constructor($http) { 6 | this._$http = $http; 7 | } 8 | 9 | 10 | getOne(phoneId) { 11 | return this._$http 12 | .get(`api/${phoneId}.json`) 13 | .then((response) => response.data); 14 | } 15 | 16 | 17 | getAll() { 18 | return this._$http 19 | .get('api/phones.json') 20 | .then((response) => response.data); 21 | } 22 | 23 | 24 | static create() { 25 | return ['$http', PhoneRepositoryService]; 26 | } 27 | 28 | } 29 | -------------------------------------------------------------------------------- /src/app/style.js: -------------------------------------------------------------------------------- 1 | require('bootstrap/dist/css/bootstrap.css'); 2 | require('font-awesome/css/font-awesome.css'); 3 | require('../style/app.css'); 4 | -------------------------------------------------------------------------------- /src/app/vendor.js: -------------------------------------------------------------------------------- 1 | import './polyfill'; 2 | 3 | import 'angular'; 4 | import 'angular-route'; 5 | -------------------------------------------------------------------------------- /src/favicon.ico: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/emartech/angular-phonecat-components/8d83da016f346480aa625a5882f4979b5373fc75/src/favicon.ico -------------------------------------------------------------------------------- /src/img/angular-logo.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/emartech/angular-phonecat-components/8d83da016f346480aa625a5882f4979b5373fc75/src/img/angular-logo.png -------------------------------------------------------------------------------- /src/img/emarsys-logo.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/emartech/angular-phonecat-components/8d83da016f346480aa625a5882f4979b5373fc75/src/img/emarsys-logo.png -------------------------------------------------------------------------------- /src/img/phones/dell-streak-7.0.jpg: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/emartech/angular-phonecat-components/8d83da016f346480aa625a5882f4979b5373fc75/src/img/phones/dell-streak-7.0.jpg -------------------------------------------------------------------------------- /src/img/phones/dell-streak-7.1.jpg: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/emartech/angular-phonecat-components/8d83da016f346480aa625a5882f4979b5373fc75/src/img/phones/dell-streak-7.1.jpg -------------------------------------------------------------------------------- /src/img/phones/dell-streak-7.2.jpg: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/emartech/angular-phonecat-components/8d83da016f346480aa625a5882f4979b5373fc75/src/img/phones/dell-streak-7.2.jpg -------------------------------------------------------------------------------- /src/img/phones/dell-streak-7.3.jpg: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/emartech/angular-phonecat-components/8d83da016f346480aa625a5882f4979b5373fc75/src/img/phones/dell-streak-7.3.jpg -------------------------------------------------------------------------------- /src/img/phones/dell-streak-7.4.jpg: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/emartech/angular-phonecat-components/8d83da016f346480aa625a5882f4979b5373fc75/src/img/phones/dell-streak-7.4.jpg -------------------------------------------------------------------------------- /src/img/phones/dell-venue.0.jpg: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/emartech/angular-phonecat-components/8d83da016f346480aa625a5882f4979b5373fc75/src/img/phones/dell-venue.0.jpg -------------------------------------------------------------------------------- /src/img/phones/dell-venue.1.jpg: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/emartech/angular-phonecat-components/8d83da016f346480aa625a5882f4979b5373fc75/src/img/phones/dell-venue.1.jpg -------------------------------------------------------------------------------- /src/img/phones/dell-venue.2.jpg: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/emartech/angular-phonecat-components/8d83da016f346480aa625a5882f4979b5373fc75/src/img/phones/dell-venue.2.jpg -------------------------------------------------------------------------------- /src/img/phones/dell-venue.3.jpg: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/emartech/angular-phonecat-components/8d83da016f346480aa625a5882f4979b5373fc75/src/img/phones/dell-venue.3.jpg -------------------------------------------------------------------------------- /src/img/phones/dell-venue.4.jpg: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/emartech/angular-phonecat-components/8d83da016f346480aa625a5882f4979b5373fc75/src/img/phones/dell-venue.4.jpg -------------------------------------------------------------------------------- /src/img/phones/dell-venue.5.jpg: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/emartech/angular-phonecat-components/8d83da016f346480aa625a5882f4979b5373fc75/src/img/phones/dell-venue.5.jpg -------------------------------------------------------------------------------- /src/img/phones/droid-2-global-by-motorola.0.jpg: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/emartech/angular-phonecat-components/8d83da016f346480aa625a5882f4979b5373fc75/src/img/phones/droid-2-global-by-motorola.0.jpg -------------------------------------------------------------------------------- /src/img/phones/droid-2-global-by-motorola.1.jpg: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/emartech/angular-phonecat-components/8d83da016f346480aa625a5882f4979b5373fc75/src/img/phones/droid-2-global-by-motorola.1.jpg -------------------------------------------------------------------------------- /src/img/phones/droid-2-global-by-motorola.2.jpg: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/emartech/angular-phonecat-components/8d83da016f346480aa625a5882f4979b5373fc75/src/img/phones/droid-2-global-by-motorola.2.jpg -------------------------------------------------------------------------------- /src/img/phones/droid-pro-by-motorola.0.jpg: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/emartech/angular-phonecat-components/8d83da016f346480aa625a5882f4979b5373fc75/src/img/phones/droid-pro-by-motorola.0.jpg -------------------------------------------------------------------------------- /src/img/phones/droid-pro-by-motorola.1.jpg: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/emartech/angular-phonecat-components/8d83da016f346480aa625a5882f4979b5373fc75/src/img/phones/droid-pro-by-motorola.1.jpg -------------------------------------------------------------------------------- /src/img/phones/lg-axis.0.jpg: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/emartech/angular-phonecat-components/8d83da016f346480aa625a5882f4979b5373fc75/src/img/phones/lg-axis.0.jpg -------------------------------------------------------------------------------- /src/img/phones/lg-axis.1.jpg: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/emartech/angular-phonecat-components/8d83da016f346480aa625a5882f4979b5373fc75/src/img/phones/lg-axis.1.jpg -------------------------------------------------------------------------------- /src/img/phones/lg-axis.2.jpg: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/emartech/angular-phonecat-components/8d83da016f346480aa625a5882f4979b5373fc75/src/img/phones/lg-axis.2.jpg -------------------------------------------------------------------------------- /src/img/phones/motorola-atrix-4g.0.jpg: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/emartech/angular-phonecat-components/8d83da016f346480aa625a5882f4979b5373fc75/src/img/phones/motorola-atrix-4g.0.jpg -------------------------------------------------------------------------------- /src/img/phones/motorola-atrix-4g.1.jpg: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/emartech/angular-phonecat-components/8d83da016f346480aa625a5882f4979b5373fc75/src/img/phones/motorola-atrix-4g.1.jpg -------------------------------------------------------------------------------- /src/img/phones/motorola-atrix-4g.2.jpg: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/emartech/angular-phonecat-components/8d83da016f346480aa625a5882f4979b5373fc75/src/img/phones/motorola-atrix-4g.2.jpg -------------------------------------------------------------------------------- /src/img/phones/motorola-atrix-4g.3.jpg: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/emartech/angular-phonecat-components/8d83da016f346480aa625a5882f4979b5373fc75/src/img/phones/motorola-atrix-4g.3.jpg -------------------------------------------------------------------------------- /src/img/phones/motorola-bravo-with-motoblur.0.jpg: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/emartech/angular-phonecat-components/8d83da016f346480aa625a5882f4979b5373fc75/src/img/phones/motorola-bravo-with-motoblur.0.jpg -------------------------------------------------------------------------------- /src/img/phones/motorola-bravo-with-motoblur.1.jpg: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/emartech/angular-phonecat-components/8d83da016f346480aa625a5882f4979b5373fc75/src/img/phones/motorola-bravo-with-motoblur.1.jpg -------------------------------------------------------------------------------- /src/img/phones/motorola-bravo-with-motoblur.2.jpg: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/emartech/angular-phonecat-components/8d83da016f346480aa625a5882f4979b5373fc75/src/img/phones/motorola-bravo-with-motoblur.2.jpg -------------------------------------------------------------------------------- /src/img/phones/motorola-charm-with-motoblur.0.jpg: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/emartech/angular-phonecat-components/8d83da016f346480aa625a5882f4979b5373fc75/src/img/phones/motorola-charm-with-motoblur.0.jpg -------------------------------------------------------------------------------- /src/img/phones/motorola-charm-with-motoblur.1.jpg: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/emartech/angular-phonecat-components/8d83da016f346480aa625a5882f4979b5373fc75/src/img/phones/motorola-charm-with-motoblur.1.jpg -------------------------------------------------------------------------------- /src/img/phones/motorola-charm-with-motoblur.2.jpg: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/emartech/angular-phonecat-components/8d83da016f346480aa625a5882f4979b5373fc75/src/img/phones/motorola-charm-with-motoblur.2.jpg -------------------------------------------------------------------------------- /src/img/phones/motorola-defy-with-motoblur.0.jpg: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/emartech/angular-phonecat-components/8d83da016f346480aa625a5882f4979b5373fc75/src/img/phones/motorola-defy-with-motoblur.0.jpg -------------------------------------------------------------------------------- /src/img/phones/motorola-defy-with-motoblur.1.jpg: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/emartech/angular-phonecat-components/8d83da016f346480aa625a5882f4979b5373fc75/src/img/phones/motorola-defy-with-motoblur.1.jpg -------------------------------------------------------------------------------- /src/img/phones/motorola-defy-with-motoblur.2.jpg: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/emartech/angular-phonecat-components/8d83da016f346480aa625a5882f4979b5373fc75/src/img/phones/motorola-defy-with-motoblur.2.jpg -------------------------------------------------------------------------------- /src/img/phones/motorola-xoom-with-wi-fi.0.jpg: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/emartech/angular-phonecat-components/8d83da016f346480aa625a5882f4979b5373fc75/src/img/phones/motorola-xoom-with-wi-fi.0.jpg -------------------------------------------------------------------------------- /src/img/phones/motorola-xoom-with-wi-fi.1.jpg: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/emartech/angular-phonecat-components/8d83da016f346480aa625a5882f4979b5373fc75/src/img/phones/motorola-xoom-with-wi-fi.1.jpg -------------------------------------------------------------------------------- /src/img/phones/motorola-xoom-with-wi-fi.2.jpg: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/emartech/angular-phonecat-components/8d83da016f346480aa625a5882f4979b5373fc75/src/img/phones/motorola-xoom-with-wi-fi.2.jpg -------------------------------------------------------------------------------- /src/img/phones/motorola-xoom-with-wi-fi.3.jpg: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/emartech/angular-phonecat-components/8d83da016f346480aa625a5882f4979b5373fc75/src/img/phones/motorola-xoom-with-wi-fi.3.jpg -------------------------------------------------------------------------------- /src/img/phones/motorola-xoom-with-wi-fi.4.jpg: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/emartech/angular-phonecat-components/8d83da016f346480aa625a5882f4979b5373fc75/src/img/phones/motorola-xoom-with-wi-fi.4.jpg -------------------------------------------------------------------------------- /src/img/phones/motorola-xoom-with-wi-fi.5.jpg: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/emartech/angular-phonecat-components/8d83da016f346480aa625a5882f4979b5373fc75/src/img/phones/motorola-xoom-with-wi-fi.5.jpg -------------------------------------------------------------------------------- /src/img/phones/motorola-xoom.0.jpg: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/emartech/angular-phonecat-components/8d83da016f346480aa625a5882f4979b5373fc75/src/img/phones/motorola-xoom.0.jpg -------------------------------------------------------------------------------- /src/img/phones/motorola-xoom.1.jpg: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/emartech/angular-phonecat-components/8d83da016f346480aa625a5882f4979b5373fc75/src/img/phones/motorola-xoom.1.jpg -------------------------------------------------------------------------------- /src/img/phones/motorola-xoom.2.jpg: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/emartech/angular-phonecat-components/8d83da016f346480aa625a5882f4979b5373fc75/src/img/phones/motorola-xoom.2.jpg -------------------------------------------------------------------------------- /src/img/phones/nexus-s.0.jpg: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/emartech/angular-phonecat-components/8d83da016f346480aa625a5882f4979b5373fc75/src/img/phones/nexus-s.0.jpg -------------------------------------------------------------------------------- /src/img/phones/nexus-s.1.jpg: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/emartech/angular-phonecat-components/8d83da016f346480aa625a5882f4979b5373fc75/src/img/phones/nexus-s.1.jpg -------------------------------------------------------------------------------- /src/img/phones/nexus-s.2.jpg: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/emartech/angular-phonecat-components/8d83da016f346480aa625a5882f4979b5373fc75/src/img/phones/nexus-s.2.jpg -------------------------------------------------------------------------------- /src/img/phones/nexus-s.3.jpg: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/emartech/angular-phonecat-components/8d83da016f346480aa625a5882f4979b5373fc75/src/img/phones/nexus-s.3.jpg -------------------------------------------------------------------------------- /src/img/phones/samsung-galaxy-tab.0.jpg: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/emartech/angular-phonecat-components/8d83da016f346480aa625a5882f4979b5373fc75/src/img/phones/samsung-galaxy-tab.0.jpg -------------------------------------------------------------------------------- /src/img/phones/samsung-galaxy-tab.1.jpg: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/emartech/angular-phonecat-components/8d83da016f346480aa625a5882f4979b5373fc75/src/img/phones/samsung-galaxy-tab.1.jpg -------------------------------------------------------------------------------- /src/img/phones/samsung-galaxy-tab.2.jpg: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/emartech/angular-phonecat-components/8d83da016f346480aa625a5882f4979b5373fc75/src/img/phones/samsung-galaxy-tab.2.jpg -------------------------------------------------------------------------------- /src/img/phones/samsung-galaxy-tab.3.jpg: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/emartech/angular-phonecat-components/8d83da016f346480aa625a5882f4979b5373fc75/src/img/phones/samsung-galaxy-tab.3.jpg -------------------------------------------------------------------------------- /src/img/phones/samsung-galaxy-tab.4.jpg: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/emartech/angular-phonecat-components/8d83da016f346480aa625a5882f4979b5373fc75/src/img/phones/samsung-galaxy-tab.4.jpg -------------------------------------------------------------------------------- /src/img/phones/samsung-galaxy-tab.5.jpg: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/emartech/angular-phonecat-components/8d83da016f346480aa625a5882f4979b5373fc75/src/img/phones/samsung-galaxy-tab.5.jpg -------------------------------------------------------------------------------- /src/img/phones/samsung-galaxy-tab.6.jpg: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/emartech/angular-phonecat-components/8d83da016f346480aa625a5882f4979b5373fc75/src/img/phones/samsung-galaxy-tab.6.jpg -------------------------------------------------------------------------------- /src/img/phones/samsung-gem.0.jpg: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/emartech/angular-phonecat-components/8d83da016f346480aa625a5882f4979b5373fc75/src/img/phones/samsung-gem.0.jpg -------------------------------------------------------------------------------- /src/img/phones/samsung-gem.1.jpg: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/emartech/angular-phonecat-components/8d83da016f346480aa625a5882f4979b5373fc75/src/img/phones/samsung-gem.1.jpg -------------------------------------------------------------------------------- /src/img/phones/samsung-gem.2.jpg: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/emartech/angular-phonecat-components/8d83da016f346480aa625a5882f4979b5373fc75/src/img/phones/samsung-gem.2.jpg -------------------------------------------------------------------------------- /src/img/phones/samsung-mesmerize-a-galaxy-s-phone.0.jpg: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/emartech/angular-phonecat-components/8d83da016f346480aa625a5882f4979b5373fc75/src/img/phones/samsung-mesmerize-a-galaxy-s-phone.0.jpg -------------------------------------------------------------------------------- /src/img/phones/samsung-mesmerize-a-galaxy-s-phone.1.jpg: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/emartech/angular-phonecat-components/8d83da016f346480aa625a5882f4979b5373fc75/src/img/phones/samsung-mesmerize-a-galaxy-s-phone.1.jpg -------------------------------------------------------------------------------- /src/img/phones/samsung-mesmerize-a-galaxy-s-phone.2.jpg: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/emartech/angular-phonecat-components/8d83da016f346480aa625a5882f4979b5373fc75/src/img/phones/samsung-mesmerize-a-galaxy-s-phone.2.jpg -------------------------------------------------------------------------------- /src/img/phones/samsung-mesmerize-a-galaxy-s-phone.3.jpg: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/emartech/angular-phonecat-components/8d83da016f346480aa625a5882f4979b5373fc75/src/img/phones/samsung-mesmerize-a-galaxy-s-phone.3.jpg -------------------------------------------------------------------------------- /src/img/phones/samsung-showcase-a-galaxy-s-phone.0.jpg: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/emartech/angular-phonecat-components/8d83da016f346480aa625a5882f4979b5373fc75/src/img/phones/samsung-showcase-a-galaxy-s-phone.0.jpg -------------------------------------------------------------------------------- /src/img/phones/samsung-showcase-a-galaxy-s-phone.1.jpg: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/emartech/angular-phonecat-components/8d83da016f346480aa625a5882f4979b5373fc75/src/img/phones/samsung-showcase-a-galaxy-s-phone.1.jpg -------------------------------------------------------------------------------- /src/img/phones/samsung-showcase-a-galaxy-s-phone.2.jpg: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/emartech/angular-phonecat-components/8d83da016f346480aa625a5882f4979b5373fc75/src/img/phones/samsung-showcase-a-galaxy-s-phone.2.jpg -------------------------------------------------------------------------------- /src/img/phones/samsung-transform.0.jpg: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/emartech/angular-phonecat-components/8d83da016f346480aa625a5882f4979b5373fc75/src/img/phones/samsung-transform.0.jpg -------------------------------------------------------------------------------- /src/img/phones/samsung-transform.1.jpg: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/emartech/angular-phonecat-components/8d83da016f346480aa625a5882f4979b5373fc75/src/img/phones/samsung-transform.1.jpg -------------------------------------------------------------------------------- /src/img/phones/samsung-transform.2.jpg: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/emartech/angular-phonecat-components/8d83da016f346480aa625a5882f4979b5373fc75/src/img/phones/samsung-transform.2.jpg -------------------------------------------------------------------------------- /src/img/phones/samsung-transform.3.jpg: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/emartech/angular-phonecat-components/8d83da016f346480aa625a5882f4979b5373fc75/src/img/phones/samsung-transform.3.jpg -------------------------------------------------------------------------------- /src/img/phones/samsung-transform.4.jpg: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/emartech/angular-phonecat-components/8d83da016f346480aa625a5882f4979b5373fc75/src/img/phones/samsung-transform.4.jpg -------------------------------------------------------------------------------- /src/img/phones/sanyo-zio.0.jpg: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/emartech/angular-phonecat-components/8d83da016f346480aa625a5882f4979b5373fc75/src/img/phones/sanyo-zio.0.jpg -------------------------------------------------------------------------------- /src/img/phones/sanyo-zio.1.jpg: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/emartech/angular-phonecat-components/8d83da016f346480aa625a5882f4979b5373fc75/src/img/phones/sanyo-zio.1.jpg -------------------------------------------------------------------------------- /src/img/phones/sanyo-zio.2.jpg: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/emartech/angular-phonecat-components/8d83da016f346480aa625a5882f4979b5373fc75/src/img/phones/sanyo-zio.2.jpg -------------------------------------------------------------------------------- /src/img/phones/t-mobile-g2.0.jpg: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/emartech/angular-phonecat-components/8d83da016f346480aa625a5882f4979b5373fc75/src/img/phones/t-mobile-g2.0.jpg -------------------------------------------------------------------------------- /src/img/phones/t-mobile-g2.1.jpg: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/emartech/angular-phonecat-components/8d83da016f346480aa625a5882f4979b5373fc75/src/img/phones/t-mobile-g2.1.jpg -------------------------------------------------------------------------------- /src/img/phones/t-mobile-g2.2.jpg: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/emartech/angular-phonecat-components/8d83da016f346480aa625a5882f4979b5373fc75/src/img/phones/t-mobile-g2.2.jpg -------------------------------------------------------------------------------- /src/img/phones/t-mobile-mytouch-4g.0.jpg: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/emartech/angular-phonecat-components/8d83da016f346480aa625a5882f4979b5373fc75/src/img/phones/t-mobile-mytouch-4g.0.jpg -------------------------------------------------------------------------------- /src/img/phones/t-mobile-mytouch-4g.1.jpg: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/emartech/angular-phonecat-components/8d83da016f346480aa625a5882f4979b5373fc75/src/img/phones/t-mobile-mytouch-4g.1.jpg -------------------------------------------------------------------------------- /src/img/phones/t-mobile-mytouch-4g.2.jpg: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/emartech/angular-phonecat-components/8d83da016f346480aa625a5882f4979b5373fc75/src/img/phones/t-mobile-mytouch-4g.2.jpg -------------------------------------------------------------------------------- /src/img/phones/t-mobile-mytouch-4g.3.jpg: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/emartech/angular-phonecat-components/8d83da016f346480aa625a5882f4979b5373fc75/src/img/phones/t-mobile-mytouch-4g.3.jpg -------------------------------------------------------------------------------- /src/img/phones/t-mobile-mytouch-4g.4.jpg: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/emartech/angular-phonecat-components/8d83da016f346480aa625a5882f4979b5373fc75/src/img/phones/t-mobile-mytouch-4g.4.jpg -------------------------------------------------------------------------------- /src/img/phones/t-mobile-mytouch-4g.5.jpg: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/emartech/angular-phonecat-components/8d83da016f346480aa625a5882f4979b5373fc75/src/img/phones/t-mobile-mytouch-4g.5.jpg -------------------------------------------------------------------------------- /src/index.html: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | 5 | Angular PhoneCat Components 6 | 7 | 8 | 9 | 10 | 11 | 12 | 13 | 14 | 15 | 23 | 24 |
25 | 26 | 27 | Fork me on GitHub 31 | 32 | 33 | 34 | -------------------------------------------------------------------------------- /src/style/app.css: -------------------------------------------------------------------------------- 1 | html, 2 | body { 3 | height: 100%; 4 | } 5 | 6 | body { 7 | padding-top: 50px; 8 | } 9 | 10 | a[ng-click]{ 11 | cursor: pointer; 12 | } 13 | 14 | .navbar { 15 | padding: 5px 0; 16 | } 17 | 18 | .navbar img { 19 | width: 40px; 20 | height: 40px; 21 | margin-top: 5px; 22 | margin-right: 5px; 23 | } 24 | 25 | .navbar-inverse .navbar-brand { 26 | color: #fff; 27 | font-weight: bold; 28 | font-size: 1.6em; 29 | } 30 | 31 | .thumbnail-image { 32 | display: inline-block; 33 | padding: 15px; 34 | max-width: 100%; 35 | } 36 | 37 | .github-ribbon { 38 | position: absolute; 39 | top: 0; 40 | right: 0; 41 | border: 0; 42 | z-index: 3000; 43 | } 44 | -------------------------------------------------------------------------------- /webpack.common.config.js: -------------------------------------------------------------------------------- 1 | 'use strict'; 2 | let webpack = require('webpack'); 3 | let path = require('path'); 4 | let ExtractTextPlugin = require('extract-text-webpack-plugin'); 5 | let ProgressBarPlugin = require('progress-bar-webpack-plugin'); 6 | 7 | module.exports = { 8 | entry: { 9 | 'main': './app/main.js', 10 | 'vendor': './app/vendor.js', 11 | 'style': './app/style.js', 12 | }, 13 | 14 | output: { 15 | path: './dist', 16 | filename: '[name].bundle.js', 17 | sourceMapFilename: '[name].map', 18 | chunkFilename: '[id].chunk.js' 19 | }, 20 | 21 | context: path.join(process.cwd(), 'src'), 22 | 23 | resolve: { 24 | root: [ path.join(process.cwd(), 'src') ], 25 | extensions: ['', '.ts', '.js', '.json'] 26 | }, 27 | 28 | plugins: [ 29 | new webpack.optimize.OccurenceOrderPlugin(true), 30 | new webpack.optimize.CommonsChunkPlugin({ name: ['main', 'vendor'], minChunks: Infinity }), 31 | new ExtractTextPlugin('style.bundle.css'), 32 | new ProgressBarPlugin() 33 | ], 34 | 35 | module: { 36 | loaders: [ 37 | { 38 | test: /\.js$/, 39 | loader: 'babel', 40 | exclude: /(node_modules)/, 41 | query: { 42 | presets: ['latest'] 43 | } 44 | }, 45 | { test: /\.html$/, loader: 'html?attrs=false&caseSensitive&removeAttributeQuotes=false' }, 46 | { test: /\.css$/, loader: ExtractTextPlugin.extract('style-loader', 'css-loader') }, 47 | { test: /\.woff(2)?(\?v=[0-9]\.[0-9]\.[0-9])?$/, loader: "url-loader?limit=10000&mimetype=application/font-woff" }, 48 | { test: /\.(ttf|eot|svg)(\?v=[0-9]\.[0-9]\.[0-9])?$/, loader: "file-loader" } 49 | ] 50 | }, 51 | 52 | stats: { 53 | errorDetails: true, 54 | colors: true, 55 | modules: true, 56 | reasons: true 57 | }, 58 | 59 | node: { 60 | global: 'window', 61 | crypto: 'empty', 62 | process: true, 63 | module: false, 64 | clearImmediate: false, 65 | setImmediate: false 66 | } 67 | }; 68 | -------------------------------------------------------------------------------- /webpack.config.js: -------------------------------------------------------------------------------- 1 | 'use strict'; 2 | let commonConfig = require('./webpack.common.config'); 3 | let webpack = require('webpack'); 4 | let merge = require('webpack-merge'); 5 | let CopyWebpackPlugin = require('copy-webpack-plugin'); 6 | 7 | if (process.env.npm_lifecycle_event == 'build' || process.env.NODE_ENV == 'production') { 8 | module.exports = merge.smart(commonConfig, { 9 | debug: false, 10 | 11 | plugins: [ 12 | new webpack.optimize.DedupePlugin(), 13 | new webpack.optimize.UglifyJsPlugin({ 14 | compress: { 15 | warnings: false 16 | } 17 | }), 18 | new CopyWebpackPlugin([ 19 | { from: 'index.html' }, 20 | { from: 'favicon.ico' }, 21 | { from: 'api', to: 'api' }, 22 | { from: 'img', to: 'img' } 23 | ]) 24 | ], 25 | 26 | devtool: 'source-map' 27 | }); 28 | } else { 29 | module.exports = merge.smart(commonConfig, { 30 | debug: true, 31 | 32 | devServer: { 33 | contentBase: './src', 34 | port: 3000, 35 | inline: true, 36 | historyApiFallback: true, 37 | watchOptions: { 38 | aggregateTimeout: 300, 39 | poll: 500 40 | } 41 | }, 42 | 43 | devtool: 'cheap-module-source-map' 44 | }); 45 | } 46 | --------------------------------------------------------------------------------