summaryrefslogtreecommitdiffstats
path: root/settings/js/authtoken_view.js
blob: 0ca1682123327ada0ad3bf328c57abf6146ad022 (plain)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
/* global Backbone, Handlebars */

/**
 * @author Christoph Wurst <christoph@owncloud.com>
 *
 * @copyright Copyright (c) 2016, ownCloud, Inc.
 * @license AGPL-3.0
 *
 * This code is free software: you can redistribute it and/or modify
 * it under the terms of the GNU Affero General Public License, version 3,
 * as published by the Free Software Foundation.
 *
 * This program is distributed in the hope that it will be useful,
 * but WITHOUT ANY WARRANTY; without even the implied warranty of
 * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
 * GNU Affero General Public License for more details.
 *
 * You should have received a copy of the GNU Affero General Public License, version 3,
 * along with this program.  If not, see <http://www.gnu.org/licenses/>
 *
 */

(function(OC, _, Backbone, $, Handlebars) {
	'use strict';

	OC.Settings = OC.Settings || {};

	var TEMPLATE_TOKEN =
			'<tr>'
			+ '<td>{{name}}</td>'
			+ '<td>{{lastActivity}}</td>'
			+ '<tr>';

	var SubView = Backbone.View.extend({
		collection: null,
		type: 0,
		template: Handlebars.compile(TEMPLATE_TOKEN),
		initialize: function(options) {
			this.type = options.type;
			this.collection = options.collection;
		},
		render: function() {
			var _this = this;

			var list = this.$el.find('.token-list');
			var tokens = this.collection.filter(function(token) {
				return parseInt(token.get('type')) === _this.type;
			});
			list.removeClass('icon-loading');
			list.html('');

			tokens.forEach(function(token) {
				var html = _this.template(token.toJSON());
				list.append(html);
			});
		},
	});

	var AuthTokenView = Backbone.View.extend({
		collection: null,
		views
		: [],
		initialize: function(options) {
			this.collection = options.collection;

			var tokenTypes = [0, 1];
			var _this = this;
			_.each(tokenTypes, function(type) {
				_this.views.push(new SubView({
					el: type === 0 ? '#sessions' : '#devices',
					type: type,
					collection: _this.collection
				}));
			});
		},
		render: function() {
			_.each(this.views, function(view) {
				view.render();
			});
		},
		reload: function() {
			var loadingTokens = this.collection.fetch();

			var _this = this;
			$.when(loadingTokens).done(function() {
				_this.render();
			});
		}
	});

	OC.Settings.AuthTokenView = AuthTokenView;

})(OC, _, Backbone, $, Handlebars);