angular.module('pos', ['ngRoute'])
.directive('tabs', function () {
return {
restrict: 'A',
transclude: true,
scope: { style: "@tabs" },
controller: [ "$scope", function ($scope) {
$scope.panels = [];
$scope.select = function (i) {
angular.forEach($scope.panels, function (p) {
p.selected = false;
});
$scope.panels[i].selected = true;
};
this.addPanel = function (panel) {
if ($scope.panels.length === 0) {
panel.selected = true;
}
$scope.panels.push(panel);
};
}],
template: '
',
replace: true
};
})
.directive('panel', function () {
return {
require: '^tabs',
restrict: 'A',
transclude: true,
scope: { title: "@panel" },
link: function (scope, element, attrs, tabsCtrl) {
tabsCtrl.addPanel(scope);
},
template: '' +
'
',
replace: true
};
})
.directive('item', function() {
return {
require: 'ngModel',
link: function(scope, element, attr, mCtrl) {
function validItem(value) {
if (value.match(/^\d{3}-\d{3}$/gi)) {
mCtrl.$setValidity('validItem', true);
} else {
mCtrl.$setValidity('validItem', false);
}
return value;
}
mCtrl.$parsers.push(validItem);
}
};
})
.filter("euro", function () {
return function (num) {
if (num !== null || num === Number.NaN) {
return parseFloat(num).toFixed(2).toString().replace(".", ",");
}
return "0,00";
};
})
.filter("datum", function () {
return function (d) {
if (d !== null) {
return moment(d).format("DD.MM.YYYY HH:mm:ss");
}
return "?";
};
})
.filter("datum2", function () {
return function (d) {
if (d !== null) {
return moment(d).format("DD.MM.YYYY");
}
return "?";
};
})
.filter('comma2decimal', [
function() {
return function(input) {
var ret=(input)?input.toString().trim().replace(",","."):null;
return parseFloat(ret);
};
}
])
.filter('decimal2comma', [
function() {
return function(input) {
var ret=(input)?input.toString().replace(".",","):null;
if(ret){
var decArr=ret.split(",");
if(decArr.length>1){
var dec=decArr[1].length;
if(dec===1){ret+="0";}
}
}
return ret;
};
}
])
.directive('price', ['$filter',
function($filter) {
return {
restrict:'A',
require: 'ngModel',
link: function(scope, element, attrs, ngModelController) {
ngModelController.$parsers.push(function(data) {
//convert data from view format to model format
data=$filter('comma2decimal')(data);
return data;
});
ngModelController.$formatters.push(function(data) {
//convert data from model format to view format
data=$filter('decimal2comma')(data);
return data;
});
}
};
}
])
.config(function ($routeProvider) {
$routeProvider
.when('/', {
templateUrl: 'templates/main.html',
controller: 'MainCtrl'
})
.when('/dashboard', {
templateUrl: 'templates/dashboard.html',
controller: 'DashboardCtrl'
})
.when('/invoice', {
templateUrl: 'templates/invoice.html',
controller: 'InvoiceCtrl'
})
.when('/pos/:id', {
templateUrl: 'templates/pos.html',
controller: 'PosCtrl'
})
.when('/seller', {
templateUrl: 'templates/seller.html',
controller: 'SellerCtrl'
})
.when('/templates/:offset', {
templateUrl: 'templates/templates.html',
controller: 'TemplatesCtrl'
})
.otherwise({
redirectTo: '/'
});
});
String.prototype.padLeft = function(char, length) {
return char.repeat(Math.max(0, length - this.length)) + this;
};
moment.locale('de');