SmartIT_Extensions/BMC/smart-it-full/scripts/app/custom-widgets/change-class-directive.js

85 lines
4.7 KiB
JavaScript

"use strict";
(function () {
'use strict';
angular.module('myitsmApp')
.directive('changeClass', ['fieldValidationModel', 'events', function (fieldValidationModel, events) {
return {
restrict: 'E',
replace: true,
templateUrl: 'views/custom-widgets/change-class-directive.html',
scope: {
data: '=',
metadata: '=',
isEditable: '=',
isNew: '=?'
},
link: function (scope, element) {
scope.draftTicket = {};
if (scope.$parent.isNew) {
scope.fieldLengthForSm6 = true;
}
else {
if (element.closest(".layout-renderer__child-column")[0]) {
scope.fieldLengthForSm6 = _.includes(element.closest(".layout-renderer__child-column")[0].className, 'col-sm-6');
scope.fieldLengthForSm4 = _.includes(element.closest(".layout-renderer__child-column")[0].className, 'col-sm-4');
}
}
function init() {
scope.changeMetadata = scope.metadata;
scope.draftTicket.timing = _.first(_.where(scope.changeMetadata.timings, { name: (scope.isNew ? scope.data.value.timing.name : scope.data.value.timing) }));
scope.draftTicket.timingReason = _.first(_.where(scope.changeMetadata.timingReasons, { name: (scope.isNew ? scope.data.value.timingReason.name : scope.data.value.timingReason) }));
}
scope.$watch('data.setValueFlag', function (value) {
if (value && value !== '#$#') {
var setValue = _.get(value, 'timing', value);
if (_.has(value, 'timingReason')) {
scope.draftTicket.timingReason = _.first(_.where(scope.changeMetadata.timingReasons, { name: _.get(value, 'timingReason') }));
if (_.has(value, 'timing')) {
setValue = _.get(value, 'timing'); // should override default value set in the beginning in _.get, because value contains
}
}
if (setValue) {
scope.draftTicket.timing = _.first(_.where(scope.changeMetadata.timings, { name: setValue }));
}
scope.updateTiming();
scope.data.setValueFlag = '#$#';
}
});
scope.isFieldRequired = function (field) {
var fieldRequired = false;
if (scope.draftTicket.timing) {
fieldRequired = fieldValidationModel.isFieldRequired(EntityVO.TYPE_CHANGE, 'Draft', scope.draftTicket.timing.name, field);
}
return fieldRequired;
};
scope.$on(events.TOGGLE_EDIT_MODE, handleToggleEditMode);
scope.$on(events.AFTER_SAVED_CHANGES, afterSaveChangesHandler);
scope.$on(events.DISCARD_CHANGES, handleDiscardChanges);
function handleToggleEditMode() {
scope.editMode = true;
}
function afterSaveChangesHandler() {
scope.editMode = false;
}
function handleDiscardChanges() {
scope.editMode = false;
init();
scope.$emit(events.WIDGET_VALUE_CHANGE, { fieldName: scope.data.name });
}
scope.updateTiming = function () {
scope.data.value.timing = scope.isNew ? scope.draftTicket.timing : scope.draftTicket.timing.name;
scope.data.value.timingReason = '';
scope.$emit(events.WIDGET_VALUE_CHANGE, { fieldName: scope.data.name, memberName: 'timing' });
scope.$emit(events.CHANGE_CLASS_VALUE_CHANGED, scope.data.value.timing);
};
scope.updateTimingReason = function () {
scope.data.value.timingReason = scope.isNew ? scope.draftTicket.timingReason : scope.draftTicket.timingReason.name;
scope.$emit(events.WIDGET_VALUE_CHANGE, { fieldName: scope.data.name, memberName: 'timingReason' });
};
init();
}
};
}
]);
})();