Coder Social home page Coder Social logo

rcos / observatory-client Goto Github PK

View Code? Open in Web Editor NEW
0.0 0.0 18.0 614 KB

Observatory's JavaScript client application

Home Page: http://rcos.io

JavaScript 49.50% HTML 0.70% Vue 49.80%
bootstrap-4 observatory rcos sass vue vue-bootstrap vue-router vuex webpack

observatory-client's People

Contributors

0hzz0 avatar aeksco avatar chengstark avatar frankie-guz avatar jell0s avatar jhbp avatar kdot34 avatar madebymuiz avatar nums11 avatar

Watchers

 avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar

observatory-client's Issues

Achievement Store - `update` action

Add an update method to src/store/post/actions.js that performs the following REST API call:

PUT /api/achievements/:id

Notes

  • Use the $PUT helper function defined in src/store/lib/helpers.js

Achievement Store - `fetchModel` action

Add a fetchModel method to src/store/post/actions.js that performs the following REST API call:

GET /api/achievements/:id

Notes

  • Use the $GET helper function defined in src/store/lib/helpers.js

Admin - Attendance Page

We need to define a new container - admin_attendance that is tied to the route /admin/attendance.

We should also populate the page with a basic mockup of what the page will contain - a static table will suffice for now.

screenshot from 2017-11-19 13-42-22

Search Users by `tech` tags

We should be able to search the user base by people who know X, where X is a technology present in the user's tech attribute (specified on the user's profile page)

Steps

  • Update the filteredCollection getter in observatory-client/src/store/user/getters.js to filter users by their tech array attribute.

Blocking

  • The API call to GET /api/users does not currently return the users' tech attributes. The client application will need that data before this ticket can be completed.

Blog Store - `fetchModel` action

Add a fetchModel method to src/store/blog/actions.js that performs the following REST API call:

GET /api/posts/:id

Notes

  • Use the $GET helper function defined in src/store/lib/helpers.js

Registration Form UI Enhancements

  • Remove default values from User Registration form. Remove default values for register_user in the observatory-client/src/store/auth/state.js file

  • Remove hardcoded Successfully Regisetered! message at the bottom of the <template> tag defined in observatory-client/src/containers/auth_register/components/layout.vue

  • Replace the <FormSubmit ... /> component in the <template> tag with the following line:

<FormSubmit label='Sign Up' class='btn-success btn-block w-100'/>

Mock up User page components

See attached:

screenshot 2017-11-08 12 29 39

Don't worry about dynamic content - we'll square those details away later. Just think in broad strokes with the HTML and apply some of the Bootstrap styles and column rules to define the components this page requires.

Define FormSelect component

Copy FormInput component to start.

Should accept name, label, help, multiple, and options props and use the following structure:

<select>
  <option v-for="opt in options" :value="opt.value">{{ opt.label }}</option>
</select>

Add User Settings page

See attached image for details - an HTML mockup is sufficient for now.

The Edit Profile, Change Password, and Delete Your Account forms should all be individual Vue components.

screenshot from 2018-03-31 18-01-23

Mock up Projects page components

See attached:

screenshot 2017-11-08 12 29 30

Don't worry about dynamic content - we'll square those details away later. Just think in broad strokes with the HTML and apply some of the Bootstrap styles and column rules to define the components this page requires.

Blog Store - `destroy` action

Add a destroy method to src/store/blog/actions.js that performs the following REST API call:

DELETE /api/posts/:id

Notes

  • Use the $DEL helper function defined in src/store/lib/helpers.js

Build out Project Vuex & VueMC Data Layer

We need to start building out the client-side data layer for the application - it makes the most sense to start with the projects module and work our way out from there.

I'll be focusing on wiring up Projects to the backend, which will serve as a helpful example on how to wire up the rest of the backend to the client.

Blog - Create BlogForm component

  • Use the code from /containers/blog_new/components/layout to create a generic Blog form defined in /components/BlogForm.
  • Replace /containers/blog_new/components/layout with new /components/BlogForm

Button click handlers

Run through the temporary site adding click handlers on buttons. Starting first with linking up using the router. For example:
screen shot 2017-12-09 at 1 37 02 pm

Blog - List container - markdown rendering

The Blog List container should render each individual blog post's markdown. It currently only displays the raw, un-rendered markdown.

The container is defined in src/containers/blog_list.

Achievement Store - `destroy` action

Add a destroy method to src/store/post/actions.js that performs the following REST API call:

DELETE /api/achievements/:id

Notes

  • Use the $DEL helper function defined in src/store/lib/helpers.js

Upgrade to FontAwesome 5.0

We're currently using FontAwesome 4.7.

See FontAwesome 5 icons here.

Steps

  • Begin by following the TASK comments in observatory-client/index.html This will enable FontAwesome 5.0 and disable FontAwesome 4.7.

  • Search through the repository's *.vue files for <i> tags with the fa CSS class.

  • If an icon is missing from FA 5.0, it will display a little warning icon (see attached) indicating that the icon being used has been deprecated. Search for a suitable replacement on the FA 5.0 icons page and update the <i> element accordingly.

Missing Sort icon warning indicator
screenshot from 2018-02-15 11-38-38

Attendance Vuex Store

We need to define a Vuex store to encapsulate the state, getters, mutations, actions, and constants to manage Attendance.

I'd begin by copying store/smallgroup into store/attendance and modify things as necessary - be sure to import store/attendance in store/index.js or your work won't get included with the build.

A good first pass would be to implement an action to handle GET /api/attendance/present/me - we'll add the rest of the API handlers in separate issues.

Admin - User List

We need to define a new container - admin_users that is tied to the route /admin/users.

We should also populate the page with a basic mockup of what the page will contain - a static table will suffice for now.

screenshot from 2017-11-19 13-42-02

Create generic SearchComponent

We are going to need search on the following pages:

  • Project List
  • User List
  • Blog List
  • Admin User List

We currently have unique search components defined for Project List, User List, and Admin User List - we should abstract the common markup and functionality into a new Vue component that can be used across all these views.

Steps

  • Copy the contents of
    observatory-client/src/containers/project_list/components/search.vue

    into a new file:
    observatory-client/src/components/search.vue

  • Add an additional attribute to the Search.vue component:

    props: ['module']

  • Replace all references to project/xyz to ${this.module}/xyz

    NOTE - use JS Template Literals to interpolate ${ this.module } at runtime.

  • Replace the <ProjectSearch /> with our new component <Search module="project" /> in the following file:

    /observatory-client/src/containers/project_list/components/layout.vue

  • Repeat the replacement procedure above for the following:

    /observatory-client/src/containers/user_list/components/layout.vue

  • Delete the now unused files

    /observatory-client/src/containers/project_list/components/search.vue
    /observatory-client/src/containers/user_list/components/search.vue

Admin - Settings Page

We need to define a new container - admin_settings that is tied to the route /admin/settings.

We should also populate the page with a basic mockup of what the page will contain - some static buttons and headers will suffice for now.

screenshot from 2017-11-19 13-42-35

Build out homepage components

@Frankie-guz See attached:

main_home_components

Don't worry about dynamic content or the header/body/button variants for the three Developers/Projects/Achievements components - we'll square those details away later. Just think in broad strokes with the HTML and apply some of the Bootstrap styles and column rules we were going over yesterday

Blog - Edit Container - Mockup

We need a mockup for the "Edit Blog" page.

The container is currently defined in src/containers/blog_edit.

We need a form fields for the following:

  • Blog Title Input
  • Project dropdown select (disabled)
  • Blog Tags input
  • Blog Body (Markdown editor)

This mockup doesn't need to be functional - we just need something to act as a placeholder to wire up the UI to the Blog Vuex store.

Blog Store - `update` action

Add an update method to src/store/blog/actions.js that performs the following REST API call:

PUT /api/posts/:id

Notes

  • Use the $PUT helper function defined in src/store/lib/helpers.js

Achievement Store - `fetchCollection` action

Add a fetchCollection method to src/store/post/actions.js that performs the following REST API call:

GET /api/achievements

Notes

  • Use the $GET helper function defined in src/store/lib/helpers.js

Mock up Achievements page components

32401841-df8b764a-c0ed-11e7-8760-353da70c383d

Don't worry about dynamic content - we'll square those details away later. Just think in broad strokes with the HTML and apply some of the Bootstrap styles and column rules to define the components this page requires.

Blog Store - `create` action

Add a create method to src/store/blog/actions.js that performs the following REST API call:

POST /api/posts

Notes

  • Use the $POST helper function defined in src/store/lib/helpers.js

Verify Attendance Enhancements

Each unverified attendance should display some information about what type of attendance it is (i.e. smallgroup, large group, bonus)

Blog - New Container - Mockup

We need a mockup for the "New Blog" page.

The container is currently defined in src/containers/blog_new.

We need a form fields for the following:

  • Blog Title Input
  • Project dropdown select
  • Blog Tags input
  • Blog Body (Markdown editor)

This mockup doesn't need to be functional - we just need something to act as a placeholder to wire up the UI to the Blog Vuex store.

Add content to Sponsors page

From Observatory3 #674

It might be nice to have a page on this site: https://rcos.io/ for Support (and could include Red Hat, Mozilla, OSI, Microsoft, etc., each with a short description of how they have supported the program.) Same page could also have another link to the Donations page:
https://securelb.imodules.com/s/1225/giving/index.aspx?sid=1225&gid=1&pgid=1947&cid=4524&appealcode=WGAFP&_ga=1.191668650.1206279174.1408978267
as well as a description of what you're looking for from corporate partners.

Steps

  • Open observatory-client/src/containers/main_sponsors/components/layout.vue

  • For each of the Sponsors listed below we need to display...

    • Sponsor name (i.e. Microsoft)
    • Sponsor company logo
    • Description of affiliation (see below)

Home Page - 'Developers' - Add 'Projects' & 'Achievements' clean up

The home page has a trio of Developers, Projects, and 'Achievements' UI elements. At the moment they only display static values.

This component should be given a props: ['title'] attribute so unique titles can be passed into each instance.

The container is defined in src/containers/main_home.

Add FAQ Container & Route

Create a new container for FAQ in src/containers/main_faq that's available at the route /faq.

We'll populate the page with content later - for this first ticket let's just get a new route and container wired up :)

Blog Store - `fetchCollection` action

Add a fetchCollection method to src/store/blog/actions.js that performs the following REST API call:

GET /api/posts

Notes

  • Use the $GET helper function defined in src/store/lib/helpers.js

Add link to rcos/intro on FAQ page

Add a link to the rcos/intro observatory on the FAQ page.

Link:

https://github.com/rcos/intro

Add the link to the <template> tag in the following file:
observatory-client/src/containers/main_faq/components/layout.vue

Achievement Store - `create` action

Add a create method to src/store/achievement/actions.js that performs the following REST API call:

POST /api/achievements

Notes

  • Use the $POST helper function defined in src/store/lib/helpers.js

Define ClassYear Vuex store

Define a new Vuex store for classyear in src/store/classyear.

Don't forget to include a reference to src/store/classyear in src/store/index.js

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.