From 1d1589da68185188393e6bfb227db2d47f846721 Mon Sep 17 00:00:00 2001 From: Victor Woeltjen Date: Thu, 17 Sep 2015 18:05:45 -0700 Subject: [PATCH] [Mobile] Move agentService to mobile bundle ...and make API tweaks. --- .../general/src/services/AgentService.js | 103 ------------------ platform/mobile/bundle.json | 7 ++ platform/mobile/src/AgentService.js | 92 ++++++++++++++++ 3 files changed, 99 insertions(+), 103 deletions(-) delete mode 100644 platform/commonUI/general/src/services/AgentService.js create mode 100644 platform/mobile/src/AgentService.js diff --git a/platform/commonUI/general/src/services/AgentService.js b/platform/commonUI/general/src/services/AgentService.js deleted file mode 100644 index 1c7c83c9c3..0000000000 --- a/platform/commonUI/general/src/services/AgentService.js +++ /dev/null @@ -1,103 +0,0 @@ -/***************************************************************************** - * Open MCT Web, Copyright (c) 2014-2015, United States Government - * as represented by the Administrator of the National Aeronautics and Space - * Administration. All rights reserved. - * - * Open MCT Web is licensed under the Apache License, Version 2.0 (the - * "License"); you may not use this file except in compliance with the License. - * You may obtain a copy of the License at - * http://www.apache.org/licenses/LICENSE-2.0. - * - * Unless required by applicable law or agreed to in writing, software - * distributed under the License is distributed on an "AS IS" BASIS, WITHOUT - * WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. See the - * License for the specific language governing permissions and limitations - * under the License. - * - * Open MCT Web includes source code licensed under additional open source - * licenses. See the Open Source Licenses file (LICENSES.md) included with - * this source code distribution or the Licensing information page available - * at runtime from the About dialog for additional information. - *****************************************************************************/ -/*global define,Promise*/ - -/** - * Module defining AgentService. - */ - -define( - [], - function () { - "use strict"; - - /** - * The query service handles calls for browser and userAgent - * info using a comparison between the userAgent and key - * device names - */ - function AgentService() { - - // Gets the UA name if it is one of the following. - // If it is not (a desktop for example) nothing is - // returned instead - function getDeviceUA(ua) { - return ua.match(/iPad|iPhone|Android/i) ? - ua.match(/iPad|iPhone|Android/i) : ""; - } - - // Checks if gotten device is mobile, - // Mobile is defined as a phone or tablet - function isMobile(ua) { - if (getDeviceUA(ua)) { - return true; - } else { - return false; - } - } - - // Checks if device is phone, - // phone is designated as only an - // iPhone device - function isPhone(ua) { - if (getDeviceUA(ua)[0] === "iPhone") { - return true; - } else { - return false; - } - } - - // Returns the orientation of the device based on the - // device's window dimensions, pass in the innerWidth - // and innerheight of the current window - function getOrientation(innerWidth, innerHeight) { - if (innerWidth > innerHeight) { - return "landscape"; - } else if (innerWidth < innerHeight) { - return "portrait"; - } - } - - return { - /** - * Returns the orientation for the user's device - */ - getOrientation: getOrientation, - - /** - * Returns the a boolean checking if the user is - * on a mobile or non-mobile device. (mobile: true, - * non-mobile: false) - */ - isMobile: isMobile, - - /** - * Returns the a boolean checking if the user is on - * a phone device. (phone: true, non-phone: false) - */ - isPhone: isPhone - }; - } - - return AgentService; - } -); \ No newline at end of file diff --git a/platform/mobile/bundle.json b/platform/mobile/bundle.json index 0f1e2d2121..80be27a8b9 100644 --- a/platform/mobile/bundle.json +++ b/platform/mobile/bundle.json @@ -7,6 +7,13 @@ "priority": "preferred", "depends": [ "$scope", "navigationService", "agentService" ] } + ], + "services": [ + { + "key": "agentService", + "implementation": "AgentService.js", + "depends": [ "$window" ] + } ] } } diff --git a/platform/mobile/src/AgentService.js b/platform/mobile/src/AgentService.js new file mode 100644 index 0000000000..7df3e3c77d --- /dev/null +++ b/platform/mobile/src/AgentService.js @@ -0,0 +1,92 @@ +/***************************************************************************** + * Open MCT Web, Copyright (c) 2014-2015, United States Government + * as represented by the Administrator of the National Aeronautics and Space + * Administration. All rights reserved. + * + * Open MCT Web is licensed under the Apache License, Version 2.0 (the + * "License"); you may not use this file except in compliance with the License. + * You may obtain a copy of the License at + * http://www.apache.org/licenses/LICENSE-2.0. + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an "AS IS" BASIS, WITHOUT + * WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. See the + * License for the specific language governing permissions and limitations + * under the License. + * + * Open MCT Web includes source code licensed under additional open source + * licenses. See the Open Source Licenses file (LICENSES.md) included with + * this source code distribution or the Licensing information page available + * at runtime from the About dialog for additional information. + *****************************************************************************/ +/*global define,Promise*/ + +/** + * Module defining AgentService. + */ + +define( + [], + function () { + "use strict"; + + /** + * The query service handles calls for browser and userAgent + * info using a comparison between the userAgent and key + * device names + */ + function AgentService($window) { + var userAgent = $window.navigator.userAgent, + matches = ua.match(/iPad|iPhone|Android/i) || []; + + this.mobileName = matches[0]; + this.portrait = $window.innerWidth < $window.innerHeight; + } + + /** + * Check if the user is on a mobile device. + * @returns {boolean} true on mobile + */ + AgentService.prototype.isMobile = function () { + return !!this.mobileName; + }; + + /** + * Check if the user is on a phone-sized mobile device. + * @returns {boolean} true on a phone + */ + AgentService.prototype.isPhone = function () { + // iOS is test-to device for mobile, so only + // make this distinction for iPhones + return this.mobileName === 'iPhone'; + }; + + /** + * Check if the user is on a tablet-sized mobile device. + * @returns {boolean} true on a tablet + */ + AgentService.prototype.isTablet = function () { + return this.isMobile() && !this.isPhone(); + }; + + /** + * Check if the user's device is in a portrait-style + * orientation (display width is narrower than display height.) + * @returns {boolean} true in portrait mode + */ + AgentService.prototype.isPortrait = function () { + return this.portrait; + }; + + /** + * Check if the user's device is in a landscape-style + * orientation (display width is greater than display height.) + * @returns {boolean} true in landscape mode + */ + AgentService.prototype.isLandscape = function () { + return !this.isPortrait(); + }; + + return AgentService; + } +);