Advertisement
Not a member of Pastebin yet?
Sign Up,
it unlocks many cool features!
- 'use strict';
- var controllersModule = require('../_index');
- /**
- * @ngInject
- */
- function ItemCtrl($stateParams, api, PaginationService, $scope, $log, _, $state) {
- // ViewModel
- var vm = this;
- vm.pagination = PaginationService.get();
- if($stateParams.page) {
- vm.pagination.currentPage = parseInt($stateParams.page, 10);
- }
- if($stateParams.itemsPerPage) {
- vm.pagination.itemsPerPage = parseInt($stateParams.itemsPerPage, 10);
- }
- vm.orderBy = $stateParams.orderBy || 'id DESC';
- vm.items = null;
- vm.filtereditems = [];
- vm.userId = parseInt($stateParams.userId) || null;
- vm.filter = {
- text: $stateParams.text || '',
- do: function() {
- vm.pagination.currentPage = 1;
- vm.doFilter();
- },
- clear: function() {
- vm.filter.text = null;
- vm.doFilter();
- }
- };
- vm.doFilter = function() {
- vm.filteredItems = vm.items;
- var stateParams = {};
- //Filtering
- if(vm.filter.text && vm.filter.text !== '' && vm.filter.text.length >= 3) {
- vm.filteredItems = _.filter(vm.filteredItems, function(item) {
- function compare(string) {
- if(!string) {
- return false;
- }
- return (string || '').toLowerCase().indexOf(vm.filter.text.toLowerCase()) >= 0;
- }
- if(
- compare(item.name) ||
- compare(item.type)
- ) {
- return true;
- }
- return false;
- });
- stateParams.text = vm.filter.text;
- } else {
- stateParams.text = null;
- }
- if(vm.userId){
- stateParams.userId = vm.userId;
- vm.filteredItems = _.filter(vm.filteredItems, function (item){
- return item.ownerId === vm.userId;
- });
- }
- //Order
- if(vm.orderBy && vm.orderBy.indexOf('DESC') > -1) {
- vm.filteredItems = _.sortBy(vm.filteredItems, vm.orderBy.substring(0, vm.orderBy.indexOf(' DESC'))).reverse();
- } else if(vm.orderBy) {
- vm.filteredItems = _.sortBy(vm.filteredItems, vm.orderBy);
- }
- if(vm.orderBy) {
- stateParams.orderBy = vm.orderBy;
- } else {
- stateParams.orderBy = null;
- }
- //Pagination
- vm.pagination.totalItems = vm.filteredItems.length;
- if(vm.pagination.currentPage && vm.pagination.itemsPerPage) {
- vm.filteredItems = _.slice(vm.filteredItems, (vm.pagination.currentPage - 1) * vm.pagination.itemsPerPage, vm.pagination.currentPage * vm.pagination.itemsPerPage + 1);
- stateParams.page = vm.pagination.currentPage;
- stateParams.itemsPerPage = vm.pagination.itemsPerPage;
- }
- if(vm.userId){
- $state.go('index.itemsOfUser', stateParams, {notify: false});
- }
- else{
- $state.go('index.items', stateParams, {notify: false});
- }
- };
- vm.load = function() {
- api.getItems(function(items) {
- vm.items = items;
- vm.pagination.totalItems = items.length;
- vm.doFilter();
- }, function(errorResponse) {
- $log.error('Loading items failed.', errorResponse);
- });
- };
- vm.load();
- $scope.$watch(function(){
- return vm.orderBy;
- }, vm.doFilter);
- $scope.$watchCollection(function() {
- return vm.pagination;
- }, vm.doFilter);
- }
- controllersModule.controller('ItemCtrl', ItemCtrl);
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement