Debug, logging, about added to ADMIN dropdown
[osm/UI.git] / skyquake / framework / core / modules / navigation_manager.js
1 /*
2 *
3 * Copyright 2016 RIFT.IO Inc
4 *
5 * Licensed under the Apache License, Version 2.0 (the "License");
6 * you may not use this file except in compliance with the License.
7 * You may obtain a copy of the License at
8 *
9 * http://www.apache.org/licenses/LICENSE-2.0
10 *
11 * Unless required by applicable law or agreed to in writing, software
12 * distributed under the License is distributed on an "AS IS" BASIS,
13 * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
14 * See the License for the specific language governing permissions and
15 * limitations under the License.
16 *
17 */
18
19 /**
20 * navigation_manager module. manages navigation state for a skyquake instance
21 * @module framework/core/modules/navigation_manager
22 * @author Kiran Kashalkar <kiran.kashalkar@riftio.com>
23 */
24
25 var path = require('path');
26 var fs = require('fs');
27 var util = require('util');
28 var skyquakeEmitter = require('./skyquakeEmitter');
29 require('require-json');
30 var _ = require('lodash');
31
32 /**
33 * navigation looks like:
34 * {
35 * "plugin_name": <{routes>}>
36 * }
37 */
38
39 var NAVIGATION = {};
40
41 function addNavigation(plugin_name, routes) {
42 if (!NAVIGATION[plugin_name]) {
43 NAVIGATION[plugin_name] = {};
44 }
45 if (!NAVIGATION[plugin_name].routes) {
46 NAVIGATION[plugin_name].routes = routes;
47 } else {
48 _.extend(NAVIGATION[plugin_name].routes, routes);
49 }
50 }
51 function addOrder(plugin_name, order) {
52 if (!NAVIGATION[plugin_name]) {
53 NAVIGATION[plugin_name] = {};
54 }
55 NAVIGATION[plugin_name].order = order || 5;
56 }
57 function addPriority(plugin_name, priority) {
58 if (!NAVIGATION[plugin_name]) {
59 NAVIGATION[plugin_name] = {};
60 }
61 NAVIGATION[plugin_name].priority = priority || 1;
62 }
63
64 function addLabel(plugin_name, label) {
65 if (!NAVIGATION[plugin_name]) {
66 NAVIGATION[plugin_name] = {};
67 }
68 NAVIGATION[plugin_name].label = label || 'RW.UI Plugin';
69 }
70
71 function addAllow(plugin_name, allow) {
72 if (!NAVIGATION[plugin_name]) {
73 NAVIGATION[plugin_name] = {};
74 }
75 NAVIGATION[plugin_name].allow = allow || '*';
76 }
77
78 function addAdminFlag(plugin_name, admin_link) {
79 if (!NAVIGATION[plugin_name]) {
80 NAVIGATION[plugin_name] = {};
81 }
82 NAVIGATION[plugin_name].admin_link = admin_link || false;
83 }
84
85 function getNavigation() {
86 return NAVIGATION;
87 }
88
89 function deleteNavigation(plugin_name, route_id) {
90 delete NAVIGATION[plugin_name]['routes'][route_id];
91 }
92
93 function onNavigationDiscovered(plugin_name, plugin) {
94 addNavigation(plugin_name, plugin.routes);
95 addOrder(plugin_name, plugin.order);
96 addPriority(plugin_name, plugin.priority);
97 addLabel(plugin_name, plugin.name);
98 addAllow(plugin_name, plugin.allow);
99 addAdminFlag(plugin_name, plugin.admin_link);
100 }
101
102 function init() {
103 skyquakeEmitter.on('config_discoverer.navigation_discovered', onNavigationDiscovered);
104 }
105
106 function config(config) {
107
108 }
109
110 function run() {
111
112 }
113
114
115 module.exports = {
116 init: init,
117 config: config,
118 run: run,
119 addNavigation: addNavigation,
120 getNavigation: getNavigation
121 };