Skip to content

Commit

Permalink
#1307 Update custom fields admin section
Browse files Browse the repository at this point in the history
  • Loading branch information
nadouani committed May 5, 2020
1 parent dda3af8 commit e61b5e9
Show file tree
Hide file tree
Showing 4 changed files with 48 additions and 61 deletions.
Original file line number Diff line number Diff line change
Expand Up @@ -7,7 +7,7 @@
types: [
'string', 'integer', 'boolean', 'date', 'float'
],
namePattern: '^[a-zA-Z]{1}[a-zA-Z0-9_-]*'
reference: '^[a-zA-Z]{1}[a-zA-Z0-9_-]*'
};

self.customField = customField;
Expand Down Expand Up @@ -48,18 +48,13 @@
return;
}

var postData = _.pick(self.customField, 'name', 'displayName', 'description', 'type', 'mandatory');
var postData = _.pick(self.customField, 'name', 'reference', 'description', 'type', 'mandatory');
postData.options = buildOptionsCollection(self.customField.options);

if (self.customField.id) {
CustomFieldsSrv.update(self.customField.id, postData)
.then(onSuccess)
.catch(onFailure);
// ListSrv.update({
// 'itemId': self.customField.id
// }, {
// 'value': postData
// }, onSuccess, onFailure);
} else {

CustomFieldsSrv.create(postData)
Expand Down Expand Up @@ -88,22 +83,22 @@
};

self.clearUniqueNameError = function(form) {
form.name.$setValidity('unique', true);
form.name.$setPristine();
form.reference.$setValidity('unique', true);
form.reference.$setPristine();
};

self.cancel = function() {
$uibModalInstance.dismiss();
};

self.onNamechanged = function(form) {
if (self.customField.id || !self.customField.displayName) {
if (self.customField.id || !self.customField.name) {
return;
}

var name = s.trim(s.slugify(self.customField.displayName));
var reference = s.trim(s.slugify(self.customField.name));

self.customField.name = name;
self.customField.reference = reference;

self.clearUniqueNameError(form);
};
Expand Down
20 changes: 11 additions & 9 deletions frontend/app/scripts/controllers/admin/AdminCustomFieldsCtrl.js
Original file line number Diff line number Diff line change
Expand Up @@ -51,15 +51,17 @@
size: 'lg',
resolve: {
customField: function() {
return customField.id ? {
id: customField.id,
name: customField.reference,
displayName: customField.name,
description: customField.description,
type: customField.type,
options: customField.options,
mandatory: customField.mandatory
} : {};
// return customField.id ? {
// id: customField.id,
// name: customField.reference,
// displayName: customField.name,
// description: customField.description,
// type: customField.type,
// options: customField.options,
// mandatory: customField.mandatory
// } : {};

return customField.id ? angular.copy(customField, {}) : {};
}
}
});
Expand Down
18 changes: 4 additions & 14 deletions frontend/app/scripts/services/api/CustomFieldsSrv.js
Original file line number Diff line number Diff line change
Expand Up @@ -6,18 +6,6 @@

this.cache = null;

this._convert = function(field) {
return {
reference: field.name,
name: field.displayName,
description: field.description,
options: field.options,
type: field.type,
mandatory: field.mandatory
};
};


this.removeField = function(field) {
return $http.delete('./api/customField/' + field.reference);
};
Expand All @@ -31,11 +19,13 @@
};

this.create = function(field) {
return $http.post('./api/customField', self._convert(field));
//return $http.post('./api/customField', self._convert(field));
return $http.post('./api/customField', field);
};

this.update = function(id, field) {
return $http.patch('./api/customField/'+id, self._convert(field));
//return $http.patch('./api/customField/'+id, self._convert(field));
return $http.patch('./api/customField/'+id, field);
};

this.remove = function(id) {
Expand Down
52 changes: 26 additions & 26 deletions frontend/app/views/partials/admin/custom-field-dialog.html
Original file line number Diff line number Diff line change
Expand Up @@ -3,56 +3,56 @@
<h3 class="modal-title">{{$vm.customField.id ? 'Update' : 'Add'}} custom field</h3>
</div>
<div class="modal-body">
<div class="form-group" ng-class="{ 'has-error' : fieldsForm.displayName.$invalid && !fieldsForm.displayName.$pristine }">
<label class="col-sm-2 control-label">
Display Name
<div class="form-group" ng-class="{ 'has-error' : fieldsForm.name.$invalid && !fieldsForm.name.$pristine }">
<label class="col-sm-3 control-label">
Name
<i class="fa fa-asterisk text-danger"></i>
</label>
<div class="col-sm-10">
<input class="form-control" name="displayName"
placeholder="Field's title, Ex: CVSS, Threat actor, Business risk"
ng-model="$vm.customField.displayName"
<div class="col-sm-9">
<input class="form-control" name="name"
placeholder="Field's display name, Ex: CVSS, Threat actor, Business risk"
ng-model="$vm.customField.name"
ng-keyup="$vm.onNamechanged(fieldsForm)"
required type="text">
<p class="help-block" ng-show="fieldsForm.displayName.$invalid && !fieldsForm.displayName.$pristine">This field is required.</p>
<p class="help-block" ng-show="fieldsForm.name.$invalid && !fieldsForm.name.$pristine">This field is required.</p>
</div>
</div>

<div class="form-group" ng-class="{ 'has-error' : fieldsForm.name.$invalid && fieldsForm.name.$dirty }">
<label class="col-sm-2 control-label">
Name
<div class="form-group" ng-class="{ 'has-error' : fieldsForm.reference.$invalid && fieldsForm.reference.$dirty }">
<label class="col-sm-3 control-label">
Internal Reference
<i class="fa fa-asterisk text-danger"></i>
</label>
<div class="col-sm-10">
<input class="form-control" name="name" type="text"
<div class="col-sm-9">
<input class="form-control" name="reference" type="text"
placeholder="Internal name, Ex: cvss, threatActor, businessRisk"
ng-model="$vm.customField.name"
ng-model="$vm.customField.reference"
ng-keyup="$vm.clearUniqueNameError(fieldsForm)"
ng-pattern="$vm.config.namePattern"
ng-pattern="$vm.config.referencePattern"
ng-readonly="!!$vm.customField.id"
required>
<p class="help-block" ng-show="fieldsForm.name.$error.unique">There is already a field with this name. It should be unique.</p>
<p class="help-block" ng-show="fieldsForm.name.$error.required && fieldsForm.name.$dirty">This field is required.</p>
<p class="help-block" ng-show="fieldsForm.name.$error.pattern && fieldsForm.name.$dirty">This field is should satisfy the following pattern: {{$vm.config.namePattern}}</p>
<p class="help-block" ng-show="fieldsForm.reference.$error.unique">There is already a field with this reference. It should be unique.</p>
<p class="help-block" ng-show="fieldsForm.reference.$error.required && fieldsForm.reference.$dirty">This field is required.</p>
<p class="help-block" ng-show="fieldsForm.reference.$error.pattern && fieldsForm.reference.$dirty">This field is should satisfy the following pattern: {{$vm.config.referencePattern}}</p>
</div>
</div>

<div class="form-group" ng-class="{ 'has-error' : fieldsForm.description.$invalid && !fieldsForm.description.$pristine }">
<label class="col-sm-2 control-label">
<label class="col-sm-3 control-label">
Description
<i class="fa fa-asterisk text-danger"></i>
</label>
<div class="col-sm-10">
<div class="col-sm-9">
<input class="form-control" name="description" ng-model="$vm.customField.description" placeholder="A brief description of the custom field" required type="text">
<p class="help-block" ng-show="fieldsForm.description.$invalid && !fieldsForm.description.$pristine">This field is required.</p>
</div>
</div>
<div class="form-group" ng-class="{ 'has-error' : fieldsForm.type.$invalid && !fieldsForm.type.$pristine }">
<label class="col-sm-2 control-label">
<label class="col-sm-3 control-label">
Type
<i class="fa fa-asterisk text-danger"></i>
</label>
<div class="col-sm-10">
<div class="col-sm-9">
<select class="form-control" name="type" ng-model="$vm.customField.type"
ng-options="fieldType for fieldType in $vm.config.types"
placeholder="Field's type" required></select>
Expand All @@ -61,17 +61,17 @@ <h3 class="modal-title">{{$vm.customField.id ? 'Update' : 'Add'}} custom field</
</div>

<div class="form-group" ng-show="$vm.customField.type === 'string' || $vm.customField.type === 'integer' || $vm.customField.type === 'float'">
<label class="col-sm-2 control-label">
<label class="col-sm-3 control-label">
Possible values
</label>
<div class="col-sm-10">
<div class="col-sm-9">
<textarea class="form-control" name="options" ng-model="$vm.customField.options" rows="5" placeholder="Possible values, one per line" type="text"></textarea>
</div>
</div>

<div class="form-group">
<label class="col-sm-2 control-label">&nbsp;</label>
<div class="col-sm-10">
<label class="col-sm-3 control-label">&nbsp;</label>
<div class="col-sm-9">
<div class="checkbox">
<label>
<input name="mandatory" type="checkbox" ng-model="$vm.customField.mandatory"> Is mandatory
Expand Down

0 comments on commit e61b5e9

Please sign in to comment.