void mmAssetsPanel::sortTable() { std::sort(this->m_assets.begin(), this->m_assets.end()); std::stable_sort(this->m_assets.begin(), this->m_assets.end(), SorterBySTARTDATE()); switch (this->m_listCtrlAssets->m_selected_col) { case COL_ID: std::stable_sort(this->m_assets.begin(), this->m_assets.end(), SorterByASSETID()); break; case COL_NAME: std::stable_sort(this->m_assets.begin(), this->m_assets.end(), SorterByASSETNAME()); break; case COL_TYPE: std::stable_sort(this->m_assets.begin(), this->m_assets.end(), SorterByASSETTYPE()); break; case COL_VALUE_INITIAL: std::stable_sort(this->m_assets.begin(), this->m_assets.end(), SorterByVALUE()); break; case COL_VALUE_CURRENT: std::stable_sort(this->m_assets.begin(), this->m_assets.end() , [](const Model_Asset::Data& x, const Model_Asset::Data& y) { return Model_Asset::value(x) < Model_Asset::value(y); }); break; case COL_DATE: break; case COL_NOTES: std::stable_sort(this->m_assets.begin(), this->m_assets.end(), SorterByNOTES()); default: break; } if (!this->m_listCtrlAssets->m_asc) std::reverse(this->m_assets.begin(), this->m_assets.end()); }
void StocksListCtrl::sortTable() { std::sort(m_stocks.begin(), m_stocks.end()); switch (m_selected_col) { case StocksListCtrl::COL_DATE: std::stable_sort(m_stocks.begin(), m_stocks.end(), SorterByPURCHASEDATE()); break; case StocksListCtrl::COL_NAME: std::stable_sort(m_stocks.begin(), m_stocks.end(), SorterBySTOCKNAME()); break; case StocksListCtrl::COL_NUMBER: std::stable_sort(m_stocks.begin(), m_stocks.end(), SorterByNUMSHARES()); break; case StocksListCtrl::COL_VALUE: std::stable_sort(m_stocks.begin(), m_stocks.end(), SorterByVALUE()); break; case StocksListCtrl::COL_GAIN_LOSS: std::stable_sort(m_stocks.begin(), m_stocks.end() , [](const Model_Stock::Data& x, const Model_Stock::Data& y) { double valueX = x.VALUE - ((x.NUMSHARES * x.PURCHASEPRICE) + x.COMMISSION); double valueY = y.VALUE - ((y.NUMSHARES * y.PURCHASEPRICE) + y.COMMISSION); return valueX < valueY; }); break; case StocksListCtrl::COL_CURRENT: std::stable_sort(m_stocks.begin(), m_stocks.end(), SorterByCURRENTPRICE()); break; case StocksListCtrl::COL_NOTES: std::stable_sort(m_stocks.begin(), m_stocks.end(), SorterByNOTES()); break; default: break; } if (!m_asc) std::reverse(m_stocks.begin(), m_stocks.end()); }