templates/fos/parcels/daily_transaction.html.twig line 1

Open in your IDE?
  1. {% extends 'fos/base.html.twig' %}
  2. {% block firstnav %}
  3. {{ render(controller('App\\Parcels\\DefaultController::nav')) }}
  4. {% endblock %}
  5. {% block secondnav %}
  6. <!-- Second Nav -->
  7. <nav class="navbar-second navbar navbar-default navbar-static-top" role="navigation">
  8. <div class="container-fluid">
  9. <div class="navbar-header">
  10. <button type="button" class="navbar-toggle collapsed" data-toggle="collapse"
  11. data-target="#bs-example-navbar-collapse-1">
  12. <span class="sr-only">Toggle navigation</span>
  13. <span class="icon-bar"></span>
  14. <span class="icon-bar"></span>
  15. <span class="icon-bar"></span>
  16. </button>
  17. <!-- Brand -->
  18. {% block current %}
  19. <span class="navbar-brand" href="#"><i class="fa fa-gears"></i> Transactions</span>
  20. {% endblock %}
  21. </div>
  22. <div class="collapse navbar-collapse animated fadeIn" id="bs-example-navbar-collapse-1">
  23. <ul class="nav navbar-nav animated fadeIn">
  24. {% block secondarylinkblock %}
  25. {# <li class=""><a href="#"><i class="fa fa-user"></i> My Daily Summary</a></li>
  26. <li class=""><a href="#"><i class="fa fa-users"></i> All Daily Summary</a></li>#}
  27. {#<li><a href="{{ path('new-parcel') }}"><i class="fa fa-plus-circle"></i> Un-Loaded Parcels</a></li>#}
  28. <li class="active"><a href="#"><i class="fa fa-arrow-circle-down"></i> <i class="fa fa-money-bill"></i> All Transactions</a></li>
  29. {% endblock %}
  30. </ul>
  31. <ul class="nav navbar-nav navbar-right">
  32. <li class=""><a></a></li>
  33. {#<li><p class="navbar-text"></p></li>#}
  34. </ul>
  35. </div><!-- /.navbar-collapse -->
  36. </div><!-- /.container-fluid -->
  37. </nav>
  38. {% endblock %}
  39. {% block main %}
  40. <div class="row">
  41. <div class="col">
  42. <table id="transactions"
  43. style="width:100%; font-weight:normal; text-transform: uppercase;"
  44. singleSelect=true
  45. rownumbers=true
  46. pageSize=30
  47. fitColumns=true>
  48. <thead>
  49. <tr>
  50. </tr>
  51. </thead>
  52. </table>
  53. </div>
  54. </div>
  55. {% endblock %}
  56. {% block javascript %}
  57. {#<script type="text/javascript" src="{{ asset('fos/scripts/daily_transactions.js') }}"></script>#}
  58. <script >
  59. $('#transactions').datagrid({
  60. url:'transactions/transaction-list',
  61. method: 'post',
  62. pageSize:20,
  63. singleSelect: true,
  64. rownumbers:true,
  65. remoteFilter:true,
  66. pagination:true,
  67. fitColumns:true,
  68. collapsible:true,
  69. showFooter: true,
  70. loadMsg: 'Loading Transaction',
  71. view: detailview,
  72. detailFormatter: function(index, row) {
  73. return '<div class="ddv" style="padding: 5px 0"></div>';
  74. },
  75. rowStyler: function(index,row){
  76. if (row.is_cancelled === '1'){
  77. return 'background-color:#ff7518;color:#fff;font-weight:bold;';
  78. }
  79. },
  80. onExpandRow: function (index, row) {
  81. var ddv = $(this).datagrid('getRowDetail', index).find('div.ddv');
  82. ddv.panel({
  83. height: 'auto',
  84. border: false,
  85. cache: false,
  86. href: 'transactions/details/' + row.id,
  87. onLoad: function () {
  88. $('#transactions').datagrid('fixDetailRowHeight', index);
  89. }
  90. })
  91. },
  92. /* filterStringify: function(data){
  93. $.map(data, function(item){
  94. if (item.field == 'd.accountDate'){
  95. item.value = $.fn.datebox.defaults.parser(item.value).getTime();
  96. }
  97. });
  98. return JSON.stringify(data);
  99. },*/
  100. columns: [[
  101. {field:'b.id',title:'WayBill',width:20,formatter:function(value,row,index){
  102. return row.id;
  103. }},
  104. {field:'c.account_date',title:'Date',width:20,formatter:function(value,row,index){
  105. return row.account_date;
  106. }},
  107. {field:'d.id',title:'Destination',width:30,formatter:function(value,row,index){
  108. return row.station_name;
  109. }},
  110. {field:'b.sender_name',title:'Sender',width:60,formatter:function(value,row,index){
  111. return row.sender_name;
  112. }},
  113. {field:'b.sender_phone_number',title:'Sender Phone',width:30,formatter:function(value,row,index){
  114. return row.sender_phone_number;
  115. }},
  116. {field:'b.receiver_name',title:'Sending To',width:60,formatter:function(value,row,index){
  117. return row.receiver_name;
  118. }},
  119. {field:'b.receiver_phone_number',title:'Receiver Phone',width:30,formatter:function(value,row,index){
  120. return row.receiver_phone_number;
  121. }},
  122. {field:'a.payment_method',title:'Via',width:30,formatter:function(value,row,index){
  123. return row.payment_method;
  124. }},
  125. {field:'f.transaction_id',title:'MPESA',width:30,formatter:function(value,row,index){
  126. return row.transaction_id;
  127. }},
  128. {field:'a.amount',title:'Amount',width:20,formatter:function(value,row,index){
  129. return row.amount;
  130. }}
  131. ]]
  132. });
  133. $(function(){
  134. var transactionDataGrid = $('#transactions').datagrid();
  135. var isStationLoaded = 0;
  136. var isToStationLoaded = 0;
  137. transactionDataGrid.datagrid('enableFilter', [
  138. {
  139. field:'fromStation',
  140. type: 'combobox',
  141. options:{
  142. method: 'GET',
  143. mode:'remote',
  144. panelHeight: 'auto',
  145. valueField:'id',
  146. textField:'station_name',
  147. url:'/form/stations',
  148. onSelect:function(value){
  149. console.log(value.id);
  150. // alert(value.station_name);
  151. if (value.id === -1){
  152. transactionDataGrid.datagrid('removeFilterRule', 'w.fromStation');
  153. }else {
  154. transactionDataGrid.datagrid('addFilterRule', {
  155. field: 'w.fromStation',
  156. op: 'equal',
  157. value: value.id
  158. });
  159. }
  160. transactionDataGrid.datagrid('doFilter');
  161. },
  162. onLoadSuccess: function(items){
  163. if (items.length && isStationLoaded === 0){
  164. isStationLoaded = 1;
  165. var opts = $(this).combobox('options');
  166. $(this).combobox('select', items[items.length-1][opts.valueField]);
  167. }
  168. }
  169. }
  170. },
  171. {
  172. field:'toStation',
  173. type: 'combobox',
  174. options:{
  175. method: 'GET',
  176. mode:'remote',
  177. panelHeight: 'auto',
  178. valueField:'id',
  179. textField:'station_name',
  180. url:'/form/stations',
  181. onSelect:function(value){
  182. console.log(value.id);
  183. if (value.id === -1){
  184. transactionDataGrid.datagrid('removeFilterRule', 'w.toStation');
  185. } else {
  186. transactionDataGrid.datagrid('addFilterRule', {
  187. field: 'w.toStation',
  188. op: 'equal',
  189. value: value.id
  190. });
  191. }
  192. transactionDataGrid.datagrid('doFilter');
  193. },
  194. onLoadSuccess: function(items){
  195. if (items.length && isToStationLoaded === 0){
  196. isToStationLoaded = 1;
  197. var opts = $(this).combobox('options');
  198. $(this).combobox('select', items[items.length-1][opts.valueField]);
  199. }
  200. }
  201. }
  202. },{
  203. field:'d.accountDate',
  204. type:'datebox',
  205. options:{
  206. precision:1,
  207. formatter: function(date) {
  208. var y = date.getFullYear();
  209. var m = date.getMonth()+1;
  210. var d = date.getDate();
  211. return y+'-'+(m<10?('0'+m):m)+'-'+(d<10?('0'+d):d);
  212. },
  213. parser: function(s) {
  214. if (!s) return new Date();
  215. var ss = (s.split('-'));
  216. var y = parseInt(ss[0],10);
  217. var m = parseInt(ss[1],10);
  218. var d = parseInt(ss[2],10);
  219. if (!isNaN(y) && !isNaN(m) && !isNaN(d)){
  220. return new Date(y,m-1,d);
  221. } else {
  222. return new Date();
  223. }
  224. }
  225. },
  226. op:['equal','less','greater']
  227. },
  228. {
  229. field:'a.payment_method',
  230. type:'label',
  231. options:{precision:1},
  232. op:['less','greater','equal']
  233. },
  234. {
  235. field:'f.transaction_id',
  236. type:'textbox'
  237. },
  238. {
  239. field:'t.amount',
  240. type:'numberbox',
  241. options:{precision:1},
  242. op:['less','greater','equal']
  243. }
  244. ]);
  245. });
  246. function formatAmount(val,row){
  247. return val.toLocaleString();
  248. }
  249. </script>
  250. {% endblock %}