1
0
mirror of https://github.com/LaCasemate/fab-manager.git synced 2024-12-10 21:24:20 +01:00
fab-manager/app/assets/javascripts/controllers/admin/open_api_clients.js

169 lines
5.5 KiB
JavaScript

/* eslint-disable
no-return-assign,
no-undef,
*/
// TODO: This file was created by bulk-decaffeinate.
// Fix any style issues and re-enable lint.
/*
* decaffeinate suggestions:
* DS102: Remove unnecessary code created because of implicit returns
* DS207: Consider shorter variations of null checks
* Full docs: https://github.com/decaffeinate/decaffeinate/blob/master/docs/suggestions.md
*/
Application.Controllers.controller('OpenAPIClientsController', ['$scope', 'clientsPromise', 'settingsPromise', 'growl', 'OpenAPIClient', 'dialogs', '_t', 'Member', 'uiTourService',
function ($scope, clientsPromise, settingsPromise, growl, OpenAPIClient, dialogs, _t, Member, uiTourService) {
/* PUBLIC SCOPE */
// clients list
$scope.clients = clientsPromise;
$scope.order = null;
$scope.clientFormVisible = false;
$scope.client = {};
/**
* Show the name edition form for a new client
*/
$scope.createClient = function () {
$scope.clientFormVisible = true;
$scope.client = {};
};
/**
* Change the order criterion to the one provided
* @param orderBy {string} ordering criterion
*/
$scope.setOrder = function (orderBy) {
if ($scope.order === orderBy) {
return $scope.order = `-${orderBy}`;
} else {
return $scope.order = orderBy;
}
};
/**
* Reset the name ot its original value and close the edition form
*/
$scope.cancelEdit = function () {
$scope.client.name = $scope.clientOriginalName;
$scope.clientFormVisible = false;
};
$scope.saveClient = function (client) {
if (client.id != null) {
OpenAPIClient.update({ id: client.id }, { open_api_client: client }, function (clientResp) {
client = clientResp;
return growl.success(_t('app.admin.open_api_clients.client_successfully_updated'));
});
} else {
OpenAPIClient.save({ open_api_client: client }, function (client) {
$scope.clients.push(client);
return growl.success(_t('app.admin.open_api_clients.client_successfully_created'));
});
}
$scope.clientFormVisible = false;
$scope.client = {};
};
$scope.editClient = function (client) {
$scope.clientFormVisible = true;
$scope.client = client;
$scope.clientOriginalName = client.name;
};
$scope.deleteClient = index =>
dialogs.confirm({
resolve: {
object () {
return {
title: _t('app.admin.open_api_clients.confirmation_required'),
msg: _t('app.admin.open_api_clients.do_you_really_want_to_delete_this_open_api_client')
};
}
}
}
, () =>
OpenAPIClient.delete({ id: $scope.clients[index].id }, function () {
$scope.clients.splice(index, 1);
return growl.success(_t('app.admin.open_api_clients.client_successfully_deleted'));
})
);
$scope.resetToken = client =>
dialogs.confirm({
resolve: {
object () {
return {
title: _t('app.admin.open_api_clients.confirmation_required'),
msg: _t('app.admin.open_api_clients.do_you_really_want_to_revoke_this_open_api_access')
};
}
}
}
, () =>
OpenAPIClient.resetToken({ id: client.id }, {}, function (clientResp) {
client.token = clientResp.token;
return growl.success(_t('app.admin.open_api_clients.access_successfully_revoked'));
})
);
/**
* Setup the feature-tour for the admin/open_api_clients page.
* This is intended as a contextual help (when pressing F1)
*/
$scope.setupOpenAPITour = function () {
// get the tour defined by the ui-tour directive
const uitour = uiTourService.getTourByName('open-api');
uitour.createStep({
selector: 'body',
stepId: 'welcome',
order: 0,
title: _t('app.admin.tour.open_api.welcome.title'),
content: _t('app.admin.tour.open_api.welcome.content'),
placement: 'bottom',
orphan: true
});
uitour.createStep({
selector: '.heading .documentation-button',
stepId: 'doc',
order: 1,
title: _t('app.admin.tour.open_api.doc.title'),
content: _t('app.admin.tour.open_api.doc.content'),
placement: 'bottom'
});
uitour.createStep({
selector: 'body',
stepId: 'conclusion',
order: 2,
title: _t('app.admin.tour.conclusion.title'),
content: _t('app.admin.tour.conclusion.content'),
placement: 'bottom',
orphan: true
});
// on tour end, save the status in database
uitour.on('ended', function () {
if (uitour.getStatus() === uitour.Status.ON && $scope.currentUser.profile.tours.indexOf('open-api') < 0) {
Member.completeTour({ id: $scope.currentUser.id }, { tour: 'open-api' }, function (res) {
$scope.currentUser.profile.tours = res.tours;
});
}
});
// if the user has never seen the tour, and if the display behavior is not configured to manual triggering only, show the tour now
if (settingsPromise.feature_tour_display !== 'manual' && $scope.currentUser.profile.tours.indexOf('open-api') < 0) {
uitour.start();
}
};
/* PRIVATE SCOPE */
/**
* Kind of constructor: these actions will be realized first when the controller is loaded
*/
const initialize = function () {};
// !!! MUST BE CALLED AT THE END of the controller
return initialize();
}
]);