Reworked filters
This commit is contained in:
parent
4e9f2f9b31
commit
adae8737a4
|
|
@ -47,275 +47,274 @@ class MainScreen extends StatelessWidget {
|
||||||
return StoreBuilder(
|
return StoreBuilder(
|
||||||
//onInit: (Store<AppState> store) => store.dispatch(RefreshData()),
|
//onInit: (Store<AppState> store) => store.dispatch(RefreshData()),
|
||||||
builder: (BuildContext context, Store<AppState> store) {
|
builder: (BuildContext context, Store<AppState> store) {
|
||||||
final state = store.state;
|
final state = store.state;
|
||||||
final uiState = state.uiState;
|
final uiState = state.uiState;
|
||||||
final prefState = state.prefState;
|
final prefState = state.prefState;
|
||||||
final subRoute = '/' + uiState.subRoute;
|
final subRoute = '/' + uiState.subRoute;
|
||||||
String mainRoute = '/' + uiState.mainRoute;
|
String mainRoute = '/' + uiState.mainRoute;
|
||||||
Widget screen = BlankScreen();
|
Widget screen = BlankScreen();
|
||||||
|
|
||||||
bool isFullScreen = false;
|
bool isFullScreen = false;
|
||||||
if (prefState.isDesktop) {
|
if (prefState.isDesktop) {
|
||||||
if ([
|
if ([
|
||||||
InvoiceScreen.route,
|
InvoiceScreen.route,
|
||||||
QuoteScreen.route,
|
QuoteScreen.route,
|
||||||
CreditScreen.route,
|
CreditScreen.route,
|
||||||
].contains(mainRoute) &&
|
].contains(mainRoute) &&
|
||||||
subRoute == '/edit') {
|
subRoute == '/edit') {
|
||||||
isFullScreen = true;
|
isFullScreen = true;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
if (prefState.isNotMobile &&
|
||||||
|
DesignEditScreen.route == uiState.currentRoute) {
|
||||||
|
isFullScreen = true;
|
||||||
|
}
|
||||||
|
|
||||||
|
if (isFullScreen) {
|
||||||
|
switch (mainRoute) {
|
||||||
|
case InvoiceScreen.route:
|
||||||
|
screen = InvoiceEditScreen();
|
||||||
|
break;
|
||||||
|
case QuoteScreen.route:
|
||||||
|
screen = QuoteEditScreen();
|
||||||
|
break;
|
||||||
|
case CreditScreen.route:
|
||||||
|
screen = CreditEditScreen();
|
||||||
|
break;
|
||||||
|
default:
|
||||||
|
switch (uiState.currentRoute) {
|
||||||
|
case DesignEditScreen.route:
|
||||||
|
screen = DesignEditScreen();
|
||||||
|
break;
|
||||||
}
|
}
|
||||||
|
}
|
||||||
|
} else {
|
||||||
|
bool editingFilterEntity = false;
|
||||||
|
if (prefState.fullHeightFilter &&
|
||||||
|
uiState.filterEntityId != null &&
|
||||||
|
subRoute == '/edit') {
|
||||||
|
if (mainRoute == '/${uiState.filterEntityType}') {
|
||||||
|
mainRoute = '/' + uiState.previousMainRoute;
|
||||||
|
editingFilterEntity = true;
|
||||||
}
|
}
|
||||||
if (prefState.isNotMobile &&
|
}
|
||||||
DesignEditScreen.route == uiState.currentRoute) {
|
|
||||||
isFullScreen = true;
|
|
||||||
}
|
|
||||||
|
|
||||||
if (isFullScreen) {
|
switch (mainRoute) {
|
||||||
switch (mainRoute) {
|
case DashboardScreenBuilder.route:
|
||||||
case InvoiceScreen.route:
|
screen = Row(
|
||||||
screen = InvoiceEditScreen();
|
children: <Widget>[
|
||||||
break;
|
Expanded(
|
||||||
case QuoteScreen.route:
|
child: DashboardScreenBuilder(),
|
||||||
screen = QuoteEditScreen();
|
flex: 5,
|
||||||
break;
|
|
||||||
case CreditScreen.route:
|
|
||||||
screen = CreditEditScreen();
|
|
||||||
break;
|
|
||||||
default:
|
|
||||||
switch (uiState.currentRoute) {
|
|
||||||
case DesignEditScreen.route:
|
|
||||||
screen = DesignEditScreen();
|
|
||||||
break;
|
|
||||||
}
|
|
||||||
}
|
|
||||||
} else {
|
|
||||||
bool editingFilterEntity = false;
|
|
||||||
if (prefState.fullHeightFilter &&
|
|
||||||
uiState.filterEntityId != null &&
|
|
||||||
subRoute == '/edit') {
|
|
||||||
if (mainRoute == '/${uiState.filterEntityType}') {
|
|
||||||
mainRoute = '/' + uiState.previousMainRoute;
|
|
||||||
editingFilterEntity = true;
|
|
||||||
}
|
|
||||||
}
|
|
||||||
|
|
||||||
switch (mainRoute) {
|
|
||||||
case DashboardScreenBuilder.route:
|
|
||||||
screen = Row(
|
|
||||||
children: <Widget>[
|
|
||||||
Expanded(
|
|
||||||
child: DashboardScreenBuilder(),
|
|
||||||
flex: 5,
|
|
||||||
),
|
|
||||||
if (prefState.showHistory) ...[
|
|
||||||
_CustomDivider(),
|
|
||||||
HistoryDrawerBuilder(),
|
|
||||||
],
|
|
||||||
],
|
|
||||||
);
|
|
||||||
break;
|
|
||||||
case ClientScreen.route:
|
|
||||||
screen = EntityScreens(
|
|
||||||
entityType: EntityType.client,
|
|
||||||
listWidget: ClientScreenBuilder(),
|
|
||||||
viewWidget: ClientViewScreen(),
|
|
||||||
editWidget: ClientEditScreen(),
|
|
||||||
editingFIlterEntity: editingFilterEntity,
|
|
||||||
);
|
|
||||||
break;
|
|
||||||
case ProductScreen.route:
|
|
||||||
screen = EntityScreens(
|
|
||||||
entityType: EntityType.product,
|
|
||||||
listWidget: ProductScreenBuilder(),
|
|
||||||
viewWidget: ProductViewScreen(),
|
|
||||||
editWidget: ProductEditScreen(),
|
|
||||||
editingFIlterEntity: editingFilterEntity,
|
|
||||||
);
|
|
||||||
break;
|
|
||||||
case InvoiceScreen.route:
|
|
||||||
screen = EntityScreens(
|
|
||||||
entityType: EntityType.invoice,
|
|
||||||
listWidget: InvoiceScreenBuilder(),
|
|
||||||
viewWidget: InvoiceViewScreen(),
|
|
||||||
editWidget: InvoiceEditScreen(),
|
|
||||||
emailWidget: InvoiceEmailScreen(),
|
|
||||||
editingFIlterEntity: editingFilterEntity,
|
|
||||||
);
|
|
||||||
break;
|
|
||||||
case PaymentScreen.route:
|
|
||||||
screen = EntityScreens(
|
|
||||||
entityType: EntityType.payment,
|
|
||||||
listWidget: PaymentScreenBuilder(),
|
|
||||||
viewWidget: PaymentViewScreen(),
|
|
||||||
editWidget: PaymentEditScreen(),
|
|
||||||
editingFIlterEntity: editingFilterEntity,
|
|
||||||
);
|
|
||||||
break;
|
|
||||||
case QuoteScreen.route:
|
|
||||||
screen = EntityScreens(
|
|
||||||
entityType: EntityType.quote,
|
|
||||||
listWidget: QuoteScreenBuilder(),
|
|
||||||
viewWidget: QuoteViewScreen(),
|
|
||||||
editWidget: QuoteEditScreen(),
|
|
||||||
editingFIlterEntity: editingFilterEntity,
|
|
||||||
);
|
|
||||||
break;
|
|
||||||
case CreditScreen.route:
|
|
||||||
screen = EntityScreens(
|
|
||||||
entityType: EntityType.credit,
|
|
||||||
listWidget: CreditScreenBuilder(),
|
|
||||||
viewWidget: CreditViewScreen(),
|
|
||||||
editWidget: CreditEditScreen(),
|
|
||||||
editingFIlterEntity: editingFilterEntity,
|
|
||||||
);
|
|
||||||
break;
|
|
||||||
case ProjectScreen.route:
|
|
||||||
screen = EntityScreens(
|
|
||||||
entityType: EntityType.project,
|
|
||||||
listWidget: ProjectScreenBuilder(),
|
|
||||||
viewWidget: ProjectViewScreen(),
|
|
||||||
editWidget: ProjectEditScreen(),
|
|
||||||
editingFIlterEntity: editingFilterEntity,
|
|
||||||
);
|
|
||||||
break;
|
|
||||||
case TaskScreen.route:
|
|
||||||
screen = EntityScreens(
|
|
||||||
entityType: EntityType.task,
|
|
||||||
listWidget: TaskScreenBuilder(),
|
|
||||||
viewWidget: TaskViewScreen(),
|
|
||||||
editWidget: TaskEditScreen(),
|
|
||||||
editingFIlterEntity: editingFilterEntity,
|
|
||||||
);
|
|
||||||
break;
|
|
||||||
case VendorScreen.route:
|
|
||||||
screen = EntityScreens(
|
|
||||||
entityType: EntityType.vendor,
|
|
||||||
listWidget: VendorScreenBuilder(),
|
|
||||||
viewWidget: VendorViewScreen(),
|
|
||||||
editWidget: VendorEditScreen(),
|
|
||||||
editingFIlterEntity: editingFilterEntity,
|
|
||||||
);
|
|
||||||
break;
|
|
||||||
case ExpenseScreen.route:
|
|
||||||
screen = EntityScreens(
|
|
||||||
entityType: EntityType.expense,
|
|
||||||
listWidget: ExpenseScreenBuilder(),
|
|
||||||
viewWidget: ExpenseViewScreen(),
|
|
||||||
editWidget: ExpenseEditScreen(),
|
|
||||||
editingFIlterEntity: editingFilterEntity,
|
|
||||||
);
|
|
||||||
break;
|
|
||||||
|
|
||||||
case SettingsScreen.route:
|
|
||||||
screen = SettingsScreens();
|
|
||||||
break;
|
|
||||||
case ReportsScreen.route:
|
|
||||||
screen = Row(
|
|
||||||
children: <Widget>[
|
|
||||||
Expanded(
|
|
||||||
child: ReportsScreenBuilder(),
|
|
||||||
flex: 5,
|
|
||||||
),
|
|
||||||
if (prefState.showHistory) ...[
|
|
||||||
_CustomDivider(),
|
|
||||||
HistoryDrawerBuilder(),
|
|
||||||
],
|
|
||||||
],
|
|
||||||
);
|
|
||||||
break;
|
|
||||||
}
|
|
||||||
}
|
|
||||||
|
|
||||||
return WillPopScope(
|
|
||||||
onWillPop: () async {
|
|
||||||
final state = store.state;
|
|
||||||
final historyList = state.historyList;
|
|
||||||
|
|
||||||
if (historyList.length <= 1) {
|
|
||||||
return true;
|
|
||||||
}
|
|
||||||
|
|
||||||
final isEditing = state.uiState.isEditing;
|
|
||||||
final index = isEditing ? 0 : 1;
|
|
||||||
HistoryRecord history;
|
|
||||||
|
|
||||||
for (int i = index; i < historyList.length; i++) {
|
|
||||||
final item = historyList[i];
|
|
||||||
if ([
|
|
||||||
EntityType.dashboard,
|
|
||||||
EntityType.reports,
|
|
||||||
EntityType.settings,
|
|
||||||
].contains(item.entityType)) {
|
|
||||||
history = item;
|
|
||||||
break;
|
|
||||||
} else {
|
|
||||||
if (item.id == null) {
|
|
||||||
continue;
|
|
||||||
}
|
|
||||||
|
|
||||||
final entity = state.getEntityMap(item.entityType)[item.id]
|
|
||||||
as BaseEntity;
|
|
||||||
if (entity == null || !entity.isActive) {
|
|
||||||
continue;
|
|
||||||
}
|
|
||||||
|
|
||||||
history = item;
|
|
||||||
break;
|
|
||||||
}
|
|
||||||
}
|
|
||||||
|
|
||||||
if (!isEditing) {
|
|
||||||
store.dispatch(PopLastHistory());
|
|
||||||
}
|
|
||||||
|
|
||||||
if (history == null) {
|
|
||||||
return false;
|
|
||||||
}
|
|
||||||
|
|
||||||
switch (history.entityType) {
|
|
||||||
case EntityType.dashboard:
|
|
||||||
store.dispatch(
|
|
||||||
ViewDashboard(navigator: Navigator.of(context)));
|
|
||||||
break;
|
|
||||||
case EntityType.reports:
|
|
||||||
store.dispatch(ViewReports(navigator: Navigator.of(context)));
|
|
||||||
break;
|
|
||||||
case EntityType.settings:
|
|
||||||
store.dispatch(ViewSettings(
|
|
||||||
navigator: Navigator.of(context), section: history.id));
|
|
||||||
break;
|
|
||||||
default:
|
|
||||||
viewEntityById(
|
|
||||||
context: context,
|
|
||||||
entityId: history.id,
|
|
||||||
entityType: history.entityType,
|
|
||||||
);
|
|
||||||
}
|
|
||||||
|
|
||||||
return false;
|
|
||||||
},
|
|
||||||
child: SafeArea(
|
|
||||||
child: FocusTraversalGroup(
|
|
||||||
policy: WidgetOrderTraversalPolicy(),
|
|
||||||
child: ChangeLayoutBanner(
|
|
||||||
appLayout: prefState.appLayout,
|
|
||||||
suggestedLayout: AppLayout.desktop,
|
|
||||||
child: Row(children: <Widget>[
|
|
||||||
if (prefState.showMenu) ...[
|
|
||||||
MenuDrawerBuilder(),
|
|
||||||
_CustomDivider(),
|
|
||||||
],
|
|
||||||
Expanded(
|
|
||||||
child: AppBorder(
|
|
||||||
child: screen,
|
|
||||||
isLeft: prefState.showMenu,
|
|
||||||
)),
|
|
||||||
]),
|
|
||||||
),
|
),
|
||||||
),
|
if (prefState.showHistory) ...[
|
||||||
|
_CustomDivider(),
|
||||||
|
HistoryDrawerBuilder(),
|
||||||
|
],
|
||||||
|
],
|
||||||
|
);
|
||||||
|
break;
|
||||||
|
case ClientScreen.route:
|
||||||
|
screen = EntityScreens(
|
||||||
|
entityType: EntityType.client,
|
||||||
|
listWidget: ClientScreenBuilder(),
|
||||||
|
viewWidget: ClientViewScreen(),
|
||||||
|
editWidget: ClientEditScreen(),
|
||||||
|
editingFIlterEntity: editingFilterEntity,
|
||||||
|
);
|
||||||
|
break;
|
||||||
|
case ProductScreen.route:
|
||||||
|
screen = EntityScreens(
|
||||||
|
entityType: EntityType.product,
|
||||||
|
listWidget: ProductScreenBuilder(),
|
||||||
|
viewWidget: ProductViewScreen(),
|
||||||
|
editWidget: ProductEditScreen(),
|
||||||
|
editingFIlterEntity: editingFilterEntity,
|
||||||
|
);
|
||||||
|
break;
|
||||||
|
case InvoiceScreen.route:
|
||||||
|
screen = EntityScreens(
|
||||||
|
entityType: EntityType.invoice,
|
||||||
|
listWidget: InvoiceScreenBuilder(),
|
||||||
|
viewWidget: InvoiceViewScreen(),
|
||||||
|
editWidget: InvoiceEditScreen(),
|
||||||
|
emailWidget: InvoiceEmailScreen(),
|
||||||
|
editingFIlterEntity: editingFilterEntity,
|
||||||
|
);
|
||||||
|
break;
|
||||||
|
case PaymentScreen.route:
|
||||||
|
screen = EntityScreens(
|
||||||
|
entityType: EntityType.payment,
|
||||||
|
listWidget: PaymentScreenBuilder(),
|
||||||
|
viewWidget: PaymentViewScreen(),
|
||||||
|
editWidget: PaymentEditScreen(),
|
||||||
|
editingFIlterEntity: editingFilterEntity,
|
||||||
|
);
|
||||||
|
break;
|
||||||
|
case QuoteScreen.route:
|
||||||
|
screen = EntityScreens(
|
||||||
|
entityType: EntityType.quote,
|
||||||
|
listWidget: QuoteScreenBuilder(),
|
||||||
|
viewWidget: QuoteViewScreen(),
|
||||||
|
editWidget: QuoteEditScreen(),
|
||||||
|
editingFIlterEntity: editingFilterEntity,
|
||||||
|
);
|
||||||
|
break;
|
||||||
|
case CreditScreen.route:
|
||||||
|
screen = EntityScreens(
|
||||||
|
entityType: EntityType.credit,
|
||||||
|
listWidget: CreditScreenBuilder(),
|
||||||
|
viewWidget: CreditViewScreen(),
|
||||||
|
editWidget: CreditEditScreen(),
|
||||||
|
editingFIlterEntity: editingFilterEntity,
|
||||||
|
);
|
||||||
|
break;
|
||||||
|
case ProjectScreen.route:
|
||||||
|
screen = EntityScreens(
|
||||||
|
entityType: EntityType.project,
|
||||||
|
listWidget: ProjectScreenBuilder(),
|
||||||
|
viewWidget: ProjectViewScreen(),
|
||||||
|
editWidget: ProjectEditScreen(),
|
||||||
|
editingFIlterEntity: editingFilterEntity,
|
||||||
|
);
|
||||||
|
break;
|
||||||
|
case TaskScreen.route:
|
||||||
|
screen = EntityScreens(
|
||||||
|
entityType: EntityType.task,
|
||||||
|
listWidget: TaskScreenBuilder(),
|
||||||
|
viewWidget: TaskViewScreen(),
|
||||||
|
editWidget: TaskEditScreen(),
|
||||||
|
editingFIlterEntity: editingFilterEntity,
|
||||||
|
);
|
||||||
|
break;
|
||||||
|
case VendorScreen.route:
|
||||||
|
screen = EntityScreens(
|
||||||
|
entityType: EntityType.vendor,
|
||||||
|
listWidget: VendorScreenBuilder(),
|
||||||
|
viewWidget: VendorViewScreen(),
|
||||||
|
editWidget: VendorEditScreen(),
|
||||||
|
editingFIlterEntity: editingFilterEntity,
|
||||||
|
);
|
||||||
|
break;
|
||||||
|
case ExpenseScreen.route:
|
||||||
|
screen = EntityScreens(
|
||||||
|
entityType: EntityType.expense,
|
||||||
|
listWidget: ExpenseScreenBuilder(),
|
||||||
|
viewWidget: ExpenseViewScreen(),
|
||||||
|
editWidget: ExpenseEditScreen(),
|
||||||
|
editingFIlterEntity: editingFilterEntity,
|
||||||
|
);
|
||||||
|
break;
|
||||||
|
|
||||||
|
case SettingsScreen.route:
|
||||||
|
screen = SettingsScreens();
|
||||||
|
break;
|
||||||
|
case ReportsScreen.route:
|
||||||
|
screen = Row(
|
||||||
|
children: <Widget>[
|
||||||
|
Expanded(
|
||||||
|
child: ReportsScreenBuilder(),
|
||||||
|
flex: 5,
|
||||||
|
),
|
||||||
|
if (prefState.showHistory) ...[
|
||||||
|
_CustomDivider(),
|
||||||
|
HistoryDrawerBuilder(),
|
||||||
|
],
|
||||||
|
],
|
||||||
|
);
|
||||||
|
break;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
return WillPopScope(
|
||||||
|
onWillPop: () async {
|
||||||
|
final state = store.state;
|
||||||
|
final historyList = state.historyList;
|
||||||
|
|
||||||
|
if (historyList.length <= 1) {
|
||||||
|
return true;
|
||||||
|
}
|
||||||
|
|
||||||
|
final isEditing = state.uiState.isEditing;
|
||||||
|
final index = isEditing ? 0 : 1;
|
||||||
|
HistoryRecord history;
|
||||||
|
|
||||||
|
for (int i = index; i < historyList.length; i++) {
|
||||||
|
final item = historyList[i];
|
||||||
|
if ([
|
||||||
|
EntityType.dashboard,
|
||||||
|
EntityType.reports,
|
||||||
|
EntityType.settings,
|
||||||
|
].contains(item.entityType)) {
|
||||||
|
history = item;
|
||||||
|
break;
|
||||||
|
} else {
|
||||||
|
if (item.id == null) {
|
||||||
|
continue;
|
||||||
|
}
|
||||||
|
|
||||||
|
final entity =
|
||||||
|
state.getEntityMap(item.entityType)[item.id] as BaseEntity;
|
||||||
|
if (entity == null || !entity.isActive) {
|
||||||
|
continue;
|
||||||
|
}
|
||||||
|
|
||||||
|
history = item;
|
||||||
|
break;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
if (!isEditing) {
|
||||||
|
store.dispatch(PopLastHistory());
|
||||||
|
}
|
||||||
|
|
||||||
|
if (history == null) {
|
||||||
|
return false;
|
||||||
|
}
|
||||||
|
|
||||||
|
switch (history.entityType) {
|
||||||
|
case EntityType.dashboard:
|
||||||
|
store.dispatch(ViewDashboard(navigator: Navigator.of(context)));
|
||||||
|
break;
|
||||||
|
case EntityType.reports:
|
||||||
|
store.dispatch(ViewReports(navigator: Navigator.of(context)));
|
||||||
|
break;
|
||||||
|
case EntityType.settings:
|
||||||
|
store.dispatch(ViewSettings(
|
||||||
|
navigator: Navigator.of(context), section: history.id));
|
||||||
|
break;
|
||||||
|
default:
|
||||||
|
viewEntityById(
|
||||||
|
context: context,
|
||||||
|
entityId: history.id,
|
||||||
|
entityType: history.entityType,
|
||||||
|
);
|
||||||
|
}
|
||||||
|
|
||||||
|
return false;
|
||||||
|
},
|
||||||
|
child: SafeArea(
|
||||||
|
child: FocusTraversalGroup(
|
||||||
|
policy: WidgetOrderTraversalPolicy(),
|
||||||
|
child: ChangeLayoutBanner(
|
||||||
|
appLayout: prefState.appLayout,
|
||||||
|
suggestedLayout: AppLayout.desktop,
|
||||||
|
child: Row(children: <Widget>[
|
||||||
|
if (prefState.showMenu) ...[
|
||||||
|
MenuDrawerBuilder(),
|
||||||
|
_CustomDivider(),
|
||||||
|
],
|
||||||
|
Expanded(
|
||||||
|
child: AppBorder(
|
||||||
|
child: screen,
|
||||||
|
isLeft: prefState.showMenu,
|
||||||
|
)),
|
||||||
|
]),
|
||||||
),
|
),
|
||||||
);
|
),
|
||||||
});
|
),
|
||||||
|
);
|
||||||
|
});
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
@ -683,29 +682,35 @@ class _EntityFilter extends StatelessWidget {
|
||||||
opacity: show ? 1 : 0,
|
opacity: show ? 1 : 0,
|
||||||
duration: Duration(milliseconds: kDefaultAnimationDuration),
|
duration: Duration(milliseconds: kDefaultAnimationDuration),
|
||||||
curve: Curves.easeInOutCubic,
|
curve: Curves.easeInOutCubic,
|
||||||
child: Row(
|
child: filterEntity == null
|
||||||
children: filterEntity == null
|
? Container(
|
||||||
? []
|
color: Theme.of(context).cardColor,
|
||||||
: [
|
)
|
||||||
SizedBox(width: 4),
|
: AppBar(
|
||||||
Expanded(
|
leading: IconButton(
|
||||||
child: Align(
|
tooltip: localization.preview,
|
||||||
alignment: Alignment.centerLeft,
|
icon: Icon(Icons.chrome_reader_mode),
|
||||||
child: FlatButton(
|
onPressed: () => store.dispatch(
|
||||||
child: Text(
|
UserPreferencesChanged(fullHeightFilter: true)),
|
||||||
'${localization.lookup('$filterEntityType')} › ${filterEntity.listDisplayName}',
|
),
|
||||||
style: TextStyle(fontSize: 17),
|
title: Align(
|
||||||
overflow: TextOverflow.ellipsis,
|
alignment: Alignment.centerLeft,
|
||||||
textAlign: TextAlign.start,
|
child: FlatButton(
|
||||||
maxLines: 1,
|
padding: const EdgeInsets.only(left: 0),
|
||||||
),
|
child: Text(
|
||||||
onPressed: () => viewEntity(
|
'${localization.lookup('$filterEntityType')} › ${filterEntity.listDisplayName}',
|
||||||
entity: filterEntity,
|
style: TextStyle(fontSize: 17),
|
||||||
context: context,
|
overflow: TextOverflow.ellipsis,
|
||||||
),
|
textAlign: TextAlign.start,
|
||||||
),
|
maxLines: 1,
|
||||||
|
),
|
||||||
|
onPressed: () => viewEntity(
|
||||||
|
entity: filterEntity,
|
||||||
|
context: context,
|
||||||
),
|
),
|
||||||
),
|
),
|
||||||
|
),
|
||||||
|
actions: [
|
||||||
PopupMenuButton<EntityType>(
|
PopupMenuButton<EntityType>(
|
||||||
child: Row(
|
child: Row(
|
||||||
children: [
|
children: [
|
||||||
|
|
@ -760,9 +765,9 @@ class _EntityFilter extends StatelessWidget {
|
||||||
entityId: uiState.filterEntityId,
|
entityId: uiState.filterEntityId,
|
||||||
entityType: uiState.filterEntityType,
|
entityType: uiState.filterEntityType,
|
||||||
)),
|
)),
|
||||||
),
|
)
|
||||||
],
|
],
|
||||||
),
|
),
|
||||||
),
|
),
|
||||||
),
|
),
|
||||||
);
|
);
|
||||||
|
|
|
||||||
|
|
@ -156,51 +156,12 @@ class MenuDrawer extends StatelessWidget {
|
||||||
},
|
},
|
||||||
);
|
);
|
||||||
|
|
||||||
/*
|
|
||||||
final _expandedCompanySelector = viewModel.companies.isEmpty
|
|
||||||
? SizedBox()
|
|
||||||
: DropdownButtonHideUnderline(
|
|
||||||
child: DropdownButton<String>(
|
|
||||||
isExpanded: true,
|
|
||||||
icon: Icon(Icons.arrow_drop_down),
|
|
||||||
value: viewModel.selectedCompanyIndex,
|
|
||||||
items: [
|
|
||||||
...viewModel.companies
|
|
||||||
.map((CompanyEntity company) => DropdownMenuItem<String>(
|
|
||||||
value:
|
|
||||||
(viewModel.companies.indexOf(company)).toString(),
|
|
||||||
child: _companyListItem(company),
|
|
||||||
))
|
|
||||||
.toList(),
|
|
||||||
if (viewModel.state.userCompany.isAdmin)
|
|
||||||
DropdownMenuItem<String>(
|
|
||||||
value: null,
|
|
||||||
child: Row(
|
|
||||||
children: <Widget>[
|
|
||||||
SizedBox(width: 2),
|
|
||||||
Icon(Icons.add_circle, size: 32),
|
|
||||||
SizedBox(width: 28),
|
|
||||||
Text(localization.addCompany),
|
|
||||||
],
|
|
||||||
),
|
|
||||||
),
|
|
||||||
],
|
|
||||||
onChanged: (value) {
|
|
||||||
if (value == null) {
|
|
||||||
viewModel.onAddCompany(context);
|
|
||||||
} else {
|
|
||||||
viewModel.onCompanyChanged(
|
|
||||||
context, value, viewModel.companies[int.parse(value)]);
|
|
||||||
}
|
|
||||||
},
|
|
||||||
));
|
|
||||||
*/
|
|
||||||
|
|
||||||
return AnimatedContainer(
|
return AnimatedContainer(
|
||||||
width: state.isMenuCollapsed ? 65 : kDrawerWidth,
|
width: state.isMenuCollapsed ? 65 : kDrawerWidth,
|
||||||
duration: Duration(
|
duration: Duration(
|
||||||
milliseconds:
|
milliseconds: state.uiState.filterEntityType != null
|
||||||
state.prefState.fullHeightFilter ? 0 : kDefaultAnimationDuration),
|
? 0
|
||||||
|
: kDefaultAnimationDuration),
|
||||||
curve: Curves.easeInOutCubic,
|
curve: Curves.easeInOutCubic,
|
||||||
child: Drawer(
|
child: Drawer(
|
||||||
child: SafeArea(
|
child: SafeArea(
|
||||||
|
|
|
||||||
|
|
@ -51,10 +51,14 @@ class ViewScaffold extends StatelessWidget {
|
||||||
entity.entityType == state.uiState.filterEntityType) {
|
entity.entityType == state.uiState.filterEntityType) {
|
||||||
leading = IconButton(
|
leading = IconButton(
|
||||||
icon: Icon(Icons.clear),
|
icon: Icon(Icons.clear),
|
||||||
|
onPressed: () => store
|
||||||
|
.dispatch(UserPreferencesChanged(fullHeightFilter: false)),
|
||||||
|
/*
|
||||||
onPressed: () => store.dispatch(FilterByEntity(
|
onPressed: () => store.dispatch(FilterByEntity(
|
||||||
entityType: state.uiState.filterEntityType,
|
entityType: state.uiState.filterEntityType,
|
||||||
entityId: state.uiState.filterEntityId,
|
entityId: state.uiState.filterEntityId,
|
||||||
)),
|
)),
|
||||||
|
*/
|
||||||
);
|
);
|
||||||
} else if (isSettings) {
|
} else if (isSettings) {
|
||||||
leading = IconButton(
|
leading = IconButton(
|
||||||
|
|
|
||||||
|
|
@ -158,14 +158,6 @@ class _DeviceSettingsState extends State<DeviceSettings> {
|
||||||
activeColor: Theme.of(context).accentColor,
|
activeColor: Theme.of(context).accentColor,
|
||||||
),
|
),
|
||||||
*/
|
*/
|
||||||
SwitchListTile(
|
|
||||||
title: Text(localization.fullHeightFilter),
|
|
||||||
value: prefState.fullHeightFilter,
|
|
||||||
onChanged: (value) =>
|
|
||||||
viewModel.onFullHeightFilterChanged(context, value),
|
|
||||||
secondary: Icon(Icons.filter_list),
|
|
||||||
activeColor: Theme.of(context).accentColor,
|
|
||||||
),
|
|
||||||
viewModel.state.company.isModuleEnabled(EntityType.task)
|
viewModel.state.company.isModuleEnabled(EntityType.task)
|
||||||
? SwitchListTile(
|
? SwitchListTile(
|
||||||
title:
|
title:
|
||||||
|
|
|
||||||
|
|
@ -47,8 +47,6 @@ class DeviceSettingsVM {
|
||||||
@required this.authenticationSupported,
|
@required this.authenticationSupported,
|
||||||
@required this.onMenuModeChanged,
|
@required this.onMenuModeChanged,
|
||||||
@required this.onHistoryModeChanged,
|
@required this.onHistoryModeChanged,
|
||||||
@required this.onFullHeightFilterChanged,
|
|
||||||
@required this.onFullWidthEditorChanged,
|
|
||||||
});
|
});
|
||||||
|
|
||||||
static DeviceSettingsVM fromStore(Store<AppState> store) {
|
static DeviceSettingsVM fromStore(Store<AppState> store) {
|
||||||
|
|
@ -103,12 +101,6 @@ class DeviceSettingsVM {
|
||||||
onHistoryModeChanged: (context, value) async {
|
onHistoryModeChanged: (context, value) async {
|
||||||
store.dispatch(UserPreferencesChanged(historyMode: value));
|
store.dispatch(UserPreferencesChanged(historyMode: value));
|
||||||
},
|
},
|
||||||
onFullHeightFilterChanged: (context, value) async {
|
|
||||||
store.dispatch(UserPreferencesChanged(fullHeightFilter: value));
|
|
||||||
},
|
|
||||||
onFullWidthEditorChanged: (context, value) async {
|
|
||||||
store.dispatch(UserPreferencesChanged(fullWidthEditor: value));
|
|
||||||
},
|
|
||||||
onLayoutChanged: (BuildContext context, AppLayout value) async {
|
onLayoutChanged: (BuildContext context, AppLayout value) async {
|
||||||
if (store.state.prefState.appLayout == value) {
|
if (store.state.prefState.appLayout == value) {
|
||||||
return;
|
return;
|
||||||
|
|
@ -158,8 +150,6 @@ class DeviceSettingsVM {
|
||||||
final AppState state;
|
final AppState state;
|
||||||
final Function(BuildContext) onLogoutTap;
|
final Function(BuildContext) onLogoutTap;
|
||||||
final Function(BuildContext) onRefreshTap;
|
final Function(BuildContext) onRefreshTap;
|
||||||
final Function(BuildContext, bool) onFullHeightFilterChanged;
|
|
||||||
final Function(BuildContext, bool) onFullWidthEditorChanged;
|
|
||||||
final Function(BuildContext, bool) onDarkModeChanged;
|
final Function(BuildContext, bool) onDarkModeChanged;
|
||||||
final Function(BuildContext, AppLayout) onLayoutChanged;
|
final Function(BuildContext, AppLayout) onLayoutChanged;
|
||||||
final Function(BuildContext, AppSidebarMode) onMenuModeChanged;
|
final Function(BuildContext, AppSidebarMode) onMenuModeChanged;
|
||||||
|
|
|
||||||
|
|
@ -73,8 +73,6 @@ mixin LocalizationsProvider on LocaleCodeAware {
|
||||||
'deleted_payment_term': 'Successfully deleted payment term',
|
'deleted_payment_term': 'Successfully deleted payment term',
|
||||||
'removed_payment_term': 'Successfully removed payment term',
|
'removed_payment_term': 'Successfully removed payment term',
|
||||||
'restored_payment_term': 'Successfully restored payment term',
|
'restored_payment_term': 'Successfully restored payment term',
|
||||||
'full_width_editor': 'Full Width Editor',
|
|
||||||
'full_height_filter': 'Full Height Filter',
|
|
||||||
'email_sign_in': 'Sign in with email',
|
'email_sign_in': 'Sign in with email',
|
||||||
'change': 'Change',
|
'change': 'Change',
|
||||||
'change_to_mobile_layout': 'Change to the mobile layout?',
|
'change_to_mobile_layout': 'Change to the mobile layout?',
|
||||||
|
|
@ -38695,12 +38693,6 @@ mixin LocalizationsProvider on LocaleCodeAware {
|
||||||
|
|
||||||
String get emailSignIn => _localizedValues[localeCode]['email_sign_in'] ?? '';
|
String get emailSignIn => _localizedValues[localeCode]['email_sign_in'] ?? '';
|
||||||
|
|
||||||
String get fullWidthEditor =>
|
|
||||||
_localizedValues[localeCode]['full_width_editor'] ?? '';
|
|
||||||
|
|
||||||
String get fullHeightFilter =>
|
|
||||||
_localizedValues[localeCode]['full_height_filter'] ?? '';
|
|
||||||
|
|
||||||
String get configurePaymentTerms =>
|
String get configurePaymentTerms =>
|
||||||
_localizedValues[localeCode]['configure_payment_terms'] ?? '';
|
_localizedValues[localeCode]['configure_payment_terms'] ?? '';
|
||||||
|
|
||||||
|
|
|
||||||
Loading…
Reference in New Issue