What to build
A person picks a .xlsx or .csv file on My data. The browser parses it, shows a preview of the rows it will import and the rows it will skip (with the reason), then writes the accepted rows to Firestore as custom yields. There is no server upload (ADR 0001 in #122).
The import and export format has separate starting form and finished product columns, so a row maps onto a conversion. A row without a starting form, such as one from an older file with only a product column, imports with the starting form blank. Like the Neon copy, it stays private and can't be submitted until the owner fills it in. The downloadable template and My data export use the new columns.
The same import also accepts the unsent-changes file saved from the read-only old app (#130). This covers a device that stayed offline through the switch, so its custom yields and saved calculations still reach the new app.
Keep today's parsing rules, which were fixed in #113:
- Only XLSX cells with a real percent number format stay numbers and are multiplied by 100. A
% inside quotes or escaped with a backslash doesn't count.
- Every other cell is read as text, so a CSV
0.5 means 0.5%.
- Yields outside the range above 0 and up to 100 are skipped.
Acceptance criteria
Blocked by
What to build
A person picks a
.xlsxor.csvfile on My data. The browser parses it, shows a preview of the rows it will import and the rows it will skip (with the reason), then writes the accepted rows to Firestore as custom yields. There is no server upload (ADR 0001 in #122).The import and export format has separate starting form and finished product columns, so a row maps onto a conversion. A row without a starting form, such as one from an older file with only a product column, imports with the starting form blank. Like the Neon copy, it stays private and can't be submitted until the owner fills it in. The downloadable template and My data export use the new columns.
The same import also accepts the unsent-changes file saved from the read-only old app (#130). This covers a device that stayed offline through the switch, so its custom yields and saved calculations still reach the new app.
Keep today's parsing rules, which were fixed in #113:
%inside quotes or escaped with a backslash doesn't count.0.5means 0.5%.Acceptance criteria
Blocked by