Skip to content

Commit

Permalink
Refine SettingsMenu service and <settings-screen> component (#3339)
Browse files Browse the repository at this point in the history
* Refine SettingsMenu service and <settings-screen> component

* Rename services/settingsMenu file to match default export name

* CR1
  • Loading branch information
kravets-levko authored and arikfr committed Jan 25, 2019
1 parent d204c15 commit 1fa5867
Show file tree
Hide file tree
Showing 11 changed files with 46 additions and 32 deletions.
6 changes: 5 additions & 1 deletion client/app/components/settings-screen.html
Original file line number Diff line number Diff line change
Expand Up @@ -3,7 +3,11 @@

<div class="bg-white tiled">
<ul class="tab-nav">
<li ng-class="{'active': $ctrl.isActive(menuItem)}" ng-if="$ctrl.isAvailable(menuItem.permission)" ng-repeat="menuItem in $ctrl.settingsMenu.menus">
<li
ng-repeat="menuItem in $ctrl.settingsMenu.items"
ng-if="$ctrl.isAvailable(menuItem.permission)"
ng-class="{'active': $ctrl.isActive(menuItem)}"
>
<a href="{{menuItem.path}}">{{menuItem.title}}</a>
</li>

Expand Down
10 changes: 2 additions & 8 deletions client/app/components/settings-screen.js
Original file line number Diff line number Diff line change
@@ -1,5 +1,4 @@
import settingsMenu from '@/lib/settings-menu';
import { isFunction } from 'lodash';
import settingsMenu from '@/services/settingsMenu';
import template from './settings-screen.html';

export default function init(ngModule) {
Expand All @@ -8,12 +7,7 @@ export default function init(ngModule) {
template,
controller($location, currentUser) {
this.settingsMenu = settingsMenu;
this.isActive = (menuItem) => {
if (isFunction(menuItem.isActive)) {
return menuItem.isActive($location);
}
return $location.path().startsWith(menuItem.pathPrefix);
};
this.isActive = menuItem => menuItem.isActive($location.path());
this.isAvailable = permission => permission === undefined || currentUser.hasPermission(permission);
},
});
Expand Down
15 changes: 0 additions & 15 deletions client/app/lib/settings-menu.js

This file was deleted.

2 changes: 1 addition & 1 deletion client/app/pages/data-sources/list.js
Original file line number Diff line number Diff line change
@@ -1,4 +1,4 @@
import settingsMenu from '@/lib/settings-menu';
import settingsMenu from '@/services/settingsMenu';
import template from './list.html';

function DataSourcesCtrl(Policy, DataSource) {
Expand Down
2 changes: 1 addition & 1 deletion client/app/pages/destinations/list.js
Original file line number Diff line number Diff line change
@@ -1,4 +1,4 @@
import settingsMenu from '@/lib/settings-menu';
import settingsMenu from '@/services/settingsMenu';
import template from './list.html';

function DestinationsCtrl($scope, $location, toastr, currentUser, Destination) {
Expand Down
2 changes: 1 addition & 1 deletion client/app/pages/groups/list.js
Original file line number Diff line number Diff line change
@@ -1,4 +1,4 @@
import settingsMenu from '@/lib/settings-menu';
import settingsMenu from '@/services/settingsMenu';
import { Paginator } from '@/lib/pagination';
import template from './list.html';

Expand Down
2 changes: 1 addition & 1 deletion client/app/pages/query-snippets/list.js
Original file line number Diff line number Diff line change
@@ -1,4 +1,4 @@
import settingsMenu from '@/lib/settings-menu';
import settingsMenu from '@/services/settingsMenu';
import { Paginator } from '@/lib/pagination';
import template from './list.html';

Expand Down
2 changes: 1 addition & 1 deletion client/app/pages/settings/organization.js
Original file line number Diff line number Diff line change
@@ -1,4 +1,4 @@
import settingsMenu from '@/lib/settings-menu';
import settingsMenu from '@/services/settingsMenu';
import template from './organization.html';

function OrganizationSettingsCtrl($http, toastr, clientConfig, Events) {
Expand Down
4 changes: 2 additions & 2 deletions client/app/pages/users/list.js
Original file line number Diff line number Diff line change
@@ -1,6 +1,6 @@
import { extend } from 'lodash';
import ListCtrl from '@/lib/list-ctrl';
import settingsMenu from '@/lib/settings-menu';
import settingsMenu from '@/services/settingsMenu';
import template from './list.html';

class UsersListCtrl extends ListCtrl {
Expand Down Expand Up @@ -33,7 +33,7 @@ export default function init(ngModule) {
permission: 'list_users',
title: 'Users',
path: 'users',
isActive: $location => $location.path().startsWith('/users') && $location.path() !== '/users/me',
isActive: path => path.startsWith('/users') && (path !== '/users/me'),
order: 2,
});

Expand Down
2 changes: 1 addition & 1 deletion client/app/pages/users/show.js
Original file line number Diff line number Diff line change
@@ -1,5 +1,5 @@
import { each } from 'lodash';
import settingsMenu from '@/lib/settings-menu';
import settingsMenu from '@/services/settingsMenu';
import { absoluteUrl } from '@/services/utils';
import template from './show.html';
import './settings.less';
Expand Down
31 changes: 31 additions & 0 deletions client/app/services/settingsMenu.js
Original file line number Diff line number Diff line change
@@ -0,0 +1,31 @@
import { isFunction, extend, omit, sortBy } from 'lodash';

class SettingsMenuItem {
constructor(menuItem) {
extend(
this,
{ pathPrefix: `/${menuItem.path}` },
omit(menuItem, ['isActive']),
);
if (isFunction(menuItem.isActive)) {
this.isActive = menuItem.isActive;
}
}

isActive(path) {
return path.startsWith(this.pathPrefix);
}
}

class SettingsMenu {
constructor() {
this.items = [];
}

add(item) {
this.items.push(new SettingsMenuItem(item));
this.items = sortBy(this.items, 'order');
}
}

export default new SettingsMenu();

0 comments on commit 1fa5867

Please sign in to comment.