Giter VIP home page Giter VIP logo

mymicds-v2-angular's Introduction

MyMICDS-v2-Angular

Angular Front end for MyMICDS.net

Running

Pre-Run

Generate a copy of _config.example.scss and within the same folder, create a _config.scss of the same contents

/src/styles/_confi.example.scss --->>>  /src/styles/_config.scss

Run

Type in the following to install dependencies and run for development:

$ npm install -D
$ ng serve

More Info

Main repository is located over here

mymicds-v2-angular's People

Contributors

aldonovan avatar dependabot[bot] avatar grantbaum avatar michaelgira23 avatar nickbclifford avatar rpsforza avatar sbaumohl avatar seabassthefish avatar stlgolfer avatar tanyew3st avatar

Stargazers

 avatar  avatar  avatar  avatar  avatar  avatar

Watchers

 avatar  avatar  avatar  avatar  avatar

Forkers

blmsl

mymicds-v2-angular's Issues

Get Events Error alert for First-Time Users without Canvas URL entered

I noticed when I hadn't entered my Canvas URL that I kept getting the "Get Canvas Events Error" alert on the Planner. While it could be possible to address this by adding more detail to the alert, this is just a bug that needs to be fixed so that there aren't any alerts for a person who hasn't entered the Canvas URL.

'Edit' and 'Delete' Button are not disabled for Canvas events in planner

Like the title says, the 'Edit' and 'Delete' buttons are shown on both the planner sidebar and in the view event modal. The buttons should be disabled in the sidebar and should not show on the modal. This is probably because of that refactoring of the Canvas feeds we did a while back for feed caching.

Use PDF.js for cleaner Bulletin display

Right now we just use an <object> element to display the Daily Bulletin, but it might behoove us to use PDF.js for a better display. With this, we don't have to worry about the browser's implementation of PDF viewing which creates a uniform cross-browser experience. Additionally, we can detect how many pages and their dimension in order to set the correct height/width (avoid scaling issues on mobile) and the PDF is rendered in a Canvas, which means we have full styling control and can get rid of the ugly border from the PDF viewer.

Add custom browser titles

Right know we're sorta just taking the URL, splitting it up by the / character, capitalizing it, the prefixing it with "MyMICDS - ". While this is okay for the majority of routes, it can produce weird titles for URLs with multiple slashes. (Ex. "MyMICDS - Confirm/mgira/123xyz")

The most practical solution is to probably use the custom data property available in the Angular router config. The example linked above simply demonstrates its usage but does not actually work because I was trying some stuff out and forgot to delete when I committed.

Lunch module

Module for quickly viewing the lunch on the homepage.

Fix wrapping of text in events in planner sidebar

When you have a planner description that is really long, the text won't wrap immediately and adds a vertical scroll to the sidebar. We should fix this so the text simply wraps so there's never a vertical scroll.

Optimize homepage grid for mobile

On small screens, there should only be two columns, and on even smaller screens there should only be one column. Angular2gridster does have a responsive option, but since it takes a mobile-first approach, all items are internally stored in terms of the smallest dimensions. This is a problem when the back-end tries to populate the grid with a four-column layout. We may have to just manually listen for window resize and change columns accordingly.

Have background images update upon login/logout

There should be some code located in the app.component.ts and settings.component.ts that update the background. We should call these functions when user logs in and out. Would be nice if we could create an updateBackground() function in the background service.

Fix planner button layout issue on big screens

On bigger screens, the "Coming Up" button and the "Refresh Portal/Create Event" button group are on the same row. Normally, they are supposed to be on separate lines.

This is what it looks like on big screens:

Image Example

Compared to what it's supposed to look like on smaller screens:

This is the ideal planner button. You may not like it, but this is its peak performance.

Add button for manually refreshing Canvas/Portal feeds

In the planner (and maybe settings), we should have a button for the user to manually refresh their Canvas cache.

If there's room in the schedule component (or maybe settings), we should have a button for the user to manually refresh their Portal cache.

Percentage Label has seizure on circular progress bar hover

Video Demonstration

Since the "progress bar" is actually a chart.js pie chart, chart.js isn't necessarily built for our use case. When we update the class percentages every second, it has to redraw the canvas and resets the position of the hover labels. Since the label's position is animated, it keeps sliding from the origin (top-left corner) to it's actual position.

It's possible this could be fixed be removing the transition timing function/duration for the label position.

Add setup page(s) that walk users through Portal/Canvas URL config + class config + more

According to our survey, many people don't utilize the Canvas/Portal URL and class aliases simply because they are hidden. I agree that making these features more accessible would lead to more adoption. Have some sort of slideshow/walkthrough (similar to #20) where the user can input their info.

Redirect the user to here upon registration and also have a notification on the home page if the user skipped this step and hasn't completed it yet.

Type-ahead for teacher names

This step in the creation of classes will reduce the variability of teacher names, and therefore makes it much easier to aggregate users under the same class.

Enhance Registration Page

(Accidentally put in the back-end repository MyMICDS/MyMICDS-v2#38)

The registration page could be a bit more engaging and streamline the entire setup from registration to integrating Portal/Canvas feeds and adding aliases. Right now, the URL inputs are a bit hidden in the settings page, so it could be cool if we could walk the user through setting everything up.

I think it would be great to have something like Slack does. (Here's an example. I'm talking about the steps from confirming email to inviting users) Basically, have a full-page slideshow type thing. Have form inputs in the middle of the page with text to walk you though inserting data. Obviously, the user should be able to skip any of these additional steps besides basic account registration if they don't currently have time. We could give a little alert on the home page with a link to said walk-through page if the user hasn't already inserted their URLs or aliases yet.

Display All-Day Events for the Schedule

When you make an API request for a user's schedule, you get the normal day rotation (day), regular class schedule (classes) and all-day events occurring that day (allDay). It would be nice if we can find somewhere to display these all-day events, which can include things like "Spring Break - No Classes (US)" which would be useful.

Dynamically show lunch items in simplified lunch module

Right now, lunch categories are shown based on hardcoded css-element-queries CSS rules. This should be migrated to a method similar to the simplified-schedule component, where it detects each element's width/height, and shows the element if there's enough room. This would allow us to adapt to different screen sizes and lunch menus showing more categories if there's enough room and showing less if there's an abnormally long menu.

add automatic deployment

I have created a script to be used on travis to automatically deploy github repos. Although it probably needs further testing and configurations

Cap Day Progress Percentage at 3:15

Sometimes, when there's stuff going on after school, the percentage of the day will be inaccurate because the current algorithm determines the last event on the schedule as the end of school. This should be capped at a maximum of 3:15pm, but should be allowed to be the time of the last class if it's earlier than 3:15, implying it's a half day or something.

Clicking on a day to create event should automatically select that day in the form

When clicking on the planner calendar and clicking the "Add Event" button, the current date is selected by default no matter what. This is a little counter-intuitive, and it should probably have the day currently selected by default (Ex. Clicking on January 1st and "Add Event" should have form input date default to January 1st).

Editing Event is giving error

When clicking the "Edit" button of a custom event, Angular crashes giving the error

TypeError: n.getTime is not a function

Simplify Register page by making one field input per page

Similar to how Slack does it, simplify the register page so it's only one field per page. Upon completion, redirect to the next field. This ensures users don't miss any fields, we don't have to cram everything in one page, and allows for a smoother ux.

Clear planner form after event creation

When you create a custom event on the planner and submit, the information on the form persists which means creating another event will already have the previous event info filled in. The form should be reset every time the user submits it.

Modules

drag and drop modules for the home page

Lunch module is blank

Ever since migrating to the new school lunch API, the lunch module on the homepage hasn't worked. Interestingly though, the MyMICDS lunch API should be in the exact same format, besides the category labels?

Finish Lazy-Loading of Modules

Lazy-loading components would allow only necessary parts of the application to be initially loaded. This would help with load times. Read more here.

This would require the project to be separated into different ng modules, which is a good thing as it would increase organization.

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.