CSV export

This commit is contained in:
Hillel Coren 2022-05-20 12:05:46 +03:00
parent 22f8856732
commit 21755fa14c
4 changed files with 156 additions and 8 deletions

View File

@ -170,3 +170,28 @@ class ImportType extends EnumClass {
static ImportType valueOf(String name) => _$typeValueOf(name);
}
class ExportType extends EnumClass {
const ExportType._(String name) : super(name);
static Serializer<ExportType> get serializer => _$exportTypeSerializer;
static const ExportType clients = _$clients;
static const ExportType contacts = _$contacts;
static const ExportType credits = _$credits;
static const ExportType documents = _$documents;
static const ExportType expenses = _$expenses;
static const ExportType invoices = _$invoices;
static const ExportType invoice_items = _$invoice_items;
static const ExportType quotes = _$quotes;
static const ExportType quote_items = _$quote_items;
static const ExportType recurring_invoices = _$recurring_invoices;
static const ExportType payments = _$payments;
static const ExportType products = _$products;
static const ExportType tasks = _$tasks;
static const ExportType profitloss = _$profitloss;
static BuiltSet<ExportType> get values => _$exportValues;
static ExportType valueOf(String name) => _$exportValueOf(name);
}

View File

@ -46,6 +46,75 @@ final BuiltSet<ImportType> _$typeValues =
_$zoho,
]);
const ExportType _$clients = const ExportType._('clients');
const ExportType _$contacts = const ExportType._('contacts');
const ExportType _$credits = const ExportType._('credits');
const ExportType _$documents = const ExportType._('documents');
const ExportType _$expenses = const ExportType._('expenses');
const ExportType _$invoices = const ExportType._('invoices');
const ExportType _$invoice_items = const ExportType._('invoice_items');
const ExportType _$quotes = const ExportType._('quotes');
const ExportType _$quote_items = const ExportType._('quote_items');
const ExportType _$recurring_invoices =
const ExportType._('recurring_invoices');
const ExportType _$payments = const ExportType._('payments');
const ExportType _$products = const ExportType._('products');
const ExportType _$tasks = const ExportType._('tasks');
const ExportType _$profitloss = const ExportType._('profitloss');
ExportType _$exportValueOf(String name) {
switch (name) {
case 'clients':
return _$clients;
case 'contacts':
return _$contacts;
case 'credits':
return _$credits;
case 'documents':
return _$documents;
case 'expenses':
return _$expenses;
case 'invoices':
return _$invoices;
case 'invoice_items':
return _$invoice_items;
case 'quotes':
return _$quotes;
case 'quote_items':
return _$quote_items;
case 'recurring_invoices':
return _$recurring_invoices;
case 'payments':
return _$payments;
case 'products':
return _$products;
case 'tasks':
return _$tasks;
case 'profitloss':
return _$profitloss;
default:
throw new ArgumentError(name);
}
}
final BuiltSet<ExportType> _$exportValues =
new BuiltSet<ExportType>(const <ExportType>[
_$clients,
_$contacts,
_$credits,
_$documents,
_$expenses,
_$invoices,
_$invoice_items,
_$quotes,
_$quote_items,
_$recurring_invoices,
_$payments,
_$products,
_$tasks,
_$profitloss,
]);
Serializer<PreImportResponse> _$preImportResponseSerializer =
new _$PreImportResponseSerializer();
Serializer<PreImportResponseEntityDetails>
@ -56,6 +125,7 @@ Serializer<ImportRequest> _$importRequestSerializer =
Serializer<ImportRequestMapping> _$importRequestMappingSerializer =
new _$ImportRequestMappingSerializer();
Serializer<ImportType> _$importTypeSerializer = new _$ImportTypeSerializer();
Serializer<ExportType> _$exportTypeSerializer = new _$ExportTypeSerializer();
class _$PreImportResponseSerializer
implements StructuredSerializer<PreImportResponse> {
@ -303,6 +373,23 @@ class _$ImportTypeSerializer implements PrimitiveSerializer<ImportType> {
ImportType.valueOf(serialized as String);
}
class _$ExportTypeSerializer implements PrimitiveSerializer<ExportType> {
@override
final Iterable<Type> types = const <Type>[ExportType];
@override
final String wireName = 'ExportType';
@override
Object serialize(Serializers serializers, ExportType object,
{FullType specifiedType = FullType.unspecified}) =>
object.name;
@override
ExportType deserialize(Serializers serializers, Object serialized,
{FullType specifiedType = FullType.unspecified}) =>
ExportType.valueOf(serialized as String);
}
class _$PreImportResponse extends PreImportResponse {
@override
final String hash;

View File

@ -48,8 +48,9 @@ class _ImportExportState extends State<ImportExport> {
FocusScopeNode _focusNode;
bool autoValidate = false;
PreImportResponse _response;
var _importType = ImportType.csv;
var _exportType = ImportType.csv;
var _importFormat = ImportType.csv;
var _exportFormat = ImportType.csv;
var _exportType = ExportType.clients;
bool _isExporting = false;
@override
@ -82,9 +83,9 @@ class _ImportExportState extends State<ImportExport> {
children: [
if (_response == null)
_FileImport(
importType: _importType,
importType: _importFormat,
onUploaded: (response) => {
if (_importType == ImportType.csv)
if (_importFormat == ImportType.csv)
{
setState(() => _response = response),
}
@ -94,12 +95,12 @@ class _ImportExportState extends State<ImportExport> {
}
},
onImportTypeChanged: (importType) =>
setState(() => _importType = importType),
setState(() => _importFormat = importType),
)
else
_FileMapper(
key: ValueKey(_response.hash),
importType: _importType,
importType: _importFormat,
formKey: _formKey,
response: _response,
onCancelPressed: () => setState(() => _response = null),
@ -117,10 +118,10 @@ class _ImportExportState extends State<ImportExport> {
child: DropdownButtonHideUnderline(
child: DropdownButton<ImportType>(
isDense: true,
value: _exportType,
value: _exportFormat,
onChanged: (dynamic value) {
setState(() {
_exportType = value;
_exportFormat = value;
});
},
items: [
@ -134,6 +135,26 @@ class _ImportExportState extends State<ImportExport> {
.toList()),
),
),
InputDecorator(
decoration:
InputDecoration(labelText: localization.exportType),
child: DropdownButtonHideUnderline(
child: DropdownButton<ExportType>(
isDense: true,
value: _exportType,
onChanged: (dynamic value) {
setState(() {
_exportType = value;
});
},
items: ExportType.values
.map((importType) => DropdownMenuItem<ExportType>(
value: importType,
child:
Text(localization.lookup('$importType'))))
.toList()),
),
),
AppButton(
iconData: MdiIcons.export,
label: localization.export.toUpperCase(),

View File

@ -16,6 +16,9 @@ mixin LocalizationsProvider on LocaleCodeAware {
static final Map<String, Map<String, String>> _localizedValues = {
'en': {
// STARTER: lang key - do not remove comment
'invoice_items': 'Invoice Items',
'quote_items': 'Quote Items',
'profitloss': 'Profit and Loss',
'import_format': 'Import Format',
'export_format': 'Export Format',
'export_type': 'Export Type',
@ -69693,6 +69696,18 @@ mixin LocalizationsProvider on LocaleCodeAware {
_localizedValues[localeCode]['export_format'] ??
_localizedValues[localeCode]['export_format'];
String get invoiceItems =>
_localizedValues[localeCode]['invoice_items'] ??
_localizedValues[localeCode]['invoice_items'];
String get quoteItems =>
_localizedValues[localeCode]['quote_items'] ??
_localizedValues[localeCode]['quote_items'];
String get profitloss =>
_localizedValues[localeCode]['profitloss'] ??
_localizedValues[localeCode]['profitloss'];
// STARTER: lang field - do not remove comment
String lookup(String key) {