Advertisement
Guest User

Untitled

a guest
Aug 29th, 2015
171
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
  1. <link rel="stylesheet" href="http://maxcdn.bootstrapcdn.com/bootstrap/3.3.5/css/bootstrap.min.css">
  2. <script src="http://ajax.googleapis.com/ajax/libs/angularjs/1.4.3/angular.min.js"></script>
  3. <script src="http://ajax.googleapis.com/ajax/libs/angularjs/1.4.3/angular-route.min.js"></script>
  4. <script src="http://ajax.googleapis.com/ajax/libs/jquery/1.11.3/jquery.min.js"></script>
  5. <script>
  6.     var MojtabaApp = angular.module('MojtabaApp', ['ngRoute']);
  7.     // API for routing.
  8.     MojtabaApp.config(function($routeProvider) {
  9.         $routeProvider.
  10.             when('/', {
  11.                 template: '<P>Hi, I am root! {{customer.name}}</p>',
  12.                 controller: 'MojtabaCtrl'
  13.             }).
  14.             when('/:name', {
  15.                 template: '<h1>To do create</h1>',
  16.                 controller: 'MojtabaCtrl'
  17.             }).
  18.             otherwise({
  19.                 redirectTo: '/'
  20.             });
  21.         });
  22.  
  23.     MojtabaApp.controller('MojtabaCtrl', function ($scope,$http){
  24.         $scope.Foods = [];
  25.         $scope.sum = function(items, prop) {
  26.             return items.reduce( function(a, b){
  27.                 return a + b[prop];
  28.             }, 0);
  29.         };
  30.         $scope.addToChart = function(food) {
  31.             $scope.Foods.push(angular.copy(food));
  32.         };
  33.         $scope.removeFoods = function(f) {
  34.             var i = $scope.Foods.indexOf(f);
  35.             $scope.Foods.splice(i, 1);
  36.         };
  37.         $scope.limit = 2;
  38.         $scope.checkChanged = function(meal) {
  39.             var total = 0;
  40.             //loop through the options for this meal and count up the number of selected
  41.             for(var i=0; i<meal.option.length; i++){
  42.               if(meal.option[i].selected)
  43.                 total++
  44.             }
  45.             //then store that value on the meal object
  46.             meal.totalSelected = total;
  47.         }
  48.         $scope.submitForm = function(ok) {
  49.             if(ok) {
  50.                 alert('your form is amazing');
  51.                 $http.post('http://www.yourdomain.com/api/something',$scope.$scope.Foods)
  52.                 .success(function(answerFromServer){
  53.                   console.log('sent was ok and got answer',answerFromServer);
  54.                 })
  55.                 .error(function(reason){
  56.                   console.log('submit was not success',reason);
  57.                 })
  58.                
  59.             }
  60.         }
  61.  
  62.         $scope.listOfFoods = [
  63.             {"name":"Item1", "price":1, "desc":"some info", "option":[{name:"value1"}, {name:"value2"}, {name:"value3"}]},
  64.             {"name":"Item2", "price":2, "desc":"some info 2", "option":[{name:"value2_1"}, {name:"value2_2"}, {name:"value2_3"}], multiple:true},
  65.             {"name":"Item3", "price":3, "desc":"", "option":[]},
  66.         ];
  67.  
  68.     });
  69. </script>
  70.  
  71. <style type="text/css">
  72. input.input-field {
  73.     width: 100%;
  74.     height: 100%;
  75. }
  76.  
  77. .input-field,
  78. .tel-number-field,
  79. .textarea-field,
  80. .select-field {
  81.     box-sizing: border-box;
  82.     -webkit-box-sizing: border-box;
  83.     -moz-box-sizing: border-box;
  84.     border: 1px solid #C2C2C2;
  85.     box-shadow: 1px 1px 4px #EBEBEB;
  86.     -moz-box-shadow: 1px 1px 4px #EBEBEB;
  87.     -webkit-box-shadow: 1px 1px 4px #EBEBEB;
  88.     border-radius: 3px;
  89.     -webkit-border-radius: 3px;
  90.     -moz-border-radius: 3px;
  91.     padding: 7px;
  92.     outline: none;
  93. }
  94. .input-field:focus,
  95. .tel-number-field:focus,
  96. .textarea-field:focus,  
  97. .select-field:focus {
  98.     border: 1px solid #0C0;
  99. }
  100.  
  101. </style>
  102.  
  103. <div ng-app="MojtabaApp" ng-controller="MojtabaCtrl" class="container-fluid">
  104.     <div ng-view></div>
  105.     <form name="menu" ng-submit="submitForm(menu.$valid)" action="http://www.kabobhutcanada.com/modules/mojtaba_form/contact.php" novalidate method="$_POST">
  106.         <table class="table table-hover">
  107.             <tr>
  108.                 <td>
  109.                     <label name="Foods.customer_name"><span>Name <span class="required">* </span></span></label>
  110.                 </td>
  111.                 <td>
  112.                     <input type="text" class="input-field" name="Foods.customer_name" ng-model="Foods.customer_name" placeholder="Your name" required />
  113.                     <p ng-show="Foods.customer_name.$invalid && !Foods.customer_name.$pristine" class="text-danger">Your name is required.</p>
  114.                 </td>
  115.             </tr>
  116.         </table>
  117.        
  118.         <table class="table table-hover">
  119.             <tr data-ng-repeat="food in listOfFoods track by $index">
  120.                 <td>
  121.                     {{$index + 1}}
  122.                 </td>
  123.                 <td>
  124.                     <strong>{{food.name}}</strong><br>
  125.                     <em>{{food.desc}}</em>
  126.                 </td>
  127.                 <td ng-if="food.multiple">
  128.                     <div ng-repeat="obj in food.option">
  129.                         <label>
  130.                             {{obj.name}}
  131.                             <input type="checkbox" ng-model="obj.selected" ng-change="checkChanged(food)" ng-disabled="food.totalSelected>=limit&&!obj.selected"/>
  132.                         </label>
  133.                     </div>
  134.                 </td>
  135.                 <td ng-if="!food.multiple">
  136.                     <select data-ng-options="option as option.name for option in food.option" data-ng-model= "food.selected" ng-show="food.option.length" data-ng-init="food.selected = food.option[0]"></select>
  137.                 </td>
  138.                 <td>
  139.                     {{food.price | currency}}
  140.                 </td>
  141.                 <td>
  142.                     <a href="javascript:;" data-ng-click="addToChart(food)"><span class="glyphicon glyphicon-plus-sign"></span></a>
  143.                 </td>
  144.             </tr>
  145.         </table>
  146.  
  147.         <div class="col-md-6">
  148.             <h3 class="text-center">Your Order!</h3>
  149.             <table class="table table-hover">  
  150.                 <tr ng-repeat="food in Foods">
  151.                     <td>
  152.                         {{$index + 1}}
  153.                     </td>
  154.                     <td ng-if="!food.multiple">
  155.                         <strong>{{food.name}} <span ng-if="food.selected">({{food.selected.name}})</span></strong>
  156.                     </td>
  157.                     <td ng-if="food.multiple">
  158.                         <strong>{{food.name}} <span ng-if="food.totalSelected">(<span ng-repeat="selectedOption in food.option | filter:{selected:true}">{{selectedOption.name+(!$last?', ':'')}}</span>)</span></strong>
  159.                     </td>
  160.                     <td>
  161.                         {{food.price | currency}}
  162.                     </td>
  163.                     <td>
  164.                         <a href="javascript:;" ng-click="removeFoods(food)" style="color:red"><span class="glyphicon glyphicon-minus-sign"></span></a>
  165.                     </td>
  166.                 </tr>
  167.                 <tr>
  168.                     <td colspan="3">
  169.                         <strong>Sub-Total</strong>
  170.                     </td>
  171.                     <td>
  172.                         {{sum(Foods, 'price') | currency}}
  173.                     </td>
  174.                 </tr>
  175.                 <tr>
  176.                     <td colspan="3">
  177.                         <strong>HST</strong>
  178.                     </td>
  179.                     <td>
  180.                         {{(sum(Foods, 'price') * 13/100) | currency}}
  181.                     </td>
  182.                 </tr>
  183.                 <tr>
  184.                     <td colspan="3">
  185.                         <strong>Total</strong>
  186.                     </td>
  187.                     <td>
  188.                         {{(sum(Foods, 'price') * 113/100) | currency}}
  189.                     </td>
  190.                 </tr>
  191.                 <tr>
  192.                     <td colspan="4">
  193.                         <h4 class="text-center" ng-show="sum(Foods, 'price') < 20" style="color:red"> You need to order more than $20.00 before tax!</h4>
  194.                     </td>
  195.                 </tr>
  196.             </table>
  197.             <button type="submit" class="btn btn-primary" ng-disabled="menu.$invalid">Submit</button>
  198.         </div>
  199.     </form>
  200.  
  201.     <pre>
  202.         {{Foods|json}}
  203.         {{menu|json}}
  204.     </pre>
  205. </div>
  206. {/source}
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement