85 lines
4.7 KiB
JavaScript
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();
|
|
}
|
|
};
|
|
}
|
|
]);
|
|
})();
|