GithubHelp home page GithubHelp logo

activitydiary's People

Contributors

amusanmikel avatar dennisguse avatar iambenzo avatar ondri124 avatar poussinou avatar ramack avatar shisheng-1 avatar spartee avatar tobaloidee avatar

Stargazers

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

Watchers

 avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar

activitydiary's Issues

Add support for Activity aliases

add in

  • searching
  • in EditActivity give the list of aliases
  • on creation of an activity check whether an alias with that name exists, ask if this should become a subactivity of the current alias

Support "Background" Activities (State / Status)

Some activities you might want to put into your Diary are not exclusive, but are some form of "states" that are in parallel to other activities. Normal DiaryActivities in our sense are exclusive and when you start an activity implicitly the current Activity is stopped.

A Background-Activity is one that can be active in parallel to the ordinary one.

For the implementation I see two options:

  1. add a flag to DiaryActivity which makes is a backgroundactivity
  2. add a different entity BackgroundActivity or maybe State

At the moment I do not see big differences (the only one is the "exclusivity") so it seems better to go for solution 1.

Or even allow to store "observations"? e. g. phenological observations like "cherry blossom" with a start and end date?

Text color improvements

On many backgrounds the current font color is not good.
Generalize the algorithm in the activity managers and adjust colors in

  • main view
  • diary - where even two different colors would be good for activity name and the time

Store Data Persistently

DirayActivities shall be stored locally and read during app start.

As we finally want to provide custom search in the activities and also be able to sync the data to a cloud storage (#3) we need a ContentProvider. See https://developer.android.com/guide/topics/providers/content-provider-creating.html#DataStorage
and maybe https://developer.android.com/training/basics/data-storage/databases.html

for using ROOM https://codelabs.developers.google.com/codelabs/android-persistence/ the time seems not yet ripe

Multi-User

Shall we add multi-user support?
Incl. user communication? -> if yes adjust setting in gplay
Incl. sharing of location with others? -> if yes adjust setting in gplay

Some activities might be global to a group, such that all members get reminded and if one of the members did it, this instances get archived.

#3 for sure is a precondition for reasonable multi-user support.

Leaving the EditActivity looses data

leaving the "Edit Activity" with the up action after changing it, rejects the changes without further notice. Better ask if you want to safe or reject the changes.

Or even just save the data and replace the "check" by a cross to cancel the edit.

Add support for Images for the activities

Each DiaryActivity could have a picture attached to easily identify it.

  • adding to Datamodel
  • add icon to data (contentprovider)
  • view icon in different places
  • support icon image and background image
  • store image in database or files?
  • add in cloud sync

there could be two images... one icon and one "background image". I think the icon would be more useful, background could be shifted to another ticket... @Tobaloidee would be willing to provide some icons for the default activities, maybe we can also include the material design icons for activities and additionally allow the used to add own symbols from files.

Create Activity Selector Fragment

Main Fragment to be shown on startup for selecting the current activity.

A RecyclerView with a StaggeredGridLayoutManager seems the best choice, while the more likely next activities can be shown bigger.

Activities shall be sorted

Add a sorting to the activities in the RecylerView for the "current activity selector" to have:

  • the next n follower-activities (based on the diary)
  • the next "likely" activities based on conditions (see #18)
  • the next m activities which are upcoming from the recurrence evaluation (or configuration?) -> shift to recurrence evaluation ticket #72

Trigger Actions on Start of Activity

Allow configuration of "actions", which are executed when an activity starts. E. g. switch to silent mode when selecting activity "Sleeping". Possible actions include

  • volume setting (ringer mode?)
  • vibration setting
  • en-/disable mobile data
  • en-/disable WLAN
  • en-/disable Bluetooth
  • en-/disable GPS

Statistics View

Add a view to show statistics. Maybe globally

  • how did I spent my time? / how was the distribution of the activities

  • the detail area of the main view shall be some tabbed panel with

  • statistics (while a tap into this opens the history with a search for the current activity)
  • note (vertically scrollable)
  • images ("recyclervier" vertically scrollable)
    horizontal swipe shall switch the detail.

stats per activity

  • current duration
  • average duration of the activity
  • activity last done (which is the "related" part of #58)
  • how long did I spend on this activity in the last week, month, year total?

Create Nice Icons

Create nice looking set of icons and pictures.
Precondition: have some useful amount of functions implemented, to have a clear view of what is necessary.

  • launcher icon
  • logo
  • icon for "Select Activity"
  • icon for "Diary"

Create Settings Activity

Create a fragment to do configure basic settings like

  • use location tracking
  • sort order of the activites
  • En/Disable auto switching of current activity (and/or configure threshold)
  • option to choose whether an activity shall be directly selected as current activity after creating it.
  • option for the date+time format in the history

Create About Fragment

add a fragment for the about screen.

Show:

  • App name and version
  • Authors
  • link to Source Code
  • link to Issue tracker
  • License GPLv3 for code
  • "Most icons are taken from material.io" under Apache License Version 2.0

Hierarchical Activities

  • Activities shall be configurable to have a parent (and listed as children in the EditView).
  • on delete of an activity with children the options (delete children, attach children to parent and make children root activities) shall be shown and handled
  • decision about Diary entries need to be taken: shall we store implicit activity entries (parent activities) explicitly in the diary? -> this might be relevant in case of changing activities and the activity structure
  • add a parent/child navigation in the "activity manager", maybe with some small > symbol to show that children exist
  • check how filtering/searching shall work...

Add Auto-switching of Activity by Conditions

Add conditions to sort activities and switch the active activity automatically.
For auto switching, conditions shall be be selectable manually as required conditions or "probable" conditions. -->> Remark: do we really need that?

  • predecessor activity active (this alone shall never reach the threshold for auto-switching, for sure)
  • resume last activity (e. g. "Short Break" will very likely just interrupt the previous activity which is restarted afterwards)
  • datetime modulo conditions
    • Time of day
      • modulo behavior
      • real cyclic update, add new Service like RefreshService
    • weekday
    • date
  • recurrence evaluation (never do autoswitching based on this)
  • wifi network
  • bluetooth connection
  • location #49
  • gps speed
  • movement / sensors detecting things like jogging
  • illumination level
  • NFC tags?
  • calendar events

Due to sorting we also have a "Alphabetical"Condition, likelihood for autoswitching should not really be influenced by this, but it might be sufficient to keep the weight small for it.

It seems reasonable to require a certain "distance" of the most likely to the second activity, that only if one is outstanding more likely it is auto selected. This distance will solve the sort-only conditions like alphabetical.

do not forget to adjust the wiki after implementing this.

  • add new notification and a channel to show that an activity changed. Prio shall by HIGH, beep and vibrate as default. Show there the new selected activity and the actions "CHANGE", "DELAY" and "OK"

Cleanup History View

  • use coloring based on activity
  • show Activity name
  • sort to have new entries on top
  • only give start time + duration
  • add grouping in the listview with the groups "Today, Yesterday, Last Week, October 2017, September 2017, etc."

Delete Pictures

After attaching a picture it should be possible to delete images again. (in the main view)
ask whether to delete the file or not

Incomplete update

After changes in and activity (e. g. color) the Activity Manager view is updated, while the recyclerview in main view not.

Attach images to activites

add feature to attach images to the activity diary

  • long press on FAB shall open a menu
  • selecting the photo there shall open the camera
  • 3d option would be to attach an image (or an arbitrary file?) -> wontfix for now, as the use case seem very limited
  • add new table in data model and database
  • store the image paths
  • build a nice view for multiple images, maybe increase the header area on click to make room for the images or some form of slideshow
  • show images in history

maybe even with a setting, that ALL photos taken are automatically linked to the activity?

Add Templates

add support for templates (create database table, populate, suggest from templates on creation of new activities)

Support editing the note

Improve the note editor and open it from the history, to change the note also of old entries.

  • create custom dialog?
  • make texts translatable

Testing

Add travis configuration to run continuous integration tests.

Add Search Functionality

A seach button should open a TextEdit in the action bar and filter (or only reorder?) the list of activities in the RecyclerView of the MainActivity.
Might be

  • filtering by substring from the beginning of the word
  • filtering by arbitrary substring
  • sorting by Levenshtein distance (preferred solution?)

On DiaryActivities:

  • Filter activities in MainActivity
  • A similar button should be in the ActivityManager
    use the List from ActivityHelper and filter/sort in memory

On Diary

  • And a real search in the diary as Search Widget in the ActionBar usinf FTS3 full text search extension of SQLITE
  • in the diary clicking on an activity shall directly filter for this activity
  • For the Diary it should even include the notes to be matching.
    use selection on ContentProvider level to search in SQL FTS3 full

maybe this could help:

Add feature to change the History

Allow inserting activities in the history view.

  • edit notes
  • remove activities
  • exchange activities
  • change start and end times (with or without adjacent diary entries)
  • insert activities
  • allow to add images
  • allow remove images

do so by adding a new activity to edit a diary entry

Is the Manage Activites View useful?

I am just wondering whether the view to edit the activities (the list of all activities) is useful. Maybe would be better to just allow the editing of activity properties directly from the main view where the current activity can be selected.

Any comments?

Cloud support

The app shall support different devices and therefore (optionally) store the data on a server in the cloud. Choose a server model to support that or implement an own server to synchronize with.

The best seems to be to provide a RESTful server in PHP storing data in a MySQL database. Maybe use https://github.com/mevdschee/php-crud-api or the tutorial in https://www.codeofaninja.com/2017/02/create-simple-rest-api-in-php.html

Important: the app shall be fully usable without network and sync on mobile or WLAN (to be configurable) and also completely without cloud connection.

An alternative idea was suggested by Michael to use a standard format like ical where then existing server implementations using caldav could be used for synching to multiple devices etc. Challenge here is to support additional things like

  • list of selectable activities
  • position traces
  • images

Add a widget

Showing the current DiaryActivity and some details (like since when is this activity ongoing?)

  • directly switch to subactivities
  • create a new (sub)activity (which directly set this as new current activity)

README update?

Great (quick) job, this!

Status

It is not yet doing anything useful, but feel free to contribute code, ideas and issues on https://github.com/ramack/ActivityDiary

Stay tuned.

Status update on the way? :)
If F-Droid supports Beta testing, or if you'd consider making it available as Beta on Play store, I'd be happy to test it and supply issues and maybe something more.

Attach Note to this instance

  • Add the feature to attach a note to the current activity
  • Show the note in Diary
  • Allow to attach notes post-mortem (in the Diary)

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.