import React from 'react'; import ReactDOM from 'react-dom'; import JqxTree from '../../../jqwidgets-react/react_jqxtree.js'; import JqxSplitter from '../../../jqwidgets-react/react_jqxsplitter.js'; import JqxExpander from '../../../jqwidgets-react/react_jqxexpander.js'; import JqxListBox from '../../../jqwidgets-react/react_jqxlistbox.js'; import JqxPanel from '../../../jqwidgets-react/react_jqxpanel.js'; class App extends React.Component { constructor(props) { super(props); this.state = { config: { feeds: { 'CNN.com': 'cnn', 'Geek.com': 'geek', 'ScienceDaily': 'sciencedaily' }, currentFeedContent: {} } }; } componentDidMount () { this.refs.mainSplitter.expand(); let firstItem = this.refs.myTree.getItems()[0].element; this.refs.myTree.expandItem(firstItem); this.refs.myTree.on('select', (event) => { let item = this.refs.myTree.getItem(event.args.element); if(this.state.config['feeds'][item.label] !== undefined) { this.getFeed(this.state.config['feeds'][item.label]); } }); this.refs.myListBox.on('select', (event) => { this.loadContent(event.args.index); }); this.getFeed('sciencedaily'); } getFeed (feed) { feed = 'data/' + feed + '.txt'; this.loadFeed(feed); }; loadFeed (feed, callback) { $.jqx.data.ajax({ 'dataType': 'json', 'url': feed, success: (data) => { let channel = data.rss.channel; this.setState({ config: { feeds: { 'CNN.com': 'cnn', 'Geek.com': 'geek', 'ScienceDaily': 'sciencedaily' }, currentFeedContent: channel.item } }); this.displayFeedList(this.state.config.currentFeedContent); this.displayFeedHeader(channel.title); this.selectFirst(); }, error: (msg) => { } }); }; displayFeedList (items) { let headers = this.getHeaders(items); this.refs.myListBox.source(headers); }; displayFeedHeader (header) { this.refs.feedListExpander.setHeaderContent(header); }; selectFirst () { this.refs.myListBox.selectIndex(0); this.loadContent(0); }; loadContent (index) { let item = this.state.config.currentFeedContent[index]; if (item != null) { this.refs.myPanel.clearcontent(); this.refs.myPanel.prepend('