cs130-w21 / dots-ios Goto Github PK
View Code? Open in Web Editor NEWTeam 8 - Available on the App Store!
Home Page: https://apple.co/2O5rYxs
License: Apache License 2.0
Team 8 - Available on the App Store!
Home Page: https://apple.co/2O5rYxs
License: Apache License 2.0
Implement mutator methods inside Models/BillObject.swift
As a user, I would like the app to have a button that will show me the total of who owes who how much, so I can see how each person in the group should pay others back.
This function is the core feature of the app, with a single click, the app collects all the bill and bill entry information input from the user, then calculate the amount of money that a person should pay another. The result should be displayed in a clean and simple view.
Implement accessor methods inside Models/EntryObject.swift
As a USER, I would like the app to have smooth transition and UI size/position accommodation so that I can have a better user experience.
Deliver the best UI/UX we could ever make.
As a user, I would like a list view of all bills so that I can have a general picture of the bills I have.
Provide additional details and context.
As a User, I would like to use gesture control so that I can change views smoothly.
Create gesture recognition along with smooth hero animation.
BillDetailView
, then dismiss viewBillDetailView
pops upDisplay the bill title, bill date, bill total, and participants of a bill.
As a developer, I wish to implement a sample UI activity workflow so that I can make sure the app works as expected.
Create UI Test Classes and automate UI Testing
Implement accessors in Models/DotsData
Implement all accessors marked in Models/BillObject.swift
except for settleBill()
Add a field for the user to input the bill date. Save the bill date.
Select an icon upon user click. De-select an icon upon user click if the icon has already been selected.
As a user, I would like to have the app display the most recently added bill at a conspicuous place, so that I can easily confirm my addition of the bill without having to look at other older bills.
Create a bill view that displays Bill Title, Bill Amount, Bill Date, and also indicates the Initiator and Participants using corresponding colors. The view should also offers an option to edit and delete.
To select a creditor, you have to hold on to it. How about drag and drop so it's more intuitive for the user?
As a user, I would like to add group members before I add any receipts without the hassle of having to write down their names one by one, so that I can save my time and privacy.
Provide additional details and context.
Description and User Benefit:
The group member initialization is a feature that allows the user to initialize and keep track of group members. Each group member should have a corresponding icon. These group members correspond the group members on the current trip.
User Actions:
Description and User Benefit:
The bill collections allows users to navigate between bills to check for details, including bill title, bill date, bill total, and members who participated in the bill. This will allow the user to see clearly their purchase history for the current trip. We also want users to be able to see who owe who how much money based on the accumulated bills. This allows the user to be clear about how much each member should pay back another member. In addition, we want users to be able to clear all the bills.
User Actions:
As a user, I would like to have an easy way to deselect a color icon for either an initiator or a participant, so that I can correct myself in case I miss-clicked an icon.
Provide additional details and context.
As a user, I would like to see the total of the bill clearly, so that I can know how much was spent and confirm that the item entries were added correctly.
This total should be obtained by adding all of the item entries in the bill.
As a user, I would like to be able to log in using my Face ID, so that I can both login quickly and have my data protected.
Use faceid / touchid to protect user's data
Create an algorithm to calculate everyone's debt given the BillObjects.
Add a field for the user to add a bill title. Save the bill title.
As a User, I would like to look at the documentation so that I can learn about the code.
Generate a documentation for this project. Create comment blocks in the documentation format for jazzy
to generate docs automatically.
As a user, I would like to see a menu with lots of buttons so that I can do more things to control the app.
Provide a accessible menu that contains additional features like sort, group, except for the big ones like calculate and add bills.
Description and User Benefit:
Additional features are provided to users to filter their bills and perform some action to parts or all of their bills. These features include: group by initiator, mark all bills as paid, hide/unhide paid bills, clear all paid bills, and enable face ID. The first four features give user more flexibility with how to display and handle their bills. The last feature gives user more security in accessing the application.
As a user, I would like to choose to see the unpaid bills only, so that I do not need to waste my time looking at bills already paid off.
Sometimes, the user might wish to unsee some paid bills, we need to offer them an option to hide the bills.
Use a function that returns a new list of bills, all of which are grouped by initiators in ascending order of the initiators' indices. For bills corresponding to an initiator, they are ordered by date.
As a user, I would like the app can deliver the entries of a bill in a nice layout with gesture control so that I am able to view all entries smoothly and also being able to remove entries at the same time.
The original List
from SwiftUI does not support customized view based on the current UI design, so we need to create a customized entry list view, with proper gesture control, like swipe to delete.
Bill.entries
Description and User Benefit:
The bills management is a feature that allows users to add and delete bills. It allows the user to add details to a bill and assign corresponding group members to each new bill and each item entry in the bill.
User Actions:
As a user, I would like to add item entries to the bill and be able to select the participants and add the price of that item, so that I can record the details of the bill.
This is a user interface that allows the user to enter specific items in a bill and assign corresponding participants. The user is expected to be able to type item name, dollar amount, as well as being able to select corresponding participants from the existing participants of the bill. Additionally, the user should be able to save everything he/she typed or selected after clicking a button; similarly, the user should also be able to exit out of this view by clicking another button without saving any changes.
As a user, I would like the app to have a button that can remove all bill entries from the home view.
Give user the ability to remove all bills or all paid bills.
duplicated with #74
As a user, I would like to be able to mark all bills as paid at once, so that there is no need for me to do that one by one for each bill.
Provide additional details and context.
As a user, I would like the app is distributed on the App Store so that I can easily install the app.
Distribute the app to the App Store.
When adding a member to a group, a sort by ascending order must be executed at the same time. This does not affect the usage but still a problem, need to be fixed before finalize.
As a developer, I would like to automate test and distribute so that I can save five more minutes for homework.
Build a CI/CD Pipeline using Travis CI and Fastlane
Provide a clear visual effect to distinguish the initiator and participants
We store all our brainstorm ideas under this "Proposals" issue.
Implement mutator methods inside Models/EntryObject.swift
Implement mutators in Models/DotsData
As a user, I would like the app supports adaptive layout so that I could use it both on my iPhone and iPad.
Change hard coded frame values to adaptive values so that the app looks nice both on iPhone and iPad with one set of code.
As a user, I would like the app to be able to group all the bills by the bill initiators, so that I can have a better idea of what bills a certain initiator has paid for.
There should be a button called "group by initiator" that toggles as the user clicks on it. When the button is on, all the bills are grouped by initiators and are ordered by the initiator indices. For the bills corresponding to a initiator, they are ordered by time/date.
As a user, I would like to remove all the bills that are already paid off, so that I can focus on the ones not yet paid/finished.
Implement a button where user can remove all paid bills with one click
As a user, I would like the views could have a nice transition so that I can have better experience.
Provide animations that are responsive to micro interaction. Fix .opacity
transition issue caused by matchedGeometryEffect
.
As a User, I would like to add and delete bills so that I can manage all bills for the split calculation.
There needs to be a way for users to add, rearrange, delete the bill objects on the home page. When adding a bill, some view should appear that prompts the user to enter bill information.
As a user, I would like to have the App indicate the number of group members after I added all of them, so that I can confirm my selections.
Provide additional details and context.
As a product manager, I would like the app is well tested so that the main functionality can work as expected before release.
Create test cases for the unit test.
As a user, I would like to label dots so that I can better manage group member with corresponding colored dots.
With large amount of people within the group, it would be handy if the app could allow users to label the dots and view the names whenever needed.
As a user, I would like to have the App provide information to let me choose designated bill initiators and participants easily, so that I can assign bills to potentially different portions of people in my group.
Upon opening a new bill, the user should be able to choose an initiator, which is the person that paid for the bill. The users should also be able to choose the participants, which are all the people that would be responsible for the bill. The participants and initiator of the bill should be visually clear and distinguishable for the user.
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.