Also support user export as csv

This commit is contained in:
Johannes Zellner
2022-01-22 09:28:41 +01:00
parent 0af47bba54
commit 36b0d4e1bc
2 changed files with 18 additions and 4 deletions

View File

@@ -596,8 +596,16 @@
<i class="fa fa-user-plus"></i> {{ 'users.newUserAction' | tr }}
</button>
<div class="btn-group pull-right" style="margin-left: 5px;">
<button class="btn btn-primary btn-outline" ng-click="userImport.show()" uib-tooltip="Import Users" tooltip-append-to-body="true"><i class="fa fa-file-import"></i></button>
<button class="btn btn-primary btn-outline" ng-click="userExport()" uib-tooltip="Export Users" tooltip-append-to-body="true"><i class="fa fa-file-export"></i></button>
<button class="btn btn-primary" ng-click="userImport.show()" uib-tooltip="Import Users" tooltip-append-to-body="true"><i class="fa fa-file-import"></i></button>
<div class="btn-group" role="group">
<button class="btn btn-primary dropdown-toggle" type="button" data-toggle="dropdown" uib-tooltip="Export Users" tooltip-append-to-body="true" tooltip-placement="bottom">
<i class="fa fa-file-export"></i>
</button>
<ul class="dropdown-menu dropdown-menu-right">
<li><a href="" ng-click="userExport('csv')">Export as CSV</a></li>
<li><a href="" ng-click="userExport('json')">Export as JSON</a></li>
</ul>
</div>
</div>
<input type="text" id="userSearchInput" class="form-control pull-right" style="max-width: 350px;" ng-model="userSearchString" ng-model-options="{ debounce: 1000 }" ng-change="updateFilter()" placeholder="{{ 'main.searchPlaceholder' | tr }}"/>
</h1>

View File

@@ -184,14 +184,20 @@ angular.module('Application').controller('UsersController', ['$scope', '$locatio
}
};
$scope.userExport = function () {
// supported types are 'json' and 'csv'
$scope.userExport = function (type) {
Client.getUsers(function (error, result) {
if (error) {
Client.error('Failed to list users. Full error in the webinspector.');
return console.error('Failed to list users.', error);
}
var file = new Blob([ JSON.stringify(result, null, 2) ], { type: 'application/json' });
var content = '';
if (type === 'json') content = JSON.stringify(result, null, 2);
else if (type === 'csv') content = result.map(function (user) { return `${user.id},${user.username},${user.email},${user.displayName}`; }).join('\n');
else return;
var file = new Blob([ content ], { type: 'application/json' });
var a = document.createElement('a');
a.href = URL.createObjectURL(file);
a.download = 'users.json';