// //Welcome to app.js //This is main application config of project. You can change a setting of : // - Global Variable // - Theme setting // - Icon setting // - Register View // - Spinner setting // - Custom style // //Global variable use for setting color, start page, message, oAuth key. var db = null; //Use for SQLite database. window.globalVariable = { //custom color style variable color: { appPrimaryColor: "", dropboxColor: "#017EE6", facebookColor: "#3C5C99", foursquareColor: "#F94777", googlePlusColor: "#D73D32", instagramColor: "#517FA4", wordpressColor: "#0087BE" },// End custom color style variable startPage: { url: "/app/pokemonlist",//Url of start page. state: "app.pokemonlist"//State name of start page. }, message: { errorMessage: "Technical error please try again later." //Default error message. }, oAuth: { dropbox: "your_api_key",//Use for Dropbox API clientID. facebook: "your_api_key",//Use for Facebook API appID. foursquare: "your_api_key", //Use for Foursquare API clientID. instagram: "your_api_key",//Use for Instagram API clientID. googlePlus: "your_api_key",//Use for Google API clientID. }, adMob: "your_api_key" //Use for AdMob API clientID. };// End Global variable angular.module('starter', ['ionic','ngIOS9UIWebViewPatch','starter.controllers', 'starter.services', 'ngMaterial', 'ngMessages', 'ngCordova','chart.js']) .run(function ($ionicPlatform, $cordovaSQLite, $rootScope, $ionicHistory, $state, $mdDialog, $mdBottomSheet) { //Create database table of contracts by using sqlite database. //Table schema : //Column Type Primary key // id Integer Yes // firstName Text No // lastName Text No // telephone Text No // email Text No // note Text No // createDate DateTime No // age Integer No // isEnable Boolean No function initialSQLite() { db = window.cordova ? $cordovaSQLite.openDB("pokedex.db") : window.openDatabase("pokedex.db", "1.0", "IonicMaterialDesignDB", -1); }; // End creating SQLite database table. // Create custom defaultStyle. function getDefaultStyle() { return "" + ".material-background-nav-bar { " + " background-color : " + appPrimaryColor + " !important; " + " border-style : none;" + "}" + ".md-primary-color {" + " color : " + appPrimaryColor + " !important;" + "}"; }// End create custom defaultStyle // Create custom style for product view. function getProductStyle() { return "" + ".material-background-nav-bar { " + " background-color : " + appPrimaryColor + " !important;" + " border-style : none;" + " background-image : url('img/background_cover_pixels.png') !important;" + " background-size : initial !important;" + "}" + ".md-primary-color {" + " color : " + appPrimaryColor + " !important;" + "}"; }// End create custom style for product view. // Create custom style for contract us view. function getContractUsStyle() { return "" + ".material-background-nav-bar { " + " background-color : transparent !important;" + " border-style : none;" + " background-image : none !important;" + " background-position-y : 4px !important;" + " background-size : initial !important;" + "}" + ".md-primary-color {" + " color : " + appPrimaryColor + " !important;" + "}"; } // End create custom style for contract us view. // Create custom style for Social Network view. function getSocialNetworkStyle(socialColor) { return "" + ".material-background-nav-bar {" + " background : " + socialColor + " !important;" + " border-style : none;" + "} " + "md-ink-bar {" + " color : " + socialColor + " !important;" + " background : " + socialColor + " !important;" + "}" + "md-tab-item {" + " color : " + socialColor + " !important;" + "}" + " md-progress-circular.md-warn .md-inner .md-left .md-half-circle {" + " border-left-color : " + socialColor + " !important;" + "}" + " md-progress-circular.md-warn .md-inner .md-left .md-half-circle, md-progress-circular.md-warn .md-inner .md-right .md-half-circle {" + " border-top-color : " + socialColor + " !important;" + "}" + " md-progress-circular.md-warn .md-inner .md-gap {" + " border-top-color : " + socialColor + " !important;" + " border-bottom-color : " + socialColor + " !important;" + "}" + "md-progress-circular.md-warn .md-inner .md-right .md-half-circle {" + " border-right-color : " + socialColor + " !important;" + " }" + ".spinner-android {" + " stroke : " + socialColor + " !important;" + "}" + ".md-primary-color {" + " color : " + socialColor + " !important;" + "}" + "a.md-button.md-primary, .md-button.md-primary {" + " color : " + socialColor + " !important;" + "}"; }// End create custom style for Social Network view. function initialRootScope() { $rootScope.appPrimaryColor = appPrimaryColor;// Add value of appPrimaryColor to rootScope for use it to base color. $rootScope.isAndroid = ionic.Platform.isAndroid();// Check platform of running device is android or not. $rootScope.isIOS = ionic.Platform.isIOS();// Check platform of running device is ios or not. }; function hideActionControl() { //For android if user tap hardware back button, Action and Dialog should be hide. $mdBottomSheet.cancel(); $mdDialog.cancel(); }; // createCustomStyle will change a style of view while view changing. // Parameter : // stateName = name of state that going to change for add style of that page. function createCustomStyle(stateName) { var customStyle = ".material-background {" + " background-color : " + appPrimaryColor + " !important;" + " border-style : none;" + "}" + ".spinner-android {" + " stroke : " + appPrimaryColor + " !important;" + "}"; switch (stateName) { case "app.productList" : case "app.productDetail": case "app.productCheckout": case "app.clothShop" : case "app.catalog" : customStyle += getProductStyle(); break; case "app.dropboxLogin" : case "app.dropboxProfile": case "app.dropboxFeed" : customStyle += getSocialNetworkStyle(window.globalVariable.color.dropboxColor); break; case "app.facebookLogin" : case "app.facebookProfile": case "app.facebookFeed" : case "app.facebookFriendList": customStyle += getSocialNetworkStyle(window.globalVariable.color.facebookColor); break; case "app.foursquareLogin" : case "app.foursquareProfile": case "app.foursquareFeed" : customStyle += getSocialNetworkStyle(window.globalVariable.color.foursquareColor); break; case "app.googlePlusLogin" : case "app.googlePlusProfile": case "app.googlePlusFeed" : customStyle += getSocialNetworkStyle(window.globalVariable.color.googlePlusColor); break; case "app.instagramLogin" : case "app.instagramProfile": case "app.instagramFeed" : customStyle += getSocialNetworkStyle(window.globalVariable.color.instagramColor); break; case "app.wordpressLogin" : case "app.wordpressFeed": case "app.wordpressPost" : customStyle += getSocialNetworkStyle(window.globalVariable.color.wordpressColor); break; case "app.contractUs": customStyle += getContractUsStyle(); break; default: customStyle += getDefaultStyle(); break; } return customStyle; }// End createCustomStyle // Add custom style while initial application. $rootScope.customStyle = createCustomStyle(window.globalVariable.startPage.state); $ionicPlatform.ready(function () { ionic.Platform.isFullScreen = true; if (window.cordova && window.cordova.plugins.Keyboard) { cordova.plugins.Keyboard.hideKeyboardAccessoryBar(true); cordova.plugins.Keyboard.disableScroll(true); } if (window.StatusBar) { StatusBar.styleDefault(); } // Copy the populated database to mobile device destination //if (window.sqlitePlugin && window.cordova) { if (window.sqlitePlugin && window.cordova) { window.plugins.sqlDB.copy("pokedex.db", function (e) { console.log(e); }); } initialSQLite(); initialRootScope(); //Checking if view is changing it will go to this function. $rootScope.$on('$ionicView.beforeEnter', function () { //hide Action Control for android back button. hideActionControl(); // Add custom style ti view. $rootScope.customStyle = createCustomStyle($ionicHistory.currentStateName()); }); }); }) .config(function ($ionicConfigProvider, $stateProvider, $urlRouterProvider, $mdThemingProvider, $mdIconProvider, $mdColorPalette, $mdIconProvider) { // Use for change ionic spinner to android pattern. $ionicConfigProvider.spinner.icon("android"); $ionicConfigProvider.views.swipeBackEnabled(false); // mdIconProvider is function of Angular Material. // It use for reference .SVG file and improve performance loading. $mdIconProvider .icon('facebook', 'img/icons/facebook.svg') .icon('twitter', 'img/icons/twitter.svg') .icon('mail', 'img/icons/mail.svg') .icon('message', 'img/icons/message.svg') .icon('share-arrow', 'img/icons/share-arrow.svg') .icon('pokemenu', 'img/icons/action.svg',24) .icon('more', 'img/icons/more_vert.svg'); //mdThemingProvider use for change theme color of Ionic Material Design Application. /* You can select color from Material Color List configuration : * red * pink * purple * purple * deep-purple * indigo * blue * light-blue * cyan * teal * green * light-green * lime * yellow * amber * orange * deep-orange * brown * grey * blue-grey */ //Learn more about material color patten: https://www.materialpalette.com/ //Learn more about material theme: https://material.angularjs.org/latest/#/Theming/01_introduction $mdThemingProvider .theme('default') .primaryPalette('purple') .accentPalette('deep-purple'); appPrimaryColor = $mdColorPalette[$mdThemingProvider._THEMES.default.colors.primary.name]["500"]; //Use for get base color of theme. //$stateProvider is using for add or edit HTML view to navigation bar. // //Schema : //state_name(String) : Name of state to use in application. //page_name(String) : Name of page to present at localhost url. //cache(Bool) : Cache of view and controller default is true. Change to false if you want page reload when application navigate back to this view. //html_file_path(String) : Path of html file. //controller_name(String) : Name of Controller. // //Learn more about ionNavView at http://ionicframework.com/docs/api/directive/ionNavView/ //Learn more about AngularUI Router's at https://github.com/angular-ui/ui-router/wiki $stateProvider .state('app', { url: "/app", abstract: true, templateUrl: "templates/menu/html/menu.html", controller: 'menuCtrl' }) .state('app.dashboard', { url: "/dashboard", params:{ isAnimated:false }, views: { 'menuContent': { templateUrl: "templates/material-user-interface/dashboard/html/dashboard.html", controller: 'dashboardCtrl' } } }) .state('app.dashboardSetting', { url: "/dashboardSetting", views: { 'menuContent': { templateUrl: "templates/material-user-interface/dashboard/html/dashboard-setting.html", controller: "dashboardSettingCtrl" } } }) .state('app.pokemonlist', { url: "/pokemonlist", cache: true, params:{ isAnimated:(ionic.Platform.isAndroid()==false) }, views: { 'menuContent': { templateUrl: "templates/pokemonliste/html/pokemon-list.html", controller: 'pokemonListCtrl' } } }) .state('app.pokemondetail', { url: "/pokemondetail", cache: false, params: { pokemondetail: null }, views: { 'menuContent': { templateUrl: "templates/pokemonliste/html/pokemon-detail.html", controller: 'pokemonDetailCtrl' } } }) .state('app.pokemonsetting', { url: "/pokemontsetting", cache: false, views: { 'menuContent': { templateUrl: "templates/pokemonliste/html/pokemon-setting.html", controller: 'pokemonSettingCtrl' } } }) .state('app.imagedownload', { url: "/imagedownload", cache: false, params:{ isAnimated:(ionic.Platform.isAndroid()==false) }, views: { 'menuContent': { templateUrl: "templates/imagedownload/html/imagedownload.html", controller: 'imageDownloadCtrl' } } }) .state('app.contractUs', { url: "/contractUs", views: { 'menuContent': { templateUrl: "templates/share-application-content/email-message/html/contract-us.html", controller: 'contractUsCtrl' } } }) .state('app.deviceInformation', { url: "/deviceInformation", views: { 'menuContent': { templateUrl: "templates/hardware-connect/device-information/html/device-information.html", controller: 'deviceInformationCtrl' } } }) .state('app.mobileContractList', { url: "/mobileContractList", cache: false, views: { 'menuContent': { templateUrl: "templates/hardware-connect/mobile-contract/html/mobile-contract-list.html", controller: 'mobileContractListCtrl' } } }) .state('app.mobileContractDetail', { url: "/mobileContractDetail", params: { contractDetail: null, actionDelete: false }, views: { 'menuContent': { templateUrl: "templates/hardware-connect/mobile-contract/html/mobile-contract-detail.html", controller: 'mobileContractDetailCtrl' } } }) .state('app.flashLight', { url: "/flashLight", views: { 'menuContent': { templateUrl: "templates/hardware-connect/flash-light/html/flash-light.html", controller: 'flashLightCtrl' } } }) .state('app.vibration', { url: "/vibration", views: { 'menuContent': { templateUrl: "templates/hardware-connect/vibration/html/vibration.html", controller: 'vibrationCtrl' } } }) .state('app.googleAdmob', { url: "/googleAdmob", views: { 'menuContent': { templateUrl: "templates/advertising-application/googleAdmob/html/googleAdmob.html", controller: 'googleAdmobCtrl' } } }) .state('app.imagePicker', { url: "/imagePicker", cache: false, views: { 'menuContent': { templateUrl: "templates/hardware-connect/image-picker/html/image-picker.html", controller: 'imagePickerCtrl' } } }) .state('app.defaultUI', { url: "/defaultUI", cache: false, views: { 'menuContent': { templateUrl: "templates/material-user-interface/default-user-interface/html/default-user-interface.html", controller: 'defaultUserInterfaceCtrl' } } }) .state('app.tryApp', { url: "/tryApp", cache: false, views: { 'menuContent': { templateUrl: "templates/themes/try-app/html/try-app.html" } } }) .state('app.tryAppNoBackBtn', { url: "/tryAppNoBackBtn", cache: false, views: { 'menuContent': { templateUrl: "templates/themes/try-app/html/try-app-no-back-btn.html" } } }) .state('app.pricing', { url: "/pricing", views: { 'menuContent': { templateUrl: "templates/themes/pricing/html/pricing.html" } } }) .state('app.menuDashboard', { url: "/menuDashboard", views: { 'menuContent': { templateUrl: "templates/themes/menu-dashboard/html/menu-dashboard.html", controller: "menuDashboardCtrl" } } }) .state('app.expense', { url: "/expense", params:{ isAnimated:true }, views: { 'menuContent': { templateUrl: "templates/themes/expense-dashboard/html/expense-dashboard.html", controller: "expenseDashboardCtrl" } } }) .state('app.expenseSetting', { url: "/expenseSetting", views: { 'menuContent': { templateUrl: "templates/themes/expense-dashboard/html/expense-dashboard-setting.html", controller: "expenseDashboardSettingCtrl" } } }) .state('app.newsFeed', { url: "/newsFeed", views: { 'menuContent': { templateUrl: "templates/themes/news-feed/html/news-feed.html" } } }) .state('app.clothShop', { url: "/clothShop", views: { 'menuContent': { templateUrl: "templates/themes/cloth-shop/html/cloth-shop.html" } } }) .state('app.onlineCourse', { url: "/onlineCourse", views: { 'menuContent': { templateUrl: "templates/themes/online-course/html/online-course.html" } } }) .state('app.catalog', { url: "/catalog", views: { 'menuContent': { templateUrl: "templates/themes/catalog/html/catalog.html", controller: "catalogCtrl" } } }) .state('app.locationFeed', { url: "/locationFeed", views: { 'menuContent': { templateUrl: "templates/themes/location-feed/html/location-feed.html" } } }) .state('app.cubeFeed', { url: "/cubeFeed", views: { 'menuContent': { templateUrl: "templates/themes/cube-feed/html/cube-feed.html" } } }) .state('app.restaurant', { url: "/restaurant", views: { 'menuContent': { templateUrl: "templates/themes/restaurant/html/restaurant.html" } } }) .state('app.singlePushNotification', { url: "/singlePushNotification", views: { 'menuContent': { templateUrl: "templates/push-notification/single-push-notification/html/single-push-notification.html", controller: "singlePushNotificationCtrl" } } }) .state('app.schedulePushNotification', { url: "/schedulePushNotification", views: { 'menuContent': { templateUrl: "templates/push-notification/schedule-push-notification/html/schedule-push-notification.html", controller: "schedulePushNotificationCtrl" } } }) .state('app.iosMapConnect', { url: "/iosMapConnect", views: { 'menuContent': { templateUrl: "templates/map-and-location/ios-map-connect/html/ios-map-connect.html", controller: "iosMapConnectCtrl" } } }) .state('app.androidMapConnect', { url: "/androidMapConnect", views: { 'menuContent': { templateUrl: "templates/map-and-location/android-map-connect/html/android-map-connect.html", controller: "androidMapConnectCtrl" } } });// End $stateProvider //Use $urlRouterProvider.otherwise(Url); $urlRouterProvider.otherwise(window.globalVariable.startPage.url); });