2018-09-06 10:23:58 +03:00
|
|
|
/*
|
2019-02-01 16:39:33 +02:00
|
|
|
* Copyright © 2016-2019 The Thingsboard Authors
|
2018-09-06 10:23:58 +03:00
|
|
|
*
|
|
|
|
|
* Licensed under the Apache License, Version 2.0 (the "License");
|
|
|
|
|
* you may not use this file except in compliance with the License.
|
|
|
|
|
* You may obtain a copy of the License at
|
|
|
|
|
*
|
|
|
|
|
* http://www.apache.org/licenses/LICENSE-2.0
|
|
|
|
|
*
|
|
|
|
|
* Unless required by applicable law or agreed to in writing, software
|
|
|
|
|
* distributed under the License is distributed on an "AS IS" BASIS,
|
|
|
|
|
* WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
|
|
|
|
|
* See the License for the specific language governing permissions and
|
|
|
|
|
* limitations under the License.
|
|
|
|
|
*/
|
|
|
|
|
/*@ngInject*/
|
|
|
|
|
export default function AssignEntityViewToCustomerController(customerService, entityViewService, $mdDialog, $q, entityViewIds, customers) {
|
|
|
|
|
|
|
|
|
|
var vm = this;
|
|
|
|
|
|
|
|
|
|
vm.customers = customers;
|
|
|
|
|
vm.searchText = '';
|
|
|
|
|
|
|
|
|
|
vm.assign = assign;
|
|
|
|
|
vm.cancel = cancel;
|
|
|
|
|
vm.isCustomerSelected = isCustomerSelected;
|
|
|
|
|
vm.hasData = hasData;
|
|
|
|
|
vm.noData = noData;
|
|
|
|
|
vm.searchCustomerTextUpdated = searchCustomerTextUpdated;
|
|
|
|
|
vm.toggleCustomerSelection = toggleCustomerSelection;
|
|
|
|
|
|
|
|
|
|
vm.theCustomers = {
|
|
|
|
|
getItemAtIndex: function (index) {
|
|
|
|
|
if (index > vm.customers.data.length) {
|
|
|
|
|
vm.theCustomers.fetchMoreItems_(index);
|
|
|
|
|
return null;
|
|
|
|
|
}
|
|
|
|
|
var item = vm.customers.data[index];
|
|
|
|
|
if (item) {
|
|
|
|
|
item.indexNumber = index + 1;
|
|
|
|
|
}
|
|
|
|
|
return item;
|
|
|
|
|
},
|
|
|
|
|
|
|
|
|
|
getLength: function () {
|
|
|
|
|
if (vm.customers.hasNext) {
|
|
|
|
|
return vm.customers.data.length + vm.customers.nextPageLink.limit;
|
|
|
|
|
} else {
|
|
|
|
|
return vm.customers.data.length;
|
|
|
|
|
}
|
|
|
|
|
},
|
|
|
|
|
|
|
|
|
|
fetchMoreItems_: function () {
|
|
|
|
|
if (vm.customers.hasNext && !vm.customers.pending) {
|
|
|
|
|
vm.customers.pending = true;
|
|
|
|
|
customerService.getCustomers(vm.customers.nextPageLink).then(
|
|
|
|
|
function success(customers) {
|
|
|
|
|
vm.customers.data = vm.customers.data.concat(customers.data);
|
|
|
|
|
vm.customers.nextPageLink = customers.nextPageLink;
|
|
|
|
|
vm.customers.hasNext = customers.hasNext;
|
|
|
|
|
if (vm.customers.hasNext) {
|
|
|
|
|
vm.customers.nextPageLink.limit = vm.customers.pageSize;
|
|
|
|
|
}
|
|
|
|
|
vm.customers.pending = false;
|
|
|
|
|
},
|
|
|
|
|
function fail() {
|
|
|
|
|
vm.customers.hasNext = false;
|
|
|
|
|
vm.customers.pending = false;
|
|
|
|
|
});
|
|
|
|
|
}
|
|
|
|
|
}
|
|
|
|
|
};
|
|
|
|
|
|
|
|
|
|
function cancel() {
|
|
|
|
|
$mdDialog.cancel();
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
function assign() {
|
|
|
|
|
var tasks = [];
|
|
|
|
|
for (var i=0; i < entityViewIds.length;i++) {
|
|
|
|
|
tasks.push(entityViewService.assignEntityViewToCustomer(vm.customers.selection.id.id, entityViewIds[i]));
|
|
|
|
|
}
|
|
|
|
|
$q.all(tasks).then(function () {
|
|
|
|
|
$mdDialog.hide();
|
|
|
|
|
});
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
function noData() {
|
|
|
|
|
return vm.customers.data.length == 0 && !vm.customers.hasNext;
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
function hasData() {
|
|
|
|
|
return vm.customers.data.length > 0;
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
function toggleCustomerSelection($event, customer) {
|
|
|
|
|
$event.stopPropagation();
|
|
|
|
|
if (vm.isCustomerSelected(customer)) {
|
|
|
|
|
vm.customers.selection = null;
|
|
|
|
|
} else {
|
|
|
|
|
vm.customers.selection = customer;
|
|
|
|
|
}
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
function isCustomerSelected(customer) {
|
|
|
|
|
return vm.customers.selection != null && customer &&
|
|
|
|
|
customer.id.id === vm.customers.selection.id.id;
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
function searchCustomerTextUpdated() {
|
|
|
|
|
vm.customers = {
|
|
|
|
|
pageSize: vm.customers.pageSize,
|
|
|
|
|
data: [],
|
|
|
|
|
nextPageLink: {
|
|
|
|
|
limit: vm.customers.pageSize,
|
|
|
|
|
textSearch: vm.searchText
|
|
|
|
|
},
|
|
|
|
|
selection: null,
|
|
|
|
|
hasNext: true,
|
|
|
|
|
pending: false
|
|
|
|
|
};
|
|
|
|
|
}
|
|
|
|
|
}
|