Automated weekly time sheet and project summary

Problem similar to this forum post.

I have moved from typoria/vim/marktext and would like to start taking advantage of obsidian plugins like dataview. I would like some help getting dataview to automate some of the things I have been doing manually with copy paste to start using daily notes.

Current workflow

Currently I make a weekly note (eg 2024-W13) with the days as h1 headings (eg “# 2024-03-26”) and record daily project work hours along with invoices for that day and other work events.

I would hunt trough the weekly notes and copy paste the project hours into the project note and manually add up the hours. I also currently use the search tool to find most things.

Currently under the day heading I would have:

  • Project A (hours as number)
    • Done abc
    • Done xyz
  • Project B (hours as number)
    • Done something

What I’m trying to do

The plan is to have the above list in a daily note under the heading Projects. Then the repeated info in the weekly summary and project files would be pulling form the daily notes.

Weekly Summary

The weekly/monthly summary would need the total hours per project, bonus would be adding the tasks.

Project Date Task Hours
Project A 2024-03-26 Done abc
Done xyz
X
Total SumX
Project B 2024-03-26 Done Something y
Project B 2024-03-27 Done stuff y
Project B 2024-03-28 Done things y
Total SumY

Project Summary

The project summary would need a copy of the tasks and the date they were done. If possible a separate dataview with total hours?

Date Task Hours
2024-03-26 Done abc
Done xyz
X
2024-03-27 Something important X
2024-03-26 Done Something X

Total hours SumX

Things I have tried

Using dataview I am able to get the list under the heading but am not able to parse the nested list. When I flatten the list, the nesting appears to be lost. Can you treat a nested list as an nested array? where list[0] would be the first project and list[0][0] is the first item of project 1? I wrote out some regex expressions to get the relevant fields but am having an issue writing a query to use them.

Hours:
(\d+)(?!.*\d)

Project:
^(?:\S)+\s(.+?)\s+(?:\S+)$

Tasks:
^(?:\t)+\S+\s(.+?)$