Giter Club home page Giter Club logo

gymworkoutmanager's Introduction

GymWorkoutManager V1.0

Build status Platform Xcode 10.2 Swift 5.0 GitHub top language codebeat badge GitHub issues GitHub pull requests GitHub

Introduction

Gym Workout Manager is a personal exercise recorder application coded by Swift language. User could use it as a helper/mentor during the workout, and record all the workout information to analysis the effectiveness of their workout.

Functionality
  • Timer

    • HIIT Workout Timer.
    • Weight Training Timer.
  • Record

    • Display user information.
    • Display execrise records.
  • Personal Information

    • BMI
    • BMR
    • Self info upload.
  • Analysis

    • Graphs of the period execrise analysis.
    • Give tips/advice about what should be improved for smash/closer to your goal.
  • Help

    • Give brief explaination about how the app works.
    • what's those stand for and whats those name means such as BMR & BMI
  • Self Challenge

    • Note: this function may develop on future version, since we cant solve the server issue atm.
    • ¯\_(ツ)_/¯
Frame Tree

![Alt text](http://g.gravizo.com/g? digraph G { aize ="4,4"; main [shape=box]; Timer [shape=box]; Personal_Information [shape=box]; Cardio [shape=box]; Analysis [shape=box]; Record [shape=box]; main -> Timer; main -> Personal_Information [style=bold]; main -> Record; main -> Analysis; Analysis -> Graphic_data_display [style=dotted]; Analysis -> Table_data_display [style=dotted]; main -> Cardio; Cardio -> Running [style=dotted]; Personal_Information -> User_Information [style=dotted]; Personal_Information -> User_BMI_BMR_Record [style=dotted]; Personal_Information -> Calender_Plan_record [style=dotted]; Calender_Plan_record -> RealmDB[style=dotted,label="WriteIn"]; Calender_Plan_record -> Server_Notification[style=dotted]; Server_Notification -> Calender_Plan_record; Timer -> HitTimer[style=dotted]; SetTimer -> Timer[style=dotted]; node [shape=box,style=filled,color=".7 .3 1.0"]; edge [color=red]; HitTimer -> SetTimer[style=dotted]; HitTimer -> Claim[style=dotted]; Claim -> RealmDB[style=dotted,label="WriteIn"]; User_Information -> CC [style=dotted]; User_BMI_BMR_Record -> CC[style=dotted]; Running -> MapTracking[style=dotted]; MapTracking -> RealmDB[style=dotted,label="WriteIn"]; CC[label = "Collection & Calculation"]; RealmDB [shape=box,style=filled,color= green]; Server_Notification [shape=box,style=filled,color= green]; CC -> RealmDB [style=dotted,label="WriteIn"]; edge [color=green]; RealmDB -> Record[label="ReadOut"]; RealmDB -> Analysis[label="ReadOut"]; } )

  • Note:
    • box -> Controller
    • circle -> View
    • box(colored) -> Model

Framework

  • See Podfile

ChangeLog

  • Please Checkout here

Acknowledgements

Contributor Github Version
GL gl-Lei iOS
Yunchen Zhang zyunchen iOS
XiaoYao xyjwsj iOS

gymworkoutmanager's People

Contributors

gl-lei avatar iceman201 avatar jiting71 avatar lgcagithub avatar zyunchen avatar

Stargazers

 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  avatar  avatar

gymworkoutmanager's Issues

GWM-003-Graphic works

  • App icon
    • 3 type resolution for ipad iphone and iwatch
  • Timer icon
    • currently only create for ipad and iphone

profileViewController got a bug

image
After push return it doesnt hide keyboard

image
you cant selected gender now. It should be button background color changed(GWMPurple) when user selected.

Pedometer graph

Graph github address

Get date

let x = NSDate(dateString: "2015-05-30")
image

  • CoreMotion是需要NSDate来调出数据的
  • 这些数据都不需要写入Realm(暂时)
  • 上面那个显示步数是总步数
  • 记步的方程我已经写出来了
        if CMPedometer.isStepCountingAvailable() {
            //   let startDate = NSDate(timeIntervalSinceNow: -86400 * 7)
            let startDate = NSDate(dateString: startDay)
            let endDate = NSDate(dateString: endDay)
            self.pedoMeter.queryPedometerDataFromDate(startDate, toDate: endDate, withHandler: { (CMPData: CMPedometerData?, error:NSError?) in
                dispatch_async(dispatch_get_main_queue(), { () -> Void in
                    if let data = CMPData {
                       这里的 data.numberOfSteps 就是步数
                    }
                })
            })
        }

Graph for line gragh

Example:

            let view = [8, 12, 20, -10, 6, 20, -11, 9, 12, 16, -10, 6, 20, -12].lineGraph().view(cell.graphView.bounds).lineGraphConfiguration({ LineGraphViewConfig(lineColor: UIColor(hex: "#ff6699"), contentInsets: UIEdgeInsets(top: 32.0, left: 32.0, bottom: 32.0, right: 32.0)) })
            view.autoresizingMask = [.FlexibleWidth, .FlexibleHeight]
            cell.graphView.addSubview(view)

image

section0 是piechart
section1 是pedometer linear graph

GWM-012-[GO] Button isnt work properly

Go button should be click once

if repeattime == "00:00:00" {
alart message setup time
} 
else run

2nd time tap timer should be stopped
3rd time tap should be "reset" then reset time and reset button name to GO

GWM-005-Fix issue of unit test

Report from Bitrise

|                               bitrise summary                                |
+----+--------------------------------------------------------------+----------+
|    | title                                                        | time (s) |
+----+--------------------------------------------------------------+----------+
| ✅  | [email protected]                                   | 7.2 sec  |
+----+--------------------------------------------------------------+----------+
| ✅  | Activate App SSH key                                         | 1.4 sec  |
+----+--------------------------------------------------------------+----------+
| ✅  | [email protected]                                              | 8.0 sec  |
+----+--------------------------------------------------------------+----------+
| ✅  | [email protected]                                      | 28 sec   |
+----+--------------------------------------------------------------+----------+
| ✅  | [email protected]                      | 5.2 sec  |
+----+--------------------------------------------------------------+----------+
| 🚫  | Xcode: Unit Test (exit code: 1)                              | 59 sec   |
+----+--------------------------------------------------------------+----------+
| Issue tracker: https://github.com/bitrise-io/steps-xcode-test/issues         |
| Source: https://github.com/bitrise-io/steps-xcode-test                       |
+----+--------------------------------------------------------------+----------+
| ➡  | Xcode: Create Archive                                        | 2.6 sec  |
+----+--------------------------------------------------------------+----------+
| ✅  | [email protected]                                   | 8.3 sec  |
+----+--------------------------------------------------------------+----------+
| Total runtime: 120 sec                                                       |
+------------------------------------------------------------------------------+
FATA[17:21:04] Error:  [BITRISE_CLI] - Workflow FINISHED but a couple of steps failed - Ouch 
Command failed: exit status 1
2016/01/17 17:21:04 Failed to run, error: exit status 1```

Total timer redesign

we need re-design the function of total timer
Every time workout at gym, total timer record whole reps/sets time. after done for that day, the amount of total workout time should write into record page.

GWM-008-Correct file name

FirstViewController ----> "TimerViewController"
SecondViewController ----> "RecordViewController"

GWM-010-Create countdown timer function

Create countdown timer function by using NSTimer???

  • Accuracy up to milliseconds
  • Timer for two part
    • countdown timer for repeatTimer
    • sum of time for total totalWorkoutTimer

GWM-016-Make each round auto stop

  • 用户在做完一组运动时候,应该有休息时间,这段时间应该是不计算在内的,所以应该是一圈完成之后,自动停止,让用户去再开始做第二圈。

GWM-013-auto stop time

after countdown finished rounds it's should automatically stop and STOP button.setTitle to GO!

GWM-006-Fix layout of storyboard

Currently layout is kind of mass, we target the app version is for iPad, iPhone maybe iWatch.
so the layout should be universal.

GWM-009-Pass data to FirstViewController(Timer)

details comments on TODO marks
Pass the time which setup on TimeSetupViewController to receivedTime of FirstViewController

the formate of time return is ['min','sec','round']

after pass through data to FirstViewController it's should display on the view
image

GWM-002-Build up app interface

Two tapbar view controllers

  • Repeat Timer
    • one Repeat Timer, trainer could get alart when one around workout finished
    • one Total Timer, so trainer could see how long work in total
  • v2.0

"GO" button error

image
In the TimerViewController, if user click Go straightway without setup anything, Timer still play success sounds.
Success sounds only play when user finished "rounds"

Expect: an AlertView could alert message to user make her setup time.

Design Analysis View Controller

![Alt text](http://g.gravizo.com/g?
digraph G {
aize ="4,4";
main [shape=box]; Timer [shape=box]; Personal_Information [shape=box]; Cardio [shape=box]; Analysis [shape=box]; Record [shape=box];
main -> Timer;
main -> Personal_Information [style=bold];
main -> Record;
main -> Analysis;
Analysis -> Graphic_data_display [style=dotted];
Analysis -> Table_data_display [style=dotted];
main -> Cardio;
Cardio -> Self_Charllege [style=dotted,label="??"];
Cardio -> Running [style=dotted];
Personal_Information -> User_Information [style=dotted];
Personal_Information -> User_BMI_BMR_Record [style=dotted];
Timer -> HiitTimer[style=dotted];
SetTimer -> Timer[style=dotted];
node [shape=box,style=filled,color=".7 .3 1.0"];
edge [color=red];
HiitTimer -> SetTimer[style=dotted];
HiitTimer -> Claim[style=dotted];
Claim -> RealmDB[style=dotted,label="WriteIn"];
User_Information -> CC [style=dotted];
User_BMI_BMR_Record -> CC[style=dotted];
Running -> MapTracking[style=dotted];
MapTracking -> RealmDB[style=dotted,label="WriteIn"];
CC[label = "Collection & Calculation"];
RealmDB [shape=box,style=filled,color= green];
CC -> RealmDB [style=dotted,label="WriteIn"];
edge [color=green];
RealmDB -> Record[label="ReadOut"];
RealmDB -> Analysis[label="ReadOut"];
})

Base on the structure, the analysis should have a graphic data display, and Table data display.
For example something like this.
image

Data source is come from local DB - > Realm
Graphic Framework -> pod 'Charts' which is already add into our Podfile

setup "Yashin"

we need to design a calculation algorithm for people that could see
how many cal burn out.
is your training gains weight or lossing weight
how many fat it could burn

and all of those displayed by Yashin library

HomeButton animation

Home button need to add animation eg. Fade out? something like that.
1 second?

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.