diff --git a/app/controllers/GoogleTableController.php b/app/controllers/GoogleTableController.php
deleted file mode 100644
index 7ff6392524..0000000000
--- a/app/controllers/GoogleTableController.php
+++ /dev/null
@@ -1,367 +0,0 @@
-getAssetAccounts();
- break;
- case 'expense':
- $list = $acct->getExpenseAccounts();
- break;
- case 'revenue':
- $list = $acct->getRevenueAccounts();
- break;
- }
-
-
- $chart = App::make('gchart');
- $chart->addColumn('ID', 'number');
- $chart->addColumn('ID_Edit', 'string');
- $chart->addColumn('ID_Delete', 'string');
- $chart->addColumn('Name_URL', 'string');
- $chart->addColumn('Name', 'string');
- $chart->addColumn('Balance', 'number');
-
- /** @var \Account $entry */
- foreach ($list as $entry) {
- $edit = route('accounts.edit', $entry->id);
- $delete = route('accounts.delete', $entry->id);
- $show = route('accounts.show', $entry->id);
- $chart->addRow($entry->id, $edit, $delete, $show, $entry->name, $entry->balance());
- }
-
- $chart->generate();
-
- return Response::json($chart->getData());
-
-
- }
-
- /**
- * @return \Illuminate\Http\JsonResponse
- */
- public function categoryList()
- {
-
- /** @var \FireflyIII\Database\Category $repos */
- $repos = App::make('FireflyIII\Database\Category');
-
- /** @var \Grumpydictator\Gchart\GChart $chart */
- $chart = App::make('gchart');
- $chart->addColumn('ID', 'number');
- $chart->addColumn('ID_Edit', 'string');
- $chart->addColumn('ID_Delete', 'string');
- $chart->addColumn('Name_URL', 'string');
- $chart->addColumn('Name', 'string');
-
- $list = $repos->get();
-
- /** @var Category $entry */
- foreach ($list as $entry) {
- $chart->addRow(
- $entry->id, route('categories.edit', $entry->id), route('categories.delete', $entry->id), route('categories.show', $entry->id), $entry->name
- );
- }
-
-
- $chart->generate();
-
- return Response::json($chart->getData());
-
- }
-
- public function recurringList()
- {
- /** @var \Grumpydictator\Gchart\GChart $chart */
- $chart = App::make('gchart');
- $chart->addColumn('ID', 'number');
- $chart->addColumn('ID_Edit', 'string');
- $chart->addColumn('ID_Delete', 'string');
- $chart->addColumn('Name_URL', 'string');
- $chart->addColumn('Name', 'string');
- $chart->addColumn('Matches', 'string');
- $chart->addColumn('Minimum amount', 'number');
- $chart->addColumn('Maximum amount', 'number');
-
- /** @var \FireflyIII\Database\Recurring $repository */
- $repository = App::make('FireflyIII\Database\Recurring');
-
- $set = $repository->get();
-
- /** @var \RecurringTransaction $entry */
- foreach ($set as $entry) {
- $row = [$entry->id, route('recurring.edit', $entry->id), route('recurring.delete', $entry->id), route('recurring.show', $entry->id), $entry->name,
- $entry->match, $entry->amount_min, $entry->amount_max
-
- ];
- $chart->addRowArray($row);
-
- }
-
-
- /*
- *
name |
- match |
- amount_min |
- amount_max |
- date |
- active |
- automatch |
- repeat_freq |
- id |
-
- */
- $chart->generate();
-
- return Response::json($chart->getData());
- }
-
- /**
- * @param Account $account
- */
- public function transactionsByAccount(Account $account)
- {
- $table = new \FireflyIII\Shared\Google\Table\Transactions;
- /*
- * Find transactions:
- */
- $accountID = $account->id;
- $transactions = $account->transactions()->with(
- ['transactionjournal', 'transactionjournal.transactions' => function ($q) use ($accountID) {
- $q->where('account_id', '!=', $accountID);
- }, 'transactionjournal.budgets', 'transactionjournal.transactiontype', 'transactionjournal.categories']
- )->before(Session::get('end'))->after(
- Session::get('start')
- )->orderBy('date', 'DESC')->get();
-
- $collection = new Collection;
- /** @var Transaction $transaction */
- foreach ($transactions as $transaction) {
-
- $date = $transaction->transactionJournal->date;
- $descriptionURL = route('transactions.show', $transaction->transaction_journal_id);
- $description = $transaction->transactionJournal->description;
- $amount = floatval($transaction->amount);
-
- if ($transaction->transactionJournal->transactions[0]->account->id == $account->id) {
- $opposingAccountURI = route('accounts.show', $transaction->transactionJournal->transactions[1]->account->id);
- $opposingAccountName = $transaction->transactionJournal->transactions[1]->account->name;
- } else {
- $opposingAccountURI = route('accounts.show', $transaction->transactionJournal->transactions[0]->account->id);
- $opposingAccountName = $transaction->transactionJournal->transactions[0]->account->name;
- }
- if (isset($transaction->transactionJournal->budgets[0])) {
- $budgetURL = route('budgets.show', $transaction->transactionJournal->budgets[0]->id);
- $budget = $transaction->transactionJournal->budgets[0]->name;
- } else {
- $budgetURL = '';
- $budget = '';
- }
-
- if (isset($transaction->transactionJournal->categories[0])) {
- $categoryURL = route('categories.show', $transaction->transactionJournal->categories[0]->id);
- $category = $transaction->transactionJournal->categories[0]->name;
- } else {
- $categoryURL = '';
- $category = '';
- }
-
-
- if ($amount < 0) {
- $from = $account->name;
- $fromURL = route('accounts.show', $account->id);
-
- $to = $opposingAccountName;
- $toURL = $opposingAccountURI;
- } else {
- $to = $account->name;
- $toURL = route('accounts.show', $account->id);
-
- $from = $opposingAccountName;
- $fromURL = $opposingAccountURI;
- }
-
- $id = $transaction->transactionJournal->id;
- $edit = route('transactions.edit', $transaction->transactionJournal->id);
- $delete = route('transactions.delete', $transaction->transactionJournal->id);
- $chart->addRow(
- $id, $edit, $delete, $date, $descriptionURL, $description, $amount, $fromURL, $from, $toURL, $to, $budgetURL, $budget, $categoryURL, $category
- );
- }
-
- // Date |
- // Description |
- // Amount (€) |
- // From |
- // To |
- // Budget / category |
- // ID |
-
-
- $chart->generate();
-
- return Response::json($chart->getData());
- }
-
- /**
- * @param Component $component
- * @param LimitRepetition $repetition
- */
- public function transactionsByComponent(Component $component, LimitRepetition $repetition = null)
- {
- /** @var \Grumpydictator\Gchart\GChart $chart */
- $chart = App::make('gchart');
- $chart->addColumn('ID', 'number');
- $chart->addColumn('ID_Edit', 'string');
- $chart->addColumn('ID_Delete', 'string');
- $chart->addColumn('Date', 'date');
- $chart->addColumn('Description_URL', 'string');
- $chart->addColumn('Description', 'string');
- $chart->addColumn('Amount', 'number');
- $chart->addColumn('From_URL', 'string');
- $chart->addColumn('From', 'string');
- $chart->addColumn('To_URL', 'string');
- $chart->addColumn('To', 'string');
- $chart->addColumn('Budget_URL', 'string');
- $chart->addColumn('Budget', 'string');
- $chart->addColumn('Category_URL', 'string');
- $chart->addColumn('Category', 'string');
-
- if (is_null($repetition)) {
- $journals = $component->transactionjournals()->with(['budgets', 'categories', 'transactions', 'transactions.account'])->orderBy('date', 'DESC')
- ->get();
- } else {
- $journals = $component->transactionjournals()->with(['budgets', 'categories', 'transactions', 'transactions.account'])->after(
- $repetition->startdate
- )->before($repetition->enddate)->orderBy('date', 'DESC')->get();
- }
- /** @var TransactionJournal $transaction */
- foreach ($journals as $journal) {
- $date = $journal->date;
- $descriptionURL = route('transactions.show', $journal->id);
- $description = $journal->description;
- /** @var Transaction $transaction */
- foreach ($journal->transactions as $transaction) {
- if (floatval($transaction->amount) > 0) {
- $amount = floatval($transaction->amount);
- $to = $transaction->account->name;
- $toURL = route('accounts.show', $transaction->account->id);
- } else {
- $from = $transaction->account->name;
- $fromURL = route('accounts.show', $transaction->account->id);
- }
-
- }
- if (isset($journal->budgets[0])) {
- $budgetURL = route('budgets.show', $journal->budgets[0]->id);
- $component = $journal->budgets[0]->name;
- } else {
- $budgetURL = '';
- $component = '';
- }
-
- if (isset($journal->categories[0])) {
- $categoryURL = route('categories.show', $journal->categories[0]->id);
- $category = $journal->categories[0]->name;
- } else {
- $categoryURL = '';
- $category = '';
- }
-
-
- $id = $journal->id;
- $edit = route('transactions.edit', $journal->id);
- $delete = route('transactions.delete', $journal->id);
- $chart->addRow(
- $id, $edit, $delete, $date, $descriptionURL, $description, $amount, $fromURL, $from, $toURL, $to, $budgetURL, $component, $categoryURL,
- $category
- );
- }
-
-
- $chart->generate();
-
- return Response::json($chart->getData());
-
- }
-
- public function transactionsByRecurring(RecurringTransaction $recurring)
- {
-
- /** @var \FireflyIII\Shared\Google\Table\Transactions $table */
- $table = new \FireflyIII\Shared\Google\Table\Transactions;
- $journals = $recurring->transactionjournals()->get();
-
- $table->addData($journals);
-
- return $table->generate();
- }
-
- /**
- * @param $what
- *
- * @return \Illuminate\Http\JsonResponse
- */
- public function transactionsList($what)
- {
- /*
- * Process some google stuff:
- */
- $parameters = explode(' ',trim(Input::get('tq')));
- $limit = intval($parameters[1]);
- $offset = intval($parameters[3]);
- $request = explode(':',Input::get('tqx'));
- $reqID = $request[1];
-
- /** @var \FireflyIII\Shared\Google\Table\Transactions $table */
- $table = new \FireflyIII\Shared\Google\Table\Transactions;
- $table->setPaging(true);
- $table->setLimit($limit);
- $table->setOffset($offset);
- $table->setReqID($reqID);
-
- /** @var \FireflyIII\Database\TransactionJournal $repository */
- $repository = App::make('FireflyIII\Database\TransactionJournal');
-
- switch ($what) {
- case 'expenses':
- case 'withdrawal':
- $list = $repository->getWithdrawals($limit, $offset);
- break;
- case 'revenue':
- case 'deposit':
- $list = $repository->getDeposits($limit, $offset);
- break;
- case 'transfer':
- case 'transfers':
- $list = $repository->getTransfers($limit, $offset);
- break;
- }
-
- $table->addData($list);
-
- echo $table->generate();
- exit;
- }
-}
\ No newline at end of file
diff --git a/app/lib/FireflyIII/Shared/Google/Table.php b/app/lib/FireflyIII/Shared/Google/Table.php
deleted file mode 100644
index 1290430cb7..0000000000
--- a/app/lib/FireflyIII/Shared/Google/Table.php
+++ /dev/null
@@ -1,8 +0,0 @@
-chart = \App::make('gchart');
- $this->chart->addColumn('ID', 'number');
- $this->chart->addColumn('ID_Edit', 'string');
- $this->chart->addColumn('ID_Delete', 'string');
- $this->chart->addColumn('Date', 'date');
- $this->chart->addColumn('Description_URL', 'string');
- $this->chart->addColumn('Description', 'string');
- $this->chart->addColumn('Amount', 'number');
- $this->chart->addColumn('From_URL', 'string');
- $this->chart->addColumn('From', 'string');
- $this->chart->addColumn('To_URL', 'string');
- $this->chart->addColumn('To', 'string');
- $this->chart->addColumn('Budget_URL', 'string');
- $this->chart->addColumn('Budget', 'string');
- $this->chart->addColumn('Category_URL', 'string');
- $this->chart->addColumn('Category', 'string');
- }
-
- public function addData(Collection $data)
- {
- /** @var \TransactionJournal $entry */
- foreach ($data as $entry) {
- $date = $entry->date;
- $descriptionURL = route('transactions.show', $entry->id);
- $description = $entry->description;
- /** @var Transaction $transaction */
- foreach ($entry->transactions as $transaction) {
- if (floatval($transaction->amount) > 0) {
- $amount = floatval($transaction->amount);
- $to = $transaction->account->name;
- $toURL = route('accounts.show', $transaction->account->id);
- } else {
- $from = $transaction->account->name;
- $fromURL = route('accounts.show', $transaction->account->id);
- }
-
- }
- if (isset($entry->budgets[0])) {
- $budgetURL = route('budgets.show', $entry->budgets[0]->id);
- $component = $entry->budgets[0]->name;
- } else {
- $budgetURL = '';
- $component = '';
- }
-
- if (isset($entry->categories[0])) {
- $categoryURL = route('categories.show', $entry->categories[0]->id);
- $category = $entry->categories[0]->name;
- } else {
- $categoryURL = '';
- $category = '';
- }
-
-
- $id = $entry->id;
- $edit = route('transactions.edit', $entry->id);
- $delete = route('transactions.delete', $entry->id);
- $this->chart->addRow(
- $id, $edit, $delete, $date, $descriptionURL, $description, $amount, $fromURL, $from, $toURL, $to, $budgetURL, $component, $categoryURL,
- $category
- );
- }
- }
-
- public function generate()
- {
- if ($this->getPaging() && (is_null($this->getLimit()) || is_null($this->getOffset()) || is_null($this->getReqID()))) {
- throw new FireflyException('Cannot page without parameters!');
- }
- $this->chart->generate();
- if($this->getPaging()) {
- $data = [
- 'version' => '0.6',
- 'reqId' => $this->getReqID(),
- 'status' => 'warning',
- 'warnings' => [
- [
- 'reason' => 'data_truncated',
- 'message' => 'Retrieved data was truncated',
- 'detailed_message' => 'Data has been truncated due to userrequest (LIMIT in query)'
- ]
- ],
- 'sig' => '12345',
- 'table' => $this->chart->getData()
- ];
- $return = '// Data table response'."\n".'google.visualization.Query.setResponse(' . json_encode($data).');';
- return $return;
- //"version":"0.6","reqId":"0","status":"warning","warnings":[{"reason":"data_truncated","message":"Retrieved data was truncated","detailed_message":"Data has been truncated due to userrequest (LIMIT in query)"}],"sig":"253683512","table
- }
-
-
-
- return \Response::json($this->chart->getData());
- }
-
- /**
- * @return mixed
- */
- public function getPaging()
- {
- return $this->paging;
- }
-
- /**
- * @param mixed $paging
- */
- public function setPaging($paging)
- {
- $this->paging = $paging;
- }
-
- /**
- * @return int
- */
- public function getLimit()
- {
- return $this->limit;
- }
-
- /**
- * @param int $limit
- */
- public function setLimit($limit)
- {
- $this->limit = $limit;
- }
-
- /**
- * @return int
- */
- public function getOffset()
- {
- return $this->offset;
- }
-
- /**
- * @param int $offset
- */
- public function setOffset($offset)
- {
- $this->offset = $offset;
- }
-
- /**
- * @return string
- */
- public function getReqID()
- {
- return $this->reqID;
- }
-
- /**
- * @param string $reqID
- */
- public function setReqID($reqID)
- {
- $this->reqID = $reqID;
- }
-
-
-}
\ No newline at end of file
diff --git a/app/routes.php b/app/routes.php
index 5d3633c0f1..7441f93923 100644
--- a/app/routes.php
+++ b/app/routes.php
@@ -160,15 +160,14 @@ Route::group(
Route::get('/chart/component/{component}/spending/{year}', ['uses' => 'GoogleChartController@componentsAndSpending']);
// google table controller
- Route::get('/table/account/{account}/transactions', ['uses' => 'GoogleTableController@transactionsByAccount']);
- Route::get('/table/accounts/{what}', ['uses' => 'GoogleTableController@accountList']);
- Route::get('/table/categories', ['uses' => 'GoogleTableController@categoryList']);
- Route::get('/table/recurring', ['uses' => 'GoogleTableController@recurringList']);
- Route::get('/table/recurring/{recurring}/transactions', ['uses' => 'GoogleTableController@transactionsByRecurring']);
- Route::get('/table/transactions/{what}', ['uses' => 'GoogleTableController@transactionsList'])->where(['what' => 'expenses|revenue|withdrawal|deposit|transfer|transfers']);
-
+ #Route::get('/table/account/{account}/transactions', ['uses' => 'GoogleTableController@transactionsByAccount']);
+ #Route::get('/table/accounts/{what}', ['uses' => 'GoogleTableController@accountList']);
+ #Route::get('/table/categories', ['uses' => 'GoogleTableController@categoryList']);
+ #Route::get('/table/recurring', ['uses' => 'GoogleTableController@recurringList']);
+ #Route::get('/table/recurring/{recurring}/transactions', ['uses' => 'GoogleTableController@transactionsByRecurring']);
+ #Route::get('/table/transactions/{what}', ['uses' => 'GoogleTableController@transactionsList'])->where(['what' => 'expenses|revenue|withdrawal|deposit|transfer|transfers']);
// google table for components (categories + budgets)
- Route::get('/table/component/{component}/{limitrepetition}/transactions', ['uses' => 'GoogleTableController@transactionsByComponent']);
+ #Route::get('/table/component/{component}/{limitrepetition}/transactions', ['uses' => 'GoogleTableController@transactionsByComponent']);
// home controller
diff --git a/app/views/index.blade.php b/app/views/index.blade.php
index 479e6ede81..c5422f830b 100644
--- a/app/views/index.blade.php
+++ b/app/views/index.blade.php
@@ -101,7 +101,7 @@
- @include('transactions.journals-small-index',['transactions' => $data[0],'account' => $data[1]])
+ @include('lists.old.journals-small-index',['transactions' => $data[0],'account' => $data[1]])
@endforeach
diff --git a/app/views/transactions/journals-large.blade.php b/app/views/lists.old/journals-large.old.blade.php
similarity index 100%
rename from app/views/transactions/journals-large.blade.php
rename to app/views/lists.old/journals-large.old.blade.php
diff --git a/app/views/transactions/journals-small-index.blade.php b/app/views/lists.old/journals-small-index.old.blade.php
similarity index 100%
rename from app/views/transactions/journals-small-index.blade.php
rename to app/views/lists.old/journals-small-index.old.blade.php
diff --git a/app/views/transactions/journals-small-noaccount.blade.php b/app/views/lists.old/journals-small-noaccount.old.blade.php
similarity index 100%
rename from app/views/transactions/journals-small-noaccount.blade.php
rename to app/views/lists.old/journals-small-noaccount.old.blade.php
diff --git a/app/views/lists/transactions.blade.php b/app/views/lists.old/transactions.old.blade.php
similarity index 100%
rename from app/views/lists/transactions.blade.php
rename to app/views/lists.old/transactions.old.blade.php
diff --git a/app/views/search/index.blade.php b/app/views/search/index.blade.php
index c8940ac822..c20ec700b7 100644
--- a/app/views/search/index.blade.php
+++ b/app/views/search/index.blade.php
@@ -9,7 +9,7 @@
Transactions ({{$result['transactions']->count()}})
- @include('transactions.journals-small-noaccount',['transactions' => $result['transactions']])
+ @include('...lists.old.journals-small-noaccount',['transactions' => $result['transactions']])
diff --git a/app/views/transactions/index.blade.php b/app/views/transactions/index.blade.php
index 2e85e74aff..3410db02fe 100644
--- a/app/views/transactions/index.blade.php
+++ b/app/views/transactions/index.blade.php
@@ -21,7 +21,6 @@ var what = '{{{$what}}}';
-{{HTML::script('assets/javascript/google/TableQueryWrapper.js')}}
{{HTML::script('assets/javascript/firefly/gcharts.options.js')}}
{{HTML::script('assets/javascript/firefly/gcharts.js')}}
diff --git a/public/assets/javascript/firefly/gcharts.js b/public/assets/javascript/firefly/gcharts.js
index bfac59511e..f11341d821 100644
--- a/public/assets/javascript/firefly/gcharts.js
+++ b/public/assets/javascript/firefly/gcharts.js
@@ -226,109 +226,4 @@ function googleSankeyChart(URL, container) {
} else {
console.log('No container found called "' + container + '"');
}
-}
-
-/**
- * TODO fix this method so the layout is nice and dandy.
- * @param URL
- * @param container
- */
-function googleTable(URL, container) {
- if ($('#' + container).length == 1) {
- $.getJSON(URL).success(function (data) {
- /*
- Get the data from the JSON
- */
- var gdata = new google.visualization.DataTable(data);
-
- /*
- Create a new google charts object.
- */
- var chart = new google.visualization.Table(document.getElementById(container));
-
- /*
- Do something with formatters:
- */
- var x = gdata.getNumberOfColumns();
- var columnsToHide = new Array;
- var URLFormatter = new google.visualization.PatternFormat('{1}');
-
- var EditButtonFormatter = new google.visualization.PatternFormat('');
-
- var money = new google.visualization.NumberFormat({
- decimalSymbol: ',',
- groupingSymbol: '.',
- prefix: '\u20AC '
- });
-
-
- for (var i = 0; i < x; i++) {
- var label = gdata.getColumnLabel(i);
- /*
- Format a string using the previous column as URL.
- */
- if (label == 'Description' || label == 'From' || label == 'Name' || label == 'To' || label == 'Budget' || label == 'Category') {
- URLFormatter.format(gdata, [i - 1, i], i);
- columnsToHide.push(i - 1);
- }
- if (label == 'ID') {
- EditButtonFormatter.format(gdata, [i + 1, i + 2], i);
- columnsToHide.push(i + 1, i + 2);
- }
-
- /*
- Format with buttons:
- */
-
-
- /*
- Format as money
- */
- if (label == 'Amount' || label == 'Balance' || label == 'Minimum amount' || label == 'Maximum amount') {
- money.format(gdata, i);
- }
-
- }
-
-
- //var formatter = new google.visualization.PatternFormat('{1}');
-
- //formatter.format(gdata, [5, 6], 6);
- //formatter.format(gdata, [7, 8], 8);
-
-
- var view = new google.visualization.DataView(gdata);
- // hide certain columns:
-
- view.hideColumns(columnsToHide);
-
-
- /*
- Draw it:
- */
- chart.draw(view, defaultTableOptions);
-
- }).fail(function () {
- $('#' + container).addClass('google-chart-error');
- });
- } else {
- console.log('No container found called "' + container + '"');
- }
-}
-
-/**
- *
- * @param URL
- * @param container
- */
-function googleTablePaged(URL, container) {
- var query, options;
- query = new google.visualization.Query(URL);
- objContainer = document.getElementById(container);
- options = {'pageSize': 5};
-
- query.abort();
- var tableQueryWrapper = new TableQueryWrapper(query, objContainer, options);
- tableQueryWrapper.sendAndDraw();
-
}
\ No newline at end of file
diff --git a/public/assets/javascript/firefly/gcharts.options.js b/public/assets/javascript/firefly/gcharts.options.js
index acba8a81bb..e4d983a85b 100644
--- a/public/assets/javascript/firefly/gcharts.options.js
+++ b/public/assets/javascript/firefly/gcharts.options.js
@@ -115,9 +115,4 @@ var defaultPieChartOptions = {
var defaultSankeyChartOptions = {
height: 400
-}
-var defaultTableOptions = {
- allowHtml: true,
- page: 'enable',
- pageSize: 50
-};
\ No newline at end of file
+}
\ No newline at end of file
diff --git a/public/assets/javascript/google/TableQueryWrapper.js b/public/assets/javascript/google/TableQueryWrapper.js
deleted file mode 100644
index 381b3da886..0000000000
--- a/public/assets/javascript/google/TableQueryWrapper.js
+++ /dev/null
@@ -1,159 +0,0 @@
-/**
- * A wrapper for a query and a table visualization.
- * The object only requests 1 page + 1 row at a time, by default, in order
- * to minimize the amount of data held locally.
- * Table sorting and pagination is executed by issuing
- * additional requests with appropriate query parameters.
- * E.g., for getting the data sorted by column 'A' the following query is
- * attached to the request: 'tq=order by A'.
- *
- * Note: Discards query strings set by the user on the query object using
- * google.visualization.Query#setQuery.
- *
- * DISCLAIMER: This is an example code which you can copy and change as
- * required. It is used with the google visualization API table visualization
- * which is assumed to be loaded to the page. For more info see:
- * https://developers.google.com/chart/interactive/docs/gallery/table
- * https://developers.google.com/chart/interactive/docs/reference#Query
- */
-
-
-/**
- * Constructs a new table query wrapper for the specified query, container
- * and tableOptions.
- *
- * Note: The wrapper clones the options object to adjust some of its properties.
- * In particular:
- * sort {string} set to 'event'.
- * page {string} set to 'event'.
- * pageSize {Number} If number <= 0 set to 10.
- * showRowNumber {boolean} set to true.
- * firstRowNumber {number} set according to the current page.
- * sortAscending {boolean} set according to the current sort.
- * sortColumn {number} set according to the given sort.
- * @constructor
- */
-var TableQueryWrapper = function(query, container, options) {
-
- this.table = new google.visualization.Table(container);
- this.query = query;
- this.sortQueryClause = '';
- this.pageQueryClause = '';
- this.container = container;
- this.currentDataTable = null;
-
- var self = this;
- var addListener = google.visualization.events.addListener;
- addListener(this.table, 'page', function(e) {self.handlePage(e)});
- addListener(this.table, 'sort', function(e) {self.handleSort(e)});
-
- options = options || {};
- options = TableQueryWrapper.clone(options);
-
- options['sort'] = 'event';
- options['page'] = 'event';
- options['showRowNumber'] = true;
- var buttonConfig = 'pagingButtonsConfiguration';
- options[buttonConfig] = options[buttonConfig] || 'both';
- options['pageSize'] = (options['pageSize'] > 0) ? options['pageSize'] : 10;
- this.pageSize = options['pageSize'];
- this.tableOptions = options;
- this.currentPageIndex = 0;
- this.setPageQueryClause(0);
-};
-
-
-/**
- * Sends the query and upon its return draws the Table visualization in the
- * container. If the query refresh interval is set then the visualization will
- * be redrawn upon each refresh.
- */
-TableQueryWrapper.prototype.sendAndDraw = function() {
- this.query.abort();
- var queryClause = this.sortQueryClause + ' ' + this.pageQueryClause;
- this.query.setQuery(queryClause);
- this.table.setSelection([]);
- var self = this;
- this.query.send(function(response) {self.handleResponse(response)});
-};
-
-
-/** Handles the query response after a send returned by the data source. */
-TableQueryWrapper.prototype.handleResponse = function(response) {
- this.currentDataTable = null;
- if (response.isError()) {
- google.visualization.errors.addError(this.container, response.getMessage(),
- response.getDetailedMessage(), {'showInTooltip': false});
- } else {
- // make data:
- //this.currentDataTable= new google.visualization.DataTable(response);
- //console.log(response);
- this.currentDataTable = response.getDataTable();
- this.table.draw(this.currentDataTable, this.tableOptions);
- }
-};
-
-
-/** Handles a sort event with the given properties. Will page to page=0. */
-TableQueryWrapper.prototype.handleSort = function(properties) {
- var columnIndex = properties['column'];
- var isAscending = properties['ascending'];
- this.tableOptions['sortColumn'] = columnIndex;
- this.tableOptions['sortAscending'] = isAscending;
- // dataTable exists since the user clicked the table.
- var colID = this.currentDataTable.getColumnId(columnIndex);
- this.sortQueryClause = 'order by `' + colID + (!isAscending ? '` desc' : '`');
- // Calls sendAndDraw internally.
- this.handlePage({'page': 0});
-};
-
-
-/** Handles a page event with the given properties. */
-TableQueryWrapper.prototype.handlePage = function(properties) {
- var localTableNewPage = properties['page']; // 1, -1 or 0
- var newPage = 0;
- if (localTableNewPage != 0) {
- newPage = this.currentPageIndex + localTableNewPage;
- }
- if (this.setPageQueryClause(newPage)) {
- this.sendAndDraw();
- }
-};
-
-
-/**
- * Sets the pageQueryClause and table options for a new page request.
- * In case the next page is requested - checks that another page exists
- * based on the previous request.
- * Returns true if a new page query clause was set, false otherwise.
- */
-TableQueryWrapper.prototype.setPageQueryClause = function(pageIndex) {
- var pageSize = this.pageSize;
-
- if (pageIndex < 0) {
- return false;
- }
- var dataTable = this.currentDataTable;
- if ((pageIndex == this.currentPageIndex + 1) && dataTable) {
- if (dataTable.getNumberOfRows() <= pageSize) {
- return false;
- }
- }
- this.currentPageIndex = pageIndex;
- var newStartRow = this.currentPageIndex * pageSize;
- // Get the pageSize + 1 so that we can know when the last page is reached.
- this.pageQueryClause = 'limit ' + (pageSize + 1) + ' offset ' + newStartRow;
- // Note: row numbers are 1-based yet dataTable rows are 0-based.
- this.tableOptions['firstRowNumber'] = newStartRow + 1;
- return true;
-};
-
-
-/** Performs a shallow clone of the given object. */
-TableQueryWrapper.clone = function(obj) {
- var newObj = {};
- for (var key in obj) {
- newObj[key] = obj[key];
- }
- return newObj;
-};
\ No newline at end of file