PLT-11 adding config for logs to UI

Этот коммит содержится в:
=Corey Hulen
2015-09-17 22:00:33 -07:00
родитель 44714dfcb1
Коммит 804b696bdc
17 изменённых файлов: 208 добавлений и 293 удалений

Просмотреть файл

@@ -1,14 +1,12 @@
// Copyright (c) 2015 Spinpunch, Inc. All Rights Reserved.
// See License.txt for license information.
var Navbar = require('../../components/navbar.jsx');
var AdminSidebar = require('./admin_sidebar.jsx');
var AdminStore = require('../../stores/admin_store.jsx');
var AsyncClient = require('../../utils/async_client.jsx');
var LoadingScreen = require('../loading_screen.jsx');
var EmailSettingsTab = require('./email_settings.jsx');
var JobsSettingsTab = require('./jobs_settings.jsx');
var LogSettingsTab = require('./log_settings.jsx');
var LogsTab = require('./logs.jsx');
@@ -51,12 +49,10 @@ export default class AdminController extends React.Component {
if (this.state.config != null) {
if (this.state.selected === 'email_settings') {
tab = <EmailSettingsTab config={this.state.config} />;
} else if (this.state.selected === 'job_settings') {
tab = <JobsSettingsTab config={this.state.config} />;
} else if (this.state.selected === 'logs') {
tab = <LogsTab />;
} else if (this.state.selected === 'log_settings') {
tab = <LogSettingsTab config={this.state.config} />;
} else if (this.state.selected === 'logs') {
tab = <LogsTab />;
}
}
@@ -72,7 +68,6 @@ export default class AdminController extends React.Component {
/>
<div className='inner__wrap channel__wrap'>
<div className='row header'>
<Navbar teamDisplayName='Admin Console' />
</div>
<div className='row main'>
<div

Просмотреть файл

@@ -0,0 +1,102 @@
// Copyright (c) 2015 Spinpunch, Inc. All Rights Reserved.
// See License.txt for license information.
var Utils = require('../../utils/utils.jsx');
var Client = require('../../utils/client.jsx');
var TeamStore = require('../../stores/team_store.jsx');
var Constants = require('../../utils/constants.jsx');
function getStateFromStores() {
return {currentTeam: TeamStore.getCurrent()};
}
export default class AdminNavbarDropdown extends React.Component {
constructor(props) {
super(props);
this.blockToggle = false;
this.handleLogoutClick = this.handleLogoutClick.bind(this);
this.state = getStateFromStores();
}
handleLogoutClick(e) {
e.preventDefault();
Client.logout();
}
componentDidMount() {
$(React.findDOMNode(this.refs.dropdown)).on('hide.bs.dropdown', () => {
this.blockToggle = true;
setTimeout(() => {
this.blockToggle = false;
}, 100);
});
}
componentWillUnmount() {
$(React.findDOMNode(this.refs.dropdown)).off('hide.bs.dropdown');
}
render() {
return (
<ul className='nav navbar-nav navbar-right'>
<li
ref='dropdown'
className='dropdown'
>
<a
href='#'
className='dropdown-toggle'
data-toggle='dropdown'
role='button'
aria-expanded='false'
>
<span
className='dropdown__icon'
dangerouslySetInnerHTML={{__html: Constants.MENU_ICON}}
/>
</a>
<ul
className='dropdown-menu'
role='menu'
>
<li>
<a
href={Utils.getWindowLocationOrigin() + '/' + this.state.currentTeam.name}
>
{'Switch to ' + this.state.currentTeam.display_name}
</a>
</li>
<li>
<a
href='#'
onClick={this.handleLogoutClick}
>
{'Logout'}
</a>
</li>
<li className='divider'></li>
<li>
<a
target='_blank'
href='/static/help/help.html'
>
{'Help'}
</a>
</li>
<li>
<a
target='_blank'
href='/static/help/report_problem.html'
>
{'Report a Problem'}
</a>
</li>
</ul>
</li>
</ul>
);
}
}

Просмотреть файл

@@ -1,7 +1,7 @@
// Copyright (c) 2015 Spinpunch, Inc. All Rights Reserved.
// See License.txt for license information.
var SidebarHeader = require('../sidebar_header.jsx');
var AdminSidebarHeader = require('./admin_sidebar_header.jsx');
export default class AdminSidebar extends React.Component {
constructor(props) {
@@ -14,7 +14,8 @@ export default class AdminSidebar extends React.Component {
};
}
handleClick(name) {
handleClick(name, e) {
e.preventDefault();
this.props.selectTab(name);
}
@@ -27,46 +28,13 @@ export default class AdminSidebar extends React.Component {
}
componentDidMount() {
// $('.nav__menu-item').on('click', function clickme(e) {
// e.preventDefault();
// $(this).closest('.sidebar--collapsable').find('.nav__menu-item').removeClass('active');
// $(this).addClass('active');
// $(this).closest('.sidebar--collapsable').find('.nav__sub-menu').addClass('hide');
// $(this).next('.nav__sub-menu').removeClass('hide');
// });
// $('.nav__sub-menu a').on('click', function clickme(e) {
// e.preventDefault();
// $(this).closest('.nav__sub-menu').find('a').removeClass('active');
// $(this).addClass('active');
// });
// $('.nav__sub-menu-item').on('click', function clickme(e) {
// e.preventDefault();
// $(this).closest('.sidebar--collapsable').find('.nav__inner-menu').addClass('hide');
// $(this).closest('li').next('li').find('.nav__inner-menu').removeClass('hide');
// $(this).closest('li').next('li').find('.nav__inner-menu li:first a').addClass('active');
// });
// $('.nav__inner-menu a').on('click', function clickme() {
// $(this).closest('.nav__inner-menu').closest('li').prev('li').find('a').addClass('active');
// });
// $('.nav__sub-menu .menu__close').on('click', function close() {
// var menuItem = $(this).closest('li');
// menuItem.next('li').remove();
// menuItem.remove();
// });
}
render() {
return (
<div className='sidebar--left sidebar--collapsable'>
<div>
<SidebarHeader
teamDisplayName='Admin Console'
teamType='I'
/>
<AdminSidebarHeader />
<ul className='nav nav-pills nav-stacked'>
<li>
<ul className='nav nav__sub-menu'>
@@ -74,7 +42,7 @@ export default class AdminSidebar extends React.Component {
<a
href='#'
className={this.isSelected('email_settings')}
onClick={this.handleClick.bind(null, 'email_settings')}
onClick={this.handleClick.bind(this, 'email_settings')}
>
{'Email Settings'}
</a>
@@ -83,7 +51,7 @@ export default class AdminSidebar extends React.Component {
<a
href='#'
className={this.isSelected('log_settings')}
onClick={this.handleClick.bind(null, 'log_settings')}
onClick={this.handleClick.bind(this, 'log_settings')}
>
{'Log Settings'}
</a>
@@ -92,20 +60,11 @@ export default class AdminSidebar extends React.Component {
<a
href='#'
className={this.isSelected('logs')}
onClick={this.handleClick.bind(null, 'logs')}
onClick={this.handleClick.bind(this, 'logs')}
>
{'Logs'}
</a>
</li>
<li>
<a
href='#'
className={this.isSelected('job_settings')}
onClick={this.handleClick.bind(null, 'job_settings')}
>
{'Job Settings'}
</a>
</li>
</ul>
</li>
</ul>

Просмотреть файл

@@ -1,8 +1,8 @@
// Copyright (c) 2015 Spinpunch, Inc. All Rights Reserved.
// See License.txt for license information.
var NavbarDropdown = require('./navbar_dropdown.jsx');
var UserStore = require('../stores/user_store.jsx');
var AdminNavbarDropdown = require('./admin_navbar_dropdown.jsx');
var UserStore = require('../../stores/user_store.jsx');
export default class SidebarHeader extends React.Component {
constructor(props) {
@@ -12,13 +12,18 @@ export default class SidebarHeader extends React.Component {
this.state = {};
}
toggleDropdown() {
toggleDropdown(e) {
e.preventDefault();
if (this.refs.dropdown.blockToggle) {
this.refs.dropdown.blockToggle = false;
return;
}
$('.team__header').find('.dropdown-toggle').dropdown('toggle');
}
render() {
var me = UserStore.getCurrentUser();
var profilePicture = null;
@@ -45,23 +50,11 @@ export default class SidebarHeader extends React.Component {
{profilePicture}
<div className='header__info'>
<div className='user__name'>{'@' + me.username}</div>
<div className='team__name'>{this.props.teamDisplayName}</div>
<div className='team__name'>{'System Console'}</div>
</div>
</a>
<NavbarDropdown
ref='dropdown'
teamType={this.props.teamType}
/>
<AdminNavbarDropdown ref='dropdown' />
</div>
);
}
}
SidebarHeader.defaultProps = {
teamDisplayName: global.window.config.SiteName,
teamType: ''
};
SidebarHeader.propTypes = {
teamDisplayName: React.PropTypes.string,
teamType: React.PropTypes.string
};
}

Просмотреть файл

@@ -1,183 +0,0 @@
// Copyright (c) 2015 Spinpunch, Inc. All Rights Reserved.
// See License.txt for license information.
export default class Jobs extends React.Component {
constructor(props) {
super(props);
this.state = {
};
}
render() {
return (
<div className='wrapper--fixed'>
<h3>{' ************** JOB Settings'}</h3>
<form
className='form-horizontal'
role='form'
>
<div className='form-group'>
<label
className='control-label col-sm-4'
htmlFor='email'
>
{'Bypass Email: '}
<a
href='#'
data-trigger='hover click'
data-toggle='popover'
data-position='bottom'
data-content={'Here\'s some more help text inside a popover for the Bypass Email field just to show how popovers look.'}
>
{'(?)'}
</a>
</label>
<div className='col-sm-8'>
<label className='radio-inline'>
<input
type='radio'
name='byPassEmail'
value='option1'
/>
{'True'}
</label>
<label className='radio-inline'>
<input
type='radio'
name='byPassEmail'
value='option2'
/>
{'False'}
</label>
<p className='help-text'>{'This is some sample help text for the Bypass Email field'}</p>
</div>
</div>
<div className='form-group'>
<label
className='control-label col-sm-4'
htmlFor='smtpUsername'
>
{'SMTP Username:'}
</label>
<div className='col-sm-8'>
<input
type='email'
className='form-control'
id='smtpUsername'
placeholder='Enter your SMTP username'
value=''
/>
<div className='help-text'>
<div className='alert alert-warning'><i className='fa fa-warning'></i>{' This is some error text for the Bypass Email field'}</div>
</div>
<p className='help-text'>{'This is some sample help text for the SMTP username field'}</p>
</div>
</div>
<div
className='panel-group'
id='accordion'
role='tablist'
aria-multiselectable='true'
>
<div className='panel panel-default'>
<div
className='panel-heading'
role='tab'
id='headingOne'
>
<h3 className='panel-title'>
<a
className='collapsed'
role='button'
data-toggle='collapse'
data-parent='#accordion'
href='#collapseOne'
aria-expanded='true'
aria-controls='collapseOne'
>
{'Advanced Settings '}
<i className='fa fa-plus'></i>
<i className='fa fa-minus'></i>
</a>
</h3>
</div>
<div
id='collapseOne'
className='panel-collapse collapse'
role='tabpanel'
aria-labelledby='headingOne'
>
<div className='panel-body'>
<div className='form-group'>
<label
className='control-label col-sm-4'
htmlFor='feedbackUsername'
>
{'Apple push server:'}
</label>
<div className='col-sm-8'>
<input
type='text'
className='form-control'
id='feedbackUsername'
placeholder='Enter your Apple push server'
value=''
/>
<p className='help-text'>{'This is some sample help text for the Apple push server field'}</p>
</div>
</div>
<div className='form-group'>
<label
className='control-label col-sm-4'
htmlFor='feedbackUsername'
>
{'Apple push certificate public:'}
</label>
<div className='col-sm-8'>
<input
type='text'
className='form-control'
id='feedbackUsername'
placeholder='Enter your public apple push certificate'
value=''
/>
</div>
</div>
<div className='form-group'>
<label
className='control-label col-sm-4'
htmlFor='feedbackUsername'
>
{'Apple push certificate private:'}
</label>
<div className='col-sm-8'>
<input
type='text'
className='form-control'
id='feedbackUsername'
placeholder='Enter your private apple push certificate'
value=''
/>
</div>
</div>
</div>
</div>
</div>
</div>
<div className='form-group'>
<div className='col-sm-12'>
<button
type='submit'
className='btn btn-primary'
>
{'Save'}
</button>
</div>
</div>
</form>
</div>
);
}
}