blob: ad3dc04544eabc5af412d670db98a65a53b76711 [file] [log] [blame]
Simon Huntc7ae7952015-04-08 18:59:27 -07001/*
2 * Copyright 2015 Open Networking Laboratory
3 *
4 * Licensed under the Apache License, Version 2.0 (the "License");
5 * you may not use this file except in compliance with the License.
6 * You may obtain a copy of the License at
7 *
8 * http://www.apache.org/licenses/LICENSE-2.0
9 *
10 * Unless required by applicable law or agreed to in writing, software
11 * distributed under the License is distributed on an "AS IS" BASIS,
12 * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
13 * See the License for the specific language governing permissions and
14 * limitations under the License.
15 */
16
17/*
18 ONOS GUI -- Util -- User Preference Service
19 */
20(function () {
21 'use strict';
22
23 // injected refs
Thomas Vachuska0af26912016-03-21 21:37:30 -070024 var $log, fs, wss;
Simon Huntc7ae7952015-04-08 18:59:27 -070025
26 // internal state
27 var cache = {};
28
Thomas Vachuska0af26912016-03-21 21:37:30 -070029 // returns the preference by the specified name
30 function getPrefs(name, defaults) {
31 return cache[name] || defaults;
Simon Huntc7ae7952015-04-08 18:59:27 -070032 }
33
Simon Huntfcbde892015-04-16 12:05:28 -070034 // converts string values to numbers for selected (or all) keys
35 function asNumbers(obj, keys) {
36 if (!obj) return null;
37
38 if (!keys) {
39 // do them all
40 angular.forEach(obj, function (v, k) {
41 obj[k] = Number(obj[k]);
42 });
43 } else {
44 keys.forEach(function (k) {
45 obj[k] = Number(obj[k]);
46 });
47 }
48 return obj;
49 }
50
Simon Huntc7ae7952015-04-08 18:59:27 -070051 function setPrefs(name, obj) {
Thomas Vachuska0af26912016-03-21 21:37:30 -070052 // keep a cached copy of the object and send an update to server
Simon Huntc7ae7952015-04-08 18:59:27 -070053 cache[name] = obj;
Thomas Vachuska0af26912016-03-21 21:37:30 -070054 wss.sendEvent('updatePrefReq', { key: name, value: obj });
55 }
56
57 function updatePrefs(data) {
58 $log.info('User properties updated');
59 cache[data.key] = data.value;
Simon Huntc7ae7952015-04-08 18:59:27 -070060 }
61
62 angular.module('onosUtil')
Thomas Vachuska0af26912016-03-21 21:37:30 -070063 .factory('PrefsService', ['$log', 'FnService', 'WebSocketService',
64 function (_$log_, _fs_, _wss_) {
Simon Huntc7ae7952015-04-08 18:59:27 -070065 $log = _$log_;
Simon Hunt4deb0e82015-06-10 16:18:25 -070066 fs = _fs_;
Thomas Vachuska0af26912016-03-21 21:37:30 -070067 wss = _wss_;
68
69 cache = userPrefs;
70
71 wss.bindHandlers({
72 updatePrefs: updatePrefs
73 });
Simon Huntc7ae7952015-04-08 18:59:27 -070074
75 return {
76 getPrefs: getPrefs,
Simon Huntfcbde892015-04-16 12:05:28 -070077 asNumbers: asNumbers,
Simon Huntc7ae7952015-04-08 18:59:27 -070078 setPrefs: setPrefs
79 };
80 }]);
81
82}());