88 lines
4.1 KiB
JavaScript
88 lines
4.1 KiB
JavaScript
"use strict";
|
|
(function () {
|
|
'use strict';
|
|
angular.module('assetModule')
|
|
.controller('AssetEditHeaderController', ['$scope', 'events', 'assetModel', 'searchModel', 'systemAlertService', '$filter', '$q', 'createTicketModel',
|
|
function ($scope, events, assetModel, searchModel, systemAlertService, $filter, $q, createTicketModel) {
|
|
var updatedModel = {};
|
|
$scope.state = {
|
|
tooManyCompanies: false
|
|
};
|
|
$scope.selections = {};
|
|
$scope.getList = function (type, term) {
|
|
return createTicketModel.getList(type, term);
|
|
};
|
|
$scope.getCompaniesByName = function (name) {
|
|
return searchModel.getCompaniesByText(name).then(function (response) {
|
|
return { list: response.companies, exceedsChunkSize: response.exceedsChunkSize };
|
|
});
|
|
};
|
|
$scope.updateCompanyField = function (item) {
|
|
updatedModel.company = item;
|
|
$scope.currentAssetCompany = item.name;
|
|
};
|
|
$scope.currentAssetCompany = '';
|
|
$scope.isAssetSaving = true;
|
|
fetchAssetHeaderData();
|
|
$scope.$on(events.TOGGLE_EDIT_MODE, function () {
|
|
fetchAssetHeaderData();
|
|
$scope.$emit(events.PROFILE_EDIT_HEADER, true);
|
|
});
|
|
function fetchAssetHeaderData() {
|
|
$q.all([assetModel.getAssetDetailsByID(assetModel.assetId, assetModel.assetClassId), searchModel.getOperatingCompanies(null, -1)]).then(function (data) {
|
|
var companies = data[1].companies;
|
|
updatedModel = angular.copy(_.head(data));
|
|
$scope.currentAssetCompany = updatedModel.company.name;
|
|
$scope.updatedModel = updatedModel;
|
|
$scope.selections.companies = _.cloneDeep(companies);
|
|
$scope.state.tooManyCompanies = data[1].exceedsChunkSize;
|
|
}).finally(function () {
|
|
$scope.isAssetSaving = false;
|
|
});
|
|
}
|
|
$scope.$on(events.SAVE_CHANGES, function () {
|
|
if (!_.isEmpty(updatedModel)) {
|
|
$scope.isAssetSaving = true; // invoke loading-spinner
|
|
var updateData = {
|
|
name: updatedModel.name,
|
|
tag: updatedModel.tagNumber,
|
|
companyName: updatedModel.company && updatedModel.company.name
|
|
};
|
|
//Backend clears the value for this field only if sent as blank string.
|
|
if (!updateData.companyName) {
|
|
updateData.companyName = "";
|
|
}
|
|
assetModel.update(updateData).then(function (data) {
|
|
$scope.$emit(events.PROFILE_EDIT_HEADER, false);
|
|
$scope.$emit(events.SAVE_CHANGES_COMPLETE);
|
|
if (data.needsReconciliation) {
|
|
systemAlertService.warning({
|
|
text: $filter('i18n')('asset.reconWarning'),
|
|
hide: 10000
|
|
});
|
|
}
|
|
else {
|
|
assetModel.updateCacheAssetDetails(data);
|
|
}
|
|
}).catch(function (error) {
|
|
$scope.$emit(events.SAVE_ALL_CHANGES_FAULT);
|
|
if (error) {
|
|
systemAlertService.error({
|
|
text: error.data.error,
|
|
clear: false
|
|
});
|
|
}
|
|
return $q.reject(error);
|
|
}).finally(function () {
|
|
$scope.isAssetSaving = false;
|
|
});
|
|
}
|
|
});
|
|
$scope.$on(events.DISCARD_CHANGES, function () {
|
|
fetchAssetHeaderData();
|
|
$scope.$emit(events.PROFILE_EDIT_HEADER, false);
|
|
});
|
|
}
|
|
]);
|
|
})();
|