angular.module('openproject.workPackages.controllers') .controller('WorkPackagesController', ['$scope', 'WorkPackagesTableHelper', 'Query', function($scope, WorkPackagesTableHelper, Query) { $scope.$watch('groupBy', function() { var groupByColumnIndex = $scope.columns.map(function(column){ return column.name; }).indexOf($scope.groupBy); $scope.groupByColumn = $scope.columns[groupByColumnIndex]; $scope.query.group_by = $scope.groupBy; // keep the query in sync }); function initialSetup() { $scope.projectIdentifier = gon.project_identifier; $scope.operatorsAndLabelsByFilterType = gon.operators_and_labels_by_filter_type; } function setupQuery() { $scope.query = new Query(gon.query); // Columns $scope.columns = gon.columns; $scope.availableColumns = WorkPackagesTableHelper.getColumnDifference(gon.available_columns, $scope.columns); $scope.groupBy = $scope.query.group_by; $scope.currentSortation = gon.sort_criteria; angular.extend($scope.query, { selectedColumns: $scope.columns }); }; $scope.setupWorkPackagesTable = function(json) { $scope.workPackageCountByGroup = json.work_package_count_by_group; $scope.rows = WorkPackagesTableHelper.getRows(json.work_packages, $scope.groupBy); }; // Initially setup scope via gon initialSetup(); setupQuery(gon); $scope.setupWorkPackagesTable(gon); }]);