diff --git a/lib/listview/filter.js b/lib/listview/filter.js index db9fcd4..dcb77a2 100644 --- a/lib/listview/filter.js +++ b/lib/listview/filter.js @@ -52,7 +52,7 @@ exports.getColumns = function (args) { for (var j=0; j < args.config.listview.filter.length; j++) { if (args.config.columns[i].name == args.config.listview.filter[j]) { var column = dcopy(args.config.columns[i]); - column.key = ['filter[',column.name,']'].join(''); + column.key = 'filter['+column.name+']'; filter.push(column); } } diff --git a/routes/listview.js b/routes/listview.js index f03fe58..e64bc73 100644 --- a/routes/listview.js +++ b/routes/listview.js @@ -1,5 +1,6 @@ -var dcopy = require('deep-copy'); +var async = require('async'), + dcopy = require('deep-copy'); var qb = require('../lib/qb')(), data = require('../lib/data'), format = require('../lib/format'); @@ -36,24 +37,41 @@ function _data (req, res, next) { args.filter = filter.prepareSession(req, args); qb.lst.select(args); - events.preList(req, res, args, function () { - data.list.get(args, function (err, ddata) { - if (err) return next(err); - data.pagination.get(args, function (err, pager) { - if (err) return next(err); - // always should be in front of filter.getColumns - // as it may reduce args.config.columns - var order = filter.getOrderColumns(req, args); - args.config.columns = filter.getColumns(args); - - data.otm.get(args, function (err) { - if (err) return next(err); - data.stc.get(args); - - render(req, res, args, ddata, pager, order, next); + var results = {}; + async.series([ + events.preList.bind(events, req, res, args), + function (done) { + data.list.get(args, function (err, result) { + if (err) return done(err); + results.data = result; + done(); }); - }); - }); + }, + function (done) { + data.pagination.get(args, function (err, pager) { + if (err) return done(err); + // always should be in front of filter.getColumns + // as it may reduce args.config.columns + results.order = filter.getOrderColumns(req, args); + args.config.columns = filter.getColumns(args); + results.pager = pager; + done(); + }); + }, + function (done) { + data.otm.get(args, function (err) { + if (err) return done(err); + data.stc.get(args); + done(); + }); + } + ], function (err) { + if (err) return next(err); + render( + req, res, args, + results.data, results.pager, results.order, + next + ); }); }