Coder Social home page Coder Social logo

buchungsstreber's People

Contributors

1451678 avatar bujo avatar dgrammlich avatar fheft avatar fraulyoner avatar heib avatar honnel avatar m4us1ne avatar punycode avatar renovate-bot avatar renovate[bot] avatar

Stargazers

 avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar

Watchers

 avatar  avatar  avatar  avatar  avatar

buchungsstreber's Issues

Add time to `add` feature

As someone with a dependence on more information, it would be good to add the time the entry was added into the entry comment.

edit editor selection: VISUAL environment variable

Right now, we only look at the EDITOR variable, to select a non-vim editor. As per POSIX spec, the VISUAL variable makes more sense. We should at least prefer the VISUAL variable to EDITOR if set, as nobody really wants to edit files via ed (that I know).

`h` button needs to be pushed twice to show help and can not hide it afterwards

When I want to enable the help in watch mode I need to push the h twice. Same behaviour with ?.
Once the help is shown I would expect to hide it with another push on h or ? or maybe ESC, but nothing happens. I help myself by pushing ENTER which refreshes the view.


Buchungsstreber 2.4.0
Ubuntu 18.04.5
Ruby ruby 2.5.1p57 (2018-03-29 revision 63029) [x86_64-linux-gnu] with

  • curses 1.3.2
  • rb-inotify 0.10.1

Time unit is sometimes shown twice in watch mode

The time unit h is sometimes shown twice in watch mode.

bs-watch-1

The entry in the screenshot is an aggregated entry.


Buchungsstreber 2.4.0
Ubuntu 18.04.5
Ruby ruby 2.5.1p57 (2018-03-29 revision 63029) [x86_64-linux-gnu] with

  • curses 1.3.2
  • rb-inotify 0.10.1

Optional archiving

I would like to have a setting option or something like that so that my entries are not archived after adding time entries to redmine, but remain in the file with the time entries. Since I book daily, the old entries disappear too quickly in the archive for me.

Generator: Daily Tasks

An Idea to have a generator where you can configure daily tasks, so you need not write them each time.

Format Parsers are too strict

The parsers will halt at the first invalid line instead of parsing the rest of the entries. This is ok on the plain buchungsstreber workflow, but used as a library for the watch feature it would be better if they just marked the entries as invalid and proceeded.

The field entry[:error] is already used elsewhere, we could use the validity marker as well.

New Generator: Static Daily Entry

Some daily activities for me are not handled by a calendar entry.

I'd like a configurable generator for that.

2022-01-01:
- 0.0 t#7654 Admin Daily Cleanup
generators:
  daily:
    - activity: Admin
      issue: 7654
      prefix: t
      text: Daily Cleanup

"Messy" YAML file

I use Buchungsstreber 2.8.0 with YAML format. I start Buchungsstreber in watch mode. After that I start it in a second terminal in edit mode. It is configured to use ncalcli and resolve the incoming dates via regex to template identifiers.

After that my YAML file has a blank line after the date and no blank line between the last entry and the previous date.

2022-02-14:

  - 2.0     some task
  - 0.75      another task
  - 0.5     last task
2022-02-11:
  - 0.25        past task

In the previous version it looked cleaner:

2022-02-14:
  - 2.0     some task
  - 0.75      another task
  - 0.5     last task


2022-02-11:
  - 0.25        past task

It is not a bug but a change in usability and behaviour.

`watch` mode shows wrong Redmine color

I've defined a green color for the first Redmine (S), a blue color for the second Redmine (C). The first Redmine is in watch mode shown with the default color (red), the second Redmine is shown with the color defined for the first Redmine.

Screenshot from 2021-01-11 12-09-25

redmines:
  - 
    name: first Redmine
    prefix: S
    color: '#76b82a'
  -
    name: second Redmine
    prefix: C
    color: '#0082c9'

Buchungsstreber 2.6.1
Ubuntu 18.04.5
Ruby ruby 2.5.1p57 (2018-03-29 revision 63029) [x86_64-linux-gnu] with

  • ncursesw 1.4.10
  • rb-inotify 0.10.1

Add option to discover activities from Redmine installations for configuration

In order to configure mappings for activities, the configuration file requires knowledge of the internal IDs of activities to map them to labels, see for example

8: [DesignView, Design, View, Dsgn]

Since "normal" users don't have access to this kind of information and may not know how to scrape that out of Redmine's web interface, it would be nice if buchungsstreber were able to extract those from a configured Redmine installation (e.g. via command line argument dump-activities or similar) so the user can use them for their own configuration.

An alternative approach could be to allow the use of activity names instead of IDs. In this scenario my config might change like this:

# from
    activities:
      33: [Marketing, mkt]
      46: [Sales]
      47: [Consulting, con]
# to
    activities:
      Marketing: [mkt]
      Consulting: [con]

Marketing, Sales and Consulting are the "original" labels within the Redmine installation and will always work, hence no configuration for Sales, as no alias exists.

TUI: time-only entries not visible

Generating entries may leave entries empty, possibly only having a comment. It would be good to display those in the TUI as well, showing the comment in the text field if empty.

`edit` mode cannot handle empty Buchungen file

I wanted to start this month with an empty file and created a new one by touching it.

~$ buchungsstreber edit today
UncaughtThrowError: uncaught throw "invalid line: file should contain map"

It is my regular workflow that worked for a while now, so it must be broken along the way. I added the date by using vim. After that I can run edit again.

Configuration Directories: Validate Lookup Paths

The current list of lookup paths for configuration files contains __dir__ + '/..'. This seems suspect and is probably a remnant of the config.rb being simply in a lib/ directory. It seems to have been used for detecting a config file within the top level directory of the project.

This should be validated and corrected.

`watch` mode does not recover after error

I use Buchungsstreber 2.8.0 with YAML format.

I started Buchungsstreber in watch mode. After that I started it in a second terminal in edit mode. It is configured to use ncalcli and resolve the incoming dates via regex to template identifiers. If one of the dates has no resolver or identifier, this error occurs:

NoMethodError: undefined method 'valid_activity?' for nil:NilClass

It seems that the lines with error messages move the other content up and out of the window.

buchungsstreber-watch-1

In edit mode I remove the conflicting date and save the file. The watch mode still shows the error, even after I press ENTER to reload it manually.

buchungsstreber-watch-2

Starting the watch mode with a valid file seems fine.

Configuration refactoring.

The current way that configuration is propagated within the application is... haphazard at best.

  • templates are handed down to parsers directly, they are from a much much simpler time
  • minimum_time is handed down to parsers directly
  • there was a thread local 'current config' at one point
  • the Config class has a bunch of class methods but nothing else
  • the thor app always has to create a current Buchungsstreber context
  • how does a current context differentiate itself from the current configuration?
  • ...

Release 2.5

There is a load of new functionality available since the move to github. We should definitly think of a next release.

Documentation: Time Granularity

The documentation for YAML/Buch Format still specifies, that the time granularity is fixed to a quarter hour. This hasn't been true for quite some time, being configurable via config file.

This paragraph should be revised/rewritten.

Dependency Dashboard

This issue provides visibility into Renovate updates and their statuses. Learn more

This repository currently has no open or pending branches.


  • Check this box to trigger a request for Renovate to run again on this repository

Aggregation missing in single entry subwindow

When I click on an entry a subwindow opens with entry details. Aggregated entries are not solved properly here.

bs-watch-3


Buchungsstreber 2.4.0
Ubuntu 18.04.5
Ruby ruby 2.5.1p57 (2018-03-29 revision 63029) [x86_64-linux-gnu] with

  • curses 1.3.2
  • rb-inotify 0.10.1

Resolver with template alike functionality

As I wanted to switch from YAML format to Buch format I instantly missed the templates I used to write my time tracks with. As templates are not implemented for the Buch format it would be nice to have a similar functionality for reaccouring issues.

@BuJo mentioned that it would be a better approach to implement a resolver that serves both booking formats equal.

CD: A Release should deploy a gem

The deployment worked via the nexus gem, and published to an open Nexus repository. This could be replicated via github actions, to enable automated releases again.

Continuous Integration

There is a pipeline on what to test in .gitlab-ci.yml. This should be replicated so that pushing to GitHub also runs some sort of continuous integration.

Action Required: Fix Renovate Configuration

There is an error with this repository's Renovate configuration that needs to be fixed. As a precaution, Renovate will stop PRs until it is resolved.

Location: renovate.json
Error type: Invalid JSON (parsing failed)
Message: Syntax error: expecting end of expression or separator near oard": fal

Reverse order of entries

I use Buchungsstreber 2.8.0 with YAML format. I start Buchungsstreber in watch mode. After that I start it in a second terminal in edit mode. It is configured to use ncalcli and resolve the incoming dates via regex to template identifiers.

It was sorted by the time of the incoming ncalcli dates.

2022-02-14:
  - 0.75        early task # dated with 10:00 in calendar
  - 0.75        late task # dated with 10:30 in calendar

After updating to 2.8.0 the entries are in reverse order.

2022-02-14:
  - 0.75        late task # dated with 10:30 in calendar
  - 0.75        early task # dated with 10:00 in calendar

It is not a bug but a change in behaviour. It occured to me because I use the incoming dates as sort of personal daily planning.

Time tracking on projects

Currently time can only be tracked on issues. It would be nice to track time on projects, similar to https://redmine.domain.de/projects/projectname/time_entries/new.

Possible tracking format in the timesheet file:
YAML

2020-10-06:
  - 10:00-10:30  Orga  sprojectname  did some stuff
  - 1.0  Orga  projectname  did some more stuff

Buch

2020-10-06
s#projectname  0.5  Orga  did some stuff
#projectname  1.0  Orga  did some more stuff

minimum_time setting broken

It seems to me like the minimum_time setting is broken. Instead of setting the minimum time of the time entry (i.e. log at least half an hour, even if the task only took 10 minutes), it seems to multiply the time.

Example YAML time sheet:

2024-04-20:
- 0.25 E 20000 Test
- 0.50 E 20001 Test
- 0.75 E 20002 Test
- 1.00 E 20003 Test

With the default minimum_time setting of 0.25 hours:

  Sat:  0.25h  @  [...]    Test
  Sat:  0.5h   @  [...]    Test
  Sat:  0.75h  @  [...]    Test
  Sat:  1.0h   @  [...]    Test

✔️ Works as expected

Changing minimum_time to half an hour:

  Sat:  0.5h   @  [...]    Test
  Sat:  1.0h   @  [...]    Test                          
  Sat:  1.5h   @  [...]    Test                          
  Sat:  2.0h   @  [...]    Test

⚠️ All time entries are doubled

Expected behavior, from my understanding:

Only the first time entry (less than half an hour) is changed:

  Sat:  0.5h  @  [...]    Test
  Sat:  0.5h   @  [...]    Test
  Sat:  0.75h  @  [...]    Test
  Sat:  1.0h   @  [...]    Test

I was not yet able to dig deeper into this issue.

Add code coverage

The GitLab workflow generated code coverage, and enabled a button for use in the README.md. This would be cool to replicate within GitHub.

Make minimum time entry configurable

Actually the minimum time entry is fix with 0.25, which is 15 minutes. It would be great to make this configurable in the config.yml.

A global value would be enough for the first step. The config.yml could look like this:

timesheet_file: ~/buchungsstreber/buchungen.yml
archive_path: ~/buchungsstreber/archive
hours: 8.0
minimum_time_entry: 0.25
generators:
...

Add entry from command line

Maybe you don't know (or want to think about) where your timesheet file is located or you don't want to think about the formatting. You just want to add a line to yout timesheet file, maybe only a note.

One of the arguments should be mandatory. Maybe the easiest would be a comment.
Thought of something like

$ # buchungsstreber add <comment> [<time> <activity> <project> <issue>]
$ buchungsstreber add "did some stuff" 1.0 Orga S 32056
$ buchungsstreber add "did some more stuff"
$ buchungsstreber add --text="helped some people" --issue=13314
$ buchungsstreber add --text="support" --project=S --time=1.5

which for example results in YAML

2020-09-29:
  - 1.0  Orga  S32056  did some stuff
  - did some more stuff
  - 13314  helped some people
  - 1.5  S  support

In addition an option could be provided that marks the entry as note. This would for example prevent the watch mode from failing due to an invalid entry.
Thought of something like

$ buchungsstreber add --note "did some more stuff"

which for example results in YAML

2020-09-29:
  # TODO - did some more stuff

Watch shows full file

The watch feature shows the full file, instead of a single day.

I propose to change that behaviour to show the current day.

Redmine development setup

As a developer I do not want to run my development environment against a productive Redmine. There is a Redmine docker setup from Bitnami. It would be nice if there already were some Redmine issues created so maybe it could be enriched with some data. A example developer configuration and a example developer timesheet file also would be great.

Visual support for different Redmines

I'm using two different Redmines for my time tracking. Currently I help myself by sorting the entries by Redmine manually in the timesheet file to have a feeling for the amount of entries I did for each.

In the watch mode the entries stay sorted and the letter defined for the Redmine is visible.
watch-1

They also stay sorted in the log view (the overlay/subwindow that shows up by pushing b), but there is no visible difference between the entries.
watch-2

It would be nice to provide an option in the configuration file to define a color for a Redmine in which the defined Redmine prefix or the issue numbers could be dyed.

...
redmines:
  -
    name: project
    prefix: P
    color: frog-green
    server:
...

generator: Operation on partial days

To enable a workflow of "add partial entries over the day and afterwards fill missing items via generator", the generator should be able to integrate generated values with the given day.

Contributor Guidelines

There should be some guidelines for contributors.
There is the small 'how to develop' on the bottom of the readme, that could perhaps be expanded upon in a CONTRIBUTING.md.

Generator: Handle duplications

While generating entries there will be duplicates. Normally Aggregation is used to aggregate existing entries. When backfilling entries on a day this could be used to further cleanup generated entries.

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.