Git Product home page Git Product logo

orcamento's People

Contributors

talesm avatar

Watchers

 avatar  avatar

orcamento's Issues

Setup the ability of inline list editing.

It is a nice thing to have and it was present on the older UI.
The implementation of this was started on #33. However nana requires more careful design dealing with this, so I created a special task to isolate the risk.

A totals display

Better display of Totals. The status bar is problematic. We need copyable and filter-able (per wallet at least) totals;

Create MovementDetailPresenter dialog

It allows the user see in detail the movement. It must:

-Show all fields;
-Edit all fields
-Integrate with MovementTimelinePresenter, both in creation and in editing.

Create Category overview dialog

It should save before opening and after closing, informing accondingly. It should be similar with the wallet overview too, being the remove also disabled for now. Undo and redo are optionals, if are not too hard.

Improve model to better handle "Previous Balance" executions

Nowadays it is created together with the budgets, but it should be created only when it is executed. We need instead have the budget amended to have a "initial_estimate" field, populated at its creation and a new table to relate budget per wallet, that is created at its execution.

It should be presented as the first row of every budget, but with a different color, untouched by filtering. It should have a custom dialog to edit, as it will be fed only once.

Any edition at a previous budget must be refreshed manually. The interface however, must offer that option.

Totals are accumulating estimatives. They're useless at this point.

On totals suming, we should use a fixed estimate instead of pure estimate: The fixed use this math:

fixed = if( abs(accounted) >  abs(estimated) OR signal(accounted) != signal(estimated) 
    then accounted 
    else estimated;

Also is important to provide some way to choose if the you want to include the previous data into consideration [To be solved on #5 ]

Tweak the wallet dialog

Save before open and after close, warning accordingly. If not hard, create undo and redo options inside it.

Refactor BudgetDetailPresenter into BudgetSummaryPresenter

The present form is bad as because it accumulates two roles, the summary and the tab switching mechanism. Other problem is the calling overhead caused in passing messages from MainPresenter to the Execution and Estimate lists.

The goal of this refactor is to relieve that last responsibility. For now it goes to MainPresenter, that really needs them to have easier communication to the presenters.

Undo/Redo support

Important feature, as user always is prone to errors, we should give she a way to rollback. Also, it gives a more professional look to the project.

Schema v0.2.0

To fix #14, the best to do is tweak the triggers to do the same estimative than the totals. We will need to do a conversion from v0.1. Lastly, we must let the user edit the previous field from the first month.

Create EstimateDetailPresenter

It is a modal dialog that allows the view/editing of an EstimateView.

  • It must show all fields;
  • All fields but "fulfilled" must allow editing;
  • It should be integrated to EstimateListPresenter through:
    1. When the user double clicks or press space in an estimate
    2. When the user inserts a estimate (Ctrl+ins)

Dbs without active budgets shows a nasty error

Some recent code assumes we always have a selected budget, but sometimes we have dbs without selected budget. It is impossible to unselect the current budget and after loading we select the active budget by default. But when you create a new budget or load a budget without active budget it does not have a active budget to select so nothing is selected.

Create Reports menu

The reports to be available are:

  1. Daily balance: Graphically, with options by wallet, by category, by debit, credit or transfer, and obviously, by date or default by everything in current budget;
  2. Daily balance: Graphically, with options by category, debit, credit;
  3. Monthly final balance: CSV or Graphic, with option by wallet, by category, by credit, debit, transfer. It overlays the estimate and the movement.

Separate model from view

Having the model and the view coupled is bad and I should feel bad. Should decouple it in sort of document/view or MVC scheme.

Occurrences

  • OrcamentoMainFrame;
  • ExecutionDialog;
  • WalletOverview;

Create BudgetDetailPresenter

This class is the glue among MainPresenter, ExecutionListPresenter and EstimateListPresenter.
It should be located on the main frame and have the the {Execution, Estimate}ListPresenter lists as item tabs. A third tab should have the totals (Summary) with the initial estimate, current estimate and executed categorized by income, expense and total.

Turn executions into movements and fix estimates

Fix the model, being the execution turned on movement, that can say which wallet is origin, and which is destiny, and with estimate being optional; The due date of estimate is now mandatory (the interface must default to the current day).

The execution should be now a view relating estimates with the total execution of them.

Export CSV

Allow the user export the CSV of the selected month; Also allow she to export estimates only or executions included.

Ordering

Currently we have a fixed order: first for category, then by name. It should be nice to have other orderings.

Some fractional values are being rounded in wrong way.

Some fractional values are being rounded in wrong way. This is due the storage of amounts as integer (Ironically I choose store that way to avoid rounding errors) and the consequential need to multiply by 100 and round before storing.

Example

Put the value 0.59 in any amount field. It will be shown as 0.58!

Stop using list position to guess ids

In many cases we expect lists to be filled with sequential integers without gaps and it is true by now (none of them has deletable items) but it will probably change in future. Storing the id directly will avoid me future headaches.

Occurences

It occurs on:

  • Wallet Dialog;
  • Budget List;
  • The category listing (on estimate category changing);

Should search for more.

Simplify Color system

It is to much complicated. Just put the as follows:

Entire line as*

  • Green: Credit;
  • Orange: Debit;
  • White: Neutral;

*Except fields accounted and remaining, as they encode your current situation.

Accounted and remaining

-White if accounted is zero;
-Scale from white to green: if it's credit and it's value is between zero and the estimated, exclusive or if the estimated is zero and accounted is larger than zero;
-Blue: if credit and it is equal or more than the estimated;
-Scale from white to Orange: if it's debit and it's value is less than zero and more or equal to the estimated;
-Red if the accounted is less than estimated and it is not credit;

The table bellow summarizes the color schema

X a < e a = e a > e
e < 0 red Orange min(0,a/e) [0=white, 1=Orange]
e = 0 red white green
e > 0 min(0,a/e) [0=white, 1=green] blue blue

Recommend Projects

  • React photo React

    A declarative, efficient, and flexible JavaScript library for building user interfaces.

  • Vue.js photo Vue.js

    ๐Ÿ–– Vue.js is a progressive, incrementally-adoptable JavaScript framework for building UI on the web.

  • Typescript photo Typescript

    TypeScript is a superset of JavaScript that compiles to clean JavaScript output.

  • TensorFlow photo TensorFlow

    An Open Source Machine Learning Framework for Everyone

  • Django photo Django

    The Web framework for perfectionists with deadlines.

  • D3 photo D3

    Bring data to life with SVG, Canvas and HTML. ๐Ÿ“Š๐Ÿ“ˆ๐ŸŽ‰

Recommend Topics

  • javascript

    JavaScript (JS) is a lightweight interpreted programming language with first-class functions.

  • web

    Some thing interesting about web. New door for the world.

  • server

    A server is a program made to process requests and deliver data to clients.

  • Machine learning

    Machine learning is a way of modeling and interpreting data that allows a piece of software to respond intelligently.

  • Game

    Some thing interesting about game, make everyone happy.

Recommend Org

  • Facebook photo Facebook

    We are working to build community through open source technology. NB: members must have two-factor auth.

  • Microsoft photo Microsoft

    Open source projects and samples from Microsoft.

  • Google photo Google

    Google โค๏ธ Open Source for everyone.

  • D3 photo D3

    Data-Driven Documents codes.