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()); }
void mmBillsDepositsPanel::sortTable() { std::sort(bills_.begin(), bills_.end()); switch (listCtrlAccount_->m_selected_col) { case COL_ID: std::stable_sort(bills_.begin(), bills_.end(), SorterByBDID()); break; case COL_PAYMENT_DATE: std::stable_sort(bills_.begin(), bills_.end(), SorterByNEXTOCCURRENCEDATE()); break; case COL_DUE_DATE: std::stable_sort(bills_.begin(), bills_.end(), SorterByTRANSDATE()); break; case COL_ACCOUNT: std::stable_sort(bills_.begin(), bills_.end(), SorterByACCOUNTNAME()); break; case COL_PAYEE: std::stable_sort(bills_.begin(), bills_.end(), SorterByPAYEENAME()); break; case COL_STATUS: std::stable_sort(bills_.begin(), bills_.end(), SorterBySTATUS()); break; case COL_CATEGORY: std::stable_sort(bills_.begin(), bills_.end(), SorterByCATEGNAME()); break; case COL_TYPE: std::stable_sort(bills_.begin(), bills_.end(), SorterByTRANSCODE()); break; case COL_AMOUNT: std::stable_sort(bills_.begin(), bills_.end(), SorterByTRANSAMOUNT()); break; case COL_FREQUENCY: std::stable_sort(bills_.begin(), bills_.end() , [&](const Model_Billsdeposits::Full_Data& x, const Model_Billsdeposits::Full_Data& y) { wxString x_text = this->GetFrequency(&x); wxString y_text = this->GetFrequency(&y); return x_text < y_text; }); break; case COL_REPEATS: std::stable_sort(bills_.begin(), bills_.end(), SorterByREPEATS()); break; case COL_DAYS: std::stable_sort(bills_.begin(), bills_.end() , [&](const Model_Billsdeposits::Data& x, const Model_Billsdeposits::Data& y) { bool x_useText = false; wxString x_text = this->GetRemainingDays(&x); long x_num = 0; if (isdigit(x_text[0])) { x_num = wxAtoi(x_text); wxString removed; if (x_text.EndsWith(wxString("!"), &removed)) x_num = -x_num; } else x_useText = true; bool y_useText = false; wxString y_text = this->GetRemainingDays(&y); long y_num = 0; if (isdigit(y_text[0])) { y_num = wxAtoi(y_text); wxString removed; if (y_text.EndsWith(wxString("!"), &removed)) y_num = -y_num; } else y_useText = true; return ((!x_useText && !y_useText) ? x_num < y_num : x_text < y_text); }); break; case COL_NOTES: std::stable_sort(bills_.begin(), bills_.end(), SorterByNOTES()); break; default: break; } if (!listCtrlAccount_->m_asc) std::reverse(bills_.begin(), bills_.end()); }