"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 (_.contains(['changeRisk', 'changeRiskBadge', 'impactedAreas', 'customerLocationMap'], $scope.field.name) && $scope.field.isWidget()) { $scope.field.sealed = true; } if (_.contains(['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') && (_.contains(['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); } } }] }; }]); }());