diff --git a/app/Api/V1/Controllers/Autocomplete/PiggyBankController.php b/app/Api/V1/Controllers/Autocomplete/PiggyBankController.php index c2835525cc..a62b7f342f 100644 --- a/app/Api/V1/Controllers/Autocomplete/PiggyBankController.php +++ b/app/Api/V1/Controllers/Autocomplete/PiggyBankController.php @@ -71,12 +71,11 @@ class PiggyBankController extends Controller $piggies = $this->piggyRepository->searchPiggyBank($data['query'], $data['limit']); $defaultCurrency = app('amount')->getDefaultCurrency(); $response = []; + /** @var PiggyBank $piggy */ foreach ($piggies as $piggy) { $currency = $this->accountRepository->getAccountCurrency($piggy->account) ?? $defaultCurrency; - $piggy->objectGroup = $piggy->objectGroups->first(); - $piggy->name_with_amount - = $response[] = [ + $response[] = [ 'id' => $piggy->id, 'name' => $piggy->name, 'currency_id' => $currency->id, @@ -104,9 +103,7 @@ class PiggyBankController extends Controller foreach ($piggies as $piggy) { $currency = $this->accountRepository->getAccountCurrency($piggy->account) ?? $defaultCurrency; $currentAmount = $this->piggyRepository->getRepetition($piggy)->currentamount ?? '0'; - $piggy->objectGroup = $piggy->objectGroups->first(); - $piggy->name_with_amount - = $response[] = [ + $response[] = [ 'id' => $piggy->id, 'name' => $piggy->name, 'name_with_balance' => sprintf( diff --git a/app/Api/V1/Controllers/Autocomplete/TagController.php b/app/Api/V1/Controllers/Autocomplete/TagController.php index 46188aeddb..9d57ee31d0 100644 --- a/app/Api/V1/Controllers/Autocomplete/TagController.php +++ b/app/Api/V1/Controllers/Autocomplete/TagController.php @@ -25,6 +25,11 @@ namespace FireflyIII\Api\V1\Controllers\Autocomplete; use FireflyIII\Api\V1\Controllers\Controller; +use FireflyIII\Api\V1\Requests\Autocomplete\AutocompleteRequest; +use FireflyIII\Models\Tag; +use FireflyIII\Repositories\Tag\TagRepositoryInterface; +use FireflyIII\User; +use Illuminate\Http\JsonResponse; /** * Class TagController @@ -32,4 +37,46 @@ use FireflyIII\Api\V1\Controllers\Controller; class TagController extends Controller { + private TagRepositoryInterface $repository; + + /** + * CurrencyController constructor. + */ + public function __construct() + { + parent::__construct(); + $this->middleware( + function ($request, $next) { + /** @var User $user */ + $user = auth()->user(); + $this->repository = app(TagRepositoryInterface::class); + $this->repository->setUser($user); + + return $next($request); + } + ); + } + + /** + * @param AutocompleteRequest $request + * + * @return JsonResponse + */ + public function tags(AutocompleteRequest $request): JsonResponse + { + $data = $request->getData(); + + $result = $this->repository->searchTags($data['query'], $data['limit']); + $array = []; + /** @var Tag $tag */ + foreach ($result as $tag) { + $array[] = [ + 'id' => $tag->id, + 'name' => $tag->tag, + 'tag' => $tag->tag, + ]; + } + + return response()->json($array); + } } diff --git a/app/Http/Controllers/Json/AutoCompleteController.php b/app/Http/Controllers/Json/AutoCompleteController.php index c7c0dc6b2c..0d6165d311 100644 --- a/app/Http/Controllers/Json/AutoCompleteController.php +++ b/app/Http/Controllers/Json/AutoCompleteController.php @@ -121,27 +121,8 @@ class AutoCompleteController extends Controller return response()->json($array); } - - /** - * @param Request $request - * - * @return JsonResponse - * @codeCoverageIgnore - */ - public function tags(Request $request): JsonResponse - { - $search = (string) $request->get('search'); - /** @var TagRepositoryInterface $repository */ - $repository = app(TagRepositoryInterface::class); - $result = $repository->searchTags($search); - $array = $result->toArray(); - foreach ($array as $index => $item) { - // rename field for consistency. - $array[$index]['name'] = $item['tag']; - } - return response()->json($array); - } + /** * @param Request $request diff --git a/app/Repositories/PiggyBank/PiggyBankRepository.php b/app/Repositories/PiggyBank/PiggyBankRepository.php index f11bdc356a..735b6df239 100644 --- a/app/Repositories/PiggyBank/PiggyBankRepository.php +++ b/app/Repositories/PiggyBank/PiggyBankRepository.php @@ -414,7 +414,7 @@ class PiggyBankRepository implements PiggyBankRepositoryInterface $search->where('piggy_banks.name', 'LIKE', sprintf('%%%s%%', $query)); } $search->orderBy('piggy_banks.order', 'ASC') - ->orderBy('piggy_banks.name', 'ASC')->where('piggy_banks.active', 1); + ->orderBy('piggy_banks.name', 'ASC'); return $search->take($limit)->get(); } diff --git a/app/Repositories/Tag/TagRepository.php b/app/Repositories/Tag/TagRepository.php index 970978a746..71f07f2cf0 100644 --- a/app/Repositories/Tag/TagRepository.php +++ b/app/Repositories/Tag/TagRepository.php @@ -287,10 +287,11 @@ class TagRepository implements TagRepositoryInterface * Search the users tags. * * @param string $query + * @param int $limit * * @return Collection */ - public function searchTags(string $query): Collection + public function searchTags(string $query, int $limit): Collection { /** @var Collection $tags */ $tags = $this->user->tags()->orderBy('tag', 'ASC'); @@ -299,7 +300,7 @@ class TagRepository implements TagRepositoryInterface $tags->where('tag', 'LIKE', $search); } - return $tags->get(); + return $tags->take($limit)->get('tags.*'); } /** diff --git a/app/Repositories/Tag/TagRepositoryInterface.php b/app/Repositories/Tag/TagRepositoryInterface.php index 7fac389191..309b06be5d 100644 --- a/app/Repositories/Tag/TagRepositoryInterface.php +++ b/app/Repositories/Tag/TagRepositoryInterface.php @@ -165,10 +165,11 @@ interface TagRepositoryInterface * Search the users tags. * * @param string $query + * @param int $limit * * @return Collection */ - public function searchTags(string $query): Collection; + public function searchTags(string $query, int $limit): Collection; /** * @param User $user diff --git a/public/v1/js/ff/common/autocomplete.js b/public/v1/js/ff/common/autocomplete.js index 217f31c6d7..fc9916c7cc 100644 --- a/public/v1/js/ff/common/autocomplete.js +++ b/public/v1/js/ff/common/autocomplete.js @@ -27,7 +27,7 @@ function initTagsAC() { datumTokenizer: Bloodhound.tokenizers.obj.whitespace('name'), queryTokenizer: Bloodhound.tokenizers.whitespace, prefetch: { - url: 'json/tags?uid=' + uid, + url: 'api/v1/autocomplete/tags?uid=' + uid, filter: function (list) { return $.map(list, function (item) { return {name: item.name}; @@ -35,7 +35,7 @@ function initTagsAC() { } }, remote: { - url: 'json/tags?search=%QUERY&uid=' + uid, + url: 'api/v1/autocomplete/tags?query=%QUERY&uid=' + uid, wildcard: '%QUERY', filter: function (list) { return $.map(list, function (item) { diff --git a/public/v1/js/ff/object-groups/create-edit.js b/public/v1/js/ff/object-groups/create-edit.js index eaff3b35d3..af75e47f4f 100644 --- a/public/v1/js/ff/object-groups/create-edit.js +++ b/public/v1/js/ff/object-groups/create-edit.js @@ -29,7 +29,7 @@ $(document).ready(function () { datumTokenizer: Bloodhound.tokenizers.obj.whitespace('title'), queryTokenizer: Bloodhound.tokenizers.whitespace, prefetch: { - url: 'json/object-groups?uid=' + uid, + url: 'api/v1/autocomplete/object-groups?uid=' + uid, filter: function (list) { return $.map(list, function (obj) { return obj; @@ -37,7 +37,7 @@ $(document).ready(function () { } }, remote: { - url: 'json/object-groups?search=%QUERY&uid=' + uid, + url: 'api/v1/autocomplete/object-groups?query=%QUERY&uid=' + uid, wildcard: '%QUERY', filter: function (list) { return $.map(list, function (obj) { diff --git a/public/v1/js/ff/rules/create-edit.js b/public/v1/js/ff/rules/create-edit.js index ebbed0cbd8..a7e4c27891 100644 --- a/public/v1/js/ff/rules/create-edit.js +++ b/public/v1/js/ff/rules/create-edit.js @@ -245,7 +245,7 @@ function updateActionInput(selectList) { case 'add_tag': case 'remove_tag': console.log('Select list value is ' + selectList.val() + ', so input needs auto complete.'); - createAutoComplete(inputResult, 'json/tags'); + createAutoComplete(inputResult, 'api/v1/autocomplete/tags'); break; case 'set_description': console.log('Select list value is ' + selectList.val() + ', so input needs auto complete.'); @@ -316,7 +316,7 @@ function updateTriggerInput(selectList) { break; case 'tag_is': console.log('Select list value is ' + selectList.val() + ', so input needs auto complete.'); - createAutoComplete(inputResult, 'json/tags'); + createAutoComplete(inputResult, 'api/v1/autocomplete/tags'); break; case 'budget_is': console.log('Select list value is ' + selectList.val() + ', so input needs auto complete.'); diff --git a/public/v1/js/ff/transactions/split/.htaccess b/public/v1/js/ff/transactions/split/.htaccess deleted file mode 100644 index 45552cb63e..0000000000 --- a/public/v1/js/ff/transactions/split/.htaccess +++ /dev/null @@ -1 +0,0 @@ -Options -Indexes \ No newline at end of file diff --git a/public/v1/js/ff/transactions/split/edit.js b/public/v1/js/ff/transactions/split/edit.js deleted file mode 100644 index 9bd6708d42..0000000000 --- a/public/v1/js/ff/transactions/split/edit.js +++ /dev/null @@ -1,394 +0,0 @@ -/* - * edit.js - * Copyright (c) 2019 james@firefly-iii.org - * - * This file is part of Firefly III (https://github.com/firefly-iii). - * - * This program is free software: you can redistribute it and/or modify - * it under the terms of the GNU Affero General Public License as - * published by the Free Software Foundation, either version 3 of the - * License, or (at your option) any later version. - * - * This program is distributed in the hope that it will be useful, - * but WITHOUT ANY WARRANTY; without even the implied warranty of - * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the - * GNU Affero General Public License for more details. - * - * You should have received a copy of the GNU Affero General Public License - * along with this program. If not, see . - */ - - -/** global: originalSum,originalForeignSum, accounting, what, Modernizr, currencySymbol, foreignCurrencySymbol */ - -var destNames; -var sourceNames; -var categories; -var journalNames; - -$(document).ready(function () { - "use strict"; - $('.btn-do-split').click(cloneDivRow); - $('.remove-current-split').click(removeDivRow); - - // auto complete destination name (expense accounts): - destNames = new Bloodhound({ - datumTokenizer: Bloodhound.tokenizers.obj.whitespace('name'), - queryTokenizer: Bloodhound.tokenizers.whitespace, - prefetch: { - url: 'json/expense-accounts?uid=' + uid, - filter: function (list) { - return $.map(list, function (name) { - return {name: name}; - }); - } - }, - remote: { - url: 'json/expense-accounts?search=%QUERY&uid=' + uid, - wildcard: '%QUERY', - filter: function (list) { - return $.map(list, function (name) { - return {name: name}; - }); - } - } - }); - destNames.initialize(); - $('input[name$="destination_name]"]').typeahead({hint: true, highlight: true,}, {source: destNames, displayKey: 'name', autoSelect: false}); - - // auto complete source name (revenue accounts): - sourceNames = new Bloodhound({ - datumTokenizer: Bloodhound.tokenizers.obj.whitespace('name'), - queryTokenizer: Bloodhound.tokenizers.whitespace, - prefetch: { - url: 'json/revenue-accounts?uid=' + uid, - filter: function (list) { - return $.map(list, function (name) { - return {name: name}; - }); - } - }, - remote: { - url: 'json/revenue-accounts?search=%QUERY&uid=' + uid, - wildcard: '%QUERY', - filter: function (list) { - return $.map(list, function (name) { - return {name: name}; - }); - } - } - }); - sourceNames.initialize(); - $('input[name$="source_name]"]').typeahead({hint: true, highlight: true,}, {source: sourceNames, displayKey: 'name', autoSelect: false}); - - // auto complete category fields: - categories = new Bloodhound({ - datumTokenizer: Bloodhound.tokenizers.obj.whitespace('name'), - queryTokenizer: Bloodhound.tokenizers.whitespace, - prefetch: { - url: 'api/v1/autocomplete/categories?uid=' + uid, - filter: function (list) { - return $.map(list, function (name) { - return {name: name}; - }); - } - }, - remote: { - url: 'api/v1/autocomplete/categories?query=%QUERY&uid=' + uid, - wildcard: '%QUERY', - filter: function (list) { - return $.map(list, function (name) { - return {name: name}; - }); - } - } - }); - categories.initialize(); - $('input[name$="category_name]"]').typeahead({hint: true, highlight: true,}, {source: categories, displayKey: 'name', autoSelect: false}); - - // get transaction journal name things: - journalNames = new Bloodhound({ - datumTokenizer: Bloodhound.tokenizers.obj.whitespace('name'), - queryTokenizer: Bloodhound.tokenizers.whitespace, - prefetch: { - url: 'json/transaction-journals/' + what + '?uid=' + uid, - filter: function (list) { - return $.map(list, function (name) { - return {name: name}; - }); - } - }, - remote: { - url: 'json/transaction-journals/' + what + '?search=%QUERY&uid=' + uid, - wildcard: '%QUERY', - filter: function (list) { - return $.map(list, function (name) { - return {name: name}; - }); - } - } - }); - journalNames.initialize(); - - $('input[name="journal_description"]').typeahead({hint: true, highlight: true,}, {source: journalNames, displayKey: 'name', autoSelect: false}); - $('input[name$="transaction_description]"]').typeahead({hint: true, highlight: true,}, {source: journalNames, displayKey: 'name', autoSelect: false}); - - // get tags: - console.log('initTagsAC()'); - var tagTags = new Bloodhound({ - datumTokenizer: Bloodhound.tokenizers.obj.whitespace('name'), - queryTokenizer: Bloodhound.tokenizers.whitespace, - prefetch: { - url: 'json/tags?uid=' + uid, - filter: function (list) { - return $.map(list, function (tagTag) { - return {name: tagTag}; - }); - } - }, - remote: { - url: 'json/tags?search=%QUERY&uid=' + uid, - wildcard: '%QUERY', - filter: function (list) { - return $.map(list, function (name) { - return {name: name}; - }); - } - } - }); - tagTags.initialize(); - $('input[name="tags"]').tagsinput({ - typeaheadjs: { - hint: true, - highlight: true, - name: 'tags', - displayKey: 'name', - valueKey: 'name', - source: tagTags.ttAdapter() - } - }); - - $('input[name$="][amount]"]').on('change', calculateBothSums); - $('input[name$="][foreign_amount]"]').on('change', calculateBothSums); - - if (!Modernizr.inputtypes.date) { - $('input[type="date"]').datepicker( - { - dateFormat: 'yy-mm-dd' - } - ); - } -}); - -function calculateBothSums() { - console.log("Now in calculateBothSums()"); - calculateSum(); - calculateForeignSum(); -} - -/** - * New and cool - * @param e - * @returns {boolean} - */ -function removeDivRow(e) { - "use strict"; - var rows = $('div.split_row'); - if (rows.length === 1) { - return false; - } - var row = $(e.target); - var index = row.data('split'); - if (typeof index === 'undefined') { - var parent = row.parent(); - index = parent.data('split'); - console.log('Parent. ' + parent.className); - } - console.log('Split index is "' + index + '"'); - $('div.split_row[data-split="' + index + '"]').remove(); - - - resetDivSplits(); - - return false; - -} - -/** - * New and cool - * @returns {boolean} - */ -function cloneDivRow() { - "use strict"; - var source = $('div.split_row').last().clone(); - var count = $('div.split_row').length + 1; - source.removeClass('initial-row'); - source.find('.count').text('#' + count); - - source.find('input[name$="][amount]"]').val("").on('change', calculateBothSums); - source.find('input[name$="][foreign_amount]"]').val("").on('change', calculateBothSums); - if (destNames) { - source.find('input[name$="destination_name]"]').typeahead({hint: true, highlight: true,}, {source: destNames, displayKey: 'name', autoSelect: false}); - } - - if (sourceNames) { - source.find('input[name$="source_name]"]').typeahead({hint: true, highlight: true,}, {source: sourceNames, displayKey: 'name', autoSelect: false}); - } - if (categories) { - source.find('input[name$="category_name]"]').typeahead({hint: true, highlight: true,}, {source: categories, displayKey: 'name', autoSelect: false}); - } - if (journalNames) { - source.find('input[name$="transaction_description]"]').typeahead({hint: true, highlight: true,}, {source: journalNames, displayKey: 'name', autoSelect: false}); - } - - $('div.split_row_holder').append(source); - - // remove original click things, add them again: - $('.remove-current-split').unbind('click').click(removeDivRow); - - calculateBothSums(); - resetDivSplits(); - - return false; -} - -/** - * New and hip - */ -function resetDivSplits() { - "use strict"; - // loop rows, reset numbers: - - // update the row split number: - $.each($('div.split_row'), function (i, v) { - var row = $(v); - row.attr('data-split', i); - - // add or remove class with bg thing - if (i % 2 === 0) { - row.removeClass('bg-gray-light'); - } - if (i % 2 === 1) { - row.addClass('bg-gray-light'); - } - - }); - - // loop each remove button, update the index - $.each($('.remove-current-split'), function (i, v) { - var button = $(v); - button.attr('data-split', i); - button.find('span').text(' #' + (i + 1)); - - }); - - - // loop each possible field. - - // ends with ][description] - $.each($('input[name$="][transaction_description]"]'), function (i, v) { - var input = $(v); - input.attr('name', 'transactions[' + i + '][transaction_description]'); - }); - // ends with ][destination_name] - $.each($('input[name$="][destination_name]"]'), function (i, v) { - var input = $(v); - input.attr('name', 'transactions[' + i + '][destination_name]'); - }); - // ends with ][source_name] - $.each($('input[name$="][source_name]"]'), function (i, v) { - var input = $(v); - input.attr('name', 'transactions[' + i + '][source_name]'); - }); - // ends with ][amount] - $.each($('input[name$="][amount]"]'), function (i, v) { - var input = $(v); - input.attr('name', 'transactions[' + i + '][amount]'); - }); - - // ends with ][foreign_amount] - $.each($('input[name$="][foreign_amount]"]'), function (i, v) { - var input = $(v); - input.attr('name', 'transactions[' + i + '][foreign_amount]'); - }); - - // ends with ][currency_id] - $.each($('input[name$="][currency_id]"]'), function (i, v) { - var input = $(v); - input.attr('name', 'transactions[' + i + '][currency_id]'); - }); - - // ends with ][foreign_currency_id] - $.each($('input[name$="][foreign_currency_id]"]'), function (i, v) { - var input = $(v); - input.attr('name', 'transactions[' + i + '][foreign_currency_id]'); - }); - - // ends with ][budget_id] - $.each($('select[name$="][budget_id]"]'), function (i, v) { - var input = $(v); - input.attr('name', 'transactions[' + i + '][budget_id]'); - }); - - // ends with ][category] - $.each($('input[name$="][category_name]"]'), function (i, v) { - var input = $(v); - input.attr('name', 'transactions[' + i + '][category_name]'); - }); -} - - -function calculateSum() { - "use strict"; - console.log("Now in calculateSum()"); - var left = originalSum * -1; - var sum = 0; - var set = $('input[name$="][amount]"]'); - for (var i = 0; i < set.length; i++) { - var current = $(set[i]); - sum += (current.val() === "" ? 0 : parseFloat(current.val())); - left += (current.val() === "" ? 0 : parseFloat(current.val())); - } - sum = Math.round(sum * 100) / 100; - left = Math.round(left * 100) / 100; - - console.log("Sum is " + sum + ", left is " + left); - - $('.amount-warning').remove(); - if (sum !== originalSum) { - console.log("Is different from original sum " + originalSum); - var paragraph = $('#journal_amount_holder').find('p.form-control-static'); - - $('').text(' (' + accounting.formatMoney(sum, currencySymbol) + ')').addClass('text-danger amount-warning').appendTo(paragraph); - - // also add what's left to divide (or vice versa) - $('').text(' (' + accounting.formatMoney(left, currencySymbol) + ')').addClass('text-danger amount-warning').appendTo(paragraph); - } - -} - - -function calculateForeignSum() { - // "use strict"; - var left = originalForeignSum * -1; - var sum = 0; - var set = $('input[name$="][foreign_amount]"]'); - for (var i = 0; i < set.length; i++) { - var current = $(set[i]); - sum += (current.val() === "" ? 0 : parseFloat(current.val())); - left += (current.val() === "" ? 0 : parseFloat(current.val())); - } - sum = Math.round(sum * 100) / 100; - left = Math.round(left * 100) / 100; - - - $('.amount-warning-foreign').remove(); - if (sum !== originalForeignSum) { - var paragraph = $('#journal_foreign_amount_holder').find('p.form-control-static'); - $('').text(' (' + accounting.formatMoney(sum, foreignCurrencySymbol) + ')').addClass('text-danger amount-warning-foreign').appendTo(paragraph); - - // also add what's left to divide (or vice versa) - $('').text(' (' + accounting.formatMoney(left, foreignCurrencySymbol) + ')').addClass('text-danger amount-warning-foreign').appendTo(paragraph); - } - -} diff --git a/resources/assets/js/components/transactions/ForeignAmountSelect.vue b/resources/assets/js/components/transactions/ForeignAmountSelect.vue index 5ac2a3f459..46bdf26c66 100644 --- a/resources/assets/js/components/transactions/ForeignAmountSelect.vue +++ b/resources/assets/js/components/transactions/ForeignAmountSelect.vue @@ -32,13 +32,12 @@ @@ -174,27 +173,32 @@ } }, loadCurrencies: function () { - // console.log('loadCurrencies'); - let URI = document.getElementsByTagName('base')[0].href + "json/currencies"; + //console.log('loadCurrencies'); + let URI = document.getElementsByTagName('base')[0].href + "api/v1/currencies"; axios.get(URI, {}).then((res) => { this.currencies = [ { - name: this.no_currency, id: 0, - enabled: true + attributes: { + name: this.no_currency, + enabled: true + }, } ]; this.enabledCurrencies = [ { - name: this.no_currency, + attributes: { + name: this.no_currency, + enabled: true + }, id: 0, - enabled: true } ]; for (const key in res.data.data) { if (res.data.data.hasOwnProperty(key) && /^0$|^[1-9]\d*$/.test(key) && key <= 4294967294) { - if (res.data.data[key].enabled) { + if (res.data.data[key].attributes.enabled) { + console.log(res.data.data[key].attributes); this.currencies.push(res.data.data[key]); this.enabledCurrencies.push(res.data.data[key]); } diff --git a/resources/assets/js/components/transactions/PiggyBank.vue b/resources/assets/js/components/transactions/PiggyBank.vue index 17bb1b860a..8bae6a532c 100644 --- a/resources/assets/js/components/transactions/PiggyBank.vue +++ b/resources/assets/js/components/transactions/PiggyBank.vue @@ -28,7 +28,7 @@
    @@ -58,7 +58,7 @@ return this.error.length > 0; }, loadPiggies: function () { - let URI = document.getElementsByTagName('base')[0].href + "json/piggy-banks"; + let URI = document.getElementsByTagName('base')[0].href + "api/v1/autocomplete/piggy-banks-with-balance"; axios.get(URI, {}).then((res) => { let tempList = { 0: { @@ -67,7 +67,7 @@ }, piggies: [ { - name_with_amount: this.no_piggy_bank, + name_with_balance: this.no_piggy_bank, id: 0, } ], @@ -87,11 +87,11 @@ piggies: [], }; } - tempList[groupOrder].piggies.push({name_with_amount: currentPiggy.name_with_amount, id: currentPiggy.id}); + tempList[groupOrder].piggies.push({name_with_balance: currentPiggy.name_with_balance, id: currentPiggy.id}); } if (!currentPiggy.objectGroup) { // add to empty one: - tempList[0].piggies.push({name_with_amount: currentPiggy.name_with_amount, id: currentPiggy.id}); + tempList[0].piggies.push({name_with_balance: currentPiggy.name_with_balance, id: currentPiggy.id}); } //console.log(currentPiggy); this.piggies.push(res.data[key]); diff --git a/resources/assets/js/components/transactions/Tags.vue b/resources/assets/js/components/transactions/Tags.vue index 136544924a..0dc591a504 100644 --- a/resources/assets/js/components/transactions/Tags.vue +++ b/resources/assets/js/components/transactions/Tags.vue @@ -91,7 +91,7 @@ if (this.tag.length < 2) { return; } - const url = document.getElementsByTagName('base')[0].href + `json/tags?search=${this.tag}`; + const url = document.getElementsByTagName('base')[0].href + `api/v1/autocomplete/tags?query=${this.tag}`; clearTimeout(this.debounce); this.debounce = setTimeout(() => { @@ -108,4 +108,4 @@ \ No newline at end of file + diff --git a/routes/api.php b/routes/api.php index 20877a8aff..90aaf6de27 100644 --- a/routes/api.php +++ b/routes/api.php @@ -70,6 +70,7 @@ Route::group( Route::get('object-groups', ['uses' => 'ObjectGroupController@objectGroups', 'as' => 'object-groups']); Route::get('piggy-banks', ['uses' => 'PiggyBankController@piggyBanks', 'as' => 'piggy-banks']); Route::get('piggy-banks-with-balance', ['uses' => 'PiggyBankController@piggyBanksWithBalance', 'as' => 'piggy-banks-with-balance']); + Route::get('tags', ['uses' => 'TagController@tags', 'as' => 'tags']); } ); diff --git a/routes/web.php b/routes/web.php index a3998dd8d0..aa119a44ec 100644 --- a/routes/web.php +++ b/routes/web.php @@ -604,19 +604,16 @@ Route::group( static function () { // for auto complete - Route::get('budgets', ['uses' => 'Json\AutoCompleteController@budgets', 'as' => 'autocomplete.budgets']); - Route::get('object-groups', ['uses' => 'Json\AutoCompleteController@objectGroups', 'as' => 'autocomplete.object-groups']); - Route::get('categories', ['uses' => 'Json\AutoCompleteController@categories', 'as' => 'autocomplete.categories']); - Route::get('currencies', ['uses' => 'Json\AutoCompleteController@currencies', 'as' => 'autocomplete.currencies']); - Route::get('piggy-banks', ['uses' => 'Json\AutoCompleteController@piggyBanks', 'as' => 'autocomplete.piggy-banks']); - Route::get('tags', ['uses' => 'Json\AutoCompleteController@tags', 'as' => 'autocomplete.tags']); - Route::get('transaction-journals/all', ['uses' => 'Json\AutoCompleteController@allJournals', 'as' => 'autocomplete.all-journals']); - Route::get('transaction-journals/with-id', ['uses' => 'Json\AutoCompleteController@allJournalsWithID', 'as' => 'autocomplete.all-journals-with-id']); - Route::get('currency-names', ['uses' => 'Json\AutoCompleteController@currencyNames', 'as' => 'autocomplete.currency-names']); - Route::get('transaction-types', ['uses' => 'Json\AutoCompleteController@transactionTypes', 'as' => 'transaction-types']); + // Route::get('transaction-journals/all', ['uses' => 'Json\AutoCompleteController@allJournals', 'as' => 'autocomplete.all-journals']); + // Route::get('transaction-journals/with-id', ['uses' => 'Json\AutoCompleteController@allJournalsWithID', 'as' => 'autocomplete.all-journals-with-id']); + // Route::get('currency-names', ['uses' => 'Json\AutoCompleteController@currencyNames', 'as' => 'autocomplete.currency-names']); + // Route::get('transaction-types', ['uses' => 'Json\AutoCompleteController@transactionTypes', 'as' => 'transaction-types']); // budgets: - Route::get('budget/total-budgeted/{currency}/{start_date}/{end_date}', ['uses' => 'Json\BudgetController@getBudgetInformation', 'as' => 'budget.total-budgeted']); + Route::get( + 'budget/total-budgeted/{currency}/{start_date}/{end_date}', + ['uses' => 'Json\BudgetController@getBudgetInformation', 'as' => 'budget.total-budgeted'] + ); // boxes