(function () {
angular.module('Plania').controller('addPropertyMappingController', ['$scope', '$modalInstance', 'params', 'svvTunnelRepository', controller]);
function controller($scope, $modalInstance, params, svvTunnelRepository) {
$scope.category = params.Category;
$scope.objectType = params.ObjectType;
$scope.$watch('objectType.NvdbTypeId', function (newValue, oldValue) {
if (newValue) {
var url = 'propertymappingtypes/availablePlaniaProperties/' +
$scope.category.prefix +
'/' +
$scope.objectType.PlaniaGuid +
'/' +
$scope.objectType.NvdbTypeId;
svvTunnelRepository.get(url, {}).then(
function (response) {
$scope.planiaProperties = response.data;
},
function (error) {
svvTunnelRepository.growl(error, 'danger');
}
);
}
});
$scope.onPlaniaPropertyChanged = function () {
var url = 'propertymappingtypes/nvdbEgenskaper/' +
$scope.objectType.NvdbTypeId +
'/' +
$scope.selectedPlaniaProperty.PlaniaProperty;
svvTunnelRepository.get(url, {}).then(
function (response) {
$scope.nvdbProperties = response.data;
}, function (error) {
svvTunnelRepository.growl(error, 'danger');
});
};
$scope.canSave = function () {
if ($scope.selectedNvdbProperty && $scope.selectedPlaniaProperty) {
return true;
}
return false;
};
$scope.save = function () {
var model = {
CategoryPrefix: $scope.category.prefix,
CategoryGuid: $scope.objectType.PlaniaGuid,
PlaniaProperty: $scope.selectedPlaniaProperty.PlaniaProperty,
PlaniaDynamicLabelProperty: $scope.selectedPlaniaProperty.PlaniaDynamicLabelName,
PlaniaDynamicLabelValue: $scope.selectedPlaniaProperty.PlaniaDynamicLabelValue,
NvdbTypeId: $scope.objectType.NvdbTypeId,
NvdbPropertyTypeId: $scope.selectedNvdbProperty.NvdbPropertyId,
NvdbLabel: $scope.selectedNvdbProperty.NvdbLabel,
IsTemplate: $scope.selectedPlaniaProperty.IsTemplate
};
svvTunnelRepository.post('PropertyMapping', model).then(function (response) {
$modalInstance.close('saved');
}, function (error) {
svvTunnelRepository.growl(error, 'danger');
});
};
$scope.cancel = function() {
$modalInstance.dismiss('canceled');
};
}
})();
(function () {
angular.module('Plania').config([
'$provide', function ($provide) {
$provide.decorator('AutoCompleteService', [
'$delegate', function ($delegate, $localStorage) {
var service = $delegate;
service.equipments = function (searchParam, page, pageSize, sorting) {
if (!sorting || sorting.length === 0)
sorting = { ID: 'asc' };
var columns = ['Id', 'Description', 'Text20', 'Area.Id', 'Area.Description', 'Building.Id', 'Building.Description', 'Building.Estate.Id', 'Building.Estate.Description', 'Building.Estate.Guid'];
return service.getAutoComplete('equipment/', searchParam, page, pageSize, sorting, function (r) {
return service.getModel(r.Guid, r.Id, r.Description, r);
}, columns);
};
return service;
}]);
}
]);
})();
(function () {
angular.module('Plania').config([
'$provide', function ($provide) {
$provide.decorator('CommonService', [
'$delegate', '$localStorage', function ($delegate, $localStorage) {
var service = $delegate;
service.clearFilterData = function () {
delete service.filterData;
service.filterData = { isLoaded: false };
service.setEmptyEstate();
service.setEmptyBuilding();
service.setEmptyDataOwner();
service.setEmptySelection();
};
service.setEmptyEstate = function () { service.filterData.selectedEstate = { Name: 'Velg eiendom', Guid: '' }; };
service.setEmptyEstate();
service.setEmptyBuilding();
service.setEmptyDataOwner();
service.setEmptySelection();
service.setEstate = function(estate) {
if (!estate) return;
service.filterData.selectedEstate.Guid = estate.Guid;
if (!estate.Name)
service.filterData.selectedEstate.Name = estate.Id + " - " + estate.Description;
else {
service.filterData.selectedEstate.Name = estate.Name;
}
$localStorage.filterData = service.filterData;
};
service.getFilterData = function() {
if (!service.filterData.isLoaded) {
var storageFilterData = angular.fromJson($localStorage.filterData);
if (storageFilterData) {
service.setBuilding(storageFilterData.selectedBuilding);
service.setDataOwner(storageFilterData.selectedDataOwner);
service.setSelectedSelection(storageFilterData.selectedSelection);
service.setEstate(storageFilterData.selectedEstate);
}
service.filterData.isLoaded = true;
}
return service.filterData;
};
service.disableWebMenuNavigation = function () {
return service.getFilterData().selectedEstate.Guid.length === 0;
};
return service;
}]);
}
]);
})();
(function () {
angular.module('Plania').controller('DeviationController', ['$scope', 'Repository', '$stateParams', '$modalInstance', '$modal', '$localStorage', 'TranslationService', 'Constants', '$rootScope', 'DeviationService', 'RegisteredFieldService', controller]);
function controller($scope, repository, $stateParams, $modalInstance, $modal, $localStorage, translationService, constants, $rootScope, deviationService, registeredFieldService) {
var isModal = $stateParams.isModal;
$scope.isUpdate = $stateParams.guid ? true : false;
$scope.model = {};
$scope.modelDto = {};
$scope.modelIsLoaded = false;
if ($stateParams.guid) $scope.model.Guid = $stateParams.guid;
$scope.parentEntity = $stateParams.parentEntity;
$scope.disableEntityInput = $stateParams.disableEntityInput;
$scope.activateAutocomplete = false;
$scope.viewMode = (isModal || !$scope.isUpdate) ? false : true;
$scope.filterOnBuilding = $localStorage.generalOptions.InspectedEntityLocation === constants.inspectedEntityLocation.building && $scope.parentEntity === 'WorkOrder';
$scope.filterOnEstate = $localStorage.generalOptions.InspectedEntityLocation === constants.inspectedEntityLocation.estate && $scope.parentEntity === 'WorkOrder';
$scope.reloadDocumentTable = false;
$scope.isDocumentsCollapsed = true;
$scope.defaultDocumentCategory = { Guid: repository.commonService.getFilterData().selectedDataOwner.GuidWoXEqDocumentCategory, Name: repository.commonService.getFilterData().selectedDataOwner.WoXEqDocumentCategory };
$scope.toggleViewMode = function () {
$scope.viewMode = !$scope.viewMode;
};
var updateAccess = function (status) {
if (status && status === 'Closed') {
$scope.restrictEdit = true;
$scope.restrictDelete = true;
}
else if ($scope.isUpdate) {
var checkOtherDO = $scope.model.GuidDataOwner !== repository.commonService.getFilterData().selectedDataOwner.Guid;
$scope.restrictEdit = !repository.authService.hasEditAccess(repository.commonService.prefix.Deviation, checkOtherDO);
$scope.restrictDelete = !repository.authService.hasDeleteAccess(repository.commonService.prefix.Deviation, checkOtherDO);
} else {
$scope.restrictEdit = !repository.authService.hasCreateAccess(repository.commonService.prefix.Deviation);
$scope.restrictDelete = !repository.authService.hasDeleteAccess(repository.commonService.prefix.Deviation);
}
};
$scope.canCloseDeviation = function (guidWorkOrder) {
if ($scope.model.Status === 'Closed') return false;
if ($localStorage.generalOptions.CloseDeviationFromWoOnly)
return guidWorkOrder && $scope.model.GuidWorkOrder === guidWorkOrder;
else
return guidWorkOrder ? $scope.model.GuidWorkOrder === guidWorkOrder : true;
};
$scope.closeDeviation = function () {
swal({
title: translationService.translate('web-swal-close-Deviation', 'Bekreft lukking av avvik'),
text: translationService.translate('web-swal-close-Deviation-message', 'Er avviket klar til å bli lukket?'),
type: "info",
showCancelButton: true,
confirmButtonColor: "#2196f3",
confirmButtonText: translationService.translate('web-swal-deviation-button-confirm', 'Ja, Lukk avviket!'),
cancelButtonText: translationService.translate('web-button-cancel', 'Avbryt'),
closeOnConfirm: false,
showLoaderOnConfirm: true
}, function () {
window.onkeydown = null;
window.onfocus = null;
$scope.model.RequestAction = "Close";
repository.updateSingleDictionary(repository.apiData.deviation.url, $scope.model).then(function (result) {
swal(translationService.translate('web-swal-deviation-success', 'Avviket ble lukket!'), '', "success");
$scope.goBack('deviation.edit', { guid: $scope.model.Guid, menuGuid: $scope.navigation.params.menuGuid });
});
$scope.model.RequestAction = null;
});
};
$scope.closeDeviationDirectly = function () {
$modal.open({
templateUrl: 'app/deviation/views/closeDeviationDirectlyModal.html',
controller: 'CloseDeviationDirectlyModalController',
resolve: {
params: function () {
return {
guid: $scope.model.Guid
};
}
},
}).result.then(function (result) { //Ok
getDeviation();
});
};
//Prefill
if ($stateParams.building) {
$scope.model.Building = $stateParams.building;
$scope.model.GuidBuilding = $stateParams.building.guid;
}
if ($stateParams.estate) {
$scope.model.Estate = $stateParams.estate;
$scope.model.GuidEstate = $stateParams.estate.guid;
}
if ($stateParams.area) {
$scope.model.Area = $stateParams.area;
$scope.model.GuidArea = $stateParams.area.guid;
}
if ($stateParams.equipment) {
$scope.model.Equipment = $stateParams.equipment;
$scope.model.GuidEquipment = $stateParams.equipment.guid;
}
var columns = [
"User2.RealName", "User1.RealName", "Estate.Id", "Estate.Description", "Building.Id", "Building.Description",
"Area.Id", "Area.Description", "Equipment.Id", "Equipment.Description",
"DeviationType.Id", "DeviationType.Description",
'ControlListItemAnswer.Value',
'ControlListItemAnswer.ControlListItem.Name',
'ControlListItemAnswer.ControlListXEntity.Guid',
'ControlListItemAnswer.ControlListXEntity.Equipment.Id', 'ControlListItemAnswer.ControlListXEntity.Equipment.Description',
'ControlListItemAnswer.ControlListXEntity.Area.Id', 'ControlListItemAnswer.ControlListXEntity.Area.Description',
'ControlListItemAnswer.ControlListXEntity.ControlList.Name', 'ControlListItemAnswer.ControlListXEntity.ControlList.Id', 'ControlListItemAnswer.ControlListXEntity.ControlList.Description',
// WorkOrder columns
'ControlListItemAnswer.ControlListXEntity.WorkOrder.Id', 'ControlListItemAnswer.ControlListXEntity.WorkOrder.Description', 'ControlListItemAnswer.ControlListXEntity.WorkOrder.Status', 'ControlListItemAnswer.ControlListXEntity.WorkOrder.DueDate', 'ControlListItemAnswer.ControlListXEntity.WorkOrder.GuidProject', 'ControlListItemAnswer.ControlListXEntity.WorkOrder.EndDate', 'ControlListItemAnswer.ControlListXEntity.WorkOrder.GuidPeriodicTask',
'ControlListItemAnswer.ControlListXEntity.WorkOrder.Project.Id', 'ControlListItemAnswer.ControlListXEntity.WorkOrder.Project.Id',
"CorrectiveWorkOrder.Id", "CorrectiveWorkOrder.Description", "CorrectiveWorkOrder.Status", "CorrectiveWorkOrder.DueDate", "CorrectiveWorkOrder.GuidProject", "CorrectiveWorkOrder.EndDate", "CorrectiveWorkOrder.GuidPeriodicTask",
"CorrectiveWorkOrder.Project.Id", "CorrectiveWorkOrder.Project.Id",
"InspectionWorkOrder.Id", "InspectionWorkOrder.Description", "InspectionWorkOrder.Status", "InspectionWorkOrder.DueDate", "InspectionWorkOrder.GuidProject", "InspectionWorkOrder.EndDate", "InspectionWorkOrder.GuidPeriodicTask",
"InspectionWorkOrder.Project.Id", "InspectionWorkOrder.Project.Id",
];
var getDeviation = function () {
repository.getMainModel(repository.apiData.deviation.url, $scope.model.Guid, JSON.stringify(columns)).then(
function (result) {
$scope.model = result.Data;
$scope.reloadDocumentTable = true;
updateAccess($scope.model.Status);
//setProperties();
setTimeout(function () { $scope.activateAutocomplete = true; }, 250);
$scope.modelIsLoaded = true;
},
function (error) {
repository.growl(error, 'danger');
});
};
if ($scope.isUpdate) {
getDeviation();
} else {
if (!isModal) {
var selectedBuilding = repository.commonService.getFilterData().selectedBuilding;
if (selectedBuilding.Guid) {
$scope.model.GuidBuilding = selectedBuilding.Guid;
$scope.model.Building = { Caption: selectedBuilding.Name };
if (selectedBuilding.Estate) {
$scope.model.GuidEstate = selectedBuilding.Estate.Guid;
$scope.model.Estate = selectedBuilding.Estate;
}
}
}
var selectedEstate = repository.commonService.getFilterData().selectedEstate;
if (selectedEstate && selectedEstate.Guid !== '') {
$scope.model.GuidEstate = selectedEstate.Guid;
$scope.modelDto.estate = selectedEstate.Name;
}
$scope.activateAutocomplete = true;
$scope.modelIsLoaded = true;
}
$scope.saveAction = function (action) {
if ($scope.model.DeadlineDate)
$scope.model.DeadlineDate = new Date($scope.model.DeadlineDate).toISOString();
if ($scope.isUpdate) {
repository.updateSingleDictionary(repository.apiData.deviation.url, $scope.model).then(function (result) {
repository.growl(translationService.translate('web-deviation-deviationUpdated', 'Avvik oppdatert'), 'success');
if (isModal)
$modalInstance.close('ok');
else {
$scope.goBack(action, { guid: $scope.model.Guid, menuGuid: $scope.navigation.params.menuGuid });
$scope.model = result;
}
}).catch(function (error) {
repository.growl(error, 'danger');
});
} else {
$scope.model.GuidInspectionWorkOrder = $stateParams.GuidInspectionWorkOrder;
repository.createSingleDictionary(repository.apiData.deviation.url, $scope.model)
.then(function (result) {
repository.growl(translationService.translate('web-deviation-deviationAdded', "Avvik har blitt lagt til"), 'success');
if (action === 'close') {
$modalInstance.close('ok');
} else {
if (!isModal) {
$scope.viewMode = true;
repository.commonService.setLastRegisterGuid('deviation.list', result.Guid);
$scope.goBack(action, { guid: result.Guid, menuGuid: $scope.navigation.params.menuGuid });
}
$scope.model.Guid = result.Guid;
getDeviation();
$scope.isUpdate = true;
}
}).catch(function (error) {
repository.growl(error, 'danger');
});
}
};
$scope.$on($scope.events.newSelection, function () {
updateAccess();
});
$scope.autoCompleteFilter = function (filterName) {
var filter = {};
var estateFieldRule = registeredFieldService.getLocalRegisteredField(repository.apiData.deviation.prefix, 'GuidEstate');
var isEstateHidden = estateFieldRule && estateFieldRule.Hidden;
switch (filterName) {
case "building":
if ($scope.model.GuidEstate) {
if (!isEstateHidden) {
filter.PropertyFilter = [{ Property: 'GuidEstate', Operator: '=', Value: $scope.model.GuidEstate }];
}
}
return filter;
case "area":
filter = { GuidBuilding: $scope.model.GuidBuilding ? $scope.model.GuidBuilding : null };
if ($scope.model.GuidEstate && !isEstateHidden) {
filter.PropertyFilter = [{ Property: 'Building.GuidEstate', Operator: '=', Value: $scope.model.GuidEstate }];
}
return filter;
case "equipment":
filter = { GuidBuilding: $scope.model.GuidBuilding, hasConditionControl: true, PropertyFilter: [] };
if ($scope.model.GuidEstate && !$scope.model.GuidBuilding && !isEstateHidden) {
filter.PropertyFilter = [{ Property: 'Building.GuidEstate', Operator: '=', Value: $scope.model.GuidEstate }];
}
if ($localStorage.generalOptions.FilterDeviationByEqPrefix && $scope.model.GuidDeviationType) {
var id = $scope.model.DeviationType.Caption.substr(0, 3).trim();
filter.PropertyFilter.push({ Property: 'Id', Operator: 'StartsWith', Value: id });
}
filter.PropertyFilter.push({ Property: 'IsTemplate', Operator: '=', Value: false });
return filter;
case "deviationType":
if ($localStorage.generalOptions.FilterDeviationByEqPrefix && $scope.model.GuidEquipment) {
return { PropertyFilter: [{ Property: 'Id', Operator: 'StartsWith', Value: $scope.model.Equipment.Caption.substr(0, 3).trim() }] };
}
return {};
}
};
$scope.cancel = function () {
$modalInstance.dismiss('canceled');
};
$scope.onEstateSelect = function (estate) {
if (!estate) {
$scope.model.GuidEstate = "";
return;
}
if ($scope.model.GuidEstate !== estate.Guid) {
$scope.model.GuidBuilding = "";
$scope.model.Building = null;
$scope.model.GuidEquipment = "";
$scope.model.Equipment = null;
$scope.model.GuidArea = "";
$scope.model.Area = null;
}
$scope.model.GuidEstate = estate.Guid;
};
$scope.onBuildingSelect = function (building) {
if (!building) {
$scope.model.GuidBuilding = "";
return;
}
if ($scope.model.GuidBuilding !== building.Guid) {
$scope.model.GuidEquipment = "";
$scope.model.Equipment = null;
$scope.model.GuidArea = "";
$scope.model.Area = null;
}
$scope.model.GuidBuilding = building.Guid;
if (!$scope.model.GuidEstate || $scope.model.GuidEstate === "") {
$scope.model.GuidEstate = building.GuidEstate;
$scope.model.Estate = building.Estate;
}
};
$scope.onAreaSelect = function (area) {
if (!area) {
$scope.model.GuidArea = "";
return;
}
$scope.model.GuidArea = area.Guid;
if (!$scope.model.GuidBuilding || $scope.model.GuidBuilding === "") {
$scope.model.GuidBuilding = area.GuidBuilding;
$scope.model.Building = area.Building;
}
if (!$scope.model.GuidEstate || $scope.model.GuidEstate === "") {
$scope.model.GuidEstate = area.Building.Estate.Guid;
$scope.model.Estate = area.Building.Estate;
}
};
$scope.onEquipmentSelect = function (equipment) {
if (!equipment) {
$scope.model.GuidEquipment = "";
return;
}
$scope.model.GuidEquipment = equipment.Guid;
if (!$scope.model.GuidEstate || $scope.model.GuidEstate === "") {
$scope.model.GuidEstate = equipment.Building.Estate.Guid;
$scope.model.Estate = equipment.Building.Estate;
}
if (!$scope.model.GuidBuilding || $scope.model.GuidBuilding === "") {
$scope.model.GuidBuilding = equipment.GuidBuilding;
$scope.model.Building = equipment.Building;
}
if (equipment.GuidArea) {
$scope.model.GuidArea = equipment.GuidArea;
$scope.model.Area = equipment.Area;
}
};
$scope.onDeviationTypeSelect = function (deviationType) {
if (!deviationType) {
$scope.model.GuidDeviationType = "";
$scope.model.DeviationType = null;
return;
}
$scope.model.GuidDeviationType = deviationType.Guid;
};
$scope.openControlList = function () {
$modal.open({
templateUrl: 'app/controlList/views/controlListCompletionModal.html',
size: 'lg',
controller: 'ControlListCompletionModalController',
resolve: {
params: function () {
return {
workOrderCaption: $scope.model.ControlListItemAnswer.ControlListXEntity.WorkOrder.Caption,
controlList: $scope.model.ControlListItemAnswer.ControlListXEntity.ControlList,
controlListXEntity: $scope.model.ControlListItemAnswer.ControlListXEntity,
restrictEdit: true
};
}
}
}).result.then(function (result) {
}, function () {
//cancel
});
};
$scope.createWorkOrder = function () {
deviationService.createWorkOrder($scope.model);
};
var getMenuLink = function (url, text, icon) {
var htmlText = '';
if (icon)
htmlText += ' ';
else
htmlText += ' ';
htmlText += text + '';
return {
html: htmlText,
isHref: true
};
};
$scope.originContextMenu = function () {
var options = [];
if ($scope.hasReadAccess('ControlListXEntity') && $scope.model.GuidControlListItemAnswer) {
options.push({
html: ' ' + translationService.translate('web-deviation-originContextMenu-viewInspectionControlListXEntity', 'Åpne kontrollisten') + '',
click: function ($itemScope, $event, modelValue, text, $li) {
$scope.openControlList();
}
});
}
if ($scope.hasReadAccess('WorkOrder') && $scope.model.GuidInspectionWorkOrder && repository.enableWebNavigation)
options.push(getMenuLink($rootScope.navigation.href('workOrder.edit', { guid: $scope.model.GuidInspectionWorkOrder }), translationService.translate('web-deviation-originContextMenu-viewInspectionWorkOrder', 'Gå til arbeidsordre')));
if ($scope.hasReadAccess('Project') && $scope.model.GuidInspectionWorkOrder && $scope.model.InspectionWorkOrder && $scope.model.InspectionWorkOrder.GuidProject && repository.enableWebNavigation)
options.push(getMenuLink($rootScope.navigation.href('project.edit', { guid: $scope.model.InspectionWorkOrder.GuidProject }), translationService.translate('web-deviation-originContextMenu-viewInspectionProject', 'Gå til prosjekt')));
if ($scope.hasReadAccess('PeriodicTask') && $scope.model.GuidInspectionWorkOrder && $scope.model.InspectionWorkOrder && $scope.model.InspectionWorkOrder.GuidPeriodicTask && repository.enableWebNavigation)
options.push(getMenuLink($rootScope.navigation.href('periodicTask.edit', { guid: $scope.model.InspectionWorkOrder.GuidPeriodicTask }), translationService.translate('web-deviation-originContextMenu-viewInspectionPeriodicTask', 'Gå til periodisk rutine')));
if (options.length === 0) {
options.push({
html: '' + translationService.translate('web-deviation-originContextMenu-empty', 'Ingen aksjoner tilgjengelig') + '',
enabled: false
});
}
return options;
};
//Svv specific
$scope.shouldShowNvdbLookup = function () {
if ($scope.model.Equipment && $scope.model.Equipment.Caption) {
var caption = $scope.model.Equipment.Caption;
if (caption.split('-')[0].trim().length === 3) return true;
}
return false;
};
$scope.onNvdbLookupClicked = function () {
$modal.open({
templateUrl: 'customizations/10088/nvdbEquipmentLookup.html',
size: 'lg',
controller: 'NvdbEquipmentLookupController',
resolve: {
params: function () {
return {
guidBuilding: $scope.model.GuidBuilding,
guidEquipment: $scope.model.GuidEquipment
};
}
}
}).result.then(function (result) {
$scope.model.Equipment.Caption = result.Caption;
$scope.model.GuidEquipment = result.GuidEquipment;
}, function () {
//cancel
});
};
//end svv specific
$scope.followUpContextMenu = function () {
var options = [];
if ($scope.hasEditAccess('Deviation') && $scope.model.GuidCorrectiveWorkOrder && $scope.model.CorrectiveWorkOrder && !$scope.model.CorrectiveWorkOrder.EndDate && $scope.canCloseDeviation($scope.model.GuidCorrectiveWorkOrder)) {
options.push({
html: ' ' + translationService.translate('web-deviation-followUpContextMenu-closeDeviationFromCorrective', 'Lukk avviket via') + ' ' + $scope.model.CorrectiveWorkOrder.Caption + '',
click: function () {
$scope.closeDeviation();
}
});
}
if ($scope.hasEditAccess('Deviation') && !$scope.model.GuidCorrectiveWorkOrder && $scope.model.GuidInspectionWorkOrder && $scope.model.InspectionWorkOrder && !$scope.model.InspectionWorkOrder.EndDate && $scope.canCloseDeviation($scope.model.GuidInspectionWorkOrder)) {
options.push({
html: ' ' + translationService.translate('web-deviation-followUpContextMenu-closeDeviationFromInspection', 'Lukk avviket via') + ' ' + $scope.model.InspectionWorkOrder.Caption + '',
click: function () {
$scope.closeDeviation();
}
});
}
if ($scope.hasEditAccess('Deviation') && !$scope.model.GuidCorrectiveWorkOrder && !$scope.model.GuidInspectionWorkOrder && $scope.canCloseDeviation()) {
options.push({
html: ' ' + translationService.translate('web-deviation-followUpContextMenu-closeDeviationFromDirectly', 'Lukk avviket direkte uten arbeidsordre')+ '',
click: function () {
$scope.closeDeviation();
}
});
}
if ($scope.hasReadAccess('WorkOrder') && $scope.model.GuidCorrectiveWorkOrder && repository.enableWebNavigation)
options.push(getMenuLink($rootScope.navigation.href('workOrder.edit', { guid: $scope.model.GuidCorrectiveWorkOrder }), translationService.translate('web-deviation-followUpContextMenu-viewCorrectiveWorkOrder', 'Gå til arbeidsordre')));
if ($scope.hasReadAccess('Project') && $scope.model.GuidCorrectiveWorkOrder && $scope.model.CorrectiveWorkOrder && $scope.model.CorrectiveWorkOrder.GuidProject && repository.enableWebNavigation)
options.push(getMenuLink($rootScope.navigation.href('project.edit', { guid: $scope.model.CorrectiveWorkOrder.GuidProject }), translationService.translate('web-deviation-followUpContextMenu-viewCorrectiveProject', 'Gå til prosjekt')));
if ($scope.hasReadAccess('PeriodicTask') && $scope.model.GuidCorrectiveWorkOrder && $scope.model.CorrectiveWorkOrder && $scope.model.CorrectiveWorkOrder.GuidPeriodicTask && repository.enableWebNavigation)
options.push(getMenuLink($rootScope.navigation.href('periodicTask.edit', { guid: $scope.model.CorrectiveWorkOrder.GuidPeriodicTask }), translationService.translate('web-deviation-followUpContextMenu-viewCorrectivePeriodicTask', 'Gå til periodisk rutine')));
if ($scope.hasEditAccess('Deviation') && $scope.model.Status === 'InWorks' && $scope.model.GuidCorrectiveWorkOrder && !$scope.model.CorrectiveWorkOrder.EndDate) {
options.push({
html: ' ' + translationService.translate('web-deviation-followUpContextMenu-removeFromWorkOrder', 'Koble fra arbeidsordre') + '',
click: function () {
swal({
title: translationService.translate('web-deviation-followUpContextMenu-removeFromWorkOrder-swalTitle', 'Bekreft frakobling av avvik'),
text: translationService.translate('web-deviation-followUpContextMenu-removeFromWorkOrder-swalMessage', 'Er du sikker på at du vil koble dette avviket ifra arbeidsordren?'),
type: "warning",
showCancelButton: true,
confirmButtonColor: "#f44336",
confirmButtonText: translationService.translate('web-deviation-followUpContextMenu-removeFromWorkOrder-swalConfirm', 'Ja, koble fra!'),
cancelButtonText: translationService.translate('web-button-cancel', 'Avbryt'),
closeOnConfirm: false,
showLoaderOnConfirm: true
}, function () {
window.onkeydown = null;
window.onfocus = null;
$scope.model.RequestAction = "ResetCorrectiveWorkorder";
repository.updateSingleDictionary(repository.apiData.deviation.url, $scope.model).then(function (result) {
swal(translationService.translate('web-deviation-followUpContextMenu-removeFromWorkOrder-success', 'Avviket ble frakoblet arbeidsordren'), result.Caption, "success");
$scope.goBack('deviation.edit', { guid: $scope.model.Guid, menuGuid: $scope.navigation.params.menuGuid });
}, function (error) {
swal('Error', error, "error");
});
});
}
});
}
if ($scope.hasCreateAccess('WorkOrder') && $scope.model.Status !== 'Closed' && !$scope.model.GuidCorrectiveWorkOrder) {
options.push({
html: ' ' + translationService.translate('web-deviation-followUpContextMenu-createWorkOrder', 'Opprett ny arbeidsordre for utbedring av avvik') + '',
click: function () {
$scope.createWorkOrder();
}
});
}
if ($scope.hasReadAccess('WorkOrder') && $scope.model.Status !== 'Closed' && $scope.hasEditAccess('Deviation') && !$scope.model.GuidCorrectiveWorkOrder) {
options.push({
html: ' ' + translationService.translate('web-deviation-followUpContextMenu-addToExistingWo', 'Koble til eksisterende arbeidsordre') + '',
click: function () {
$modal.open({
templateUrl: 'app/common/views/singleSelectModal.html',
controller: 'SingleSelectModalController',
size: 'lg',
resolve: {
modalParams: function () {
return {
title: translationService.translate('web-deviation-followUpContextMenu-addToExistingWo-modalTitle', 'Velg arbeidsordre avviket skal kobles til'),
url: repository.apiData.workOrder.url,
sorting: { 'Id': 'desc' },
filter: { PropertyFilter: [{ Property: 'EndDate', Operator: '=', Value: null }] },
columns: [
{ title: translationService.translate('web-workOrder-Id', 'Ao Nr'), property: 'Id' },
{ title: translationService.translate('web-workOrder-Description', 'Beskrivelse'), property: 'Description', PropertyType: 'String' },
{ title: translationService.translate('web-workOrder-Building-Id', 'Bygg Id'), property: 'Building.Id' },
{ title: translationService.translate('web-workOrder-Building-Description', 'Byggbeskrivelse'), property: 'Building.Description', PropertyType: 'String' },
]
};
}
}
}).result.then(function (selectedEntity) {
$scope.model.GuidCorrectiveWorkOrder = selectedEntity.Guid;
$scope.saveAction('deviation.edit');
});
}
});
}
if ($scope.model.Status !== 'Closed' && $scope.hasEditAccess('Deviation') && !$scope.model.GuidCorrectiveWorkOrder) {
options.push({
html: ' ' + translationService.translate('web-deviation-followUpContextMenu-closeDeviationDirectly', 'Lukk avvik direkte') + '',
click: function () {
$scope.closeDeviationDirectly();
}
});
}
if (options.length === 0) {
options.push({
html: '' + translationService.translate('web-deviation-followUpContextMenu-empty', 'Ingen aksjoner tilgjengelig') + '',
enabled: false
});
}
return options;
};
}
})();
(function () {
angular.module('Plania').controller('NvdbChangeSetListController', ['$scope', 'svvTunnelRepository', 'ngTableParams', '$modal', 'Repository', controller]);
function controller($scope, svvTunnelRepository, ngTableParams, $modal, repository) {
var nvdbApiUrl = 'NvdbChangeSet';
$scope.changeSetTable = new ngTableParams({
page: 1,
count: 10,
sorting: { Guid: 'asc' },
filter: { searchString: '' }
},
{
total: 0,
counts: [10, 20, 50],
filterDelay: 10,
getData: function ($defer, params) {
var url = nvdbApiUrl +
'?page=' +
(params.page() - 1) +
'&pageSize=' +
params.count() +
'&search=' +
params.filter().searchString +
'&dataOwner=' + repository.commonService.getFilterData().selectedDataOwner.Guid;
svvTunnelRepository.get(url, {}).then(function (response) {
var result = response.data;
$scope.changeSetTable.settings().total = result.TotalCount;
$defer.resolve(result.List);
},
function (error) {
svvTunnelRepository.growl(error, 'danger');
});
}
});
$scope.openChangeSetModal = function (changeSet) {
$modal.open({
templateUrl: 'customizations/10088/nvdbChangeSetModal.html',
size: 'xl',
controller: 'NvdbChangeSetModalController',
resolve: {
params: function () {
return {
nvdbId: changeSet.NvdbId,
nvdbTypeId: changeSet.NvdbTypeId,
selectedNvdbChangeSetId: changeSet.NvdbChangeSetId
};
}
}
}).result.then(function (result) {
}, function () {
//cancel
});
}
}
})();
(function () {
angular.module('Plania').controller('NvdbChangeSetModalController', ['$scope', 'params', '$modalInstance', 'svvTunnelRepository', 'ngTableParams', 'SignalR', 'Repository', controller]);
function controller($scope, params, $modalInstance, svvTunnelRepository, ngTableParams, signalR, repository) {
$scope.model = {};
$scope.model.nvdbId = params.nvdbId;
$scope.model.nvdbTypeId = params.nvdbTypeId;
$scope.selectedNvdbChangeSetId = params.selectedNvdbChangeSetId;
$scope.tabs = [
{
title: 'Nytt endringssett',
active: true,
visible: true
},
{
title: 'Endringssett',
active: false,
visible: true
}
];
if ($scope.selectedNvdbChangeSetId) {
$scope.tabs[1].active = true;
$scope.tabs[0].visible= false;
}
$scope.changeSetProcessing = false;
$scope.statusLog = [];
$scope.showDetailsPrompt = false;
$scope.firstTabVisible = true;
$scope.showFormattedStatus = false;
$scope.syncinfoviewmodel = null;
$scope.dataOwner = repository.commonService.getFilterData().selectedDataOwner.Guid;
$scope.includeDryRuns = false;
svvTunnelRepository.get('nvdbcard/' + $scope.model.nvdbId, {}).then(function (result) {
$scope.model.nvdbEntity = result.data;
svvTunnelRepository.get('NvdbChangeSet/NvdbProperties/' + $scope.model.nvdbTypeId + '?dataowner=' + $scope.dataOwner, {}).then(function (propertiesResult){
$scope.AllProperties = propertiesResult.data.Egenskapstyper;
setAvailableProperties();
}, function(propertiesError){
svvTunnelRepository.growl(propertiesError.data.Message, 'danger');
});
}, function (error){
svvTunnelRepository.growl(error.data.Message, 'danger');
});
svvTunnelRepository.get('nvdbcard/syncinfoviewmodel/' + $scope.model.nvdbId, {}).then(function (result) {
$scope.syncinfoviewmodel = result.data;
});
function setAvailableProperties (){
$scope.availableProperties = _.filter($scope.AllProperties, function(property){
if (property.Navn !== 'Driftsmerking' && property.Navn !== 'Driftsmerking TFM, lokasjonskode') return false;
if (property.Datatype === 'Liste') return false;
var existingProperty = _.find($scope.model.nvdbEntity.Egenskaper, function (egenskap) {return egenskap.Navn === property.Navn;});
if (existingProperty){
property.Verdi = existingProperty.Verdi;
property.OldVerdi = existingProperty.Verdi;
}
return true;
});
}
function getChangeSetDto() {
var changeSetPropertes = _.filter($scope.availableProperties, function(egenskap) {
if (egenskap.Verdi !== egenskap.OldVerdi)
return true;
});
var mappedProperties = _.map(changeSetPropertes, function(egenskap){
return {
NvdbPropertyId: egenskap.Id,
NvdbPropertyLabel: egenskap.Navn,
NewPropertyValue: egenskap.Verdi,
OldPropertyValue: egenskap.OldVerdi
};
});
var dto = {
NvdbTypeId: $scope.model.nvdbEntity.Metadata.Type.Id,
NvdbId: $scope.model.nvdbEntity.Id,
Versjon: $scope.model.nvdbEntity.Metadata.Versjon,
LastModifiedInNvdb: $scope.model.nvdbEntity.Metadata.Sist_Modifisert,
ChangeSetProperties: mappedProperties
};
return dto;
}
$scope.validateChangeSet = function(){
$scope.statusLog = [];
var dto = getChangeSetDto();
if (dto.ChangeSetProperties.length === 0)return;
var changeSetText = '';
_.forEach(dto.ChangeSetProperties, function(prop){
if (prop.OldPropertyValue)
changeSetText += prop.NvdbPropertyLabel + ' endres fra: ' + prop.OldPropertyValue + ' til: ' + prop.NewPropertyValue;
else
changeSetText += prop.NvdbPropertyLabel + ' legges til med verdi: ' + prop.NewPropertyValue;
});
swal({
title: 'Endring vil bli prøvekjørt',
text: 'Følgende endringer vil bli prøvekjørt til NVDB \r\n ' + changeSetText,
type: "info",
showCancelButton: true,
confirmButtonColor: "#337ab7",
confirmButtonText: 'Bekreft',
cancelButtonText: 'Avbryt',
closeOnConfirm: true
},
function() {
window.onkeydown = null;
window.onfocus = null;
svvTunnelRepository.post('NvdbChangeSet?isDryRun=true' + '&dataowner=' + $scope.dataOwner, dto).then(function (result){
$scope.includeDryRuns = true;
}, function (error){
svvTunnelRepository.growl(error.data.Message, 'danger');
});
});
};
$scope.executeChangeSet = function(){
$scope.statusLog = [];
var dto = getChangeSetDto();
if (dto.ChangeSetProperties.length === 0)return;
var changeSetText = '';
_.forEach(dto.ChangeSetProperties, function(prop){
changeSetText += prop.NvdbPropertyLabel + ' endres fra ' + prop.OldPropertyValue + ' til ' + prop.NewPropertyValue;
});
swal({
title: 'Endring vil bli sendt',
text: 'Følgende endringer vil bli sendt til NVDB \r\n ' + changeSetText,
type: "info",
showCancelButton: true,
confirmButtonColor: "#337ab7",
confirmButtonText: 'Bekreft',
cancelButtonText: 'Avbryt',
closeOnConfirm: true
},
function() {
window.onkeydown = null;
window.onfocus = null;
svvTunnelRepository.post('NvdbChangeSet?isDryRun=false' + '&dataowner=' + $scope.dataOwner, dto).then(function (result){
}, function (error){
svvTunnelRepository.growl(error.data.Message, 'danger');
});
});
};
$scope.cancel = function () {
$modalInstance.dismiss('cancel');
};
$scope.selectRow = function(row){
$scope.selectedRow = row;
if ($scope.selectedRow.StatusJson)
$scope.selectedRow.FormattedStatus = JSON.parse($scope.selectedRow.StatusJson);
if ($scope.selectedRow.ChangesJson)
$scope.selectedRow.FormattedChanges = JSON.parse($scope.selectedRow.ChangesJson);
};
initializeSignalR();
function initializeSignalR() {
var signalRMethodName = 'nvdbChangeSet_nvdbId_' + $scope.model.nvdbId;
signalR.on(signalRMethodName, function(progress) {
if (progress.Finished === true){
if (progress.Message)
$scope.selectedNvdbChangeSetId = progress.Message;
$scope.changeSetProcessing = false;
$scope.showDetailsPrompt = true;
$scope.changeSetTable.reload();
return;
}
$scope.changeSetProcessing = true;
$scope.statusLog.push(progress.Message);
});
$scope.$on('$destroy', function () {
signalR.off(signalRMethodName);
});
}
$scope.navigateToDetails = function (){
$scope.firstTabVisible = false;
}
$scope.getStatus = function(changeSetId) {
svvTunnelRepository.get('NvdbChangeSet' + '/GetStatus?changeSetId=' + changeSetId + '&dataowner=' + $scope.dataOwner, {}).then(function (response) {
var result = response.data;
$scope.changeSetTable.reload();
},
function (error) {
svvTunnelRepository.growl(error, 'danger');
});
}
$scope.onDryRunToggled = function (){
$scope.includeDryRuns = !$scope.includeDryRuns;
$scope.changeSetTable.reload();
};
$scope.changeSetTable = new ngTableParams({
page: 1,
count: 10,
sorting: { Guid: 'asc' },
filter: { searchString: '' }
},
{
total: 0,
counts: [10, 20, 50],
filterDelay: 10,
getData: function ($defer, params) {
var url = 'NvdbChangeSet' +
'?page=' +
(params.page() - 1) +
'&pageSize=' +
params.count() +
'&search=' +
params.filter().searchString +
'&nvdbID=' + $scope.model.nvdbId +
'&includeDryRuns=' + $scope.includeDryRuns +
'&dataowner=' + $scope.dataOwner;
svvTunnelRepository.get(url, {}).then(function (response) {
var result = response.data;
$scope.changeSetTable.settings().total = result.TotalCount;
if ($scope.selectedNvdbChangeSetId)
{
var selectedRow = _.find(result.List, function(row){
return row.NvdbChangeSetId === $scope.selectedNvdbChangeSetId;
});
if (selectedRow)
$scope.selectRow(selectedRow);
} else if ($scope.selectedRow){
var selectedRow = _.find(result.List, function(row){
return row.NvdbChangeSetId === $scope.selectRow.NvdbChangeSetId;
});
if (selectedRow)
$scope.selectRow(selectedRow);
}
$defer.resolve(result.List);
},
function (error) {
svvTunnelRepository.growl(error, 'danger');
});
}
});
}
})();
(function () {
angular.module('Plania').controller('nvdbEquipmentController', ['$scope', 'svvTunnelRepository', 'CommonService', 'ngTableParams', controller]);
function controller($scope, svvTunnelRepository, commonService, ngTableParams) {
$scope.nvdbEquipmentTable = new ngTableParams({
page: 1,
count: 10,
sorting: { Guid: 'asc' },
filter: { searchString: '' }
},
{
total: 0,
counts: [10, 20, 50],
filterDelay: 10,
getData: function ($defer, params) {
svvTunnelRepository.get('WeatherStation?GuidDataOwner=' + commonService.filterData.selectedDataOwner.Guid, {}).then(function (response) {
$defer.resolve(response.data);
}, function (error) {
svvTunnelRepository.growl(error, 'danger');
});
}
});
$scope.createEquipment = function (row) {
svvTunnelRepository.post('WeatherStation?GuidDataOwner=' + commonService.filterData.selectedDataOwner.Guid, row).then(function (response) {
svvTunnelRepository.growl('Anlegg opprettet', 'success');
$scope.nvdbEquipmentTable.reload();
}, function (error) {
svvTunnelRepository.growl(error, 'danger');
});
};
$scope.$on($scope.events.newSelection, function () {
$scope.nvdbEquipmentTable.reload();
});
}
})();
(function () {
angular.module('Plania').controller('NvdbEquipmentLookupController', ['$scope', 'params', '$modalInstance', 'svvTunnelRepository', 'ngTableParams', '$filter', controller]);
function controller($scope, params, $modalInstance, svvTunnelRepository, ngTableParams, $filter) {
$scope.model = {
GuidBuilding: params.guidBuilding,
GuidEquipment: params.guidEquipment,
NvdbObjekt: null
};
$scope.equipmentLookup = {};
$scope.lookupResultTable = null;
$scope.isTableView = true;
$scope.search = { term: '' };
$scope.getLookupResults = function() {
var url = 'nvdbEquipmentLookup/?guidBuilding=' + $scope.model.GuidBuilding +
'&guidEquipment=' + $scope.model.GuidEquipment;
svvTunnelRepository.get(url, {}).then(
function (response) {
$scope.equipmentLookup = response.data;
var data = $scope.equipmentLookup.LookupResults;
$scope.lookupResultTable = new ngTableParams({
page: 1,
count: 10,
filter: $scope.search
},
{
total: data.length,
getData: function ($defer, params) {
var filteredData = params.filter().term ?
$filter('filter')(data, params.filter().term)
: data;
params.total(filteredData.length);
$defer.resolve(filteredData.slice((params.page() - 1)
* params.count(), params.page() * params.count()));
}
});
},
function (error) {
svvTunnelRepository.growl(error, 'danger');
}
);
}
$scope.selectRow = function(lookupResultRow) {
$scope.selectedLookupResult = _.find($scope.equipmentLookup.LookupResults, function(lookupResult) {
return lookupResultRow.NvdbObjekt.Id === lookupResult.NvdbObjekt.Id;
});
};
$scope.isSelected = function (id) {
if (!$scope.selectedLookupResult) return false;
return $scope.selectedLookupResult.NvdbObjekt.Id === id;
};
$scope.getProperty = function (propertyName, nvdbObjekt) {
var property = _.find(nvdbObjekt.Egenskaper, { "Navn": propertyName });
if (property) return property.Verdi;
return "";
};
$scope.toggleDetails = function() {
$scope.isTableView = !$scope.isTableView;
$scope.isDetailsView = !$scope.isDetailsView;
};
$scope.canSave = function() {
if ($scope.selectedLookupResult) return true;
};
$scope.saveAction = function () {
$scope.model.NvdbObjekt = $scope.selectedLookupResult.NvdbObjekt;
svvTunnelRepository.post('nvdbEquipmentLookup', $scope.model).then(
function (response) {
$modalInstance.close(response.data);
},
function(error) {
svvTunnelRepository.growl(error, 'danger');
}
);
};
$scope.cancel = function () {
$modalInstance.dismiss('cancel');
};
}
})();
(function () {
var app = angular.module('Plania');
app.directive('nvdbInformation', function () {
return {
restrict: 'E',
scope: {
nvdbId: '=nvdbId',
objectType: '=objectType'
},
controller: ['$scope', 'svvTunnelRepository', '$modal', controller],
templateUrl: 'customizations/10088/nvdbInformation.html'
};
});
function controller(scope, svvTunnelRepository, $modal) {
scope.model = {};
function fetchFromNvdb() {
svvTunnelRepository.get('nvdbcard/' + scope.nvdbId, {}).then(function (result) {
if (result.status === 200) {
scope.model.nvdbEntity = result.data;
scope.nvdbTypeId = result.data.Metadata.Type.Id;
} else {
scope.errorMessage = result.data.message;
}
});
svvTunnelRepository.get('nvdbcard/syncinfo/' + scope.nvdbId, {}).then(function (result) {
scope.model.syncInformation = result.data;
});
}
if (scope.nvdbId) {
fetchFromNvdb();
}
scope.$watch('nvdbId', function (newValue, oldValue) {
if (newValue === oldValue) return;
if (!newValue) return;
fetchFromNvdb();
});
scope.synchronizeEnitity = function () {
var syncAction = scope.objectType;
var url = 'nvdbcard/sync/' + scope.nvdbId + '/' + scope.nvdbTypeId + '/' + syncAction;
svvTunnelRepository.put(url, {}).then(function(result) {
svvTunnelRepository.growl('Synkronisering fullført, oppdater siden for å hente nyeste data', 'success');
});
};
scope.synchronizeChildren = function () {
var syncAction = 'EquipmentHierarchy';
var url = 'nvdbcard/sync/' + scope.nvdbId + '/' + scope.nvdbTypeId + '/' + syncAction;
swal({
title: 'Synkronisering av anleggshierarki',
text: 'Synkronisering kan ta lang tid og vil bli utført i bakgrunnen, se logg for status',
type: 'warning',
showCancelButton: true,
closeOnConfirm: false
}, function () {
svvTunnelRepository.put(url, {}).then(function (result) {
swal('Synkronisering startet', '', "success");
});
});
};
scope.openChangeSetModal = function() {
$modal.open({
templateUrl: 'customizations/10088/nvdbChangeSetModal.html',
size: 'xl',
controller: 'NvdbChangeSetModalController',
resolve: {
params: function () {
return {
nvdbId: scope.model.nvdbEntity.Id,
nvdbTypeId: scope.model.nvdbEntity.Metadata.Type.Id
};
}
}
}).result.then(function (result) {
}, function () {
//cancel
});
};
}
})();
(function () {
angular.module('Plania').controller('propertyMappingController', ['$scope', 'svvTunnelRepository', 'CommonService', 'ngTableParams', '$modal', controller]);
function controller($scope, svvTunnelRepository, commonService, ngTableParams, $modal) {
$scope.categories = [
{ prefix: 'Estate', title: 'Eiendommer' },
{ prefix: 'Building', title: 'Bygninger' },
{ prefix: 'Equipment', title: 'Anlegg' }
];
$scope.onCategorySelected = function () {
svvTunnelRepository.get('propertymappingtypes/' + $scope.selectedCategory.prefix, {}).then(
function(response) {
if (response.data) {
$scope.objectTypes = response.data;
$scope.objectTypes.unshift({ ObjectTypeName: 'Alle', PlaniaGuid: null });
}
});
};
$scope.nvdbPropertyMappingTable = null;
$scope.onObjectTypeSelected = function () {
if ($scope.selectedObjectType === null) return;
if ($scope.nvdbPropertyMappingTable) {
$scope.nvdbPropertyMappingTable.reload();
} else {
$scope.nvdbPropertyMappingTable = new ngTableParams({
sorting: { Category: 'asc' },
filter: { searchString: '' }
},
{
getData: function ($defer, params) {
var url = 'PropertyMapping' +
'?CategoryPrefix=' +
$scope.selectedCategory.prefix;
if ($scope.selectedObjectType.PlaniaGuid) {
url = url + '&CategoryPlaniaGuid=' + $scope.selectedObjectType.PlaniaGuid;
}
if ($scope.showOnlyDifferent === true) {
url = url + '&OnlyDifferent=' + $scope.showOnlyDifferent;
}
svvTunnelRepository.get(url, {}).then(function (response) {
$defer.resolve(response.data);
},
function (error) {
svvTunnelRepository.growl(error, 'danger');
});
}
}
);
}
};
$scope.addNewMappingdisabled = function () {
if ($scope.selectedObjectType && $scope.selectedObjectType.ObjectTypeName !== 'Alle') {
return false;
}
return true;
}
$scope.onShowOnlyDifferentSelected = function () {
if ($scope.nvdbPropertyMappingTable) {
$scope.nvdbPropertyMappingTable.reload();
}
};
$scope.updateMapping = function (row) {
svvTunnelRepository.put('PropertyMapping?action=fixlabel', row).then(function (response) {
$scope.nvdbPropertyMappingTable.reload();
svvTunnelRepository.growl('Egenskapsmapping oppdatert', 'success');
}, function (error) {
svvTunnelRepository.growl(error, 'danger');
});
};
$scope.disableMapping = function (row) {
svvTunnelRepository.put('PropertyMapping?action=disable', row).then(function(response) {
$scope.nvdbPropertyMappingTable.reload();
svvTunnelRepository.growl('Egenskapsmapping oppdatert', 'success');
}, function (error) {
svvTunnelRepository.growl(error, 'danger');
});
};
$scope.deleteMapping = function (row) {
svvTunnelRepository.delete('PropertyMapping', row).then(function(response) {
$scope.nvdbPropertyMappingTable.reload();
svvTunnelRepository.growl('Egenskapsmapping slettet', 'success');
}, function(error) {
svvTunnelRepository.growl(error, 'danger');
});
};
$scope.addNewMapping = function () {
$modal.open({
templateUrl: 'customizations/10088/addPropertyMappingModal.html',
controller: 'addPropertyMappingController',
resolve: {
params: function() {
return {
Category: $scope.selectedCategory,
ObjectType: $scope.selectedObjectType
};
}
}
}).result.then(function (result) {
if (result === 'saved') {
$scope.nvdbPropertyMappingTable.reload();
}
});
};
}
})();
(function () {
angular.module('Plania').config([
'$provide', function ($provide) {
$provide.decorator('Repository', [
'$delegate', function ($delegate) {
var service = $delegate;
service.getFilter = function (filter) {
var tmpFilter = _.clone(filter) || {};
tmpFilter.GuidBuilding = '';
tmpFilter.GuidSelection = '';
tmpFilter.GuidDataOwner = '';
tmpFilter.GuidEstate = '';
if (tmpFilter.isBuildingDependent !== false)
tmpFilter.isBuildingDependent = true;
if (service.commonService.getFilterData().selectedBuilding.Guid && tmpFilter.isBuildingDependent && !tmpFilter.excludeBuilding) tmpFilter.GuidBuilding = service.commonService.getFilterData().selectedBuilding.Guid;
if (service.commonService.getFilterData().selectedSelection.Guid) tmpFilter.GuidSelection = service.commonService.getFilterData().selectedSelection.Guid;
if (service.commonService.getFilterData().selectedDataOwner.Guid) tmpFilter.GuidDataOwner = service.commonService.getFilterData().selectedDataOwner.Guid;
if (service.commonService.getFilterData().selectedEstate.Guid) tmpFilter.GuidEstate = service.commonService.getFilterData().selectedEstate.Guid;
return tmpFilter;
};
service.filterKeyWords = [
'@GuidLoggedInPerson',
"@GuidLoggedInPersonDepartment",
'@GuidLoggedInPersonResourceGroup',
'@GuidUser',
'@GuidUserCustomer',
'@GuidCurrentBuilding',
'@GuidSupplier',
'@GuidCurrentProperty' //svv specific , rest is standard
];
service.prefillKeyWords = [
'@LoggedInPerson',
'@User',
'@CurrentBuilding',
'@UserSupplier',
'@UserCustomer',
'@GuidCurrentProperty' //svv specific, rest is standard
];
service.GetKeywordValue = function (value) {
if (angular.isUndefined(value) || value === null) return "";
value = value.toString().replace('@GuidUserCustomer', service.authService.getUserData().guidCustomer);
value = value.toString().replace('@GuidUser', service.authService.getUserData().guidUser);
value = value.toString().replace('@GuidLoggedInPersonDepartment', service.authService.getUserData().guidPersonDepartment);
value = value.toString().replace('@GuidLoggedInPersonResourceGroup', service.authService.getUserData().guidPersonResourceGroup);
value = value.toString().replace('@GuidLoggedInPerson', service.authService.getUserData().guidPerson);
value = value.toString().replace('@Today', moment().utc().startOf('day').hours(0).toISOString());
value = value.toString().replace('@Month', moment().utc().subtract(1, 'month').toISOString());
value = value.toString().replace('@Year', moment().utc().subtract(1, 'year').toISOString());
value = value.toString().replace('@CurrentYear', moment().utc().startOf('year').toISOString());
if (service.commonService.getFilterData().selectedBuilding && service.commonService.getFilterData().selectedBuilding.Guid !== "") {
value = value.toString().replace('@GuidCurrentBuilding', service.commonService.getFilterData().selectedBuilding.Guid);
}
if (service.authService.getUserData().guidSupplier) {
value = value.toString().replace('@GuidSupplier', service.authService.getUserData().guidSupplier);
} else {
value = value.toString().replace('@GuidSupplier', '');
}
//svv specific
value = value.toString().replace("@GuidCurrentProperty",
service.commonService.getFilterData().selectedEstate.Guid);
return value;
};
return service;
}]);
}
]);
})();
(function() {
var app = angular.module('Plania');
app.config([
'$stateProvider', function(stateProvider) {
stateProvider.state({
name: 'SyncInformation',
url: '/syncInformation',
templateUrl: 'customizations/10088/syncInformation.html',
controller: 'syncInformationController',
backNavigation: true
});
stateProvider.state({
name: 'nvdbEquipment',
url: '/nvdbEquipment',
templateUrl: 'customizations/10088/nvdbEquipment.html',
controller: 'nvdbEquipmentController',
backNavigation: true
});
stateProvider.state({
name: 'propertyMapping',
url: '/propertyMapping',
templateUrl: 'customizations/10088/propertyMapping.html',
controller: 'propertyMappingController',
backNavigation: true
});
stateProvider.state({
name: 'changeSetList',
url: '/changeSetList',
templateUrl: 'customizations/10088/nvdbChangeSetList.html',
controller: 'NvdbChangeSetListController',
backNavigation: true
});
}
]);
})();
(function () {
angular.module('Plania').controller('SelectedEstateController', ['$scope', '$rootScope', 'Repository', controller]);
function controller($scope, $rootScope, repository) {
$scope.filter = {};
$scope.totalCount = 0;
$scope.count = 30;
$scope.estates = [];
$scope.selectedEstate = repository.commonService.getFilterData().selectedEstate;
$scope.getEstates = function () {
var storedSelection = repository.commonService.getFilterData().selectedSelection;
if (storedSelection.Guid)
$scope.filter.LimitEstatesOnBuildingSelection = storedSelection.Guid ? true : false;
repository.GetPaginated(repository.apiData.estate.url, 0, $scope.count, { id: "asc" }, $scope.filter).then(function (result) {
$scope.estates = result.List;
$scope.totalCount = result.TotalCount;
}, function (error) {
$scope.$emit($scope.events.newToast, { message: error, type: 'error' });
});
}
$scope.getEstates();
$scope.addMoreData = function () {
$scope.count += 100;
$scope.getEstates();
};
var guidSelectedDataowner = repository.commonService.getFilterData().selectedDataOwner.Guid;
$scope.changeEstate = function (selected) {
repository.commonService.setEstate(selected);
$rootScope.$broadcast($rootScope.events.newSelection, true, true);
}
$scope.setEmptyEstate = function () {
repository.commonService.setEmptyEstate();
repository.commonService.setEmptyBuilding();
$rootScope.$broadcast($rootScope.events.newSelection, true, true);
}
$scope.$on($scope.events.newSelection, function () {
if (guidSelectedDataowner !== repository.commonService.getFilterData().selectedDataOwner.Guid) {
guidSelectedDataowner = repository.commonService.getFilterData().selectedDataOwner.Guid;
repository.commonService.setEmptyEstate();
}
$scope.selectedEstate = repository.commonService.getFilterData().selectedEstate;
$scope.getEstates();
});
}
})();
(function () {
angular.module('Plania').factory('svvTunnelRepository', ['$http', 'config', 'authService', 'growlService', '$cacheFactory', '$q', svvTunnelRepository]);
function svvTunnelRepository($http, config, authService, growlService, $cacheFactory, $q) {
var cache = $cacheFactory('svvTunnelRepositoryHttpOnce');
var httpConfig = function (relativeUrl, method, data) {
return authService.refreshAuthentication().then(function (result) {
return {
method: method,
url: encodeURI(config.baseUrl + 'svvtunnel/' + relativeUrl),
headers: {
'Content-Type': 'application/x-www-form-urlencoded; charset=UTF-8'
},
data: jQuery.param(data)
};
});
};
var getCall = function (relativeUrl) {
var deferred = $q.defer();
handleGet(relativeUrl)
.then(function (apiResponse) {
var result = apiResponse;
if (apiResponse.status === 200) {
deferred.resolve(result);
} else {
deferred.reject(getErrorMessageFromStatus(apiResponse.status, result));
}
}, function (error) {
deferred.reject(error);
});
return deferred.promise;
};
function handleGet(relativeUrl) {
return httpConfig(relativeUrl, 'GET', {}).then(function (result) {
var promise = cache.get(relativeUrl);
if (promise && promise.$$state.status === 0) {
// return any pending promises for the same URL
return promise;
}
return cache.put(relativeUrl, $http(result));
});
};
function postCall(relativeUrl, data) {
var deferred = $q.defer();
handlePost(relativeUrl, data)
.then(function (apiResponse) {
var result = apiResponse;
if (apiResponse.status === 200) {
deferred.resolve(result);
} else {
deferred.reject(getErrorMessageFromStatus(apiResponse.status, result));
}
}, function (error) {
deferred.reject(error);
});
return deferred.promise;
};
function handlePost(relativeUrl, data) {
return httpConfig(relativeUrl, 'POST', data)
.then(function (result) {
return $http(result);
});
};
function putCall(relativeUrl, data) {
var deferred = $q.defer();
handlePut(relativeUrl, data)
.then(function (apiResponse) {
var result = apiResponse;
if (apiResponse.status === 200) {
deferred.resolve(result);
} else {
deferred.reject(getErrorMessageFromStatus(apiResponse.status, result));
}
}, function (error) {
deferred.reject(error);
});
return deferred.promise;
};
function handlePut (relativeUrl, data) {
return httpConfig(relativeUrl, 'PUT', data)
.then(function (result) {
return $http(result);
});
};
function deleteCall(relativeUrl, data) {
var deferred = $q.defer();
handleDelete(relativeUrl, data)
.then(function (apiResponse) {
var result = apiResponse;
if (apiResponse.status === 200) {
deferred.resolve(result);
} else {
deferred.reject(getErrorMessageFromStatus(apiResponse.status, result));
}
}, function (error) {
deferred.reject(error);
});
return deferred.promise;
};
function handleDelete (relativeUrl, data) {
return httpConfig(relativeUrl, 'DELETE', data)
.then(function (result) {
return $http(result);
});
};
var growl = function (message, type) {
growlService.growl(message, type, { enter: 'animated fadeInRight', exit: 'animated fadeOutRight' });
}
function getStringFromErrorObject(error) {
if (error && typeof error === 'object') {
if (error.message && error.message !== "") {
return error.message;
}
if (error.data && typeof error.data === 'string') {
return error.data;
}
if (error.data && Array.isArray(error.data)) {
return error.data;
}
if (error.data.message && typeof error.data.message === 'string')
return error.data.message;
}
return error;
};
function getErrorMessageFromStatus(status, error) {
var message = getStringFromErrorObject(error);
if (typeof message === 'string' && message.length > 0) {
return message;
}
if (Array.isArray(message)) {
return message;
}
switch (status) {
case 401:
return authService.getUserData().isAuthenticated ? "Mangler tilgang" : "Du må logge inn for å se denne informasjonen";
case 404:
return "Ingen data funnet";
case 409:
return "Konflikt i Api";
default:
return "Ukjent feil oppstod. Http status kode: " + status;
}
};
return {
get: getCall,
post: postCall,
put: putCall,
delete: deleteCall,
growl: growl
};
}
})();
(function () {
angular.module('Plania').controller('syncInformationController', ['$scope', 'svvTunnelRepository', 'ngTableParams', controller]);
function controller($scope, svvTunnelRepository, ngTableParams) {
var nvdbApiUrl = 'SyncInformation';
$scope.nvdbTable = new ngTableParams({
page: 1,
count: 10,
sorting: { Guid: 'asc' },
filter: { searchString: '' }
},
{
total: 0,
counts: [10, 20, 50],
filterDelay: 10,
getData: function ($defer, params) {
var url = nvdbApiUrl +
'?page=' +
(params.page() - 1) +
'&pageSize=' +
params.count() +
'&search=' +
params.filter().searchString +
'&action=syncInformations';
svvTunnelRepository.get(url, {}).then(function (response) {
var result = response.data;
$scope.nvdbTable.settings().total = result.TotalCount;
$defer.resolve(result.List);
},
function (error) {
svvTunnelRepository.growl(error, 'danger');
});
}
});
}
})();
//# sourceMappingURL=custom.js.map