Projects
This commit is contained in:
parent
233f7ea460
commit
ff896f491f
|
|
@ -21,15 +21,14 @@ import 'package:invoiceninja_flutter/redux/product/product_state.dart';
|
|||
import 'package:invoiceninja_flutter/redux/client/client_state.dart';
|
||||
import 'package:invoiceninja_flutter/redux/ui/ui_state.dart';
|
||||
import 'package:invoiceninja_flutter/redux/invoice/invoice_state.dart';
|
||||
|
||||
// STARTER: import - do not remove comment
|
||||
import 'package:invoiceninja_flutter/data/models/project_model.dart';
|
||||
import 'package:invoiceninja_flutter/redux/project/project_state.dart';
|
||||
|
||||
import 'package:invoiceninja_flutter/redux/payment/payment_state.dart';
|
||||
|
||||
import 'package:invoiceninja_flutter/redux/quote/quote_state.dart';
|
||||
|
||||
|
||||
part 'serializers.g.dart';
|
||||
|
||||
@SerializersFor(const [
|
||||
|
|
@ -78,11 +77,9 @@ part 'serializers.g.dart';
|
|||
TimezoneItemResponse,
|
||||
TimezoneListResponse,
|
||||
// STARTER: serializers - do not remove comment
|
||||
ProjectEntity,
|
||||
|
||||
PaymentEntity,
|
||||
|
||||
ProjectEntity,
|
||||
|
||||
PaymentEntity,
|
||||
])
|
||||
final Serializers serializers =
|
||||
(_$serializers.toBuilder()..addPlugin(StandardJsonPlugin())).build();
|
||||
(_$serializers.toBuilder()..addPlugin(StandardJsonPlugin())).build();
|
||||
|
|
|
|||
|
|
@ -9,12 +9,12 @@ import 'package:invoiceninja_flutter/data/models/models.dart';
|
|||
import 'package:invoiceninja_flutter/data/web_client.dart';
|
||||
|
||||
class ProjectRepository {
|
||||
final WebClient webClient;
|
||||
|
||||
const ProjectRepository({
|
||||
this.webClient = const WebClient(),
|
||||
});
|
||||
|
||||
final WebClient webClient;
|
||||
|
||||
Future<ProjectEntity> loadItem(
|
||||
CompanyEntity company, AuthState auth, int entityId) async {
|
||||
final dynamic response = await webClient.get(
|
||||
|
|
|
|||
|
|
@ -6,13 +6,13 @@ import 'package:invoiceninja_flutter/ui/app/buttons/refresh_icon_button.dart';
|
|||
import 'package:invoiceninja_flutter/utils/localization.dart';
|
||||
|
||||
class ProjectEdit extends StatefulWidget {
|
||||
final ProjectEditVM viewModel;
|
||||
|
||||
const ProjectEdit({
|
||||
Key key,
|
||||
@required this.viewModel,
|
||||
}) : super(key: key);
|
||||
|
||||
final ProjectEditVM viewModel;
|
||||
|
||||
@override
|
||||
_ProjectEditState createState() => _ProjectEditState();
|
||||
}
|
||||
|
|
@ -33,7 +33,7 @@ class _ProjectEditState extends State<ProjectEdit> {
|
|||
|
||||
_controllers.forEach((controller) => controller.removeListener(_onChanged));
|
||||
|
||||
final project = widget.viewModel.project;
|
||||
//final project = widget.viewModel.project;
|
||||
// STARTER: read value - do not remove comment
|
||||
|
||||
_controllers.forEach((controller) => controller.addListener(_onChanged));
|
||||
|
|
|
|||
|
|
@ -9,11 +9,11 @@ import 'package:invoiceninja_flutter/redux/project/project_actions.dart';
|
|||
import 'package:invoiceninja_flutter/data/models/project_model.dart';
|
||||
import 'package:invoiceninja_flutter/ui/project/edit/project_edit.dart';
|
||||
import 'package:invoiceninja_flutter/redux/app/app_state.dart';
|
||||
import 'package:invoiceninja_flutter/ui/app/icon_message.dart';
|
||||
|
||||
class ProjectEditScreen extends StatelessWidget {
|
||||
const ProjectEditScreen({Key key}) : super(key: key);
|
||||
|
||||
static const String route = '/project/edit';
|
||||
ProjectEditScreen({Key key}) : super(key: key);
|
||||
|
||||
@override
|
||||
Widget build(BuildContext context) {
|
||||
|
|
@ -31,14 +31,6 @@ class ProjectEditScreen extends StatelessWidget {
|
|||
}
|
||||
|
||||
class ProjectEditVM {
|
||||
final ProjectEntity project;
|
||||
final Function(ProjectEntity) onChanged;
|
||||
final Function(BuildContext) onSavePressed;
|
||||
final bool isSaving;
|
||||
final ProjectEntity origProject;
|
||||
final Function onBackPressed;
|
||||
final bool isLoading;
|
||||
|
||||
ProjectEditVM({
|
||||
@required this.project,
|
||||
@required this.onChanged,
|
||||
|
|
@ -81,4 +73,12 @@ class ProjectEditVM {
|
|||
},
|
||||
);
|
||||
}
|
||||
|
||||
final ProjectEntity project;
|
||||
final Function(ProjectEntity) onChanged;
|
||||
final Function(BuildContext) onSavePressed;
|
||||
final bool isSaving;
|
||||
final ProjectEntity origProject;
|
||||
final Function onBackPressed;
|
||||
final bool isLoading;
|
||||
}
|
||||
|
|
|
|||
|
|
@ -8,8 +8,6 @@ import 'package:invoiceninja_flutter/ui/project/project_list_vm.dart';
|
|||
import 'package:invoiceninja_flutter/utils/localization.dart';
|
||||
|
||||
class ProjectList extends StatelessWidget {
|
||||
final ProjectListVM viewModel;
|
||||
|
||||
const ProjectList({
|
||||
Key key,
|
||||
@required this.viewModel,
|
||||
|
|
@ -116,4 +114,6 @@ class ProjectList extends StatelessWidget {
|
|||
}),
|
||||
);
|
||||
}
|
||||
|
||||
final ProjectListVM viewModel;
|
||||
}
|
||||
|
|
|
|||
|
|
@ -6,15 +6,6 @@ import 'package:invoiceninja_flutter/data/models/models.dart';
|
|||
import 'package:invoiceninja_flutter/ui/app/dismissible_entity.dart';
|
||||
|
||||
class ProjectListItem extends StatelessWidget {
|
||||
final UserEntity user;
|
||||
final Function(EntityAction) onEntityAction;
|
||||
final GestureTapCallback onTap;
|
||||
final GestureTapCallback onLongPress;
|
||||
//final ValueChanged<bool> onCheckboxChanged;
|
||||
final ProjectEntity project;
|
||||
final String filter;
|
||||
|
||||
static final projectItemKey = (int id) => Key('__project_item_${id}__');
|
||||
|
||||
const ProjectListItem({
|
||||
@required this.user,
|
||||
|
|
@ -26,6 +17,16 @@ class ProjectListItem extends StatelessWidget {
|
|||
@required this.filter,
|
||||
});
|
||||
|
||||
final UserEntity user;
|
||||
final Function(EntityAction) onEntityAction;
|
||||
final GestureTapCallback onTap;
|
||||
final GestureTapCallback onLongPress;
|
||||
//final ValueChanged<bool> onCheckboxChanged;
|
||||
final ProjectEntity project;
|
||||
final String filter;
|
||||
|
||||
static final projectItemKey = (int id) => Key('__project_item_${id}__');
|
||||
|
||||
@override
|
||||
Widget build(BuildContext context) {
|
||||
final filterMatch = filter != null && filter.isNotEmpty
|
||||
|
|
|
|||
|
|
@ -30,17 +30,6 @@ class ProjectListBuilder extends StatelessWidget {
|
|||
}
|
||||
|
||||
class ProjectListVM {
|
||||
final UserEntity user;
|
||||
final List<int> projectList;
|
||||
final BuiltMap<int, ProjectEntity> projectMap;
|
||||
final String filter;
|
||||
final bool isLoading;
|
||||
final bool isLoaded;
|
||||
final Function(BuildContext, ProjectEntity) onProjectTap;
|
||||
final Function(BuildContext, ProjectEntity, DismissDirection) onDismissed;
|
||||
final Function(BuildContext) onRefreshed;
|
||||
final Function(BuildContext, ProjectEntity, EntityAction) onEntityAction;
|
||||
|
||||
ProjectListVM({
|
||||
@required this.user,
|
||||
@required this.projectList,
|
||||
|
|
@ -132,4 +121,15 @@ class ProjectListVM {
|
|||
}
|
||||
});
|
||||
}
|
||||
|
||||
final UserEntity user;
|
||||
final List<int> projectList;
|
||||
final BuiltMap<int, ProjectEntity> projectMap;
|
||||
final String filter;
|
||||
final bool isLoading;
|
||||
final bool isLoaded;
|
||||
final Function(BuildContext, ProjectEntity) onProjectTap;
|
||||
final Function(BuildContext, ProjectEntity, DismissDirection) onDismissed;
|
||||
final Function(BuildContext) onRefreshed;
|
||||
final Function(BuildContext, ProjectEntity, EntityAction) onEntityAction;
|
||||
}
|
||||
|
|
|
|||
|
|
@ -9,12 +9,13 @@ import 'package:invoiceninja_flutter/data/models/models.dart';
|
|||
import 'package:invoiceninja_flutter/data/web_client.dart';
|
||||
|
||||
class StubRepository {
|
||||
final WebClient webClient;
|
||||
|
||||
const StubRepository({
|
||||
this.webClient = const WebClient(),
|
||||
});
|
||||
|
||||
final WebClient webClient;
|
||||
|
||||
Future<StubEntity> loadItem(
|
||||
CompanyEntity company, AuthState auth, int entityId) async {
|
||||
final dynamic response = await webClient.get(
|
||||
|
|
|
|||
|
|
@ -6,13 +6,13 @@ import 'package:invoiceninja_flutter/ui/app/buttons/refresh_icon_button.dart';
|
|||
import 'package:invoiceninja_flutter/utils/localization.dart';
|
||||
|
||||
class StubEdit extends StatefulWidget {
|
||||
final StubEditVM viewModel;
|
||||
|
||||
const StubEdit({
|
||||
Key key,
|
||||
@required this.viewModel,
|
||||
}) : super(key: key);
|
||||
|
||||
final StubEditVM viewModel;
|
||||
|
||||
@override
|
||||
_StubEditState createState() => _StubEditState();
|
||||
}
|
||||
|
|
|
|||
|
|
@ -9,11 +9,10 @@ import 'package:invoiceninja_flutter/redux/stub/stub_actions.dart';
|
|||
import 'package:invoiceninja_flutter/data/models/stub_model.dart';
|
||||
import 'package:invoiceninja_flutter/ui/stub/edit/stub_edit.dart';
|
||||
import 'package:invoiceninja_flutter/redux/app/app_state.dart';
|
||||
import 'package:invoiceninja_flutter/ui/app/icon_message.dart';
|
||||
|
||||
class StubEditScreen extends StatelessWidget {
|
||||
const StubEditScreen({Key key}) : super(key: key);
|
||||
static const String route = '/stub/edit';
|
||||
StubEditScreen({Key key}) : super(key: key);
|
||||
|
||||
@override
|
||||
Widget build(BuildContext context) {
|
||||
|
|
@ -31,12 +30,6 @@ class StubEditScreen extends StatelessWidget {
|
|||
}
|
||||
|
||||
class StubEditVM {
|
||||
final StubEntity stub;
|
||||
final Function(StubEntity) onChanged;
|
||||
final Function(BuildContext) onSavePressed;
|
||||
final Function onBackPressed;
|
||||
final bool isLoading;
|
||||
|
||||
StubEditVM({
|
||||
@required this.stub,
|
||||
@required this.onChanged,
|
||||
|
|
@ -77,4 +70,10 @@ class StubEditVM {
|
|||
},
|
||||
);
|
||||
}
|
||||
|
||||
final StubEntity stub;
|
||||
final Function(StubEntity) onChanged;
|
||||
final Function(BuildContext) onSavePressed;
|
||||
final Function onBackPressed;
|
||||
final bool isLoading;
|
||||
}
|
||||
|
|
|
|||
|
|
@ -8,8 +8,6 @@ import 'package:invoiceninja_flutter/ui/stub/stub_list_vm.dart';
|
|||
import 'package:invoiceninja_flutter/utils/localization.dart';
|
||||
|
||||
class StubList extends StatelessWidget {
|
||||
final StubListVM viewModel;
|
||||
|
||||
const StubList({
|
||||
Key key,
|
||||
@required this.viewModel,
|
||||
|
|
@ -116,4 +114,6 @@ class StubList extends StatelessWidget {
|
|||
}),
|
||||
);
|
||||
}
|
||||
|
||||
final StubListVM viewModel;
|
||||
}
|
||||
|
|
|
|||
|
|
@ -6,15 +6,6 @@ import 'package:invoiceninja_flutter/data/models/models.dart';
|
|||
import 'package:invoiceninja_flutter/ui/app/dismissible_entity.dart';
|
||||
|
||||
class StubListItem extends StatelessWidget {
|
||||
final UserEntity user;
|
||||
final Function(EntityAction) onEntityAction;
|
||||
final GestureTapCallback onTap;
|
||||
final GestureTapCallback onLongPress;
|
||||
//final ValueChanged<bool> onCheckboxChanged;
|
||||
final StubEntity stub;
|
||||
final String filter;
|
||||
|
||||
static final stubItemKey = (int id) => Key('__stub_item_${id}__');
|
||||
|
||||
const StubListItem({
|
||||
@required this.user,
|
||||
|
|
@ -26,6 +17,16 @@ class StubListItem extends StatelessWidget {
|
|||
@required this.filter,
|
||||
});
|
||||
|
||||
final UserEntity user;
|
||||
final Function(EntityAction) onEntityAction;
|
||||
final GestureTapCallback onTap;
|
||||
final GestureTapCallback onLongPress;
|
||||
//final ValueChanged<bool> onCheckboxChanged;
|
||||
final StubEntity stub;
|
||||
final String filter;
|
||||
|
||||
static final stubItemKey = (int id) => Key('__stub_item_${id}__');
|
||||
|
||||
@override
|
||||
Widget build(BuildContext context) {
|
||||
final filterMatch = filter != null && filter.isNotEmpty
|
||||
|
|
|
|||
|
|
@ -30,17 +30,6 @@ class StubListBuilder extends StatelessWidget {
|
|||
}
|
||||
|
||||
class StubListVM {
|
||||
final UserEntity user;
|
||||
final List<int> stubList;
|
||||
final BuiltMap<int, StubEntity> stubMap;
|
||||
final String filter;
|
||||
final bool isLoading;
|
||||
final bool isLoaded;
|
||||
final Function(BuildContext, StubEntity) onStubTap;
|
||||
final Function(BuildContext, StubEntity, DismissDirection) onDismissed;
|
||||
final Function(BuildContext) onRefreshed;
|
||||
final Function(BuildContext, StubEntity, EntityAction) onEntityAction;
|
||||
|
||||
StubListVM({
|
||||
@required this.user,
|
||||
@required this.stubList,
|
||||
|
|
@ -132,4 +121,15 @@ class StubListVM {
|
|||
}
|
||||
});
|
||||
}
|
||||
|
||||
final UserEntity user;
|
||||
final List<int> stubList;
|
||||
final BuiltMap<int, StubEntity> stubMap;
|
||||
final String filter;
|
||||
final bool isLoading;
|
||||
final bool isLoaded;
|
||||
final Function(BuildContext, StubEntity) onStubTap;
|
||||
final Function(BuildContext, StubEntity, DismissDirection) onDismissed;
|
||||
final Function(BuildContext) onRefreshed;
|
||||
final Function(BuildContext, StubEntity, EntityAction) onEntityAction;
|
||||
}
|
||||
|
|
|
|||
Loading…
Reference in New Issue