This commit is contained in:
Hillel Coren 2020-10-28 12:39:48 +02:00
parent 70c6388461
commit b19eca38ea
7 changed files with 31 additions and 13 deletions

View File

@ -394,6 +394,12 @@ const String kExpenseStatusLogged = '1';
const String kExpenseStatusPending = '2'; const String kExpenseStatusPending = '2';
const String kExpenseStatusInvoiced = '3'; const String kExpenseStatusInvoiced = '3';
const kExpenseStatuses = {
kExpenseStatusLogged: 'logged',
kExpenseStatusPending: 'pending',
kExpenseStatusInvoiced: 'invoiced',
};
const String kDefaultCurrencyId = '1'; const String kDefaultCurrencyId = '1';
const String kDefaultDateFormat = '5'; const String kDefaultDateFormat = '5';
const String kDefaultAccentColor = '#0091EA'; const String kDefaultAccentColor = '#0091EA';

View File

@ -138,6 +138,11 @@ class EntityType extends EnumClass {
return [ return [
EntityType.vendor, EntityType.vendor,
EntityType.project, EntityType.project,
EntityType.expenseCategory,
];
case EntityType.expenseCategory:
return [
EntityType.expense,
]; ];
default: default:
return []; return [];

View File

@ -228,7 +228,6 @@ abstract class AppState implements Built<AppState, AppStateBuilder> {
// STARTER: states switch map - do not remove comment // STARTER: states switch map - do not remove comment
case EntityType.expenseCategory: case EntityType.expenseCategory:
return expenseCategoryState.map; return expenseCategoryState.map;
case EntityType.recurringInvoice: case EntityType.recurringInvoice:
return recurringInvoiceState.map; return recurringInvoiceState.map;
case EntityType.webhook: case EntityType.webhook:

View File

@ -22,13 +22,7 @@ class ErrorDialog extends StatelessWidget {
return AlertDialog( return AlertDialog(
title: Text(localization.error), title: Text(localization.error),
content: error != null content: error != null
? ConstrainedBox( ? Text(error.toString())
child: Text(error.toString()),
constraints: BoxConstraints(
maxWidth: 600,
maxHeight: 400,
),
)
: SizedBox(), : SizedBox(),
actions: [ actions: [
if (clearErrorOnDismiss && !Config.DEMO_MODE) if (clearErrorOnDismiss && !Config.DEMO_MODE)

View File

@ -50,6 +50,11 @@ class EntityStatusChip extends StatelessWidget {
label = kCreditStatuses[credit.statusId]; label = kCreditStatuses[credit.statusId];
color = CreditStatusColors.colors[credit.statusId]; color = CreditStatusColors.colors[credit.statusId];
break; break;
case EntityType.expense:
final expense = entity as ExpenseEntity;
label = kExpenseStatuses[expense.statusId];
color = ExpenseStatusColors.colors[expense.statusId];
break;
default: default:
print( print(
'ERROR: unhandled entityType ${entity.entityType} in entity_status_chip.dart'); 'ERROR: unhandled entityType ${entity.entityType} in entity_status_chip.dart');

View File

@ -640,6 +640,11 @@ class EntityScreens extends StatelessWidget {
? RecurringInvoiceEditScreen() ? RecurringInvoiceEditScreen()
: RecurringInvoiceViewScreen(isFilter: true); : RecurringInvoiceViewScreen(isFilter: true);
break; break;
case EntityType.expenseCategory:
leftFilterChild = editingFIlterEntity
? ExpenseCategoryEditScreen()
: ExpenseCategoryViewScreen(isFilter: true);
break;
default: default:
print( print(
'Error: filter view not implemented for ${uiState.filterEntityType}'); 'Error: filter view not implemented for ${uiState.filterEntityType}');

View File

@ -7,6 +7,7 @@ import 'package:invoiceninja_flutter/redux/app/app_actions.dart';
import 'package:invoiceninja_flutter/redux/app/app_state.dart'; import 'package:invoiceninja_flutter/redux/app/app_state.dart';
import 'package:invoiceninja_flutter/ui/app/actions_menu_button.dart'; import 'package:invoiceninja_flutter/ui/app/actions_menu_button.dart';
import 'package:invoiceninja_flutter/ui/app/dismissible_entity.dart'; import 'package:invoiceninja_flutter/ui/app/dismissible_entity.dart';
import 'package:invoiceninja_flutter/ui/app/entities/entity_status_chip.dart';
import 'package:invoiceninja_flutter/ui/app/entity_state_label.dart'; import 'package:invoiceninja_flutter/ui/app/entity_state_label.dart';
import 'package:invoiceninja_flutter/utils/formatting.dart'; import 'package:invoiceninja_flutter/utils/formatting.dart';
import 'package:invoiceninja_flutter/utils/platforms.dart'; import 'package:invoiceninja_flutter/utils/platforms.dart';
@ -131,6 +132,7 @@ class ExpenseListItem extends StatelessWidget {
child: Column( child: Column(
crossAxisAlignment: CrossAxisAlignment.start, crossAxisAlignment: CrossAxisAlignment.start,
children: <Widget>[ children: <Widget>[
Text(expense.number),
if (!expense.isActive) EntityStateLabel(expense) if (!expense.isActive) EntityStateLabel(expense)
], ],
), ),
@ -142,11 +144,11 @@ class ExpenseListItem extends StatelessWidget {
crossAxisAlignment: CrossAxisAlignment.start, crossAxisAlignment: CrossAxisAlignment.start,
children: <Widget>[ children: <Widget>[
Text( Text(
(expense.number ?? '') + (expense.publicNotes ?? '') +
(expense.documents.isNotEmpty (expense.documents.isNotEmpty ? ' 📎' : ''),
? ' 📎' style: textStyle,
: ''), maxLines: 1,
style: textStyle), ),
Text(subtitle ?? filterMatch, Text(subtitle ?? filterMatch,
maxLines: 3, maxLines: 3,
overflow: TextOverflow.ellipsis, overflow: TextOverflow.ellipsis,
@ -167,6 +169,8 @@ class ExpenseListItem extends StatelessWidget {
style: textStyle, style: textStyle,
textAlign: TextAlign.end, textAlign: TextAlign.end,
), ),
SizedBox(width: 25),
EntityStatusChip(entity: expense),
], ],
), ),
), ),