Skip to content

Commit

Permalink
#12 Fix the dblist rows parsing and saving
Browse files Browse the repository at this point in the history
  • Loading branch information
nadouani committed Jun 29, 2017
1 parent 5e99e7a commit fa85f89
Show file tree
Hide file tree
Showing 3 changed files with 94 additions and 100 deletions.
180 changes: 89 additions & 91 deletions ui/app/scripts/controllers/admin/AdminCustomFieldDialogCtrl.js
Original file line number Diff line number Diff line change
@@ -1,103 +1,101 @@
(function() {
'use strict';

angular.module('theHiveControllers').controller('AdminCustomFieldDialogCtrl',
function($scope, $uibModalInstance, ListSrv, NotificationSrv, customField) {
var self = this;
self.config = {
types: ['string', 'number', 'boolean', 'date'],
referencePattern: '^[a-zA-Z]{1}[a-zA-Z0-9_-]*'
};

self.customField = customField;
self.customField.options = (customField.options || []).join('\n');

var onSuccess = function(data) {
$uibModalInstance.close(data);
};

var onFailure = function(response) {
NotificationSrv.error('AdminCustomFieldDialogCtrl', response.data, response.status);
};

var buildOptionsCollection = function(options) {
if(!options || options === '') {
return [];
}

var type = self.customField.type;
var values = self.customField.options.split('\n');

if(type === 'number') {
return _.without(values.map(function(item) {
return Number(item);
}), NaN);
}

return values;
};

self.saveField = function(form) {
if (!form.$valid) {
return;
}

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

if(self.customField.id) {
ListSrv.update(
{'itemId': self.customField.id},
{'value': JSON.stringify(postData)},
onSuccess,
onFailure);
} else {
ListSrv.exists(
{'listId': 'custom_fields'},
{
key: 'reference',
value: postData.reference
},
function(response) {
if(response.data) {
ListSrv.save(
{'listId': 'custom_fields'},
{'value': JSON.stringify(postData)},
onSuccess,
onFailure);
} else {
// TODO handle field validation
form.reference.$setValidity('unique', false);
form.reference.$setDirty();
NotificationSrv.error('AdminCustomFieldDialogCtrl', 'There is already a custom field with the specified reference: ' + postData.reference);
}
},
onFailure
)
}
};

self.clearUniqueReferenceError = function(form) {
form.reference.$setValidity('unique', true);
form.reference.$setPristine();
angular.module('theHiveControllers').controller('AdminCustomFieldDialogCtrl', function($scope, $uibModalInstance, ListSrv, NotificationSrv, customField) {
var self = this;
self.config = {
types: [
'string', 'number', 'boolean', 'date'
],
referencePattern: '^[a-zA-Z]{1}[a-zA-Z0-9_-]*'
};

self.customField = customField;
self.customField.options = (customField.options || []).join('\n');

var onSuccess = function(data) {
$uibModalInstance.close(data);
};

var onFailure = function(response) {
NotificationSrv.error('AdminCustomFieldDialogCtrl', response.data, response.status);
};

var buildOptionsCollection = function(options) {
if (!options || options === '') {
return [];
}

self.cancel = function() {
$uibModalInstance.dismiss();
var type = self.customField.type;
var values = self.customField.options.split('\n');

if (type === 'number') {
return _.without(values.map(function(item) {
return Number(item);
}), NaN);
}

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

self.saveField = function(form) {
if (!form.$valid) {
return;
}

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

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

ListSrv.exists({
'listId': 'custom_fields'
}, {
key: 'reference',
value: postData.reference
}, function(response) {

if (response.toJSON().found === true) {
form.reference.$setValidity('unique', false);
form.reference.$setDirty();
} else {
ListSrv.save({
'listId': 'custom_fields'
}, {
'value': JSON.stringify(postData)
}, onSuccess, onFailure);
}
}, onFailure);
}
};

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

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

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

var reference = s.trim(s.classify(self.customField.name));
reference = reference.charAt(0).toLowerCase() + reference.slice(1);
var reference = s.trim(s.classify(self.customField.name));
reference = reference.charAt(0).toLowerCase() + reference.slice(1);

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

self.clearUniqueReferenceError(form);
};
self.clearUniqueReferenceError(form);
};

});
});
})();
6 changes: 2 additions & 4 deletions ui/app/scripts/controllers/admin/AdminCustomFieldsCtrl.js
Original file line number Diff line number Diff line change
Expand Up @@ -25,10 +25,8 @@
}, {}, function(response) {

self.customFields = _.map(response.toJSON(), function(value, key) {
var obj = JSON.parse(value);
obj.id = key;

return obj;
value.id = key;
return value;
});

}, function(response) {
Expand Down
8 changes: 3 additions & 5 deletions ui/app/scripts/services/CustomFieldsCacheSrv.js
Original file line number Diff line number Diff line change
Expand Up @@ -27,14 +27,12 @@

if(cache === null) {
resource.query({listId: 'custom_fields'}, {}, function(response) {
var json = response.toJSON();
cache = {};
var data = _.values(response).filter(_.isString).map(function(item) {
return JSON.parse(item);
});

_.each(data, function(field){
_.each(_.values(json), function(field) {
cache[field.reference] = field;
});
})

deferred.resolve(cache);
}, function(response) {
Expand Down

0 comments on commit fa85f89

Please sign in to comment.