diff --git a/brewman/brewman/static/partial/employee-list.html b/brewman/brewman/static/partial/employee-list.html index ceb8f6bd..49bd661e 100644 --- a/brewman/brewman/static/partial/employee-list.html +++ b/brewman/brewman/static/partial/employee-list.html @@ -1,4 +1,13 @@ -

Employees Add +

Employees +
+
+ +
+
+ Add +
+

@@ -14,7 +23,7 @@ - + diff --git a/brewman/brewman/static/scripts/employee.js b/brewman/brewman/static/scripts/employee.js index 104540a8..77cca0c2 100644 --- a/brewman/brewman/static/scripts/employee.js +++ b/brewman/brewman/static/scripts/employee.js @@ -2,7 +2,68 @@ var EmployeeListCtrl = ['$scope', 'employees', function ($scope, employees) { $scope.info = employees; -}] + var re = /((([^ ]+):\s*('[^':]+'|"[^":]+"|[^ ]+))|[^ ]+[^: '"]*)/g; + + $scope.isTrue = function (value) { + value = value.toLowerCase(); + return !_.any(['f', 'fa', 'fal', 'fals', 'false', 'n', 'no', '0'], function (item) { + return item === value; + }); + }; + + $scope.getEmployees = _.memoize(function (q) { + var matches = [], i, len; + if (angular.isUndefined(q) || q === '') { + return $scope.info; + } + var m = q.match(re); + _.forEach(m, function (item) { + item = item.toLowerCase(); + if (item.indexOf(':') === -1) { + matches.push({'key': 'n', 'value': item}); + } else { + var key = item.substr(0, item.indexOf(':')).toLowerCase(); + var value = item.substr(item.indexOf(':') + 1, item.length).trim().toLowerCase(); + if (value.indexOf("'") === 0 || value.indexOf('"') === 0) { + value = value.substring(1, value.length - 2); + } + if (key !== '' && value !== '' && _.any(['w', 'dep', 'des', 'c'], function (item) { + return item === key; + })) { + matches.push({'key': key, 'value': value}); + } + } + }); + return _.filter($scope.info, function (item) { + len = matches.length; + for (i = 0; i < len; i++) { + var match = matches[i]; + if (match.key === 'n') { + if (item.Name.toLowerCase().indexOf(match.value) === -1) { + return false; + } + } else if (match.key === 'w') { + if (item.IsActive !== $scope.isTrue(match.value)) { + return false; + } + } else if (match.key === 'dep') { + if (item.CostCenter.toLowerCase().indexOf(match.value) === -1) { + return false; + } + } else if (match.key === 'des') { + if (item.Designation.toLowerCase().indexOf(match.value) === -1) { + return false; + } + } else if (match.key === 'c') { + if (item.Code.toString().indexOf(match.value) === -1) { + return false; + } + } + } + return true; + }); + }); +}]; EmployeeListCtrl.resolve = { employees: ['$q', '$route', 'Employee', function ($q, $route, Employee) { diff --git a/brewman/brewman/views/employee.py b/brewman/brewman/views/employee.py index d7f1b732..83a91aa9 100644 --- a/brewman/brewman/views/employee.py +++ b/brewman/brewman/views/employee.py @@ -62,6 +62,7 @@ def update(request): @view_config(request_method='DELETE', route_name='api_employee_id', renderer='json', permission='Employees') +@TryCatchFunction def delete(request): employee = Employee.by_id(uuid.UUID(request.matchdict['id'])) can_delete, reason = employee.can_delete('Advanced Delete' in groupfinder(authenticated_userid(request), request))
{{item.Code}} {{item.Name}} {{item.Designation}}