mirror of
https://github.com/gyurix1968/guacamole-client.git
synced 2025-09-06 13:17:41 +00:00
Merge pull request #21 from glyptodon/cleanup-angular
GUAC-932: Further cleanup history display code.
This commit is contained in:
@@ -97,11 +97,7 @@ THE SOFTWARE.
|
||||
<tr ng-repeat="wrapper in historyEntryWrappers">
|
||||
<td class="username">{{wrapper.entry.username}}</td>
|
||||
<td class="start">{{wrapper.entry.startDate | date:'short'}}</td>
|
||||
<td class="duration">
|
||||
<span ng-show="wrapper.duration">{{'manage.edit.connection.history.formattedDuration' | translate:"{VALUE: wrapper.duration.value, UNIT: wrapper.duration.unit}"}}</span>
|
||||
<span ng-show="wrapper.entry.active">{{'manage.edit.connection.history.activeNow' | translate}}</span>
|
||||
<span ng-show="!wrapper.entry.active && !wrapper.duration">{{'manage.edit.connection.history.unknownEnd' | translate}}</span>
|
||||
</td>
|
||||
<td class="duration">{{wrapper.durationText | translate:"{VALUE: wrapper.duration.value, UNIT: wrapper.duration.unit}"}}</td>
|
||||
</tr>
|
||||
</tbody>
|
||||
</table>
|
||||
|
@@ -0,0 +1,94 @@
|
||||
/*
|
||||
* Copyright (C) 2014 Glyptodon LLC
|
||||
*
|
||||
* Permission is hereby granted, free of charge, to any person obtaining a copy
|
||||
* of this software and associated documentation files (the "Software"), to deal
|
||||
* in the Software without restriction, including without limitation the rights
|
||||
* to use, copy, modify, merge, publish, distribute, sublicense, and/or sell
|
||||
* copies of the Software, and to permit persons to whom the Software is
|
||||
* furnished to do so, subject to the following conditions:
|
||||
*
|
||||
* The above copyright notice and this permission notice shall be included in
|
||||
* all copies or substantial portions of the Software.
|
||||
*
|
||||
* THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
|
||||
* IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
|
||||
* FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
|
||||
* AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
|
||||
* LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,
|
||||
* OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN
|
||||
* THE SOFTWARE.
|
||||
*/
|
||||
|
||||
/**
|
||||
* A service for defining the HistoryEntryDuration class.
|
||||
*/
|
||||
angular.module('manage').factory('HistoryEntryDuration', [function defineHistoryEntryDuration() {
|
||||
|
||||
/**
|
||||
* Value/unit pair representing the length of time that a connection was
|
||||
* used.
|
||||
*
|
||||
* @constructor
|
||||
* @param {Number} milliseconds
|
||||
* The number of milliseconds that the associated connection was used.
|
||||
*/
|
||||
var HistoryEntryDuration = function HistoryEntryDuration(milliseconds) {
|
||||
|
||||
var seconds = milliseconds / 1000;
|
||||
|
||||
/**
|
||||
* Rounds the given value to the nearest tenth.
|
||||
*
|
||||
* @param {Number} value The value to round.
|
||||
* @returns {Number} The given value, rounded to the nearest tenth.
|
||||
*/
|
||||
var round = function round(value) {
|
||||
return Math.round(value * 10) / 10;
|
||||
};
|
||||
|
||||
// Days
|
||||
if (seconds >= 86400) {
|
||||
this.value = round(seconds / 86400);
|
||||
this.unit = 'day';
|
||||
}
|
||||
|
||||
// Hours
|
||||
else if (seconds >= 3600) {
|
||||
this.value = round(seconds / 3600);
|
||||
this.unit = 'hour';
|
||||
}
|
||||
|
||||
// Minutes
|
||||
else if (seconds >= 60) {
|
||||
this.value = round(seconds / 60);
|
||||
this.unit = 'minute';
|
||||
}
|
||||
|
||||
// Seconds
|
||||
else {
|
||||
|
||||
/**
|
||||
* The number of seconds (or minutes, or hours, etc.) that the
|
||||
* connection was used. The units associated with this value are
|
||||
* represented by the unit property.
|
||||
*
|
||||
* @type Number
|
||||
*/
|
||||
this.value = round(seconds);
|
||||
|
||||
/**
|
||||
* The units associated with the value of this duration. Valid
|
||||
* units are 'second', 'minute', 'hour', and 'day'.
|
||||
*
|
||||
* @type String
|
||||
*/
|
||||
this.unit = 'second';
|
||||
|
||||
}
|
||||
|
||||
};
|
||||
|
||||
return HistoryEntryDuration;
|
||||
|
||||
}]);
|
@@ -21,63 +21,11 @@
|
||||
*/
|
||||
|
||||
/**
|
||||
* A service for generating new guacClient properties objects.
|
||||
* A service for defining the HistoryEntryWrapper class.
|
||||
*/
|
||||
angular.module('manage').factory('HistoryEntryWrapper', [function defineHistoryEntryWrapper() {
|
||||
angular.module('manage').factory('HistoryEntryWrapper', ['HistoryEntryDuration',
|
||||
function defineHistoryEntryWrapper(HistoryEntryDuration) {
|
||||
|
||||
/**
|
||||
* Given a number of milliseconds, returns an object containing a unit and value
|
||||
* for that history entry duration.
|
||||
*
|
||||
* @param {Number} milliseconds The number of milliseconds.
|
||||
* @return {Object} A unit and value pair representing a history entry duration.
|
||||
*/
|
||||
var formatMilliseconds = function formatMilliseconds(milliseconds) {
|
||||
|
||||
var seconds = milliseconds / 1000;
|
||||
|
||||
/**
|
||||
* Rounds the given value to the nearest tenth.
|
||||
*
|
||||
* @param {Number} value The value to round.
|
||||
* @returns {Number} The given value, rounded to the nearest tenth.
|
||||
*/
|
||||
var round = function round(value) {
|
||||
return Math.round(value * 10) / 10;
|
||||
};
|
||||
|
||||
// Seconds
|
||||
if (seconds < 60) {
|
||||
return {
|
||||
value : round(seconds),
|
||||
unit : "second"
|
||||
};
|
||||
}
|
||||
|
||||
// Minutes
|
||||
if (seconds < 3600) {
|
||||
return {
|
||||
value : round(seconds / 60 ),
|
||||
unit : "minute"
|
||||
};
|
||||
}
|
||||
|
||||
// Hours
|
||||
if (seconds < 86400) {
|
||||
return {
|
||||
value : round(seconds / 3600),
|
||||
unit : "hour"
|
||||
};
|
||||
}
|
||||
|
||||
// Days
|
||||
return {
|
||||
value : round(seconds / 86400),
|
||||
unit : "day"
|
||||
};
|
||||
|
||||
};
|
||||
|
||||
/**
|
||||
* Wrapper for ConnectionHistoryEntry which adds display-specific
|
||||
* properties, such as the connection duration.
|
||||
@@ -99,13 +47,31 @@ angular.module('manage').factory('HistoryEntryWrapper', [function defineHistoryE
|
||||
* An object providing value and unit properties, denoting the duration
|
||||
* and its corresponding units.
|
||||
*
|
||||
* @type Object
|
||||
* @type HistoryEntryDuration
|
||||
*/
|
||||
this.duration = null;
|
||||
|
||||
// Set the duration if the necessary information is present and the entry is not still active
|
||||
if (historyEntry.endDate && historyEntry.startDate && !historyEntry.active)
|
||||
this.duration = formatMilliseconds(historyEntry.endDate - historyEntry.startDate);
|
||||
/**
|
||||
* The string to display as the duration of this history entry. If a
|
||||
* duration is available, its value and unit will be exposed to any
|
||||
* given translation string as the VALUE and UNIT substitution
|
||||
* variables respectively.
|
||||
*
|
||||
* @type String
|
||||
*/
|
||||
this.durationText = 'manage.edit.connection.history.formattedDuration';
|
||||
|
||||
// Notify if connection is active right now
|
||||
if (historyEntry.active)
|
||||
this.durationText = 'manage.edit.connection.history.activeNow';
|
||||
|
||||
// If connection is not active, inform use if end date is not known
|
||||
else if (!historyEntry.endDate)
|
||||
this.durationText = 'manage.edit.connection.history.unknownEnd';
|
||||
|
||||
// Set the duration if the necessary information is present
|
||||
if (historyEntry.endDate && historyEntry.startDate)
|
||||
this.duration = new HistoryEntryDuration(historyEntry.endDate - historyEntry.startDate);
|
||||
|
||||
};
|
||||
|
||||
|
Reference in New Issue
Block a user