mirror of
https://github.com/firefly-iii/firefly-iii.git
synced 2025-02-25 18:45:27 -06:00
Fix auto complete for tags and others. Adds search.
This commit is contained in:
parent
254a46b54c
commit
0bd818956f
10
public/css/firefly.css
vendored
10
public/css/firefly.css
vendored
@ -184,8 +184,16 @@ span.info-box-text a:hover, span.info-box-number a:hover {
|
||||
}
|
||||
|
||||
.twitter-typeahead {
|
||||
display:block !important;
|
||||
width:100%;
|
||||
}
|
||||
span.twitter-typeahead {
|
||||
display: inline !important;width:100%;
|
||||
|
||||
}
|
||||
.tt-input {
|
||||
background-color:#fff !important;
|
||||
}
|
||||
|
||||
|
||||
.twitter-typeahead .tt-query,
|
||||
.twitter-typeahead .tt-hint {
|
||||
|
50
public/js/ff/common/autocomplete.js
vendored
50
public/js/ff/common/autocomplete.js
vendored
@ -22,6 +22,7 @@
|
||||
* Do tags auto complete.
|
||||
*/
|
||||
function initTagsAC() {
|
||||
console.log('initTagsAC()');
|
||||
var tagTags = new Bloodhound({
|
||||
datumTokenizer: Bloodhound.tokenizers.obj.whitespace('name'),
|
||||
queryTokenizer: Bloodhound.tokenizers.whitespace,
|
||||
@ -32,11 +33,22 @@ function initTagsAC() {
|
||||
return {name: tagTag};
|
||||
});
|
||||
}
|
||||
},
|
||||
remote: {
|
||||
url: 'json/tags?search=%QUERY',
|
||||
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',
|
||||
@ -56,8 +68,8 @@ function initExpenseAC() {
|
||||
* Do destination name (expense accounts) auto complete.
|
||||
*/
|
||||
function initExpenseACField(fieldName) {
|
||||
console.log('initExpenseACField("' + fieldName + '")');
|
||||
if ($('input[name="' + fieldName + '"]').length > 0) {
|
||||
console.log('Init expense AC for field "'+fieldName+'"');
|
||||
var destNames = new Bloodhound({
|
||||
datumTokenizer: Bloodhound.tokenizers.obj.whitespace('name'),
|
||||
queryTokenizer: Bloodhound.tokenizers.whitespace,
|
||||
@ -68,10 +80,19 @@ function initExpenseACField(fieldName) {
|
||||
return {name: name};
|
||||
});
|
||||
}
|
||||
},
|
||||
remote: {
|
||||
url: 'json/expense-accounts?search=%QUERY',
|
||||
wildcard: '%QUERY',
|
||||
filter: function (list) {
|
||||
return $.map(list, function (name) {
|
||||
return {name: name};
|
||||
});
|
||||
}
|
||||
}
|
||||
});
|
||||
destNames.initialize();
|
||||
$('input[name="' + fieldName + '"]').typeahead({}, {source: destNames, displayKey: 'name', autoSelect: false});
|
||||
$('input[name="' + fieldName + '"]').typeahead({hint: true, highlight: true,}, {source: destNames, displayKey: 'name', autoSelect: false});
|
||||
}
|
||||
}
|
||||
|
||||
@ -86,9 +107,8 @@ function initRevenueAC() {
|
||||
* Do source name (revenue accounts) auto complete.
|
||||
*/
|
||||
function initRevenueACField(fieldName) {
|
||||
|
||||
console.log('initRevenueACField("' + fieldName + '")');
|
||||
if ($('input[name="' + fieldName + '"]').length > 0) {
|
||||
console.log('Init revenue AC for field "'+fieldName+'"');
|
||||
var sourceNames = new Bloodhound({
|
||||
datumTokenizer: Bloodhound.tokenizers.obj.whitespace('name'),
|
||||
queryTokenizer: Bloodhound.tokenizers.whitespace,
|
||||
@ -99,10 +119,19 @@ function initRevenueACField(fieldName) {
|
||||
return {name: name};
|
||||
});
|
||||
}
|
||||
},
|
||||
remote: {
|
||||
url: 'json/revenue-accounts?search=%QUERY',
|
||||
wildcard: '%QUERY',
|
||||
filter: function (list) {
|
||||
return $.map(list, function (name) {
|
||||
return {name: name};
|
||||
});
|
||||
}
|
||||
}
|
||||
});
|
||||
sourceNames.initialize();
|
||||
$('input[name="' + fieldName + '"]').typeahead({}, {source: sourceNames, displayKey: 'name', autoSelect: false});
|
||||
$('input[name="' + fieldName + '"]').typeahead({hint: true, highlight: true,}, {source: sourceNames, displayKey: 'name', autoSelect: false});
|
||||
}
|
||||
}
|
||||
|
||||
@ -120,8 +149,17 @@ function initCategoryAC() {
|
||||
return {name: name};
|
||||
});
|
||||
}
|
||||
},
|
||||
remote: {
|
||||
url: 'json/categories?search=%QUERY',
|
||||
wildcard: '%QUERY',
|
||||
filter: function (list) {
|
||||
return $.map(list, function (name) {
|
||||
return {name: name};
|
||||
});
|
||||
}
|
||||
}
|
||||
});
|
||||
categories.initialize();
|
||||
$('input[name="category"]').typeahead({}, {source: categories, displayKey: 'name', autoSelect: false});
|
||||
$('input[name="category"]').typeahead({hint: true, highlight: true,}, {source: categories, displayKey: 'name', autoSelect: false});
|
||||
}
|
13
public/js/ff/rules/create-edit.js
vendored
13
public/js/ff/rules/create-edit.js
vendored
@ -360,7 +360,7 @@ function updateTriggerInput(selectList) {
|
||||
* @param URI
|
||||
*/
|
||||
function createAutoComplete(input, URI) {
|
||||
console.log('Now in createAutoComplete().')
|
||||
console.log('Now in createAutoComplete("' + URI + '").');
|
||||
input.typeahead('destroy');
|
||||
|
||||
var source = new Bloodhound({
|
||||
@ -373,10 +373,19 @@ function createAutoComplete(input, URI) {
|
||||
return {name: name};
|
||||
});
|
||||
}
|
||||
},
|
||||
remote: {
|
||||
url: URI + '?search=%QUERY',
|
||||
wildcard: '%QUERY',
|
||||
filter: function (list) {
|
||||
return $.map(list, function (name) {
|
||||
return {name: name};
|
||||
});
|
||||
}
|
||||
}
|
||||
});
|
||||
source.initialize();
|
||||
input.typeahead({}, {source: source, displayKey: 'name', autoSelect: false});
|
||||
input.typeahead({hint: true, highlight: true,}, {source: source, displayKey: 'name', autoSelect: false});
|
||||
}
|
||||
|
||||
function testRuleTriggers() {
|
||||
|
19
public/js/ff/transactions/mass/edit-bulk.js
vendored
19
public/js/ff/transactions/mass/edit-bulk.js
vendored
@ -22,21 +22,6 @@
|
||||
|
||||
$(document).ready(function () {
|
||||
"use strict";
|
||||
|
||||
$.getJSON('json/categories').done(function (data) {
|
||||
$('input[name="category"]').typeahead({source: data, autoSelect: false});
|
||||
});
|
||||
|
||||
$.getJSON('json/tags').done(function (data) {
|
||||
var opt = {
|
||||
source: data,
|
||||
afterSelect: function () {
|
||||
this.$element.val("");
|
||||
},
|
||||
autoSelect: false
|
||||
};
|
||||
$('input[name="tags"]').tagsinput(
|
||||
opt
|
||||
);
|
||||
});
|
||||
initTagsAC();
|
||||
initCategoryAC();
|
||||
});
|
82
public/js/ff/transactions/mass/edit.js
vendored
82
public/js/ff/transactions/mass/edit.js
vendored
@ -25,19 +25,83 @@ $(document).ready(function () {
|
||||
|
||||
// destination account names:
|
||||
if ($('input[name^="destination_name["]').length > 0) {
|
||||
$.getJSON('json/expense-accounts').done(function (data) {
|
||||
$('input[name^="destination_name["]').typeahead({source: data, autoSelect: false});
|
||||
});
|
||||
var destNames = new Bloodhound({
|
||||
datumTokenizer: Bloodhound.tokenizers.obj.whitespace('name'),
|
||||
queryTokenizer: Bloodhound.tokenizers.whitespace,
|
||||
prefetch: {
|
||||
url: 'json/expense-accounts',
|
||||
filter: function (list) {
|
||||
return $.map(list, function (name) {
|
||||
return {name: name};
|
||||
});
|
||||
}
|
||||
},
|
||||
remote: {
|
||||
url: 'json/expense-accounts?search=%QUERY',
|
||||
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});
|
||||
}
|
||||
|
||||
// source account name
|
||||
if ($('input[name^="source_name["]').length > 0) {
|
||||
$.getJSON('json/revenue-accounts').done(function (data) {
|
||||
$('input[name^="source_name["]').typeahead({source: data, autoSelect: false});
|
||||
});
|
||||
|
||||
var sourceNames = new Bloodhound({
|
||||
datumTokenizer: Bloodhound.tokenizers.obj.whitespace('name'),
|
||||
queryTokenizer: Bloodhound.tokenizers.whitespace,
|
||||
prefetch: {
|
||||
url: 'json/revenue-accounts',
|
||||
filter: function (list) {
|
||||
return $.map(list, function (name) {
|
||||
return {name: name};
|
||||
});
|
||||
}
|
||||
},
|
||||
remote: {
|
||||
url: 'json/revenue-accounts?search=%QUERY',
|
||||
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});
|
||||
}
|
||||
|
||||
$.getJSON('json/categories').done(function (data) {
|
||||
$('input[name^="category["]').typeahead({source: data, autoSelect: false});
|
||||
});
|
||||
var categories = new Bloodhound({
|
||||
datumTokenizer: Bloodhound.tokenizers.obj.whitespace('name'),
|
||||
queryTokenizer: Bloodhound.tokenizers.whitespace,
|
||||
prefetch: {
|
||||
url: 'json/categories',
|
||||
filter: function (list) {
|
||||
return $.map(list, function (name) {
|
||||
return {name: name};
|
||||
});
|
||||
}
|
||||
},
|
||||
remote: {
|
||||
url: 'json/categories?search=%QUERY',
|
||||
wildcard: '%QUERY',
|
||||
filter: function (list) {
|
||||
return $.map(list, function (name) {
|
||||
return {name: name};
|
||||
});
|
||||
}
|
||||
}
|
||||
});
|
||||
categories.initialize();
|
||||
|
||||
$('input[name^="category["]').typeahead({hint: true, highlight: true,}, {source: categories, displayKey: 'name', autoSelect: false});
|
||||
|
||||
});
|
11
public/js/ff/transactions/show.js
vendored
11
public/js/ff/transactions/show.js
vendored
@ -32,11 +32,20 @@ $(function () {
|
||||
return {name: name};
|
||||
});
|
||||
}
|
||||
},
|
||||
remote: {
|
||||
url: autoCompleteUri + '?search=%QUERY',
|
||||
wildcard: '%QUERY',
|
||||
filter: function (list) {
|
||||
return $.map(list, function (name) {
|
||||
return {name: name};
|
||||
});
|
||||
}
|
||||
}
|
||||
});
|
||||
transactions.initialize();
|
||||
var input=$("#link_other");
|
||||
input.typeahead({}, {source: transactions, displayKey: 'name', autoSelect: false});
|
||||
input.typeahead({hint: true, highlight: true,}, {source: transactions, displayKey: 'name', autoSelect: false});
|
||||
|
||||
input.change(function () {
|
||||
var current = input.typeahead("getActive");
|
||||
|
74
public/js/ff/transactions/single/common.js
vendored
74
public/js/ff/transactions/single/common.js
vendored
@ -49,81 +49,15 @@ function setCommonAutocomplete() {
|
||||
console.log('In setCommonAutoComplete()');
|
||||
|
||||
// do tags auto complete:
|
||||
var tagTags = new Bloodhound({
|
||||
datumTokenizer: Bloodhound.tokenizers.obj.whitespace('name'),
|
||||
queryTokenizer: Bloodhound.tokenizers.whitespace,
|
||||
prefetch: {
|
||||
url: 'json/tags',
|
||||
filter: function (list) {
|
||||
return $.map(list, function (tagTag) {
|
||||
return {name: tagTag};
|
||||
});
|
||||
}
|
||||
}
|
||||
});
|
||||
tagTags.initialize();
|
||||
$('input[name="tags"]').tagsinput({
|
||||
typeaheadjs: {
|
||||
name: 'tags',
|
||||
displayKey: 'name',
|
||||
valueKey: 'name',
|
||||
source: tagTags.ttAdapter()
|
||||
}
|
||||
});
|
||||
|
||||
initTagsAC();
|
||||
// do destination name (expense accounts):
|
||||
if ($('input[name="destination_name"]').length > 0) {
|
||||
// do tags auto complete:
|
||||
var destNames = new Bloodhound({
|
||||
datumTokenizer: Bloodhound.tokenizers.obj.whitespace('name'),
|
||||
queryTokenizer: Bloodhound.tokenizers.whitespace,
|
||||
prefetch: {
|
||||
url: 'json/expense-accounts',
|
||||
filter: function (list) {
|
||||
return $.map(list, function (name) {
|
||||
return {name: name};
|
||||
});
|
||||
}
|
||||
}
|
||||
});
|
||||
destNames.initialize();
|
||||
$('input[name="destination_name"]').typeahead({}, {source: destNames, displayKey: 'name', autoSelect: false});
|
||||
}
|
||||
initExpenseAC();
|
||||
|
||||
// do source name (revenue accounts):
|
||||
if ($('input[name="source_name"]').length > 0) {
|
||||
// do tags auto complete:
|
||||
var sourceNames = new Bloodhound({
|
||||
datumTokenizer: Bloodhound.tokenizers.obj.whitespace('name'),
|
||||
queryTokenizer: Bloodhound.tokenizers.whitespace,
|
||||
prefetch: {
|
||||
url: 'json/revenue-accounts',
|
||||
filter: function (list) {
|
||||
return $.map(list, function (name) {
|
||||
return {name: name};
|
||||
});
|
||||
}
|
||||
}
|
||||
});
|
||||
sourceNames.initialize();
|
||||
$('input[name="source_name"]').typeahead({}, {source: sourceNames, displayKey: 'name', autoSelect: false});
|
||||
}
|
||||
initRevenueAC();
|
||||
|
||||
// do categories auto complete:
|
||||
var categories = new Bloodhound({
|
||||
datumTokenizer: Bloodhound.tokenizers.obj.whitespace('name'),
|
||||
queryTokenizer: Bloodhound.tokenizers.whitespace,
|
||||
prefetch: {
|
||||
url: 'json/categories',
|
||||
filter: function (list) {
|
||||
return $.map(list, function (name) {
|
||||
return {name: name};
|
||||
});
|
||||
}
|
||||
}
|
||||
});
|
||||
categories.initialize();
|
||||
$('input[name="category"]').typeahead({}, {source: categories, displayKey: 'name', autoSelect: false});
|
||||
initCategoryAC();
|
||||
}
|
||||
|
||||
/**
|
||||
|
11
public/js/ff/transactions/single/create.js
vendored
11
public/js/ff/transactions/single/create.js
vendored
@ -148,10 +148,19 @@ function updateDescription() {
|
||||
return {name: name};
|
||||
});
|
||||
}
|
||||
},
|
||||
remote: {
|
||||
url: 'json/transaction-journals/' + what + '?search=%QUERY',
|
||||
wildcard: '%QUERY',
|
||||
filter: function (list) {
|
||||
return $.map(list, function (name) {
|
||||
return {name: name};
|
||||
});
|
||||
}
|
||||
}
|
||||
});
|
||||
journalNames.initialize();
|
||||
$('input[name="description"]').typeahead('destroy').typeahead({}, {source: journalNames, displayKey: 'name', autoSelect: false});
|
||||
$('input[name="description"]').typeahead('destroy').typeahead({hint: true, highlight: true,}, {source: journalNames, displayKey: 'name', autoSelect: false});
|
||||
$('#ffInput_description').focus();
|
||||
}
|
||||
|
||||
|
28
public/js/ff/transactions/single/edit.js
vendored
28
public/js/ff/transactions/single/edit.js
vendored
@ -148,9 +148,31 @@ function getAccountId() {
|
||||
* Set the auto-complete JSON things.
|
||||
*/
|
||||
function setAutocompletes() {
|
||||
$.getJSON('json/transaction-journals/' + what).done(function (data) {
|
||||
$('input[name="description"]').typeahead({source: data, autoSelect: false});
|
||||
});
|
||||
|
||||
// do description auto complete:
|
||||
var journalNames = new Bloodhound({
|
||||
datumTokenizer: Bloodhound.tokenizers.obj.whitespace('name'),
|
||||
queryTokenizer: Bloodhound.tokenizers.whitespace,
|
||||
prefetch: {
|
||||
url: 'json/transaction-journals/' + what,
|
||||
filter: function (list) {
|
||||
return $.map(list, function (name) {
|
||||
return {name: name};
|
||||
});
|
||||
}
|
||||
},
|
||||
remote: {
|
||||
url: 'json/transaction-journals/' + what + '?search=%QUERY',
|
||||
wildcard: '%QUERY',
|
||||
filter: function (list) {
|
||||
return $.map(list, function (name) {
|
||||
return {name: name};
|
||||
});
|
||||
}
|
||||
}
|
||||
});
|
||||
journalNames.initialize();
|
||||
$('input[name="description"]').typeahead({hint: true, highlight: true,}, {source: journalNames, displayKey: 'name', autoSelect: false});
|
||||
}
|
||||
|
||||
/**
|
||||
|
187
public/js/ff/transactions/split/edit.js
vendored
187
public/js/ff/transactions/split/edit.js
vendored
@ -21,53 +21,152 @@
|
||||
|
||||
/** global: originalSum,originalForeignSum, accounting, what, Modernizr, currencySymbol, foreignCurrencySymbol */
|
||||
|
||||
var destAccounts = {};
|
||||
var srcAccounts = {};
|
||||
var categories = {};
|
||||
var descriptions = {};
|
||||
var destNames;
|
||||
var sourceNames;
|
||||
var categories;
|
||||
var journalNames;
|
||||
|
||||
$(document).ready(function () {
|
||||
"use strict";
|
||||
$('.btn-do-split').click(cloneDivRow);
|
||||
$('.remove-current-split').click(removeDivRow);
|
||||
|
||||
$.getJSON('json/expense-accounts').done(function (data) {
|
||||
destAccounts = data;
|
||||
$('input[name$="destination_name]"]').typeahead({source: destAccounts, autoSelect: false});
|
||||
});
|
||||
// auto complete destination name (expense accounts):
|
||||
destNames = new Bloodhound({
|
||||
datumTokenizer: Bloodhound.tokenizers.obj.whitespace('name'),
|
||||
queryTokenizer: Bloodhound.tokenizers.whitespace,
|
||||
prefetch: {
|
||||
url: 'json/expense-accounts',
|
||||
filter: function (list) {
|
||||
return $.map(list, function (name) {
|
||||
return {name: name};
|
||||
});
|
||||
}
|
||||
},
|
||||
remote: {
|
||||
url: 'json/expense-accounts?search=%QUERY',
|
||||
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});
|
||||
|
||||
$.getJSON('json/revenue-accounts').done(function (data) {
|
||||
srcAccounts = data;
|
||||
$('input[name$="source_name]"]').typeahead({source: srcAccounts, 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',
|
||||
filter: function (list) {
|
||||
return $.map(list, function (name) {
|
||||
return {name: name};
|
||||
});
|
||||
}
|
||||
},
|
||||
remote: {
|
||||
url: 'json/revenue-accounts?search=%QUERY',
|
||||
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});
|
||||
|
||||
$.getJSON('json/categories').done(function (data) {
|
||||
categories = data;
|
||||
$('input[name$="category_name]"]').typeahead({source: categories, autoSelect: false});
|
||||
});
|
||||
// auto complete category fields:
|
||||
categories = new Bloodhound({
|
||||
datumTokenizer: Bloodhound.tokenizers.obj.whitespace('name'),
|
||||
queryTokenizer: Bloodhound.tokenizers.whitespace,
|
||||
prefetch: {
|
||||
url: 'json/categories',
|
||||
filter: function (list) {
|
||||
return $.map(list, function (name) {
|
||||
return {name: name};
|
||||
});
|
||||
}
|
||||
},
|
||||
remote: {
|
||||
url: 'json/categories?search=%QUERY',
|
||||
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});
|
||||
|
||||
$.getJSON('json/transaction-journals/' + what).done(function (data) {
|
||||
descriptions = data;
|
||||
$('input[name="journal_description"]').typeahead({source: descriptions, autoSelect: false});
|
||||
$('input[name$="transaction_description]"]').typeahead({source: descriptions, 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,
|
||||
filter: function (list) {
|
||||
return $.map(list, function (name) {
|
||||
return {name: name};
|
||||
});
|
||||
}
|
||||
},
|
||||
remote: {
|
||||
url: 'json/transaction-journals/' + what + '?search=%QUERY',
|
||||
wildcard: '%QUERY',
|
||||
filter: function (list) {
|
||||
return $.map(list, function (name) {
|
||||
return {name: name};
|
||||
});
|
||||
}
|
||||
}
|
||||
});
|
||||
journalNames.initialize();
|
||||
|
||||
$.getJSON('json/tags').done(function (data) {
|
||||
|
||||
var opt = {
|
||||
typeahead: {
|
||||
source: data,
|
||||
afterSelect: function () {
|
||||
this.$element.val("");
|
||||
},
|
||||
autoSelect: false
|
||||
}
|
||||
};
|
||||
$('input[name="tags"]').tagsinput(
|
||||
opt
|
||||
);
|
||||
});
|
||||
$('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',
|
||||
filter: function (list) {
|
||||
return $.map(list, function (tagTag) {
|
||||
return {name: tagTag};
|
||||
});
|
||||
}
|
||||
},
|
||||
remote: {
|
||||
url: 'json/tags?search=%QUERY',
|
||||
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);
|
||||
@ -128,18 +227,18 @@ function cloneDivRow() {
|
||||
|
||||
source.find('input[name$="][amount]"]').val("").on('change', calculateBothSums);
|
||||
source.find('input[name$="][foreign_amount]"]').val("").on('change', calculateBothSums);
|
||||
if (destAccounts.length > 0) {
|
||||
source.find('input[name$="destination_name]"]').typeahead({source: destAccounts, autoSelect: false});
|
||||
if (destNames) {
|
||||
source.find('input[name$="destination_name]"]').typeahead({hint: true, highlight: true,}, {source: destNames, displayKey: 'name', autoSelect: false});
|
||||
}
|
||||
|
||||
if (srcAccounts.length > 0) {
|
||||
source.find('input[name$="source_name]"]').typeahead({source: srcAccounts, autoSelect: false});
|
||||
if (sourceNames) {
|
||||
source.find('input[name$="source_name]"]').typeahead({hint: true, highlight: true,}, {source: sourceNames, displayKey: 'name', autoSelect: false});
|
||||
}
|
||||
if (categories.length > 0) {
|
||||
source.find('input[name$="category_name]"]').typeahead({source: categories, autoSelect: false});
|
||||
if (categories) {
|
||||
source.find('input[name$="category_name]"]').typeahead({hint: true, highlight: true,}, {source: categories, displayKey: 'name', autoSelect: false});
|
||||
}
|
||||
if (descriptions.length > 0) {
|
||||
source.find('input[name$="transaction_description]"]').typeahead({source: descriptions, 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);
|
||||
|
Loading…
Reference in New Issue
Block a user