Code Monkey home page Code Monkey logo

mice-tro's People

Contributors

aredhouse avatar pathock avatar rbosseiii avatar

Stargazers

 avatar  avatar

Watchers

 avatar

mice-tro's Issues

Pass Data to Controller/Models From Pages

Allow data to be retrieved from pages and used in model/controllers.

*Entered account information (on Create profile and Login Pages)
*Save Entered New Composition Data (on Create Composition Page)
*Display all saved compositions for user (profile page)

Page Creation: Home Page

Write JSP, Servlet, and HTML/CSS for the Home Page. The home page will be the first page brought up when user navigates to mice-tr0.com. This page will display the mice-tr0 logo and basic information about the website. This page will eventually be used to navigate to log-in page.

Implement Composition Class

Composition should include fields:
title: String
author: String
section: array
mode:string
isEditable: bool

Should include methods:
createComposition():composition
deleteComposition():void
changeTitle():string

Page Creation: Log-in Page

Write JSP, Servlet, and HTML/CSS for the Log-in Page. This page will:

  1. Allow the user to enter their account information (username and password)
  2. Submit account information for review by the system
  3. Have option to create an account

Two pages can be navigated to from the log-in page: profile page (upon correct entry of account info) or create account page(If create account selected).

Prevent user from adding a note that overlaps with previous notes

A note at a certain pitch should not be added unless all previous notes of that pitch have "finished".

Ex: an A# half note should not be followed by an A# quarter note one beat after the start of the half note, but can be followed by notes of any other pitch.

Page Creation: Create Composition Page

Write JSP, Servlet, and HTML/CSS for the Create Composition Page. This page will:

  1. Prompt user to enter Title
  2. Prompt user to enter Time signature
  3. Prompt user to enter Key signature
  4. Prompt user to enter tempo
  5. Submit information to system
  6. Cancel

Navigation:
*To profile page (if cancel is selected)
*To composition page (if information is submitted)

Separate HTML and CSS

Currently, CSS styles are in the HTML files. Make one CSS style file and delete CSS from HTML in JSPs.

Restructure project as a Gradle project

While implementing a directory structure (Issue #8), I found that this work can be facilitated with the use of a build tool such as Maven or Gradle.

Todo: redo our project as a Gradle project.

properly handle login sessions for users

  • User profile page must be unique and display info related to their account

  • Consider how HTTP session / login session will be handled.

  • How long does it take for a login to time out?

  • Will compositions be accessible via URL? In this case,the session info cannot be stored in the URL. Cookies are a popular option for this.

Change package structure

In Java, variables with scope "protected" can be accessed by subclasses or by classes within the same package.
Instead of putting models and controllers in separate packages, create a package for each "object" (ex: composition, measure etc) so that controllers have access to the variables within their models, but the variables in the models (such as an ArrayList of notes within a measure) are not accessible to other classes.

Page Creation: Create Account Page

Write JSP, Servlet, and HTML/CSS for the Create Account Page. This page will:

  1. Allow user to input desired username
  2. Allow user to input desired password
  3. Submit desired account information for review by system

After successful submission and creation of account, page will navigate to profile page.

Implement Section Class

Section Class should contain fields:
keySignature: String
timeSignature: enum
tempo: int
sec_ID: String
numberMeasures(): int
clef: enum
beatUnit:int
beatsPerMeas:int

Methods include:
createSection():Section
deleteSection():void

Implement Measure Class

Measure should have fields:
maxNumBeats: int
notes:array [][]
next: measure

Should have methods:
addNote(note,notes[][]): void
deleteNote(note,notes[][]): void
isValidNote(note): bool
populateRest(notes[][]):void
tieNoteLength(note):void
updateNotePitch(note[][]): string

Page Creation: Profile Page

Write JSP, Servlet, and HTML/CSS for the Profile Page. This page will:

  1. Display account username
  2. Display compositions owned by account
  3. Log-out function
  4. Create new composition

Navigation can occur to three pages: The composition page (if a composition is selected), the home page (if log out is selected), or create composition page (if create new composition is selected).

Page Creation: Composition Page

Write JSP, Servlet, and HTML/CSS for the Composition Page. This page will:

  1. Display the composition information (Title, composer, tempo)
  2. Display toolbar for composition editing
  3. Display composition (staff)
  4. Save Composition
  5. Exit composition
  6. Log-out

Navigation can occur to:
*Profile page (if exit composition selected or if Save and Exit is selected)
*Home page (if log-out is selected)

Fix Servlets

Servlets are creating new models and performing logic that should be done in the controllers...
Login Servlet is one example.

Restructure Models/Controllers

We need to possibly edit our UML diagram.
Must define the structure / flow of information between models, controllers, and (potentially) object classes.

Implement Note Class

Note Class should contain fields:
noteLength: int
tied: bool
next: note
previous: note
pitch:string
Should contain methods:
lengthInMillis(note,tempo): float
ifTied(note):bool

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.