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