ntrappe / cse110-w21-group33 Goto Github PK
View Code? Open in Web Editor NEWhttp://ntrappe.github.io/cse110-w21-group33 (JSDOCS) and https://cse110team33.netlify.app (APP)
http://ntrappe.github.io/cse110-w21-group33 (JSDOCS) and https://cse110team33.netlify.app (APP)
May need to change count down function because setInterval has issues.
Implement About page
Needs an icon in the corner that brings up a page that hovers over main page, detailing what the pomodoro technique is, reasons for using it, and specific features of our app. Icon is not yet decided, use a placeholder until decision is made.
Similar to settings(See issue for 'sidebar for settings'), will probably eventually have embedded settings for users to try out directly on the about page. They can optionally be implemented as UI elements without functionality, waiting for settings to be fully implemented in later sprints.
Was thinking of having a toggle switch for certain settings like audio notifications and calm mode. Found a few resources with code for them.
GeeksForGeeks
w3schools
I didn't add it in yet because I don't fully understand all the code and was hesitant to just straight up copy code. So I will continue looking at it and anyone else can if they want.
Implement CI/CD pipeline through GitHub Actions with the following requirements:
enableSettings()
disableSettings()
loadSettings(calm: boolean, volume: number, sound: string, dark: boolean, work: number, shortBreak: number, longBreak: number)
calmSet() -> calm: boolean
volumeSet() -> volume: number
soundSet() -> sound: string
darkSet() -> dark: boolean
workSet() -> work: number
shortBreakSet() -> shortBreak: number
longBreakSet() -> longBreak: number
The functionality should be the look and feel of the sidebar.
This should include all the customization the user has control over + the types of inputs.
Note: the toggle style of button will be its own custom component + issue.
To-Do:
Implement label for modes within the current Pomodoro (Pomodoro, Short Break, Long Break).
Should change upon receiving a signal to change from elsewhere as seen in models in /spec directory.
TODO
Make sure we have these stats up and running:
Also make sure that we have these tested! Then check if it's been PR'd into main
.
Start mocking up designs
Take into account how much textual vs visual info you want. For example: should the # of pomos be the green squares we had on screen or should it be text like # work sessions: 5.
Go through each of the following items and ensure that they do the following according to our coding standards. Use the files from the main
branch.
pomo-finish.js
const
or let
only (no var
)const
and in all caps (e.g. const SEC_IN_MIN = 60
)let helloWorld
NOT let hello_world
)work-settings
NOT workSettings
)function
this.
is only used for vars that must be accessed by the control/externallypomo-info.js
const
or let
only (no var
)const
and in all caps (e.g. const SEC_IN_MIN = 60
)let helloWorld
NOT let hello_world
)work-settings
NOT workSettings
)function
this.
is only used for vars that must be accessed by the control/externallypomo-settings.js
const
or let
only (no var
)const
and in all caps (e.g. const SEC_IN_MIN = 60
)let helloWorld
NOT let hello_world
)work-settings
NOT workSettings
)function
this.
is only used for vars that must be accessed by the control/externallypomo-tab.js
const
or let
only (no var
)const
and in all caps (e.g. const SEC_IN_MIN = 60
)let helloWorld
NOT let hello_world
)work-settings
NOT workSettings
)function
this.
is only used for vars that must be accessed by the control/externallypomo-timer.js
const
or let
only (no var
)const
and in all caps (e.g. const SEC_IN_MIN = 60
)let helloWorld
NOT let hello_world
)work-settings
NOT workSettings
)function
this.
is only used for vars that must be accessed by the control/externallypomo-timer-helpers.js
const
or let
only (no var
)const
and in all caps (e.g. const SEC_IN_MIN = 60
)let helloWorld
NOT let hello_world
)work-settings
NOT workSettings
)function
this.
is only used for vars that must be accessed by the control/externallycontrol.js
const
or let
only (no var
)const
and in all caps (e.g. const SEC_IN_MIN = 60
)let helloWorld
NOT let hello_world
)work-settings
NOT workSettings
)function
this.
is only used for vars that must be accessed by the control/externallystorage.js
const
or let
only (no var
)const
and in all caps (e.g. const SEC_IN_MIN = 60
)let helloWorld
NOT let hello_world
)work-settings
NOT workSettings
)function
this.
is only used for vars that must be accessed by the control/externallypomo-dark.css
pomo-light.css
JS Docs
pomo-timer.js
Getting initial packages and starter files up: Jest & Cypress.
In settings, button toggle for normal vs calm. In calm mode just minutes displayed.
We have to make an onboarding doc that explains how to work on this repo, how to see our app, and all the necessary info. It should make onboarding as clear and easy to follow as possible. This is EXTREMELY IMPORTANT to our grade.
setTimer(min: number, mode: string)
setProgress(progress: number)
setDark(dark: boolean)
setCalm(calm: boolean)
timerStart()
timerFinish()
timerReset()
tick() -> timeRemaining: number
Tried to figure out how to call a function that lives in one of the component file (i.e. under source/
) in a Jest file. Doesn't work. We seem to either need to check Promises or use mock but neither worked for me.
I was able to get it working in Cypress by adding export
to functions in the components and then using import
to pull in those functions and cy.wrap
and cy.invoke
to call and check them. All of those examples are in the storage-jest
branch & updated on the Wiki.
onLoad() // Whatever method is called when page loads
Timer.addEventListener("timerStart")
Timer.addEventListener("timerFinish")
Timer.addEventListener("timerReset")
Modal.addEventListener("modalRequest")
enableInfo()
disableInfo()
Disable customization during work sessions.
pomo-info.js
pomo-info.js
pomo-finish.js
pomo-finish.js
pomo-settings.js
Dark mode can be turned on or off and it will make all the styling with darker colors. Version A is based off of Github's dark mode.
ADR: Important to add Dark Mode as many of our users may be working on assignments late at night and this is easier on their eyes. It provides less contrast so it's less stressful on the retina and less distracting. They are likely also CS students or familiar with tech and most devices/apps offer this mode so they're accustomed and expecting it.
getDayCount(count: number)
setDayCount(count: number)
getCalm(calm: boolean)
setCalm() -> calm: boolean
getVolume(volume: number)
setVolume() -> volume: number
getSound(sound: string)
setSound() -> sound: string
getDark(dark: boolean)
setDark() -> dark: boolean
getWork(work: number)
setWork() -> work: number
getShortBreak(shortBreak: number)
setShortBreak() -> shortBreak: number
getLongBreak(longBreak: number)
setLongBreak() -> longBreak: number
Have settings, stats & info all have the same button style as timer's 'start'/'reset' but with text & an icon. I'm having issues just getting a button to have text & an icon (like from https://fontawesome.com/icons/html5). I've tried importing the font awesome link in css, appending it as a link to the custom component, etc. I've tried creating a button in JS then using button.innerHTML = '<i class="fab fa-html5"></i> TEXT'
but nothing is working. Try to create a button that uses an icon & text like the image below. I was initially trying to add this bar char to a 'Stats' button. Here's a post I used https://stackoverflow.com/questions/56202658/how-to-put-button-label-on-left-and-an-icon-on-the-right/56202701:
ADR #1: when the user enters invalid input for any of the settings, that input should have its border color changed to red temporarily for like 1s to notify them that it wasn't allowed (input should also be set to default)
ADR #2: when a user resizes a window, how should we determine the minx/max size
ADR #3: when user gives an invalid input, explain why we're using min/max defaults vs a mid-default
ADR #4: [this is actually a modification to a prior ADR] resetting local storage now at 12am (midnight) vs 4am because .... (@richard if you don't know why)
ADR #5: which keystrokes to use for accessibility
ADR #6: Update Feature Disabling
Each of the components, pomo-info
, pomo-finish
, pomo-settings
, & pomo-timer
should have a function setDark(dark: boolean)
that determines whether or not to use a dark vs light mode. Each of the elements of the page should be given an attribute, data-mode
that will be set either to dark-mode
if setDark(true)
or set to light-mode
if setDark(false)
. (Powell suggested we use data attribute for this vs class). I will handle the CSS side of this but you should add this attribute to all your elements.
======================[REDACTED]======================
Example :
pomo-timer
has 4 main objects that should change color: a timer text, mode label, progress squares, and button. Here's an ex of setting 1 of those objects.
this.setDark = (dark) => {
if (dark)
// set dark mode
timerText.setAttribute('data-mode', 'dark-mode');
else {
// set light mode
timerText.setAttribute('data-mode', 'light-mode');
}
}
======================[REDACTED]======================
pomo-info.js
setDark
function for control to callpomo-finish.js
setDark
function for control to callpomo-settings.js
setDark
function for control to callpomo-timer.js
setDark
function for control to callcontrol.js
index.css
somehowImplement colors for each mode.
Pomodoro, short break, and long break should all have unique colors that clearly indicate they are different modes. Colors have not been finalized, but using placeholder colors (preferably warmer, less striking colors) will do until they are finalized, as changing over to the final colors should be simple
The tab of the browser should display both an icon and text.
Implement finish button to end session.
Finish button should stop the timer if its running and bring up a page of statistics containing info such as completed pomodoros. For the time being, displaying an empty page or simple page with number of pomos completed and then allowing the user to return can be enough, as statistics page isn't fully defined yet
Create a file to act as an interface for updating the text of the page tab.
To be prepared for the meeting this Thursday and the brainstorm activity, fill out Exercise 1. It goes through the Pomodoro Technique and asks that you add your thoughts on existing apps/our app.
Implement sidebar containing settings
Mainly implement smooth slide-out transition from the left side of the site. Decision to use hamburger or gear icon still pending.
Settings to fully implement TBD, but sound notifications, switching to calm mode, and choosing sounds are good choices to optionally be added in as only UI elements without true functionality, as full functionality will be most likely be implemented in later sprints.
Part of refinement stage:
(1 Story Point)
Implement timer and start/reset buttons
Timer will be set to 25 minutes initially, then change to appropriate break upon reaching 0. Shows minutes and seconds remaining.
Start button: Starts the timer and switches to a reset button, not reliant on mode.
Reset button: Resets the timer back to the starting time for the current mode, then reverts back to the start button.
Need to format the page with a grid/flex box to position timer in relation to other elements. Also have dynamic resizing to a degree.
Sounds will alert the user of if the timer just ended, if they need to take an action, potentially the last 5s on timer tick or make some sound.
The following available on the main-rtest
branch:
test-pomo-timer.js
: test to find timer object & elementstest-pomo-settings.js
: test to find settings object & elementstest-pomo-info.js
: test to find info object & elementstest-pomo-finish.js
: test to find finish object & elementsmode
, button
, timer text
elements to timerThe info page should include content on the pomodoro technique & how to use our app. Please collaborate on the content/script on this Google doc prior to adding code.
pomo-info
& PR'dsetCalm(calm: boolean)
setTab(sec: number, mode: string)
defaultTab()
Part of the Finish button, should pull up stats from that session. This will be about how to save info from that session. (We might also want to save customization settings).
Modes are Pomodoro, short break, long break. Central control should dictate the mode and set the time on the clock. It may also modify the browser tab to match, CSS styling, etc.
Powell suggests looking at CSS extra stuff.
NOTE: renamed from 'Finish'
showModal(workCount: number: shortBreakCount: number, longBreakCount: number, interruptedCount: number, totalMinutesWorked: number)
modalRequest()
A declarative, efficient, and flexible JavaScript library for building user interfaces.
๐ Vue.js is a progressive, incrementally-adoptable JavaScript framework for building UI on the web.
TypeScript is a superset of JavaScript that compiles to clean JavaScript output.
An Open Source Machine Learning Framework for Everyone
The Web framework for perfectionists with deadlines.
A PHP framework for web artisans
Bring data to life with SVG, Canvas and HTML. ๐๐๐
JavaScript (JS) is a lightweight interpreted programming language with first-class functions.
Some thing interesting about web. New door for the world.
A server is a program made to process requests and deliver data to clients.
Machine learning is a way of modeling and interpreting data that allows a piece of software to respond intelligently.
Some thing interesting about visualization, use data art
Some thing interesting about game, make everyone happy.
We are working to build community through open source technology. NB: members must have two-factor auth.
Open source projects and samples from Microsoft.
Google โค๏ธ Open Source for everyone.
Alibaba Open Source for everyone
Data-Driven Documents codes.
China tencent open source team.