GnuCashew ~ GnuCash Enabled Web
GCW
RawTableWidget_impl.h
Go to the documentation of this file.
1 #line 2 "src/Gui/RawTableWidget_impl.h"
2 
3 #ifndef __GUI_RAWTABLEWIDGETIMPL_H___
4 #define __GUI_RAWTABLEWIDGETIMPL_H___
5 
6 #include <Wt/WVBoxLayout.h>
7 
8 template <class C>
10 RawTableWidget( const std::string & _viewName )
11 {
12  /*
13  ** Look in gcw.css for styling.
14  **
15  */
16  addStyleClass( "RawTableWidget_" + _viewName );
17 
18  /*
19  ** use a layout manager to install the table view into, so
20  ** that the widget will fit and scroll properly.
21  **
22  */
23  auto lw = setLayout( std::make_unique< Wt::WVBoxLayout >() );
24 
25  auto tb = std::make_unique< Wt::WToolBar >();
26  m_toolBar = tb.get();
27 
28  auto w_ = std::make_unique< Wt::WLineEdit >();
29  auto lineEdit = w_.get();
30  m_toolBar-> addWidget( std::move( w_ ), Wt::AlignmentFlag::Right );
31  lineEdit-> setPlaceholderText( "Search" );
32 
33  /*
34  ** Configure the table view.
35  **
36  */
37  auto tv = std::make_unique< GCW::Gui::TableView >();
38  m_tableView = tv.get();
39  tableView()-> setSortingEnabled ( true );
40  tableView()-> setAlternatingRowColors ( true );
41  tableView()-> setSelectionBehavior ( Wt::SelectionBehavior::Rows );
42  tableView()-> setSelectionMode ( Wt::SelectionMode::Single );
43  tableView()-> setEditTriggers ( Wt::EditTrigger::None /* SingleClicked */ );
44 // tableView()-> setEditOptions ( Wt::EditOption::SingleEditor | Wt::EditOption::SaveWhenClosed ); // FIXME: this should probably be: MultipleEditor | LeaveEditorsOpen so we can open all editors on a single entry
45 
46  auto sb = std::make_unique< Wt::WContainerWidget >();
47  m_statusBar = sb.get();
48 
49  lw-> addWidget( std::move( tb ) );
50  lw-> addWidget( std::move( tv ), 1 );
51  lw-> addWidget( std::move( sb ) );
52 
53 } // endSlotsWidget()
54 
55 template <class C>
56 auto
58 load()-> void
59 {
61 
62  loadData();
63 
64  m_statusBar-> addNew< Wt::WText >( Wt::WString( "{1} Rows" ).arg( tableView()-> model()-> rowCount() ) );
65 
66 } // endload()-> void
67 
68 template <class C>
69 auto
71 loadData()-> void
72 {
73  Wt::Dbo::Transaction t( GCW::app()-> gnucashew_session() );
74 
75  auto query =
76  GCW::app()-> gnucashew_session().find< typename C::Item >()
77 // .orderBy( "id" )
78  ;
79 
80  m_model = std::make_shared< Model >();
81  m_model-> setQuery( query );
82  m_model-> reload();
83  m_model-> addAllFieldsAsColumns();
84 
85  tableView()-> setModel( m_model );
86 
87 #ifdef NEVER
88  // 0 = Date
89  tableView()-> setColumnWidth ( 0, "150px" );
90  tableView()-> setHeaderAlignment( 0, Wt::AlignmentFlag::Right );
91  tableView()-> setColumnAlignment( 0, Wt::AlignmentFlag::Right );
92 
93  // 1 = Action/Num
94  tableView()-> setColumnWidth ( 1, "50px" );
95  tableView()-> setHeaderAlignment( 1, Wt::AlignmentFlag::Center );
96  tableView()-> setColumnAlignment( 1, Wt::AlignmentFlag::Center );
97 
98  // 2 = Memo/Description
99  tableView()-> setColumnWidth ( 2, "99%" );
100  tableView()-> setHeaderAlignment( 2, Wt::AlignmentFlag::Left );
101  tableView()-> setColumnAlignment( 2, Wt::AlignmentFlag::Left );
102 
103  // 3 = Account/Transfer
104  tableView()-> setColumnWidth ( 3, "200px" );
105  tableView()-> setHeaderAlignment( 3, Wt::AlignmentFlag::Right );
106  tableView()-> setColumnAlignment( 3, Wt::AlignmentFlag::Right );
107 
108  // 4 = Reconciliation
109  tableView()-> setColumnWidth ( 4, "25px" );
110  tableView()-> setHeaderAlignment( 4, Wt::AlignmentFlag::Center );
111  tableView()-> setColumnAlignment( 4, Wt::AlignmentFlag::Center );
112 
113  // 5 = Debit
114  tableView()-> setColumnWidth ( 5, "100px" );
115  tableView()-> setHeaderAlignment( 5, Wt::AlignmentFlag::Right );
116  tableView()-> setColumnAlignment( 5, Wt::AlignmentFlag::Right );
117 
118  // 6 = Credit
119  tableView()-> setColumnWidth ( 6, "100px" );
120  tableView()-> setHeaderAlignment( 6, Wt::AlignmentFlag::Right );
121  tableView()-> setColumnAlignment( 6, Wt::AlignmentFlag::Right );
122 
123  // 7 = Balance
124  tableView()-> setColumnWidth ( 7, "100px" );
125  tableView()-> setHeaderAlignment( 7, Wt::AlignmentFlag::Right );
126  tableView()-> setColumnAlignment( 7, Wt::AlignmentFlag::Right );
127 
128  auto lastIndex = model()-> index( model()-> rowCount() -1, 0 );
129  tableView()-> scrollTo( lastIndex );
130  tableView()-> edit( lastIndex );
131 #endif
132 
133 } // endloadData()-> void
134 
135 
136 #endif // __GUI_RAWTABLEWIDGETIMPL_H___
137 
138 
RawTableWidget(const std::string &_viewName)
Constructor.
auto load(const std::string &_guid) -> Item::Ptr
Load Account by GUID.
Definition: Accounts.cpp:135
App * app()
Definition: App.cpp:67