Skip to content

Commit

Permalink
#888 WIP Add a UI Config section
Browse files Browse the repository at this point in the history
  • Loading branch information
nadouani committed Feb 20, 2019
1 parent 4a0f551 commit 7dd264d
Show file tree
Hide file tree
Showing 8 changed files with 155 additions and 4 deletions.
2 changes: 2 additions & 0 deletions ui/app/index.html
Original file line number Diff line number Diff line change
Expand Up @@ -144,6 +144,7 @@
<script src="scripts/controllers/admin/AdminMetricsCtrl.js"></script>
<script src="scripts/controllers/admin/AdminObservablesCtrl.js"></script>
<script src="scripts/controllers/admin/AdminReportTemplatesCtrl.js"></script>
<script src="scripts/controllers/admin/AdminUiSettingsCtrl.js"></script>
<script src="scripts/controllers/admin/AdminUserDialogCtrl.js"></script>
<script src="scripts/controllers/admin/AdminUsersCtrl.js"></script>
<script src="scripts/controllers/alert/AlertEventCtrl.js"></script>
Expand Down Expand Up @@ -269,6 +270,7 @@
<script src="scripts/services/StreamStatSrv.js"></script>
<script src="scripts/services/TagSrv.js"></script>
<script src="scripts/services/TaskLogSrv.js"></script>
<script src="scripts/services/UiSettingsSrv.js"></script>
<script src="scripts/services/UserInfoSrv.js"></script>
<script src="scripts/services/UserSrv.js"></script>
<script src="scripts/services/UtilsSrv.js"></script>
Expand Down
16 changes: 16 additions & 0 deletions ui/app/scripts/app.js
Original file line number Diff line number Diff line change
Expand Up @@ -77,6 +77,10 @@ angular.module('thehive', ['ngAnimate', 'ngMessages', 'ngSanitize', 'ui.bootstra
appLayout: function($q, $rootScope, AppLayoutSrv) {
AppLayoutSrv.init();
return $q.resolve();
},
uiConfig: function($q, UiSettingsSrv) {
UiSettingsSrv.all();
return $q.resolve();
}
}
})
Expand Down Expand Up @@ -215,6 +219,18 @@ angular.module('thehive', ['ngAnimate', 'ngMessages', 'ngSanitize', 'ui.bootstra
controller: 'AdminObservablesCtrl',
title: 'Observable administration'
})
.state('app.administration.ui-settings', {
url: '/ui-settings',
templateUrl: 'views/partials/admin/ui-settings.html',
controller: 'AdminUiSettingsCtrl',
controllerAs: '$vm',
title: 'UI settings',
resolve: {
uiConfig: function(UiSettingsSrv) {
return UiSettingsSrv.all();
}
}
})
.state('app.case', {
abstract: true,
url: 'case/{caseId}',
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -78,11 +78,11 @@
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) {
Expand Down
4 changes: 2 additions & 2 deletions ui/app/scripts/controllers/admin/AdminCustomFieldsCtrl.js
Original file line number Diff line number Diff line change
Expand Up @@ -59,12 +59,12 @@
}
});

modalInstance.result.then(function(data) {
modalInstance.result.then(function(/*data*/) {
self.initCustomfields();
CustomFieldsCacheSrv.clearCache();
$scope.$emit('custom-fields:refresh');
});
}
};

self.initCustomfields();
});
Expand Down
32 changes: 32 additions & 0 deletions ui/app/scripts/controllers/admin/AdminUiSettingsCtrl.js
Original file line number Diff line number Diff line change
@@ -0,0 +1,32 @@
(function() {
'use strict';

angular.module('theHiveControllers').controller('AdminUiSettingsCtrl', function(UiSettingsSrv, uiConfig) {
var self = this;

self.save = function(/*form*/) {
self.settingsKeys.forEach(function(key) {
//if(form[key].$dirty) {
if(!self.currentSettings[key]) {
UiSettingsSrv.create(key, self.configs[key]);
} else {
UiSettingsSrv.update(self.currentSettings[key].id, key, self.configs[key]);
}
//}
});
};

self.loadSettings = function() {
self.settingsKeys = UiSettingsSrv.keys;
self.currentSettings = uiConfig;

self.configs = {};
self.settingsKeys.forEach(function(key) {
self.configs[key] = (uiConfig[key] || {}).value;
});
};

self.loadSettings();

});
})();
65 changes: 65 additions & 0 deletions ui/app/scripts/services/UiSettingsSrv.js
Original file line number Diff line number Diff line change
@@ -0,0 +1,65 @@
(function() {
'use strict';
angular.module('theHiveServices').factory('UiSettingsSrv', function(ListSrv, $q) {

var settings = null;

return {
keys: [
'hideEmptyCaseButton'
],
clearCache: function() {
settings = null;
},

get: function(name) {
return settings[name];
},

create: function(name, value) {
return ListSrv.save({listId: 'ui_settings'}, {
value: {
name: name,
value: value
}
}).$promise;
},

update: function(id, name, value) {
return ListSrv.update({itemId: id}, {
value: {
name: name,
value: value
}
}).$promise;
},

all: function(force) {
var deferred = $q.defer();

if(settings === null || force) {
ListSrv.query({listId: 'ui_settings'}, {}, function(response) {
var json = response.toJSON();

settings = {};

_.each(_.keys(json), function(key) {
var setting = json[key];

settings[setting.name] = setting;
settings[setting.name].id = key;
});

deferred.resolve(settings);
}, function(response) {
deferred.reject(response);
});
} else {
deferred.resolve(settings);
}

return deferred.promise;
}
};
});
})();
7 changes: 7 additions & 0 deletions ui/app/views/components/header.component.html
Original file line number Diff line number Diff line change
Expand Up @@ -157,6 +157,13 @@
<span class="hpad5">Case custom fields</span>
</a>
</li>
<li class="divider"></li>
<li>
<a ui-sref="app.administration.ui-settings">
<i class="fa fa-cogs"></i>
<span class="hpad5">UI settings</span>
</a>
</li>
</ul>
</li>
<li class="dropdown" uib-dropdown>
Expand Down
29 changes: 29 additions & 0 deletions ui/app/views/partials/admin/ui-settings.html
Original file line number Diff line number Diff line change
@@ -0,0 +1,29 @@
<div class="row">
<div class="col-md-12">
<form name="settingsForm" class="form-horizontal" ng-submit="$vm.save(settingsForm)" novalidate>
<div class="box">
<div class="box-header">
<h3 class="box-title">UI Settings</h3>
</div>
<div class="box-body">

<div class="form-group">
<label class="col-md-3 control-label">Hide <em>Empty Case</em> button</label>
<div class="col-md-9">
<div class="checkbox">
<label>
<input name="hideEmptyCaseButton" type="checkbox" ng-model="$vm.configs.hideEmptyCaseButton"> Check this to disallow creating empty cases
</label>
</div>
</div>
</div>

<div class="mt-s">
<button class="btn btn-primary pull-right" ng-disabled="settingsForm.$invalid" type="submit">Save</button>
</div>

</div>
</div>
</form>
</div>
</div>

0 comments on commit 7dd264d

Please sign in to comment.