Categories
This commit is contained in:
parent
73fef0cb8e
commit
bca086fed7
|
|
@ -341,7 +341,7 @@ const String kSettingsTokenEdit = 'token_edit';
|
||||||
const String kSettingsWebhooks = 'webhook';
|
const String kSettingsWebhooks = 'webhook';
|
||||||
const String kSettingsWebhookView = 'webhook_view';
|
const String kSettingsWebhookView = 'webhook_view';
|
||||||
const String kSettingsWebhookEdit = 'webhook_edit';
|
const String kSettingsWebhookEdit = 'webhook_edit';
|
||||||
const String kSettingsExpenseCategory = 'expense_category';
|
const String kSettingsExpenseCategories = 'expense_category';
|
||||||
const String kSettingsExpenseCategoryView = 'expense_category_view';
|
const String kSettingsExpenseCategoryView = 'expense_category_view';
|
||||||
const String kSettingsExpenseCategoryEdit = 'expense_category_edit';
|
const String kSettingsExpenseCategoryEdit = 'expense_category_edit';
|
||||||
|
|
||||||
|
|
|
||||||
|
|
@ -37,6 +37,7 @@ class EntityType extends EnumClass {
|
||||||
static const EntityType gatewayToken = _$gatewayToken;
|
static const EntityType gatewayToken = _$gatewayToken;
|
||||||
static const EntityType invoiceItem = _$invoiceItem;
|
static const EntityType invoiceItem = _$invoiceItem;
|
||||||
static const EntityType design = _$design;
|
static const EntityType design = _$design;
|
||||||
|
|
||||||
// STARTER: entity type - do not remove comment
|
// STARTER: entity type - do not remove comment
|
||||||
static const EntityType webhook = _$webhook;
|
static const EntityType webhook = _$webhook;
|
||||||
static const EntityType token = _$token;
|
static const EntityType token = _$token;
|
||||||
|
|
@ -57,6 +58,10 @@ class EntityType extends EnumClass {
|
||||||
static const EntityType font = _$font;
|
static const EntityType font = _$font;
|
||||||
|
|
||||||
String get plural {
|
String get plural {
|
||||||
|
if (this == EntityType.expenseCategory) {
|
||||||
|
return 'expenseCategories';
|
||||||
|
}
|
||||||
|
|
||||||
return toString() + 's';
|
return toString() + 's';
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
@ -69,6 +74,7 @@ class EntityType extends EnumClass {
|
||||||
EntityType.design,
|
EntityType.design,
|
||||||
EntityType.token,
|
EntityType.token,
|
||||||
EntityType.webhook,
|
EntityType.webhook,
|
||||||
|
EntityType.expenseCategory,
|
||||||
].contains(this);
|
].contains(this);
|
||||||
|
|
||||||
List<EntityType> get relatedTypes {
|
List<EntityType> get relatedTypes {
|
||||||
|
|
|
||||||
|
|
@ -23,6 +23,9 @@ import 'package:invoiceninja_flutter/ui/credit/view/credit_view_vm.dart';
|
||||||
import 'package:invoiceninja_flutter/ui/design/design_screen_vm.dart';
|
import 'package:invoiceninja_flutter/ui/design/design_screen_vm.dart';
|
||||||
import 'package:invoiceninja_flutter/ui/design/edit/design_edit_vm.dart';
|
import 'package:invoiceninja_flutter/ui/design/edit/design_edit_vm.dart';
|
||||||
import 'package:invoiceninja_flutter/ui/design/view/design_view_vm.dart';
|
import 'package:invoiceninja_flutter/ui/design/view/design_view_vm.dart';
|
||||||
|
import 'package:invoiceninja_flutter/ui/expense_category/edit/expense_category_edit_vm.dart';
|
||||||
|
import 'package:invoiceninja_flutter/ui/expense_category/expense_category_screen_vm.dart';
|
||||||
|
import 'package:invoiceninja_flutter/ui/expense_category/view/expense_category_view_vm.dart';
|
||||||
import 'package:invoiceninja_flutter/ui/payment_term/edit/payment_term_edit_vm.dart';
|
import 'package:invoiceninja_flutter/ui/payment_term/edit/payment_term_edit_vm.dart';
|
||||||
import 'package:invoiceninja_flutter/ui/payment_term/payment_term_screen_vm.dart';
|
import 'package:invoiceninja_flutter/ui/payment_term/payment_term_screen_vm.dart';
|
||||||
import 'package:invoiceninja_flutter/ui/payment_term/view/payment_term_view_vm.dart';
|
import 'package:invoiceninja_flutter/ui/payment_term/view/payment_term_view_vm.dart';
|
||||||
|
|
@ -497,6 +500,15 @@ class SettingsScreens extends StatelessWidget {
|
||||||
case kSettingsWebhookEdit:
|
case kSettingsWebhookEdit:
|
||||||
screen = WebhookEditScreen();
|
screen = WebhookEditScreen();
|
||||||
break;
|
break;
|
||||||
|
case kSettingsExpenseCategories:
|
||||||
|
screen = ExpenseCategoryScreenBuilder();
|
||||||
|
break;
|
||||||
|
case kSettingsExpenseCategoryView:
|
||||||
|
screen = ExpenseCategoryViewScreen();
|
||||||
|
break;
|
||||||
|
case kSettingsExpenseCategoryEdit:
|
||||||
|
screen = ExpenseCategoryEditScreen();
|
||||||
|
break;
|
||||||
}
|
}
|
||||||
|
|
||||||
return Row(children: <Widget>[
|
return Row(children: <Widget>[
|
||||||
|
|
|
||||||
|
|
@ -20,7 +20,7 @@ class ExpenseCategoryScreen extends StatelessWidget {
|
||||||
@required this.viewModel,
|
@required this.viewModel,
|
||||||
}) : super(key: key);
|
}) : super(key: key);
|
||||||
|
|
||||||
static const String route = '/$kSettings/$kSettingsExpenseCategory';
|
static const String route = '/$kSettings/$kSettingsExpenseCategories';
|
||||||
|
|
||||||
final ExpenseCategoryScreenVM viewModel;
|
final ExpenseCategoryScreenVM viewModel;
|
||||||
|
|
||||||
|
|
|
||||||
|
|
@ -1,5 +1,6 @@
|
||||||
import 'package:flutter/foundation.dart';
|
import 'package:flutter/foundation.dart';
|
||||||
import 'package:flutter/material.dart';
|
import 'package:flutter/material.dart';
|
||||||
|
import 'package:invoiceninja_flutter/ui/app/buttons/elevated_button.dart';
|
||||||
import 'package:invoiceninja_flutter/ui/app/form_card.dart';
|
import 'package:invoiceninja_flutter/ui/app/form_card.dart';
|
||||||
import 'package:invoiceninja_flutter/ui/app/forms/app_form.dart';
|
import 'package:invoiceninja_flutter/ui/app/forms/app_form.dart';
|
||||||
import 'package:invoiceninja_flutter/ui/settings/expense_settings_vm.dart';
|
import 'package:invoiceninja_flutter/ui/settings/expense_settings_vm.dart';
|
||||||
|
|
@ -76,6 +77,14 @@ class _ExpenseSettingsState extends State<ExpenseSettings> {
|
||||||
),
|
),
|
||||||
],
|
],
|
||||||
),
|
),
|
||||||
|
Padding(
|
||||||
|
padding: const EdgeInsets.symmetric(horizontal: 16.0),
|
||||||
|
child: AppButton(
|
||||||
|
iconData: Icons.settings,
|
||||||
|
label: localization.configureCategories.toUpperCase(),
|
||||||
|
onPressed: () => viewModel.onConfigureCategoriesPressed(context),
|
||||||
|
),
|
||||||
|
),
|
||||||
],
|
],
|
||||||
),
|
),
|
||||||
);
|
);
|
||||||
|
|
|
||||||
|
|
@ -4,6 +4,7 @@ import 'package:flutter_redux/flutter_redux.dart';
|
||||||
import 'package:invoiceninja_flutter/constants.dart';
|
import 'package:invoiceninja_flutter/constants.dart';
|
||||||
import 'package:invoiceninja_flutter/data/models/company_model.dart';
|
import 'package:invoiceninja_flutter/data/models/company_model.dart';
|
||||||
import 'package:invoiceninja_flutter/redux/company/company_actions.dart';
|
import 'package:invoiceninja_flutter/redux/company/company_actions.dart';
|
||||||
|
import 'package:invoiceninja_flutter/redux/settings/settings_actions.dart';
|
||||||
import 'package:invoiceninja_flutter/ui/settings/expense_settings.dart';
|
import 'package:invoiceninja_flutter/ui/settings/expense_settings.dart';
|
||||||
import 'package:invoiceninja_flutter/utils/completers.dart';
|
import 'package:invoiceninja_flutter/utils/completers.dart';
|
||||||
import 'package:invoiceninja_flutter/utils/localization.dart';
|
import 'package:invoiceninja_flutter/utils/localization.dart';
|
||||||
|
|
@ -34,6 +35,7 @@ class ExpenseSettingsVM {
|
||||||
@required this.company,
|
@required this.company,
|
||||||
@required this.onCompanyChanged,
|
@required this.onCompanyChanged,
|
||||||
@required this.onSavePressed,
|
@required this.onSavePressed,
|
||||||
|
@required this.onConfigureCategoriesPressed,
|
||||||
});
|
});
|
||||||
|
|
||||||
static ExpenseSettingsVM fromStore(Store<AppState> store) {
|
static ExpenseSettingsVM fromStore(Store<AppState> store) {
|
||||||
|
|
@ -50,11 +52,18 @@ class ExpenseSettingsVM {
|
||||||
context, AppLocalization.of(context).savedSettings);
|
context, AppLocalization.of(context).savedSettings);
|
||||||
store.dispatch(SaveCompanyRequest(
|
store.dispatch(SaveCompanyRequest(
|
||||||
completer: completer, company: settingsUIState.company));
|
completer: completer, company: settingsUIState.company));
|
||||||
});
|
},
|
||||||
|
onConfigureCategoriesPressed: (context) {
|
||||||
|
store.dispatch(ViewSettings(
|
||||||
|
navigator: Navigator.of(context),
|
||||||
|
section: kSettingsExpenseCategories));
|
||||||
|
},
|
||||||
|
);
|
||||||
}
|
}
|
||||||
|
|
||||||
final AppState state;
|
final AppState state;
|
||||||
final Function(BuildContext) onSavePressed;
|
final Function(BuildContext) onSavePressed;
|
||||||
final CompanyEntity company;
|
final CompanyEntity company;
|
||||||
final Function(CompanyEntity) onCompanyChanged;
|
final Function(CompanyEntity) onCompanyChanged;
|
||||||
|
final Function(BuildContext) onConfigureCategoriesPressed;
|
||||||
}
|
}
|
||||||
|
|
|
||||||
|
|
@ -15,6 +15,7 @@ mixin LocalizationsProvider on LocaleCodeAware {
|
||||||
static final Map<String, Map<String, String>> _localizedValues = {
|
static final Map<String, Map<String, String>> _localizedValues = {
|
||||||
'en': {
|
'en': {
|
||||||
// STARTER: lang key - do not remove comment
|
// STARTER: lang key - do not remove comment
|
||||||
|
'configure_categories': 'Configure Categories',
|
||||||
'expense_categories': 'Expense Categories',
|
'expense_categories': 'Expense Categories',
|
||||||
'new_expense_category': 'New Expense Category',
|
'new_expense_category': 'New Expense Category',
|
||||||
'edit_expense_category': 'Edit Expense Category',
|
'edit_expense_category': 'Edit Expense Category',
|
||||||
|
|
@ -25,6 +26,7 @@ mixin LocalizationsProvider on LocaleCodeAware {
|
||||||
'removed_expense_category': 'Successfully removed expense category',
|
'removed_expense_category': 'Successfully removed expense category',
|
||||||
'restored_expense_category': 'Successfully restored expense category',
|
'restored_expense_category': 'Successfully restored expense category',
|
||||||
'search_expense_category': 'Search Expense Category',
|
'search_expense_category': 'Search Expense Category',
|
||||||
|
'search_expense_categories': 'Search :count Expense Categories',
|
||||||
'use_available_credits': 'Use Available Credits',
|
'use_available_credits': 'Use Available Credits',
|
||||||
'show_option': 'Show Option',
|
'show_option': 'Show Option',
|
||||||
'negative_payment_error':
|
'negative_payment_error':
|
||||||
|
|
@ -3705,22 +3707,31 @@ mixin LocalizationsProvider on LocaleCodeAware {
|
||||||
// STARTER: lang field - do not remove comment
|
// STARTER: lang field - do not remove comment
|
||||||
String get expenseCategory =>
|
String get expenseCategory =>
|
||||||
_localizedValues[localeCode]['expense_category'];
|
_localizedValues[localeCode]['expense_category'];
|
||||||
|
|
||||||
String get expenseCategories =>
|
String get expenseCategories =>
|
||||||
_localizedValues[localeCode]['expense_categories'];
|
_localizedValues[localeCode]['expense_categories'];
|
||||||
|
|
||||||
String get newExpenseCategory =>
|
String get newExpenseCategory =>
|
||||||
_localizedValues[localeCode]['new_expense_category'];
|
_localizedValues[localeCode]['new_expense_category'];
|
||||||
|
|
||||||
String get createdExpenseCategory =>
|
String get createdExpenseCategory =>
|
||||||
_localizedValues[localeCode]['created_expense_category'];
|
_localizedValues[localeCode]['created_expense_category'];
|
||||||
|
|
||||||
String get updatedExpenseCategory =>
|
String get updatedExpenseCategory =>
|
||||||
_localizedValues[localeCode]['updated_expense_category'];
|
_localizedValues[localeCode]['updated_expense_category'];
|
||||||
|
|
||||||
String get archivedExpenseCategory =>
|
String get archivedExpenseCategory =>
|
||||||
_localizedValues[localeCode]['archived_expense_category'];
|
_localizedValues[localeCode]['archived_expense_category'];
|
||||||
|
|
||||||
String get deletedExpenseCategory =>
|
String get deletedExpenseCategory =>
|
||||||
_localizedValues[localeCode]['deleted_expense_category'];
|
_localizedValues[localeCode]['deleted_expense_category'];
|
||||||
|
|
||||||
String get restoredExpenseCategory =>
|
String get restoredExpenseCategory =>
|
||||||
_localizedValues[localeCode]['restored_expense_category'];
|
_localizedValues[localeCode]['restored_expense_category'];
|
||||||
|
|
||||||
String get editExpenseCategory =>
|
String get editExpenseCategory =>
|
||||||
_localizedValues[localeCode]['edit_expense_category'];
|
_localizedValues[localeCode]['edit_expense_category'];
|
||||||
|
|
||||||
String get searchExpenseCategory =>
|
String get searchExpenseCategory =>
|
||||||
_localizedValues[localeCode]['search_expense_category'];
|
_localizedValues[localeCode]['search_expense_category'];
|
||||||
|
|
||||||
|
|
@ -4751,6 +4762,9 @@ mixin LocalizationsProvider on LocaleCodeAware {
|
||||||
String get transactionId =>
|
String get transactionId =>
|
||||||
_localizedValues[localeCode]['transaction_id'] ?? '';
|
_localizedValues[localeCode]['transaction_id'] ?? '';
|
||||||
|
|
||||||
|
String get configureCategories =>
|
||||||
|
_localizedValues[localeCode]['configure_categories'] ?? '';
|
||||||
|
|
||||||
String lookup(String key) {
|
String lookup(String key) {
|
||||||
final lookupKey = toSnakeCase(key);
|
final lookupKey = toSnakeCase(key);
|
||||||
|
|
||||||
|
|
|
||||||
Loading…
Reference in New Issue