This commit is contained in:
unknown 2018-07-02 22:31:00 +03:00
parent beff732918
commit eac93fec2c
4 changed files with 118 additions and 8 deletions

View File

@ -1,6 +1,8 @@
import 'package:built_collection/built_collection.dart'; import 'package:built_collection/built_collection.dart';
import 'package:built_value/built_value.dart'; import 'package:built_value/built_value.dart';
import 'package:built_value/serializer.dart'; import 'package:built_value/serializer.dart';
import 'package:invoiceninja/data/models/entities.dart';
import 'package:invoiceninja/redux/app/app_state.dart';
part 'currency_model.g.dart'; part 'currency_model.g.dart';
@ -35,7 +37,7 @@ class CurrencyFields {
static const String exchangeRate = 'exchangeRate'; static const String exchangeRate = 'exchangeRate';
} }
abstract class CurrencyEntity implements Built<CurrencyEntity, CurrencyEntityBuilder> { abstract class CurrencyEntity extends Object with SelectableEntity implements Built<CurrencyEntity, CurrencyEntityBuilder> {
factory CurrencyEntity() { factory CurrencyEntity() {
return _$CurrencyEntity._( return _$CurrencyEntity._(
@ -52,8 +54,6 @@ abstract class CurrencyEntity implements Built<CurrencyEntity, CurrencyEntityBui
} }
CurrencyEntity._(); CurrencyEntity._();
int get id;
String get name; String get name;
String get symbol; String get symbol;
@ -76,5 +76,47 @@ abstract class CurrencyEntity implements Built<CurrencyEntity, CurrencyEntityBui
@BuiltValueField(wireName: 'exchange_rate') @BuiltValueField(wireName: 'exchange_rate')
double get exchangeRate; double get exchangeRate;
@override
bool matchesSearch(String search) {
if (search == null || search.isEmpty) {
return true;
}
search = search.toLowerCase();
if (name.toLowerCase().contains(search)) {
return true;
} else if (code.toLowerCase().contains(search)) {
return true;
}
return false;
}
@override
String matchesSearchValue(String search) {
if (search == null || search.isEmpty) {
return null;
}
search = search.toLowerCase();
if (code.toLowerCase().contains(search)) {
return code;
}
return null;
}
@override
String get listDisplayName {
return name;
}
@override
String listDisplayCost(AppState state) {
return '';
}
static Serializer<CurrencyEntity> get serializer => _$currencyEntitySerializer; static Serializer<CurrencyEntity> get serializer => _$currencyEntitySerializer;
} }

View File

@ -1,6 +1,8 @@
import 'package:built_collection/built_collection.dart'; import 'package:built_collection/built_collection.dart';
import 'package:built_value/built_value.dart'; import 'package:built_value/built_value.dart';
import 'package:built_value/serializer.dart'; import 'package:built_value/serializer.dart';
import 'package:invoiceninja/data/models/entities.dart';
import 'package:invoiceninja/redux/app/app_state.dart';
part 'language_model.g.dart'; part 'language_model.g.dart';
@ -30,7 +32,7 @@ class LanguageFields {
} }
abstract class LanguageEntity implements Built<LanguageEntity, LanguageEntityBuilder> { abstract class LanguageEntity extends Object with SelectableEntity implements Built<LanguageEntity, LanguageEntityBuilder> {
factory LanguageEntity() { factory LanguageEntity() {
return _$LanguageEntity._( return _$LanguageEntity._(
@ -41,10 +43,51 @@ abstract class LanguageEntity implements Built<LanguageEntity, LanguageEntityBui
} }
LanguageEntity._(); LanguageEntity._();
int get id;
String get name; String get name;
String get locale; String get locale;
@override
bool matchesSearch(String search) {
if (search == null || search.isEmpty) {
return true;
}
search = search.toLowerCase();
if (name.toLowerCase().contains(search)) {
return true;
} else if (locale.toLowerCase().contains(search)) {
return true;
}
return false;
}
@override
String matchesSearchValue(String search) {
if (search == null || search.isEmpty) {
return null;
}
search = search.toLowerCase();
if (locale.toLowerCase().contains(search)) {
return locale;
}
return null;
}
@override
String get listDisplayName {
return name;
}
@override
String listDisplayCost(AppState state) {
return '';
}
static Serializer<LanguageEntity> get serializer => _$languageEntitySerializer; static Serializer<LanguageEntity> get serializer => _$languageEntitySerializer;
} }

View File

@ -1,5 +1,5 @@
import 'package:built_collection/built_collection.dart'; import 'package:built_collection/built_collection.dart';
import 'package:invoiceninja/data/models/static/country_model.dart'; import 'package:invoiceninja/data/models/models.dart';
import 'package:memoize/memoize.dart'; import 'package:memoize/memoize.dart';
@ -14,3 +14,28 @@ List<int> countryList(BuiltMap<int, CountryEntity> countryMap) {
return list; return list;
} }
var memoizedLanguageList = memo1((BuiltMap<int, LanguageEntity> languageMap) =>
languageList(languageMap));
List<int> languageList(BuiltMap<int, LanguageEntity> languageMap) {
final list = languageMap.keys.toList();
list.sort((idA, idB) => languageMap[idA].listDisplayName
.compareTo(languageMap[idB].listDisplayName));
return list;
}
var memoizedCurrencyList = memo1((BuiltMap<int, CurrencyEntity> currencyMap) =>
currencyList(currencyMap));
List<int> currencyList(BuiltMap<int, CurrencyEntity> currencyMap) {
final list = currencyMap.keys.toList();
list.sort((idA, idB) => currencyMap[idA].listDisplayName
.compareTo(currencyMap[idB].listDisplayName));
return list;
}

View File

@ -15,7 +15,7 @@ class InvoiceItemSelector extends StatefulWidget {
class _InvoiceItemSelectorState extends State<InvoiceItemSelector> { class _InvoiceItemSelectorState extends State<InvoiceItemSelector> {
String _filter; String _filter;
List<int> _selectedIds = []; final List<int> _selectedIds = [];
final _textController = TextEditingController(); final _textController = TextEditingController();
//EntityType _selectedEntityType = EntityType.product; //EntityType _selectedEntityType = EntityType.product;