Merge pull request #2707 from marshmalien/fix/instance-modal-pagination

Fix instance modal pagination and smart-search
This commit is contained in:
Marliana Lara
2018-07-30 14:16:36 -04:00
committed by GitHub
5 changed files with 41 additions and 32 deletions

View File

@@ -1,27 +1,17 @@
function InstanceModalController ($scope, $state, models, strings, ProcessErrors, Wait) { function InstanceModalController ($scope, $state, Dataset, models, strings, ProcessErrors, Wait) {
const { instance, instanceGroup } = models; const { instanceGroup } = models;
const vm = this || {}; const vm = this || {};
let relatedInstanceIds = []; let relatedInstanceIds = [];
vm.setInstances = () => { function setRelatedInstances () {
vm.relatedInstances = [];
vm.selectedRows = [];
vm.instances = instance.get('results').map(instance => {
instance.isSelected = false;
return instance;
});
};
vm.setRelatedInstances = () => {
vm.instanceGroupName = instanceGroup.get('name');
vm.relatedInstances = instanceGroup.get('related.instances.results'); vm.relatedInstances = instanceGroup.get('related.instances.results');
vm.selectedRows = _.cloneDeep(vm.relatedInstances); vm.selectedRows = _.cloneDeep(vm.relatedInstances);
relatedInstanceIds = vm.relatedInstances.map(instance => instance.id); relatedInstanceIds = vm.relatedInstances.map(instance => instance.id);
vm.instances = instance.get('results').map(instance => { vm.instances = vm.instances.map(instance => {
instance.isSelected = relatedInstanceIds.includes(instance.id); instance.isSelected = relatedInstanceIds.includes(instance.id);
return instance; return instance;
}); });
}; }
init(); init();
@@ -29,9 +19,9 @@ function InstanceModalController ($scope, $state, models, strings, ProcessErrors
vm.strings = strings; vm.strings = strings;
vm.panelTitle = strings.get('instance.PANEL_TITLE'); vm.panelTitle = strings.get('instance.PANEL_TITLE');
vm.instanceGroupId = instanceGroup.get('id'); vm.instanceGroupId = instanceGroup.get('id');
vm.instanceGroupName = instanceGroup.get('name');
vm.dataset = instance.get(); vm.querySet = $state.params.instance_search;
vm.querySet = { order_by: 'hostname', page_size: '5' };
vm.list = { vm.list = {
name: 'instances', name: 'instances',
@@ -39,11 +29,10 @@ function InstanceModalController ($scope, $state, models, strings, ProcessErrors
basePath: `/api/v2/instances/` basePath: `/api/v2/instances/`
}; };
if (vm.instanceGroupId === undefined) { vm.instances = Dataset.data.results;
vm.setInstances(); vm.instance_dataset = Dataset.data;
} else {
vm.setRelatedInstances(); setRelatedInstances();
}
$scope.$watch('vm.instances', function() { $scope.$watch('vm.instances', function() {
angular.forEach(vm.instances, function(instance) { angular.forEach(vm.instances, function(instance) {
@@ -115,6 +104,7 @@ function InstanceModalController ($scope, $state, models, strings, ProcessErrors
InstanceModalController.$inject = [ InstanceModalController.$inject = [
'$scope', '$scope',
'$state', '$state',
'Dataset',
'resolvedModels', 'resolvedModels',
'InstanceGroupsStrings', 'InstanceGroupsStrings',
'ProcessErrors', 'ProcessErrors',

View File

@@ -21,8 +21,9 @@
iterator="instance" iterator="instance"
list="vm.list" list="vm.list"
collection="vm.instances" collection="vm.instances"
dataset="vm.dataset" dataset="vm.instance_dataset"
search-tags="vm.searchTags" search-tags="vm.searchTags"
default-params="vm.querySet"
query-set="vm.querySet" query-set="vm.querySet"
search-bar-full-width="true"> search-bar-full-width="true">
</smart-search> </smart-search>
@@ -46,8 +47,14 @@
</at-row-item> </at-row-item>
</div> </div>
</at-row> </at-row>
</at-list> </at-list>
<paginate
collection="vm.instances"
dataset="vm.instance_dataset"
iterator="instance"
base-path="{{vm.list.basePath}}"
query-set="vm.querySet">
</paginate>
<div class="at-ActionGroup"> <div class="at-ActionGroup">
<div class="pull-right"> <div class="pull-right">
<button class="btn at-ButtonHollow--default" <button class="btn at-ButtonHollow--default"

View File

@@ -59,7 +59,7 @@
<div class="at-Row-items at-Row-items--instances"> <div class="at-Row-items at-Row-items--instances">
<at-row-item <at-row-item
header-value="{{ instance.hostname }}" header-value="{{ instance.hostname }}"
header-tag="{{ instance.is_manual ? vm.strings.get('list.MANUAL') : '' }}"> header-tag="{{ instance.managed_by_policy ? '' : vm.strings.get('list.MANUAL') }}">
</at-row-item> </at-row-item>
<at-row-item <at-row-item
label-value="{{:: vm.strings.get('list.ROW_ITEM_LABEL_RUNNING_JOBS') }}" label-value="{{:: vm.strings.get('list.ROW_ITEM_LABEL_RUNNING_JOBS') }}"

View File

@@ -7,10 +7,6 @@ function InstancesController ($scope, $state, $http, models, strings, Dataset, P
vm.policy_instance_list = instanceGroup.get('policy_instance_list'); vm.policy_instance_list = instanceGroup.get('policy_instance_list');
vm.isSuperuser = $scope.$root.user_is_superuser; vm.isSuperuser = $scope.$root.user_is_superuser;
vm.instances = instanceGroup.get('related.instances.results').map(instance => {
instance.is_manual = instance.managed_by_policy === false;
return instance;
});
init(); init();
@@ -22,6 +18,7 @@ function InstancesController ($scope, $state, $http, models, strings, Dataset, P
}; };
vm.dataset = Dataset.data; vm.dataset = Dataset.data;
vm.instances = instanceGroup.get('related.instances.results');
} }
vm.tab = { vm.tab = {

View File

@@ -46,8 +46,6 @@ function InstanceGroupsResolve ($q, $stateParams, InstanceGroup, Instance) {
promises.instanceGroup = new InstanceGroup(['get', 'options'], [instanceGroupId, instanceGroupId]) promises.instanceGroup = new InstanceGroup(['get', 'options'], [instanceGroupId, instanceGroupId])
.then((instanceGroup) => instanceGroup.extend('get', 'jobs', {params: {page_size: "10", order_by: "-finished"}})) .then((instanceGroup) => instanceGroup.extend('get', 'jobs', {params: {page_size: "10", order_by: "-finished"}}))
.then((instanceGroup) => instanceGroup.extend('get', 'instances')); .then((instanceGroup) => instanceGroup.extend('get', 'instances'));
promises.instance = new Instance('get');
return $q.all(promises) return $q.all(promises)
.then(models => models); .then(models => models);
@@ -226,6 +224,15 @@ function InstanceGroupsRun ($stateExtender, strings) {
ncyBreadcrumb: { ncyBreadcrumb: {
skip: true, skip: true,
}, },
params: {
instance_search: {
value: {
page_size: '10',
order_by: 'hostname'
},
dynamic: true
}
},
views: { views: {
"modal": { "modal": {
templateUrl: InstanceModalTemplate, templateUrl: InstanceModalTemplate,
@@ -233,7 +240,15 @@ function InstanceGroupsRun ($stateExtender, strings) {
controllerAs: 'vm' controllerAs: 'vm'
} }
}, },
resolvedModels: InstanceGroupsResolve resolve: {
resolvedModels: InstanceGroupsResolve,
Dataset: ['GetBasePath', 'QuerySet', '$stateParams',
function(GetBasePath, qs, $stateParams) {
let path = `${GetBasePath('instances')}`;
return qs.search(path, $stateParams[`instance_search`]);
}
]
}
}); });
$stateExtender.addState(instanceJobsRoute); $stateExtender.addState(instanceJobsRoute);