Definition at line 283 of file TableDataSource.h. References Impala::Application::VideoExcel::compare_double(), Impala::Application::VideoExcel::compare_int(), Impala::Application::VideoExcel::compare_string_nocase(), DoUpdateRowsEvent(), DoUpdateSelectionEvent(), DoUpdateSortEvent(), GetDoubleDataByID(), GetIntDataByID(), GetNormalizedDataByID(), GetTextDataByID(), GetTotalRows(), ILOG_DEBUG, IsFiltered(), mFilteredRows, mSortAscending, mSortColumn, mSortSequence, mSortType, mVisibleRows, TYPE_DOUBLE, TYPE_INT, TYPE_NORMALIZEDVALUE, and TYPE_TEXT. Referenced by ApplyFilters(), and SetSortColumn(). 00284 { 00285 ILOG_DEBUG("re-sorting to " << mSortColumn << "/" << mSortAscending); 00286 mVisibleRows.clear(); 00287 if (mSortType == TYPE_TEXT) 00288 { 00289 std::list < std::pair <String, int> > sortthis; 00290 for (int i=0; i<GetTotalRows();i++) 00291 { 00292 if (!IsFiltered(i)) 00293 { 00294 String txt = GetTextDataByID(mSortColumn, i); 00295 sortthis.push_back( std::make_pair(txt, i) ); 00296 mVisibleRows[i] = true; 00297 } 00298 else 00299 mVisibleRows[i] = false; 00300 } 00301 mFilteredRows = sortthis.size(); 00302 sortthis.sort(compare_string_nocase); 00303 ILOG_DEBUG("filtered # of rows: " << mFilteredRows); 00304 00305 if (!mSortAscending) 00306 sortthis.reverse(); 00307 mSortSequence.clear(); 00308 00309 std::list<std::pair <String, int> >::iterator it; 00310 for (it=sortthis.begin(); it!=sortthis.end(); ++it) 00311 mSortSequence.push_back(it->second); 00312 } 00313 if (mSortType == TYPE_NORMALIZEDVALUE || mSortType == TYPE_DOUBLE) 00314 { 00315 std::list < std::pair <double, int> > sortthis; 00316 for (int i=0; i<GetTotalRows();i++) 00317 { 00318 if (!IsFiltered(i)) 00319 { 00320 double dVal; 00321 if (mSortType == TYPE_NORMALIZEDVALUE) 00322 dVal = GetNormalizedDataByID(mSortColumn, i); 00323 else 00324 dVal = GetDoubleDataByID(mSortColumn, i); 00325 sortthis.push_back( std::make_pair(dVal, i) ); 00326 mVisibleRows[i] = true; 00327 } 00328 else 00329 mVisibleRows[i] = false; 00330 } 00331 mFilteredRows = sortthis.size(); 00332 sortthis.sort(compare_double); 00333 ILOG_DEBUG("filtered # of rows: " << mFilteredRows); 00334 00335 if (mSortAscending) 00336 sortthis.reverse(); 00337 mSortSequence.clear(); 00338 00339 std::list<std::pair <double, int> >::iterator it; 00340 for (it=sortthis.begin(); it!=sortthis.end(); ++it) 00341 mSortSequence.push_back(it->second); 00342 } 00343 if (mSortType == TYPE_INT) 00344 { 00345 std::list < std::pair <int, int> > sortthis; 00346 for (int i=0; i<GetTotalRows();i++) 00347 { 00348 if (!IsFiltered(i)) 00349 { 00350 int iVal = GetIntDataByID(mSortColumn, i); 00351 sortthis.push_back( std::make_pair(iVal, i) ); 00352 mVisibleRows[i] = true; 00353 } 00354 else 00355 mVisibleRows[i] = false; 00356 } 00357 mFilteredRows = sortthis.size(); 00358 sortthis.sort(compare_int); 00359 ILOG_DEBUG("filtered # of rows: " << mFilteredRows); 00360 00361 if (mSortAscending) 00362 sortthis.reverse(); 00363 mSortSequence.clear(); 00364 00365 std::list<std::pair <int, int> >::iterator it; 00366 for (it=sortthis.begin(); it!=sortthis.end(); ++it) 00367 mSortSequence.push_back(it->second); 00368 } 00369 ILOG_DEBUG("sorting completed."); 00370 DoUpdateSortEvent(); 00371 DoUpdateSelectionEvent(); 00372 DoUpdateRowsEvent(); 00373 }
Here is the call graph for this function:
|