This commit is contained in:
Hillel Coren 2019-10-06 16:16:52 +03:00
parent 141866fb89
commit 08009c190f
10 changed files with 64 additions and 66 deletions

View File

@ -264,6 +264,8 @@ class CustomFieldType {
static const String invoice2 = 'invoice_text2'; static const String invoice2 = 'invoice_text2';
static const String surcharge1 = 'invoice1'; static const String surcharge1 = 'invoice1';
static const String surcharge2 = 'invoice2'; static const String surcharge2 = 'invoice2';
static const String group1 = 'group1';
static const String group2 = 'group2';
} }
abstract class DashboardEntity abstract class DashboardEntity

View File

@ -23,7 +23,7 @@ class ViewGroup implements PersistUI {
this.force = false, this.force = false,
}); });
final int groupId; final String groupId;
final BuildContext context; final BuildContext context;
final bool force; final bool force;
} }

View File

@ -48,7 +48,6 @@ class GroupList extends StatelessWidget {
void showDialog() => showEntityActionsDialog( void showDialog() => showEntityActionsDialog(
entity: group, entity: group,
context: context, context: context,
user: user,
onEntityAction: viewModel.onEntityAction); onEntityAction: viewModel.onEntityAction);
return GroupListItem( return GroupListItem(

View File

@ -1,3 +1,4 @@
import 'package:invoiceninja_flutter/data/models/group_model.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:flutter/foundation.dart'; import 'package:flutter/foundation.dart';
@ -6,7 +7,6 @@ import 'package:invoiceninja_flutter/data/models/models.dart';
import 'package:invoiceninja_flutter/ui/app/dismissible_entity.dart'; import 'package:invoiceninja_flutter/ui/app/dismissible_entity.dart';
class GroupListItem extends StatelessWidget { class GroupListItem extends StatelessWidget {
const GroupListItem({ const GroupListItem({
@required this.user, @required this.user,
@required this.onEntityAction, @required this.onEntityAction,
@ -35,7 +35,6 @@ class GroupListItem extends StatelessWidget {
final subtitle = filterMatch; final subtitle = filterMatch;
return DismissibleEntity( return DismissibleEntity(
user: user,
entity: group, entity: group,
onEntityAction: onEntityAction, onEntityAction: onEntityAction,
child: ListTile( child: ListTile(
@ -70,12 +69,13 @@ class GroupListItem extends StatelessWidget {
subtitle: Column( subtitle: Column(
crossAxisAlignment: CrossAxisAlignment.start, crossAxisAlignment: CrossAxisAlignment.start,
children: <Widget>[ children: <Widget>[
subtitle != null && subtitle.isNotEmpty ? subtitle != null && subtitle.isNotEmpty
Text( ? Text(
subtitle, subtitle,
maxLines: 3, maxLines: 3,
overflow: TextOverflow.ellipsis, overflow: TextOverflow.ellipsis,
) : Container(), )
: Container(),
EntityStateLabel(group), EntityStateLabel(group),
], ],
), ),

View File

@ -85,7 +85,7 @@ class GroupListVM {
} }
final UserEntity user; final UserEntity user;
final List<int> groupList; final List<String> groupList;
final BuiltMap<String, GroupEntity> groupMap; final BuiltMap<String, GroupEntity> groupMap;
final ListUIState listState; final ListUIState listState;
final String filter; final String filter;

View File

@ -20,59 +20,58 @@ class GroupScreen extends StatelessWidget {
final store = StoreProvider.of<AppState>(context); final store = StoreProvider.of<AppState>(context);
final state = store.state; final state = store.state;
final company = state.selectedCompany; final company = state.selectedCompany;
final user = company.user;
final localization = AppLocalization.of(context); final localization = AppLocalization.of(context);
return AppScaffold( return AppScaffold(
appBarTitle: ListFilter( appBarTitle: ListFilter(
key: ValueKey(state.groupListState.filterClearedAt), key: ValueKey(state.groupListState.filterClearedAt),
entityType: EntityType.group, entityType: EntityType.group,
onFilterChanged: (value) { onFilterChanged: (value) {
store.dispatch(FilterGroups(value)); store.dispatch(FilterGroups(value));
}, },
), ),
appBarActions: [ appBarActions: [
ListFilterButton( ListFilterButton(
entityType: EntityType.group, entityType: EntityType.group,
onFilterPressed: (String value) { onFilterPressed: (String value) {
store.dispatch(FilterGroups(value)); store.dispatch(FilterGroups(value));
}, },
), ),
], ],
body: GroupListBuilder(), body: GroupListBuilder(),
bottomNavigationBar: AppBottomBar( bottomNavigationBar: AppBottomBar(
entityType: EntityType.group, entityType: EntityType.group,
onSelectedSortField: (value) => store.dispatch(SortGroups(value)), onSelectedSortField: (value) => store.dispatch(SortGroups(value)),
customValues1: company.getCustomFieldValues(CustomFieldType.group1, customValues1: company.getCustomFieldValues(CustomFieldType.group1,
excludeBlank: true), excludeBlank: true),
customValues2: company.getCustomFieldValues(CustomFieldType.group2, customValues2: company.getCustomFieldValues(CustomFieldType.group2,
excludeBlank: true), excludeBlank: true),
onSelectedCustom1: (value) => onSelectedCustom1: (value) =>
store.dispatch(FilterGroupsByCustom1(value)), store.dispatch(FilterGroupsByCustom1(value)),
onSelectedCustom2: (value) => onSelectedCustom2: (value) =>
store.dispatch(FilterGroupsByCustom2(value)), store.dispatch(FilterGroupsByCustom2(value)),
sortFields: [ sortFields: [
GroupFields.updatedAt, GroupFields.updatedAt,
], ],
onSelectedState: (EntityState state, value) { onSelectedState: (EntityState state, value) {
store.dispatch(FilterGroupsByState(state)); store.dispatch(FilterGroupsByState(state));
}, },
), ),
floatingActionButton: user.canCreate(EntityType.group) floatingActionButton: user.canCreate(EntityType.group)
? FloatingActionButton( ? FloatingActionButton(
heroTag: 'group_fab', heroTag: 'group_fab',
backgroundColor: Theme.of(context).primaryColorDark, backgroundColor: Theme.of(context).primaryColorDark,
onPressed: () { onPressed: () {
store.dispatch( store.dispatch(
EditGroup(group: GroupEntity(), context: context)); EditGroup(group: GroupEntity(), context: context));
}, },
child: Icon( child: Icon(
Icons.add, Icons.add,
color: Colors.white, color: Colors.white,
), ),
tooltip: localization.newGroup, tooltip: localization.newGroup,
) )
: null, : null,
); );
} }
} }

View File

@ -51,7 +51,6 @@ class StubList extends StatelessWidget {
void showDialog() => showEntityActionsDialog( void showDialog() => showEntityActionsDialog(
entity: stub, entity: stub,
context: context, context: context,
user: user,
onEntityAction: viewModel.onEntityAction); onEntityAction: viewModel.onEntityAction);

View File

@ -1,3 +1,4 @@
import 'package:invoiceninja_flutter/data/models/stub_model.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:flutter/foundation.dart'; import 'package:flutter/foundation.dart';
@ -35,7 +36,6 @@ class StubListItem extends StatelessWidget {
final subtitle = filterMatch; final subtitle = filterMatch;
return DismissibleEntity( return DismissibleEntity(
user: user,
entity: stub, entity: stub,
onEntityAction: onEntityAction, onEntityAction: onEntityAction,
child: ListTile( child: ListTile(

View File

@ -87,7 +87,7 @@ class StubListVM {
} }
final UserEntity user; final UserEntity user;
final List<int> stubList; final List<String> stubList;
final BuiltMap<String, StubEntity> stubMap; final BuiltMap<String, StubEntity> stubMap;
final ListUIState listState; final ListUIState listState;
final String filter; final String filter;

View File

@ -20,7 +20,6 @@ class StubScreen extends StatelessWidget {
final store = StoreProvider.of<AppState>(context); final store = StoreProvider.of<AppState>(context);
final state = store.state; final state = store.state;
final company = state.selectedCompany; final company = state.selectedCompany;
final user = company.user;
final localization = AppLocalization.of(context); final localization = AppLocalization.of(context);
return AppScaffold( return AppScaffold(