// Copyright 2015, 2016 Parity Technologies (UK) Ltd. // This file is part of Parity. // Parity is free software: you can redistribute it and/or modify // it under the terms of the GNU General Public License as published by // the Free Software Foundation, either version 3 of the License, or // (at your option) any later version. // Parity is distributed in the hope that it will be useful, // but WITHOUT ANY WARRANTY; without even the implied warranty of // MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the // GNU General Public License for more details. // You should have received a copy of the GNU General Public License // along with Parity. If not, see . import React, { Component, PropTypes } from 'react'; import { FormattedMessage } from 'react-intl'; import { MenuItem } from 'material-ui'; import LogLevel from 'loglevel'; import { LOG_KEYS } from '~/config'; import { Select, Container, LanguageSelector } from '~/ui'; import layout from '../layout.css'; export default class Parity extends Component { static contextTypes = { api: PropTypes.object.isRequired }; state = { loglevels: {}, mode: 'active', selectValues: [] }; componentWillMount () { this.loadMode(); this.loadLogLevels(); this.setSelectValues(); } loadLogLevels () { if (process.env.NODE_ENV === 'production') { return null; } const nextState = { ...this.state.logLevels }; Object.keys(LOG_KEYS).map((logKey) => { const log = LOG_KEYS[logKey]; const logger = LogLevel.getLogger(log.path); const level = logger.getLevel(); nextState[logKey] = { level, log }; }); this.setState({ logLevels: nextState }); } setSelectValues () { if (process.env.NODE_ENV === 'production') { return null; } const selectValues = Object.keys(LogLevel.levels).map((levelName) => { const value = LogLevel.levels[levelName]; return { name: levelName, value }; }); this.setState({ selectValues }); } render () { return ( }>
{ this.renderModes() }
{ this.renderLogsConfig() }
); } renderLogsConfig () { if (process.env.NODE_ENV === 'production') { return null; } return (
{ this.renderLogsLevels() }
); } renderLogsLevels () { if (process.env.NODE_ENV === 'production') { return null; } const { logLevels, selectValues } = this.state; return Object.keys(logLevels).map((logKey) => { const { level, log } = logLevels[logKey]; const { path, desc } = log; const onChange = (_, index) => { const nextLevel = Object.values(selectValues)[index].value; LogLevel.getLogger(path).setLevel(nextLevel); this.loadLogLevels(); }; return (

{ desc }

} hint={ } value={ mode } onChange={ this.onChangeMode }> { renderItem('active', ) } { renderItem('passive', ) } { renderItem('dark', ) } { renderItem('offline', ) } ); } onChangeMode = (event, index, mode) => { const { api } = this.context; api.parity .setMode(mode) .then((result) => { if (result) { this.setState({ mode }); } }) .catch((error) => { console.warn('onChangeMode', error); }); } loadMode () { const { api } = this.context; api.parity .mode() .then((mode) => { this.setState({ mode }); }) .catch((error) => { console.warn('loadMode', error); }); } }