diff --git a/src/js/components/List.js b/src/js/components/List.js index d9ce57cc..8682edb0 100755 --- a/src/js/components/List.js +++ b/src/js/components/List.js @@ -22,7 +22,7 @@ export default class List extends React.Component{ } renderHeader(){ - if( !this.props.columns ) return null + if (!this.props.columns || this.props.noheader) return null return (
@@ -39,31 +39,35 @@ export default class List extends React.Component{ var key = key_string.split('.') var value = row - for( var i = 0; i < key.length; i++ ){ - if( typeof(value[key[i]]) !== 'undefined' ){ - value = value[key[i]] - }else{ + for (var i = 0; i < key.length; i++) { + if (typeof(value[key[i]]) === 'undefined' || value[key[i]].trim() == '') { return - + } else { + value = value[key[i]] } } - if( key_string === 'owner' ) return {value.id} - if( key[0] === 'artists' ) return - if( value === true ) return - if( typeof(value) === 'number' ) return {value.toLocaleString()} + if (key_string === 'owner') return {value.id} + if (key[0] === 'artists') return + if (value === true) return + if (typeof(value) === 'number') return {value.toLocaleString()} return {value} } render(){ - if( !this.props.rows ) return null + if (!this.props.rows) return null return (
{ this.renderHeader() } { this.props.rows.map( (row, row_index) => { + + var className = 'list-item' + if( row.type ) className += ' '+row.type + return ( -
this.handleClick(e, row.uri)} className="list-item cf" key={row_index}> +
this.handleClick(e, row.uri)} className={className} key={row_index}> { this.props.columns.map( (col, col_index) => { return ( diff --git a/src/js/components/TrackList.js b/src/js/components/TrackList.js index 2149bfe5..426198b9 100755 --- a/src/js/components/TrackList.js +++ b/src/js/components/TrackList.js @@ -231,18 +231,26 @@ class TrackList extends React.Component{ // by default, do nothing } + renderHeader(){ + if( this.props.noheader ) return null + + return ( +
+ Name + Artists + Album + Length +
+ ) + } + render(){ if( !this.state.tracks ) return null let self = this; return (
-
- Name - Artists - Album - Length -
+ { this.renderHeader() } { this.state.tracks.map( (track, index) => { diff --git a/src/js/views/library/LibraryLocalDirectory.js b/src/js/views/library/LibraryLocalDirectory.js index c35281ec..b012a186 100755 --- a/src/js/views/library/LibraryLocalDirectory.js +++ b/src/js/views/library/LibraryLocalDirectory.js @@ -3,9 +3,11 @@ import React, { PropTypes } from 'react' import { connect } from 'react-redux' import { bindActionCreators } from 'redux' import { Link } from 'react-router' +import FontAwesome from 'react-fontawesome' import Header from '../../components/Header' import List from '../../components/List' +import TrackList from '../../components/TrackList' import * as mopidyActions from '../../services/mopidy/actions' import * as spotifyActions from '../../services/spotify/actions' @@ -40,27 +42,52 @@ class LibraryLocalDirectory extends React.Component{ } } + arrange_directory( directory ){ + var folders = [] + var tracks = [] + + for (var i = 0; i < directory.length; i++) { + if (directory[i].type && directory[i].type == 'track') { + tracks.push( directory[i] ) + } else { + folders.push( directory[i] ) + } + } + + return { + folders: folders, + tracks: tracks + } + } + render(){ if( !this.props.directory ) return null + var items = this.arrange_directory( this.props.directory ) + + var actions = null + if (this.props.params.uri != 'local:directory' ){ + actions = ( + + ) + } + return (
-
+
- + + +
); } } - -/** - * Export our component - * - * We also integrate our global store, using connect() - **/ - const mapStateToProps = (state, ownProps) => { return { mopidy_connected: state.mopidy.connected,