Fixes pagination on IG/Instance jobs lists

This commit is contained in:
mabashian
2018-07-26 10:55:56 -04:00
parent 979eaeddfa
commit 7a509a4dcb
16 changed files with 96 additions and 58 deletions

View File

@@ -4,7 +4,7 @@ function IndexJobsController ($scope, strings, dataset) {
vm.count = dataset.data.count;
$scope.$on('updateCount', (e, count) => {
if (count) {
if (typeof count === 'number') {
vm.count = count;
}
});

View File

@@ -16,7 +16,8 @@ function ListJobsController (
$filter,
ProcessErrors,
Wait,
Rest
Rest,
SearchBasePath
) {
const vm = this || {};
const [unifiedJob] = resolvedModels;
@@ -26,21 +27,21 @@ function ListJobsController (
// smart-search
const name = 'jobs';
const iterator = 'job';
const key = 'job_dataset';
let launchModalOpen = false;
let refreshAfterLaunchClose = false;
$scope.list = { iterator, name };
$scope.collection = { iterator, basePath: 'unified_jobs' };
$scope[key] = Dataset.data;
$scope[name] = Dataset.data.results;
$scope.$emit('updateCount', Dataset.data.count, 'jobs');
$scope.$on('updateDataset', (e, dataset) => {
$scope[key] = dataset;
$scope[name] = dataset.results;
$scope.$emit('updateCount', dataset.count, 'jobs');
vm.searchBasePath = SearchBasePath;
vm.list = { iterator, name };
vm.job_dataset = Dataset.data;
vm.jobs = Dataset.data.results;
vm.querySet = $state.params.job_search;
$scope.$watch('vm.job_dataset.count', () => {
$scope.$emit('updateCount', vm.job_dataset.count, 'jobs');
});
$scope.$on('ws-jobs', () => {
if (!launchModalOpen) {
refreshJobs();
@@ -114,7 +115,7 @@ function ListJobsController (
.then(() => {
let reloadListStateParams = null;
if ($scope.jobs.length === 1 && $state.params.job_search &&
if (vm.jobs.length === 1 && $state.params.job_search &&
_.has($state, 'params.job_search.page') &&
$state.params.job_search.page !== '1') {
reloadListStateParams = _.cloneDeep($state.params);
@@ -155,7 +156,7 @@ function ListJobsController (
.then(() => {
let reloadListStateParams = null;
if ($scope.jobs.length === 1 && $state.params.job_search &&
if (vm.jobs.length === 1 && $state.params.job_search &&
!_.isEmpty($state.params.job_search.page) &&
$state.params.job_search.page !== '1') {
const page = `${(parseInt(reloadListStateParams
@@ -190,9 +191,10 @@ function ListJobsController (
};
function refreshJobs () {
qs.search(unifiedJob.path, $state.params.job_search)
qs.search(SearchBasePath, $state.params.job_search)
.then(({ data }) => {
$scope.$emit('updateDataset', data);
vm.jobs = data.results;
vm.job_dataset = data;
});
}
}
@@ -208,7 +210,8 @@ ListJobsController.$inject = [
'$filter',
'ProcessErrors',
'Wait',
'Rest'
'Rest',
'SearchBasePath'
];
export default ListJobsController;

View File

@@ -3,19 +3,19 @@
<smart-search
class="at-List-search"
django-model="jobs"
base-path="unified_jobs"
base-path="{{vm.searchBasePath}}"
iterator="job"
list="list"
dataset="job_dataset"
collection="collection"
list="vm.list"
dataset="vm.job_dataset"
collection="vm.jobs"
search-tags="searchTags"
query-set="querySet"
query-set="vm.querySet"
search-bar-full-width="vm.isPortalMode">
</smart-search>
</div>
<at-list results="jobs" empty-list-reason="{{ vm.emptyListReason }}">
<at-list results="vm.jobs" empty-list-reason="{{ vm.emptyListReason }}">
<!-- TODO: implement resources are missing red indicator as present in mockup -->
<at-row ng-repeat="job in jobs" job-id="{{ job.id }}">
<at-row ng-repeat="job in vm.jobs" job-id="{{ job.id }}">
<div class="at-Row-items">
<!-- TODO: include workflow tab as well -->
<at-row-item
@@ -94,10 +94,10 @@
</at-row>
</at-list>
<paginate
collection="collection"
dataset="job_dataset"
collection="vm.jobs"
dataset="vm.job_dataset"
iterator="job"
base-path="unified_jobs"
query-set="querySet">
base-path="{{vm.searchBasePath}}"
query-set="vm.querySet">
</paginate>
</at-panel-body>

View File

@@ -53,6 +53,10 @@ export default {
return qs.search(searchPath, searchParam)
.finally(() => Wait('stop'));
}
],
SearchBasePath: [
'GetBasePath',
(GetBasePath) => GetBasePath('unified_jobs')
]
}
};

View File

@@ -59,6 +59,10 @@ export default {
return qs.search(searchPath, searchParam)
.finally(() => Wait('stop'));
}
],
SearchBasePath: [
'$stateParams',
($stateParams) => `api/v2/instance_groups/${$stateParams.instance_group_id}/jobs`
]
}
};

View File

@@ -59,6 +59,10 @@ export default {
return qs.search(searchPath, searchParam)
.finally(() => Wait('stop'));
}
],
SearchBasePath: [
'$stateParams',
($stateParams) => `api/v2/instances/${$stateParams.instance_id}/jobs`
]
}
};

View File

@@ -58,6 +58,10 @@ export default {
return qs.search(searchPath, searchParam)
.finally(() => Wait('stop'));
}
],
SearchBasePath: [
'GetBasePath',
(GetBasePath) => GetBasePath('unified_jobs')
]
}
};

View File

@@ -56,6 +56,10 @@ export default {
.finally(() => Wait('stop'));
}
],
SearchBasePath: [
'GetBasePath',
(GetBasePath) => GetBasePath('unified_jobs')
]
},
views: {
'@': {

View File

@@ -55,6 +55,10 @@ export default {
return qs.search(searchPath, searchParam)
.finally(() => Wait('stop'));
}
],
SearchBasePath: [
'GetBasePath',
(GetBasePath) => GetBasePath('unified_jobs')
]
}
};

View File

@@ -54,6 +54,10 @@ export default {
return qs.search(searchPath, searchParam)
.finally(() => Wait('stop'));
}
],
SearchBasePath: [
'GetBasePath',
(GetBasePath) => GetBasePath('unified_jobs')
]
}
};

View File

@@ -4,7 +4,7 @@ function IndexTemplatesController ($scope, strings, dataset) {
vm.count = dataset.data.count;
$scope.$on('updateCount', (e, count) => {
if (count) {
if (typeof count === 'number') {
vm.count = count;
}
});