Files
Iris/src/js/components/DebugInfo.js

160 lines
4.1 KiB
JavaScript
Raw Normal View History

2017-01-29 12:54:06 +13:00
import React from 'react'
2017-01-29 12:54:06 +13:00
import { connect } from 'react-redux'
import Link from './Link'
2017-01-29 12:54:06 +13:00
import { createStore, bindActionCreators } from 'redux'
import * as helpers from '../helpers'
2017-01-29 12:54:06 +13:00
import * as uiActions from '../services/ui/actions'
class DebugInfo extends React.Component{
2017-10-10 13:05:28 +13:00
constructor(props){
2017-01-29 12:54:06 +13:00
super(props);
}
localStorageSize(){
var data = '';
for (var key in window.localStorage){
if(window.localStorage.hasOwnProperty(key)){
data += window.localStorage[key];
}
}
var used = 0;
var total = 5000;
if (data !== ''){
used = ((data.length * 16)/(8 * 1024)).toFixed(2);
}
return {
used: used,
percent: (used / total * 100).toFixed(2)
};
}
2017-03-27 14:23:38 +13:00
renderLoadQueue(){
if (!this.props.ui.load_queue){
return null
}
var load_queue = this.props.ui.load_queue;
var queue = [];
2017-03-27 14:23:38 +13:00
return (
<div className="debug-info-item">
2017-03-27 14:23:38 +13:00
{queue}
</div>
)
}
renderLoadQueue(){
if (!this.props.ui.load_queue){
return <div className="debug-info-item mid_grey-text">Nothing loading</div>;
2017-03-27 14:23:38 +13:00
}
var load_queue = this.props.ui.load_queue
var queue = []
for (var key in load_queue){
if (load_queue.hasOwnProperty(key)){
queue.push(<div key={key}>{load_queue[key]}</div>)
}
}
2017-04-04 18:41:20 +12:00
if (queue.length > 0){
return (
<div className="debug-info-item">
2017-04-04 18:41:20 +12:00
{queue}
</div>
)
} else {
return <div className="debug-info-item mid_grey-text">Nothing loading</div>;
2017-04-04 18:41:20 +12:00
}
2017-03-27 14:23:38 +13:00
}
2017-01-29 12:54:06 +13:00
render(){
var localStorageUsage = this.localStorageSize();
2017-01-29 12:54:06 +13:00
return (
<div className="debug-info">
<div className="debug-info-section">
2018-08-03 08:13:55 +12:00
<h5>Indexes</h5>
<div className="debug-info-item">
Albums: {this.props.core.albums ? Object.keys(this.props.core.albums).length : '0'}
</div>
<div className="debug-info-item">
Artists: {this.props.core.artists ? Object.keys(this.props.core.artists).length : '0'}
</div>
<div className="debug-info-item">
Playlists: {this.props.core.playlists ? Object.keys(this.props.core.playlists).length : '0'}
</div>
<div className="debug-info-item">
Tracks: {this.props.core.tracks ? Object.keys(this.props.core.tracks).length : '0'}
</div>
<div className="debug-info-item">
Users: {this.props.core.users ? Object.keys(this.props.core.users).length : '0'}
</div>
<div className="debug-info-item">
Notifications: {this.props.ui.notifications ? Object.keys(this.props.ui.notifications).length : '0'}
</div>
<div className="debug-info-item">
Processes: {this.props.ui.processes ? Object.keys(this.props.ui.processes).length : '0'}
</div>
<div className="debug-info-item">
Enqueue batches: {this.props.mopidy.enqueue_uris_batches ? this.props.mopidy.enqueue_uris_batches.length : '0'}
</div>
</div>
<div className="debug-info-section">
<h5>Config</h5>
<div className="debug-info-item">
Slim mode: {this.props.ui.slim_mode ? 'on' : 'off'}
</div>
<div className="debug-info-item">
Test mode: {this.props.ui.test_mode ? 'on' : 'off'}
</div>
<div className="debug-info-item">
Touch: {helpers.isTouchDevice() ? 'on' : 'off'}
</div>
2018-08-03 08:13:55 +12:00
<div className="debug-info-item">
LocalStorage usage: {localStorageUsage.used}kb (~{localStorageUsage.percent}%)
</div>
<div className="debug-info-item">
Selected tracks: {this.props.ui.selected_tracks.length}<br />
{
this.props.ui.selected_tracks.map((track_key, index) => {
return (
<div key={track_key+'_'+index}>{track_key}</div>
)
})
}
</div>
2017-01-29 12:54:06 +13:00
</div>
<div className="debug-info-section">
<h5>Load queue</h5>
{this.renderLoadQueue()}
</div>
2017-01-29 12:54:06 +13:00
</div>
);
}
}
const mapStateToProps = (state, ownProps) => {
return {
2017-08-03 16:56:38 +12:00
core: state.core,
2017-05-05 08:31:53 +12:00
ui: state.ui,
mopidy: state.mopidy
2017-01-29 12:54:06 +13:00
}
}
const mapDispatchToProps = (dispatch) => {
return {
uiActions: bindActionCreators(uiActions, dispatch)
}
}
export default connect(mapStateToProps, mapDispatchToProps)(DebugInfo)