Display storage status as tooltip

This commit is contained in:
Robin McCorkell 2015-09-16 16:58:26 +01:00 committed by Thomas Müller
parent 4ac33ab26b
commit 9a4d37f626
4 changed files with 47 additions and 7 deletions

View file

@ -237,9 +237,21 @@ abstract class StoragesController extends Controller {
)
);
} catch (InsufficientDataForMeaningfulAnswerException $e) {
$storage->setStatus(\OC_Mount_Config::STATUS_INDETERMINATE);
$storage->setStatus(
\OC_Mount_Config::STATUS_INDETERMINATE,
$this->l10n->t('Insufficient data: %s', [$e->getMessage()])
);
} catch (StorageNotAvailableException $e) {
$storage->setStatus(\OC_Mount_Config::STATUS_ERROR);
$storage->setStatus(
\OC_Mount_Config::STATUS_ERROR,
$e->getMessage()
);
} catch (\Exception $e) {
// FIXME: convert storage exceptions to StorageNotAvailableException
$storage->setStatus(
\OC_Mount_Config::STATUS_ERROR,
get_class($e).': '.$e->getMessage()
);
}
}

View file

@ -643,6 +643,10 @@ MountConfigListView.prototype = _.extend({
});
addSelect2(this.$el.find('tr:not(#addMountPoint) .applicableUsers'), this._userListLimit);
this.$el.tooltip({
selector: '.status span',
container: 'body'
});
this._initEvents();
@ -947,7 +951,7 @@ MountConfigListView.prototype = _.extend({
if (concurrentTimer === undefined
|| $tr.data('save-timer') === concurrentTimer
) {
self.updateStatus($tr, result.status);
self.updateStatus($tr, result.status, result.statusMessage);
$tr.attr('data-id', result.id);
if (_.isFunction(callback)) {
@ -981,7 +985,7 @@ MountConfigListView.prototype = _.extend({
this.updateStatus($tr, StorageConfig.Status.IN_PROGRESS);
storage.recheck({
success: function(result) {
self.updateStatus($tr, result.status);
self.updateStatus($tr, result.status, result.statusMessage);
},
error: function() {
self.updateStatus($tr, StorageConfig.Status.ERROR);
@ -994,8 +998,9 @@ MountConfigListView.prototype = _.extend({
*
* @param {jQuery} $tr
* @param {int} status
* @param {string} message
*/
updateStatus: function($tr, status) {
updateStatus: function($tr, status, message) {
var $statusSpan = $tr.find('.status span');
$statusSpan.removeClass('loading-small success indeterminate error');
switch (status) {
@ -1014,6 +1019,7 @@ MountConfigListView.prototype = _.extend({
default:
$statusSpan.addClass('error');
}
$statusSpan.attr('data-original-title', (typeof message === 'string') ? message : '');
},
/**

View file

@ -269,6 +269,7 @@ class OC_Mount_Config {
}
} catch (Exception $exception) {
\OCP\Util::logException('files_external', $exception);
throw $e;
}
}
return self::STATUS_ERROR;

View file

@ -72,6 +72,13 @@ class StorageConfig implements \JsonSerializable {
*/
private $status;
/**
* Status message
*
* @var string
*/
private $statusMessage;
/**
* Priority
*
@ -295,7 +302,7 @@ class StorageConfig implements \JsonSerializable {
}
/**
* Sets the storage status, whether the config worked last time
* Gets the storage status, whether the config worked last time
*
* @return int $status status
*/
@ -303,13 +310,24 @@ class StorageConfig implements \JsonSerializable {
return $this->status;
}
/**
* Gets the message describing the storage status
*
* @return string|null
*/
public function getStatusMessage() {
return $this->statusMessage;
}
/**
* Sets the storage status, whether the config worked last time
*
* @param int $status status
* @param string|null $message optional message
*/
public function setStatus($status) {
public function setStatus($status, $message = null) {
$this->status = $status;
$this->statusMessage = $message;
}
/**
@ -341,6 +359,9 @@ class StorageConfig implements \JsonSerializable {
if (!is_null($this->status)) {
$result['status'] = $this->status;
}
if (!is_null($this->statusMessage)) {
$result['statusMessage'] = $this->statusMessage;
}
return $result;
}
}