172 lines
		
	
	
		
			4.9 KiB
		
	
	
	
		
			HTML
		
	
	
	
		
		
			
		
	
	
			172 lines
		
	
	
		
			4.9 KiB
		
	
	
	
		
			HTML
		
	
	
	
|  | <!DOCTYPE html> | ||
|  | <html lang="en"> | ||
|  | <head> | ||
|  |   <meta charset="utf-8" /> | ||
|  |   <meta http-equiv="X-UA-Compatible" content="IE=edge" /> | ||
|  |   <meta name="viewport" content="width=device-width, initial-scale=1" /> | ||
|  |   <link href="/node_modules/semantic-ui-css/semantic.min.css" rel="stylesheet" /> | ||
|  |   <link href="/static/css/main.css" rel="stylesheet" /> | ||
|  |   <title>microStock Dummy Cart</title> | ||
|  | </head> | ||
|  | <body ng-app="microStockDummieCare"> | ||
|  |   <nav class="ui stackable inverted menu"> | ||
|  |     <div class="ui container"> | ||
|  |       <div class="header item">Dummy Cart</div> | ||
|  |     </div> | ||
|  |   </nav> | ||
|  | 
 | ||
|  |   <div class="ui container" ng-controller="MainCtrl"> | ||
|  | 		<form class="ui form" ng-submit="add()"> | ||
|  | 			<div class="three fields"> | ||
|  | 				<div class="field"> | ||
|  | 					<div class="ui fluid search selection dropdown"> | ||
|  | 						<input name="country" type="hidden"> | ||
|  | 						<i class="dropdown icon"></i> | ||
|  | 						<div class="default text">Select Product</div> | ||
|  | 						<div class="menu"> | ||
|  | 							<div class="item" ng-repeat="item in products" data-value="{{item.id}}"><img class="icon" ng-src="{{'/api/good/availablity/'+item.id| reloadSrc}}"/>{{item.title}}</div> | ||
|  | 						</div> | ||
|  | 					</div> | ||
|  | 				</div> | ||
|  | 				<div class="field"> | ||
|  | 					<input placeholder="Count" type="number" min="1" max="50"  ng-model="goods.count"> | ||
|  | 				</div> | ||
|  | 				<div class="field"> | ||
|  | 				 	<button type="submit" class="ui button" tabindex="0">Add</button> | ||
|  | 				</div> | ||
|  | 			</div> | ||
|  | 		</form> | ||
|  | 		<table class="ui table"> | ||
|  | 			<thead> | ||
|  | 				<tr> | ||
|  | 					<th>Count</th> | ||
|  | 					<th>Product</th> | ||
|  | 					<th></th> | ||
|  | 				</tr> | ||
|  | 			</thead> | ||
|  | 			<tbody> | ||
|  | 				<tr ng-repeat="item in cart"> | ||
|  | 					<td>{{item.count}}</td> | ||
|  | 					<td>{{getProduct(item.product_id).title}}</td> | ||
|  | 					<td> | ||
|  | 						<div class="ui button icon" ng-click="del(item)"><i class="icon trash"></i></div> | ||
|  | 					</td> | ||
|  | 				</tr> | ||
|  | 			</tbody> | ||
|  | 		</table> | ||
|  | 	</div> | ||
|  | 
 | ||
|  |   <footer class="ui vertical footer segment"> | ||
|  |     <div class="ui center aligned container"> | ||
|  |       <p>© 2017 MM / Go - Team</p> | ||
|  |     </div> | ||
|  |   </footer> | ||
|  | 	<script src="/node_modules/jquery/dist/jquery.min.js"></script> | ||
|  | 	<script src="/node_modules/semantic-ui-css/semantic.min.js"></script> | ||
|  |   <script src="/node_modules/angular/angular.min.js"></script> | ||
|  |   <script src="/node_modules/angular-animate/angular-animate.min.js"></script> | ||
|  |   <script src="/node_modules/angular-ui-router/release/angular-ui-router.min.js"></script> | ||
|  |   <script src="/node_modules/angular-loading-bar/build/loading-bar.min.js"></script> | ||
|  | 	<script> | ||
|  | 	var config = { | ||
|  | 	  'microservice_dependencies': { | ||
|  | 	    'products': 'http://localhost:8080/api-test/product/', | ||
|  | 	    'productById': 'http://localhost:8080/api-test/product/%d/', | ||
|  | 			'lockGoods': '/api/goods/lock/%s', | ||
|  | 			'unlockGoods': '/api/goods/unlock/%s' | ||
|  | 	  } | ||
|  | 	}; | ||
|  | 
 | ||
|  | 	let selectedProduct = null; | ||
|  | 	$(".dropdown").dropdown().dropdown('setting', { | ||
|  | 		onChange: function (value) { | ||
|  | 			selectedProduct = parseInt(value, 10); | ||
|  | 			console.log('changed product', selectedProduct); | ||
|  | 		} | ||
|  | 	}); | ||
|  | 
 | ||
|  | 	function createUUID () { | ||
|  | 		let digit = new Date().getTime(); | ||
|  | 
 | ||
|  | 		// Use high-precision timer if available | ||
|  | 		/* eslint-disable */ | ||
|  | 		if (typeof performance !== 'undefined' && typeof performance.now === 'function') { | ||
|  | 			digit += performance.now(); | ||
|  | 		} | ||
|  | 
 | ||
|  | 		return 'xxxxxxxx-xxxx-4xxx-yxxx-xxxxxxxxxxxx'.replace(/[xy]/g, (char) => { | ||
|  | 			const result = (digit + Math.random() * 16) % 16 | 0; | ||
|  | 
 | ||
|  | 			digit = Math.floor(digit / 16); | ||
|  | 
 | ||
|  | 			return (char === 'x' | ||
|  | 			? result | ||
|  | 			: result & 0x3 | 0x8).toString(16); | ||
|  | 		}); | ||
|  | 		/* eslint-enable*/ | ||
|  | 	} | ||
|  | 
 | ||
|  | 
 | ||
|  | 	angular.module('microStockDummieCare', [ | ||
|  | 	    'angular-loading-bar', | ||
|  | 	    'ngAnimate' | ||
|  | 	  ]) | ||
|  | 		.filter('reloadSrc', function () { | ||
|  | 	    return function (input) { | ||
|  | 	      if (input) | ||
|  | 	          return input + '?v=' + new Date().getTime(); | ||
|  | 	      } | ||
|  | 	  }) | ||
|  | 		.controller('MainCtrl',['$scope', '$http',function($scope, $http) { | ||
|  | 			$scope.products = []; | ||
|  | 			$scope.goods = {count:1}; | ||
|  | 			$scope.cart = []; | ||
|  | 
 | ||
|  | 			$http.get(config.microservice_dependencies.products).then(function(res) { | ||
|  | 				$scope.products = res.data; | ||
|  | 			}); | ||
|  | 
 | ||
|  | 			function load() { | ||
|  | 				const tmp = JSON.parse(localStorage.getItem("cart")); | ||
|  | 				if(tmp) { | ||
|  | 					$scope.cart = tmp.map((item) => { | ||
|  | 						delete item.$$hashKey | ||
|  | 						return item; | ||
|  | 					}); | ||
|  | 				} | ||
|  | 			} | ||
|  | 			function save(){ | ||
|  | 				localStorage.setItem("cart",JSON.stringify($scope.cart)); | ||
|  | 			} | ||
|  | 			load(); | ||
|  | 
 | ||
|  | 			$scope.getProduct = function getProduct(id){ | ||
|  | 				if(id) { | ||
|  | 					return $scope.products.filter((item) => item.id === id)[0]; | ||
|  | 				} | ||
|  | 			}; | ||
|  | 
 | ||
|  | 			$scope.add = function add() { | ||
|  | 				$scope.goods.product_id = selectedProduct; | ||
|  | 				$scope.goods.secret = createUUID(); | ||
|  | 				$http.post(config.microservice_dependencies.lockGoods.replace('%s', $scope.goods.secret), [$scope.goods]).then(function(res) { | ||
|  | 					console.log('add', $scope.goods); | ||
|  | 					$scope.cart.push($scope.goods); | ||
|  | 					save(); | ||
|  | 					$scope.goods = {count:1}; | ||
|  | 				}); | ||
|  | 			}; | ||
|  | 
 | ||
|  | 			$scope.del = function del(entry) { | ||
|  | 				$http.delete(config.microservice_dependencies.unlockGoods.replace('%s', entry.secret)).then(function(res) { | ||
|  | 					console.log('del', entry); | ||
|  | 					$scope.cart = $scope.cart.filter((item) => item !== entry); | ||
|  | 					save(); | ||
|  | 				}); | ||
|  | 			}; | ||
|  | 
 | ||
|  | 		}]); | ||
|  | 	</script> | ||
|  | </body> | ||
|  | </html> |