Vulcan/packages/telescope-lib/lib/menus.js

68 lines
1.6 KiB
JavaScript
Raw Normal View History

2015-05-10 13:37:42 +09:00
/**
* Menus namespace
* @namespace Telescope.menus
*/
2015-04-27 10:16:41 +09:00
Telescope.menus = {};
2015-04-24 10:49:24 +09:00
/**
* Add one or more items to a menu
* @param {string} menu - The name of the menu
2015-05-10 13:37:42 +09:00
* @param {Object|Object[]} item - The menu item object (or an array of items)
*
* @example <caption>Using a named route</caption>
2015-05-17 15:38:02 +09:00
* Telescope.menus.add("viewsMenu", {
2015-05-10 13:37:42 +09:00
* route: 'postsDaily',
* label: 'daily',
* description: 'day_by_day_view'
* });
*
* @example <caption>Using a route function</caption>
2015-05-17 15:38:02 +09:00
* Telescope.menus.add("userMenu", {
2015-05-10 13:37:42 +09:00
* route: function () {
* return Router.path('user_profile', {_idOrSlug: Meteor.user().telescope.slug});
* },
* label: 'profile',
* description: 'view_your_profile'
* });
*
2015-04-24 10:49:24 +09:00
*/
2015-05-17 15:38:02 +09:00
Telescope.menus.add = function (menu, item) {
2015-04-24 10:49:24 +09:00
// if menu items array doesn't exist yet, initialize it
if (typeof Telescope.menus[menu] === "undefined") {
Telescope.menus[menu] = [];
}
if (Array.isArray(item)) {
var items = item; // we're dealing with an Array, so let's add an "s"
items.forEach( function (item) {
Telescope.menus[menu].push(item);
});
2015-04-24 10:49:24 +09:00
} else {
2015-04-24 10:49:24 +09:00
Telescope.menus[menu].push(item);
2015-04-24 10:49:24 +09:00
}
};
2015-04-24 10:49:24 +09:00
2015-04-27 10:16:41 +09:00
/**
* Remove an item from a menu
* @param {string} menu - The name of the menu
* @param {string} label - The label of the item to remove
*/
Telescope.menus.remove = function (menu, label) {
Telescope.menus[menu] = _.reject(Telescope.menus[menu], function (menu) {
return menu.label === label;
});
};
2015-04-27 10:16:41 +09:00
2015-04-24 10:49:24 +09:00
/**
* Retrieve an array containing all items for a menu
* @param {string} menu - The name of the menu
*/
Telescope.menus.get = function (menu) {
return _.sortBy(Telescope.menus[menu], "order");
};