- Timestamp:
- 01/26/15 15:12:46 (9 years ago)
- File:
-
- 1 edited
Legend:
- Unmodified
- Added
- Removed
-
SRUAggregator/trunk/src/main/resources/assets/js/corpora.jsx
r5931 r5954 25 25 26 26 handleChange: function(event) { 27 this.setState({query: event.target.value}); 28 this.props.search(event.target.value); 27 var query = event.target.value; 28 this.setState({query: query}); 29 30 if (query.length === 0 || 2 <= query.length) { 31 this.props.search(query); 32 } 29 33 event.stopPropagation(); 30 34 }, … … 51 55 }, 52 56 53 toggleSelection: function (corpus ) {57 toggleSelection: function (corpus, e) { 54 58 var s = !corpus.selected; 55 59 this.props.corpora.recurseCorpus(corpus, function(c) { c.selected = s; }); 56 60 this.props.corpora.update(); 61 this.stop(e); 57 62 }, 58 63 … … 76 81 }; 77 82 78 this.props.corpora.recurse(function(corpus) { corpus.subCorpora.sort(sortFn); });79 this.props.corpora.corpora.sort(sortFn);80 81 83 query = query.toLowerCase(); 82 var querytokens = query.split(" ");83 84 if (!query) { 84 85 this.props.corpora.recurse(function(corpus) {corpus.priority = 1; }); … … 93 94 94 95 // find priority for each corpus 96 var querytokens = query.split(" ").filter(function(x){ return x.length > 0; }); 95 97 this.props.corpora.recurse(function(corpus){ 96 98 var title = corpus.title ? corpus.title : corpus.displayName; … … 121 123 }.bind(this)); 122 124 123 // ensure root corpora have nonnull priority124 this.props.corpora.recurse(function(corpus){125 if (corpus.subCorpora){126 corpus.subCorpora.forEach(function(subcorpus){127 if (subcorpus.priority > 0 && corpus.priority === 0)128 corpus.priority ++;129 } );125 // ensure parents of visible corpora are also visible; maximum depth = 3 126 var isVisibleFn = function(corpus){ return corpus.priority > 0; }; 127 var parentBooster = function(corpus){ 128 if (corpus.priority <= 0 && corpus.subCorpora) { 129 if (corpus.subCorpora.some(isVisibleFn)) { 130 corpus.priority = 0.5; 131 } 130 132 } 131 }); 133 }; 134 for (var i = 3; i > 0; i --) { 135 this.props.corpora.recurse(parentBooster); 136 } 132 137 133 138 this.props.corpora.recurse(function(corpus) { corpus.subCorpora.sort(sortFn); }); … … 136 141 // display 137 142 this.props.corpora.update(); 138 // console.log("corpus search done", query); 143 }, 144 145 stop: function(e) { 146 e.stopPropagation(); 139 147 }, 140 148 … … 167 175 <span className="glyphicon glyphicon-plus" aria-hidden="true"/> 168 176 } 169 {corpus.expanded ? " Collapse ":" Expand "} {corpus.subCorpora.length} subcollections177 {corpus.expanded ? " Collapse ":" Expand "} ({corpus.subCorpora.length} subcollections) 170 178 </a> 171 179 </div>; … … 179 187 }, 180 188 189 renderFilteredMessage: function() { 190 var total = 0; 191 var visible = 0; 192 this.props.corpora.recurse(function(corpus){ 193 if (corpus.visible) { 194 total ++; 195 if (corpus.priority > 0) { 196 visible++; 197 } 198 } 199 }); 200 if (visible === total) { 201 return false; 202 } 203 return <div> Showing {visible} out of {total} (sub)collections. </div>; 204 }, 205 181 206 renderCorpus: function(level, minmaxp, corpus) { 182 if (!corpus.visible ) {207 if (!corpus.visible || corpus.priority <= 0) { 183 208 return false; 184 209 } … … 187 212 var corpusContainerClass = "corpus-container "+(corpus.priority>0?"":"dimmed"); 188 213 189 var hue = 80 * corpus.priority / minmaxp[1]; 190 if (corpus.priority > 0) { hue += 40; } 214 var hue = 120 * corpus.priority / minmaxp[1]; 191 215 var color = minmaxp[0] === minmaxp[1] ? 'transparent' : 'hsl('+hue+', 50%, 50%)'; 192 var priorityStyle = {paddingBottom: 4, paddingLeft: 2, borderBottom: ' 2px solid '+color };193 var expansive = corpus.expanded ? { }216 var priorityStyle = {paddingBottom: 4, paddingLeft: 2, borderBottom: '3px solid '+color }; 217 var expansive = corpus.expanded ? {overflow:'hidden'} 194 218 : {whiteSpace:'nowrap', overflow:'hidden', textOverflow: 'ellipsis'}; 195 219 var title = corpus.title || corpus.displayName; … … 203 227 <div className="col-sm-8 vcenter"> 204 228 <div style={indent}> 205 <h3 style={expansive}> 206 { corpus.landingPage ? <a href={corpus.landingPage}>{title}</a>: title } 229 <h3 style={expansive}> 230 {title} 231 { corpus.landingPage ? 232 <a href={corpus.landingPage} onClick={this.stop}> 233 <span style={{fontSize:12}}> â Homepage </span><i className="fa fa-home"/> 234 </a>: false} 207 235 </h3> 208 236 237 209 238 <p style={expansive}>{corpus.description}</p> 239 {this.renderExpansion(corpus)} 210 240 </div> 211 {this.renderExpansion(corpus)}212 241 </div> 213 242 <div className="col-sm-3 vcenter"> … … 234 263 </div> 235 264 <div className="float-right inline"> 236 <div className="inline" style={{ marginRight: 20 }} >237 <SearchCorpusBox search={this.searchCorpus}/>238 </div>239 265 <button className="btn btn-default" style={{ marginRight: 10 }} onClick={this.selectAll.bind(this,true)}> 240 266 {" Select all"}</button> … … 242 268 {" Deselect all"}</button> 243 269 </div> 270 <div className="float-right inline"> 271 <div className="inline" style={{ marginRight: 20 }} > 272 <SearchCorpusBox search={this.searchCorpus}/> 273 {this.renderFilteredMessage()} 274 </div> 275 </div> 244 276 </div> 277 245 278 {this.props.corpora.corpora.map(this.renderCorpus.bind(this, 0, minmaxp))} 246 279 </div>;
Note: See TracChangeset
for help on using the changeset viewer.