Labels

Learn the powerful enterprise adaptable database:

Getting Started With ADABAS & Natural

Tuesday, January 10, 2017

201 Ionic Side Menu Record Book Apps From Scratch


.
201 Ionic Side Menu Record Book Apps From Scratch
Building On Codepen Platform

1) Display Dummy Data

Will be implemented later
HTML
<html>
  <head>
    <meta charset="utf-8">
    <title>Diary</title>
    <meta name="viewport" content="initial-scale=1, maximum-scale=1, user-scalable=no, width=device-width">
    <!-- Internal Library
    <link href="lib/ionic/css/ionic.css" rel="stylesheet">
    <script src="lib/ionic/js/ionic.bundle.js"></script>
    -->
    <!-- Cloud Library -->
    <link href="//code.ionicframework.com/nightly/css/ionic.css" rel="stylesheet">
    <script src="//code.ionicframework.com/nightly/js/ionic.bundle.js"></script>
    <!-- Needed for Cordova/PhoneGap (will be a 404 during development) -->
    <script src="cordova.js"></script>
  </head>
    <body ng-app="app">
  <div>
  <div>
    <ion-nav-bar class="bar-stable">
      <ion-nav-back-button></ion-nav-back-button>
    </ion-nav-bar>
    <ion-nav-view></ion-nav-view>
  </div>
</div>
     
     <script id="home.html" type="text/ng-template">
<ion-view title="Home" id="page1">
  <ion-nav-buttons side="right" class="has-header">
      <button class="button button-icon" ng-click="insertRecord()">
        <i class="icon ion-compose"></i>
      </button>
  </ion-nav-buttons>
  <ion-content padding="true" class="has-header">
  <div class = "row">
           <div class = "col"><b>Date</b></div>
           <div class = "col"><b>Cost</b></div>
        </div>
  <div class = "row" ng-repeat="record in records"  ng-class-odd="'odd'" ng-class-even="'even'">
           <div class = "col">{{record.date | date:'yyyy-MM-dd HH:mm:ss Z'}}</div>
           <div class = "col">{{record.cost | currency}}</div>
        </div>  
       </ion-content>
</ion-view>
    </script>    
         
     <script id="cart.html" type="text/ng-template">
<ion-view title="Cart" id="page2">
  <ion-content padding="true" class="has-header"></ion-content>
</ion-view>
    </script>  
      <script id="cart.html" type="text/ng-template">
<ion-view title="Cart" id="page2">
  <ion-content padding="true" class="has-header"></ion-content>
</ion-view>
    </script>      
       <script id="cloud.html" type="text/ng-template">
<ion-view title="Cloud" id="page3">
  <ion-content padding="true" class="has-header"></ion-content>
</ion-view>
    </script>
       
    <script id="menu.html" type="text/ng-template">
<ion-side-menus enable-menu-with-back-views="false">
  <ion-side-menu-content>
    <ion-nav-bar class="bar-stable">
      <ion-nav-back-button></ion-nav-back-button>
      <ion-nav-buttons side="left">
        <button class="button button-icon button-clear ion-navicon" menu-toggle="left"></button>
      </ion-nav-buttons>
    </ion-nav-bar>
    <ion-nav-view name="side-menu21"></ion-nav-view>
  </ion-side-menu-content>
  <ion-side-menu side="left" id="side-menu21">
    <ion-header-bar class="bar-stable">
      <div class="title">Menu</div>
    </ion-header-bar>
    <ion-content padding="false" class="side-menu-left has-header ">
      <ion-list id="menu-list1">
        <ion-item id="menu-list-item1" ui-sref="menu.home" menu-close="">Home</ion-item>
        <ion-item id="menu-list-item2" ui-sref="menu.cart" menu-close="">Cart</ion-item>
        <ion-item id="menu-list-item3" ui-sref="menu.cloud" menu-close="">Cloud</ion-item>
      </ion-list>
    </ion-content>
  </ion-side-menu>
</ion-side-menus>
    </script>
       
  </body>
</html>
CSS (to display alternating row colors)
.odd {
 background-color: WhiteSmoke  ;
}
.even {
 background-color: Lavender  ;
}
JS
angular.module('app', ['ionic'])
.controller('homeCtrl', ['$scope', '$stateParams', '$ionicModal',
function ($scope, $stateParams) {
  $scope.records = [
    { id: '1483228800000',cost:'100' },
    { id: '1484442000000',cost:'50' },
    { id: '1486688400000',cost:'25' },
  ];
}])
   
.controller('cartCtrl', ['$scope', '$stateParams',
function ($scope, $stateParams) {
}])
   
.controller('cloudCtrl', ['$scope', '$stateParams',
function ($scope, $stateParams) {
}])
   
.controller('menuCtrl', ['$scope', '$stateParams',
function ($scope, $stateParams) {
}])
.config(function($stateProvider, $urlRouterProvider) {
  $stateProvider

      .state('menu.home', {
    url: '/page1',
    views: {
      'side-menu21': {
        templateUrl: 'home.html',
        controller: 'homeCtrl'
      }
    }
  })
  .state('menu.cart', {
    url: '/page2',
    views: {
      'side-menu21': {
        templateUrl: 'cart.html',
        controller: 'cartCtrl'
      }
    }
  })
  .state('menu.cloud', {
    url: '/page3',
    views: {
      'side-menu21': {
        templateUrl: 'cloud.html',
        controller: 'cloudCtrl'
      }
    }
  })
  .state('menu', {
    url: '/side-menu21',
    templateUrl: 'menu.html',
    controller: 'menuCtrl'
  })
$urlRouterProvider.otherwise('/side-menu21/page1')

});
201 Ionic Side Menu Record Book Apps From Scratch 1 (http://codepen.io/notarazi/pen/KaVdbe )

2) Add Data Entry Dialog

HTML (add after the last <script> tag)
<html>
  <head>
    <meta charset="utf-8">
    <title>Diary</title>
    <meta name="viewport" content="initial-scale=1, maximum-scale=1, user-scalable=no, width=device-width">
    <!-- Internal Library
    <link href="lib/ionic/css/ionic.css" rel="stylesheet">
    <script src="lib/ionic/js/ionic.bundle.js"></script>
    -->
    <!-- Cloud Library -->
    <link href="//code.ionicframework.com/nightly/css/ionic.css" rel="stylesheet">
    <script src="//code.ionicframework.com/nightly/js/ionic.bundle.js"></script>
    <!-- Needed for Cordova/PhoneGap (will be a 404 during development) -->
    <script src="cordova.js"></script>
  </head>
    <body ng-app="app">
  <div>
  <div>
    <ion-nav-bar class="bar-stable">
      <ion-nav-back-button></ion-nav-back-button>
    </ion-nav-bar>
    <ion-nav-view></ion-nav-view>
  </div>
</div>
     
     <script id="home.html" type="text/ng-template">
<ion-view title="Home" id="page1">
  <ion-nav-buttons side="right" class="has-header">
      <button class="button button-icon" ng-click="insertRecord()">
        <i class="icon ion-compose"></i>
      </button>
  </ion-nav-buttons>
  <ion-content padding="true" class="has-header">
  <div class = "row">
           <div class = "col"><b>Date</b></div>
           <div class = "col"><b>Cost</b></div>
        </div>
  <div class = "row" ng-repeat="record in records"  ng-class-odd="'odd'" ng-class-even="'even'">
           <div class = "col">{{record.date | date:'yyyy-MM-dd HH:mm:ss Z'}}</div>
           <div class = "col">{{record.cost | currency}}</div>
        </div>  
       </ion-content>
</ion-view>
    </script>    
         
     <script id="cart.html" type="text/ng-template">
<ion-view title="Cart" id="page2">
  <ion-content padding="true" class="has-header"></ion-content>
</ion-view>
    </script>  
      <script id="cart.html" type="text/ng-template">
<ion-view title="Cart" id="page2">
  <ion-content padding="true" class="has-header"></ion-content>
</ion-view>
    </script>      
       <script id="cloud.html" type="text/ng-template">
<ion-view title="Cloud" id="page3">
  <ion-content padding="true" class="has-header"></ion-content>
</ion-view>
    </script>
       
    <script id="menu.html" type="text/ng-template">
<ion-side-menus enable-menu-with-back-views="false">
  <ion-side-menu-content>
    <ion-nav-bar class="bar-stable">
      <ion-nav-back-button></ion-nav-back-button>
      <ion-nav-buttons side="left">
        <button class="button button-icon button-clear ion-navicon" menu-toggle="left"></button>
      </ion-nav-buttons>
    </ion-nav-bar>
    <ion-nav-view name="side-menu21"></ion-nav-view>
  </ion-side-menu-content>
  <ion-side-menu side="left" id="side-menu21">
    <ion-header-bar class="bar-stable">
      <div class="title">Menu</div>
    </ion-header-bar>
    <ion-content padding="false" class="side-menu-left has-header ">
      <ion-list id="menu-list1">
        <ion-item id="menu-list-item1" ui-sref="menu.home" menu-close="">Home</ion-item>
        <ion-item id="menu-list-item2" ui-sref="menu.cart" menu-close="">Cart</ion-item>
        <ion-item id="menu-list-item3" ui-sref="menu.cloud" menu-close="">Cloud</ion-item>
      </ion-list>
    </ion-content>
  </ion-side-menu>
</ion-side-menus>
    </script>
 <script id="insertRecord.html" type="text/ng-template">
  <div class="modal">
    <!-- Modal header bar -->
    <ion-header-bar class="bar-secondary">
      <h1 class="title">Insert Record</h1>
      <button class="button button-clear button-positive" ng-click="closeInsertRecord()">Cancel</button>
    </ion-header-bar>
    <!-- Modal content area -->
    <ion-content>
      <form ng-submit="submitInsertRecord(record)">
        <div class="list">
          <label class="item item-input">
            <input type="date" placeholder="Transaction Date" ng-model="record.date">
          </label>
                                        <label class="item item-input">
            <input type="text" placeholder="Transaction Cost" ng-model="record.cost">
          </label>
        </div>
        <div class="padding">
          <button type="submit" class="button button-block button-positive">Insert Record</button>
        </div>
      </form>
    </ion-content>
  </div>
</script>  
  </body>
</html>
JS (Add to the controller code for “homeCtrl”)
angular.module('app', ['ionic'])
.controller('homeCtrl', ['$scope', '$stateParams', '$ionicModal',
function ($scope, $stateParams, $ionicModal) {
  $scope.records = [
    { date: '1483228800000',cost:'100' },
    { date: '1484442000000',cost:'50' },
    { date: '1486688400000',cost:'25' },
  ];
  // Create and load the Modal
  $ionicModal.fromTemplateUrl('insertRecord.html', function(modal) {
    $scope.insertRecordModal = modal;
  }, {
    scope: $scope,
    animation: 'slide-in-up'
  });
  // Called when the form is submitted
  $scope.submitInsertRecord = function(record) {
    $scope.records.push({
      date: record.date,
      cost: record.cost
    });
    $scope.insertRecordModal.hide();
    record.cost = "";
  };
  // Open our new task modal
  $scope.insertRecord = function() {
    $scope.insertRecordModal.show();
  };
  // Close the new task modal
  $scope.closeInsertRecord = function() {
    $scope.insertRecordModal.hide();
  };


}])
   
.controller('cartCtrl', ['$scope', '$stateParams',
function ($scope, $stateParams) {
}])
   
.controller('cloudCtrl', ['$scope', '$stateParams',
function ($scope, $stateParams) {
}])
   
.controller('menuCtrl', ['$scope', '$stateParams',
function ($scope, $stateParams) {
}])
.config(function($stateProvider, $urlRouterProvider) {
  $stateProvider

      .state('menu.home', {
    url: '/page1',
    views: {
      'side-menu21': {
        templateUrl: 'home.html',
        controller: 'homeCtrl'
      }
    }
  })
  .state('menu.cart', {
    url: '/page2',
    views: {
      'side-menu21': {
        templateUrl: 'cart.html',
        controller: 'cartCtrl'
      }
    }
  })
  .state('menu.cloud', {
    url: '/page3',
    views: {
      'side-menu21': {
        templateUrl: 'cloud.html',
        controller: 'cloudCtrl'
      }
    }
  })
  .state('menu', {
    url: '/side-menu21',
    templateUrl: 'menu.html',
    controller: 'menuCtrl'



  })
$urlRouterProvider.otherwise('/side-menu21/page1')

});
201 Ionic Side Menu Record Book Apps From Scratch 2 (http://codepen.io/notarazi/pen/YNwEeP )

Reference:

.

No comments:

Post a Comment