2017-06-02 16:19:49 +02:00
<!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 = {
2017-06-05 23:27:27 +02:00
'microservice_dependencies': {
'products': '/api-test/product/',
'productById': '/api-test/product/%d/',
2017-06-05 14:30:31 +02:00
'lockGoods': '/api/goods/locking',
'unlockGoods': '/api/goods/locking'
2017-06-02 16:19:49 +02:00
}
};
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;
2017-06-05 14:30:31 +02:00
const secret = createUUID();
$http({
method: 'POST',
headers: {
'secret': secret
},
url: config.microservice_dependencies.lockGoods,
data: [$scope.goods]
}).then(function(res) {
2017-06-02 16:19:49 +02:00
console.log('add', $scope.goods);
2017-06-05 14:30:31 +02:00
$scope.goods.secret = secret;
2017-06-02 16:19:49 +02:00
$scope.cart.push($scope.goods);
save();
$scope.goods = {count:1};
});
};
$scope.del = function del(entry) {
2017-06-05 14:30:31 +02:00
$http({
method: 'DELETE',
headers: {
'secret': entry.secret
},
url: config.microservice_dependencies.unlockGoods
}).then(function(res) {
2017-06-02 16:19:49 +02:00
console.log('del', entry);
$scope.cart = $scope.cart.filter((item) => item !== entry);
save();
});
};
}]);
< / script >
< / body >
< / html >