SmartIT_Extensions/BMC/smart-it-full-helix/scripts/app/admin/screen-configuration/new-field-item-directive.js

158 lines
8.5 KiB
JavaScript

"use strict";
/**
* Created by srramamu on 10-07-2017.
*/
(function () {
'use strict';
angular.module('myitsmApp')
.directive('newFieldItem', [function () {
return {
restrict: 'E',
templateUrl: 'views/admin/screen-configuration/new-field-item.html',
scope: {
field: '=',
pfield: '=?',
isGroupField: '=',
onExpandFieldClick: '=',
onRemoveFieldClick: '=?',
onRemoveFieldClickFromGroup: '=?',
onHidePropertyChange: '=',
onRequiredPropertyChange: '=',
onSetValuePropertyChange: '=',
onEditablePropertyChange: '=',
checkDiffValue: '=',
setDiffValueFieldonBlur: '=',
getDependencyFieldWarn: '=',
tooltipPosition: '=',
updateDiffValueField: '=',
diffFields: '=',
acceleratorsList: '=',
onAnyFieldPropertyChange: '&?',
associatedActionLists: '=',
onAssociatedActionPropertyChange: '=',
icons: '=',
onSelectIcon: '=',
getWarningTextOnFieldRemove: '&',
screenName: '=',
disableHideLabelSetting: '=?'
},
controller: ['$scope', '$filter', function ($scope, $filter) {
$scope.showHideLabel = true;
$scope.isCreateScreens = ScreenConfigurationVO.prototype.isCreateScreen($scope.screenName);
if (_.includes(['changeRisk', 'changeRiskBadge', 'impactedAreas', 'customerLocationMap'], $scope.field.name) && $scope.field.isWidget()) {
$scope.field.sealed = true;
}
if (_.includes(['emailField', 'phoneField', 'personLocationMap'], $scope.field.type) && $scope.field.isWidget()) {
$scope.showHideLabel = false;
}
$scope.enableRemoveConfirmationTooltip = $scope.field.checkSystemRequiredFlag();
$scope.showDeleteConfirmationTooltip = false;
$scope.fieldPropertyOptions = [{
name: $filter('i18n')('screenConfiguration.customAreaEditor.fieldPropertyAlways'),
value: 0
}, {
name: $filter('i18n')('screenConfiguration.customAreaEditor.fieldPropertyCondition'),
value: 1
}];
$scope.getSelectedFieldPropertyOption = function (value) {
return _.find($scope.fieldPropertyOptions, { value: value });
};
if ($scope.disableHideLabelSetting) {
$scope.field.hideLabel = true;
}
$scope.updateProperty = function (item, fieldProperty) {
$scope.field[fieldProperty] = item.value;
if (item.value === 0) {
$scope.field[fieldProperty.replace('Flag', '')] = '';
}
switch (fieldProperty) {
case 'requiredConditionFlag':
$scope.onRequiredPropertyChange($scope.field);
break;
case 'readOnlyConditionFlag':
$scope.onEditablePropertyChange($scope.field, true);
break;
case 'hideConditionFlag':
$scope.onHidePropertyChange($scope.field);
break;
}
$scope.onFieldPropertyChange();
};
$scope.getMemberFieldLabel = function (memberField) {
if (memberField.label) {
return memberField.label;
}
if ($scope.diffFields && $scope.diffFields.length) {
var field = _.find($scope.diffFields, function (f) {
return f.value === memberField.name;
}) || {};
return field.name;
}
};
$scope.getFieldTypeLabel = function (field) {
if (angular.isFunction(field.isWidget) && field.isWidget()) {
return $filter('i18n')('customAreaEditor.fieldTypes.widget');
}
else {
if (field.isCustomField()) {
return $filter('i18n')('customAreaEditor.fieldTypes.customField');
}
else {
return $filter('i18n')('customAreaEditor.fieldTypes.regularField');
}
}
};
$scope.getFieldTooltip = function (field) {
if (angular.isFunction(field.isWidget) && field.isWidget()) {
return $filter('i18n')('field.widget.' + field.name + '.label') + ' '
+ $filter('i18n')('customAreaEditor.fieldTypes.widget');
}
else {
return field.arFieldName;
}
};
$scope.isSetValueEnabled = function () {
return $scope.field.isCustomField() || ($scope.field.ootb && $scope.field.dataType !== 'widget') || (($scope.field.dataType === 'widget') && (_.includes(['priority', 'summary', 'serviceType', 'status', 'desc', 'changeClass'], $scope.field.name) || $scope.field.type === 'phoneField' || $scope.field.type === 'emailField'));
};
$scope.onFieldPropertyChange = function () {
if (angular.isFunction($scope.onAnyFieldPropertyChange)) {
$scope.onAnyFieldPropertyChange();
}
};
$scope.handleRemoveFieldClick = function (field) {
var systemRequired = field.checkSystemRequiredFlag();
if (systemRequired) {
$scope.showDeleteConfirmationTooltip = true;
}
else {
doFieldRemove(field);
}
};
$scope.confirmDelete = function () {
doFieldRemove($scope.field);
$scope.showDeleteConfirmationTooltip = false;
};
$scope.cancelDelete = function () {
$scope.showDeleteConfirmationTooltip = false;
};
$scope.generateSystemFieldRemoveWarningText = function () {
return $scope.getWarningTextOnFieldRemove({ field: $scope.field });
};
$scope.showAssociateAction = function (screenName) {
if (screenName) {
return !$scope.field.isWidget() && ScreenConfigurationVO.prototype.isV2Compatible(screenName) && !$scope.isCreateScreens;
}
};
function doFieldRemove(field) {
if ($scope.isGroupField) {
$scope.onRemoveFieldClickFromGroup($scope.pfield, field);
}
else {
$scope.onRemoveFieldClick(field);
}
}
}]
};
}]);
}());