Skip to content
Spencer edited this page Mar 11, 2014 · 21 revisions

Google Summer of Code 2014 Ideas List

Grid

ng-grid (sooon to be renamed ui-grid with its 3.0 release) is a data grid for AngularJS. Similar projects include KendoUI Grid, Data Tables, Ember Table, etc. It is sort of like Excel living in the browser and powered by Angular. The website links below have working examples.

2.x Website - 2.x Github - 3.0 Website - 3.0 Github

In place edits

A bootstrapped grid component which allowed in-place editing would be great.

Column pinning

Brief explanation:

Version 2.0 of the grid allows the user to "pin" a column so that it stays attached to one side of the grid, while the other columns can still be scrolled through. This makes important data easily visible for reference against other data.

Expected results:

A "feature module" (see cell navigation for reference) that extends column header cell functionality and adds a "pin" button. Hitting the pin button gives the user the choice to pin the column to the left or right side,

Knowledge prerequisite: JavaScript and Angular

Skill level: Medium

Mentors: Brian Hann

Continuous scrolling

Brief explanation:

Add more rows on to the bottom of the grid as the user scrolls.

Expected results:

Similar to any other application that has continuous scrolling (Pinterest, Facebook). When the user scrolls past a certain vertical point, more data is added to the data array and the grid extends. The scroll position would need to stay constant, and loading the data shouldn't interfere with scroll speed.

Knowledge prerequisite: JavaScript, AngularJS, HTML, CSS

Skill level: Medium

Mentors: Brian Hann

Native scrollbars

Brief explanation:

Version 2.0 of ng-grid relies on the browser's native scrollbar for all scrolling. Version 3.0 has a completely virtual scrollbar written from scratch. This solves some problems with calculating layouts but also introduces other issues. We'd like to use the browser's native scrollbars, as well our virtual ones.

Expected results:

The grid would be able to either use virtual scrollbars or native browser scrolling interchangeably. This should be a simple switch-flip in the grid options. The scrolling should work equally well on desktops as well as mobile and other devices (TVs, game consoles).

Knowledge prerequisite: JavaScript, AngularJS, HTML, CSS

Skill level: Hard

Mentors: Brian Hann

Multi-level Grids

Brief explanation:

Many grid projects have a master/detail or parent/child grid feature, where a row can be expanded to show a child grid beneath it. An example in Kendo UI grid is here: http://demos.telerik.com/kendo-ui/web/grid/hierarchy.html

Expected results:

Result would be a feature module that extends how rows function, adding a way to expand/collapse the row and show a child grid beneath it. This should not interfere with grouping or other grid functions.

Knowledge prerequisite: JavaScript, AngularJS, HTML, CSS

Skill level: Hard

Mentors: Brian Hann

Community Portal

Brief explanation:

A website that serves as a central directory of AngularJS resources with the ability to rate and provide feedback on resources to help content creators improve their own material and exchange ideas. This would include blogs, books, projects, etc.

Expected results:

This website would be similar to http://bakery.cakephp.org for the AngularJS community, automatically parsing and importing new blog posts and repos, allowing people to rate resources and submit new ones to the directory.

Knowledge prerequisite: Full Stack OR JS / HTML / CSS / AngularJS (if we use firebase or mongo)

Skill level: Hard

Mentors: Dean Sofer

UniBot - IRC Bot

Brief explanation:

New Plugins for UniBot - a multi-channel IRC bot supporting both #angularjs and ##twitter-bootstrap.

Expected results:

UniBot is the official bot of #angularjs on IRC and it is really easy to add new plugins to the bot. The student can decide what plugins interest them to work on, but can include integration with third parties APIs such as Github, Google, StackOverflow, or even Spotify, etc. These plugins can be enabled/disabled for each channel the bot is supporting and would help expand the channel support capabilities of the bot.

Knowledge prerequisite: IRC / Javascript / Node.js

Skill level: Easy

Mentors: Dean Sofer

Chrome Extension for Github

Brief explanation:

A chrome extension (and eventually a backing website) that adds missing features to Github Issues to make project management easier for the AngularUI and AngularJS teams. These would include things like labels, votes, and assignees with the ability to allow visitors to submit.

Expected results:

The chrome extension will add additional meta-data inputs for Github Issues such as how many votes an issue has, or allowing multiple people to mark an issue as a duplicate, invalid, etc. The data would be stored in Firebase so that updates are reflected in realtime and can be accessed by client-side code directly.

Knowledge prerequisite: JS / HTML / CSS

Skill level: Medium

Mentors: Dean Sofer

Utils

Move to Angular 1.2.x

Brief explanation: Many projects are now using Angular 1.2.x but even if the current bower restrict all the modules to use the version ">= 1.0.2" the tests on the module are clearly made on Angular 1.0.8. To make sure greater version works we need to update the modules and tests to Angular 1.2.x.

Expected results: Following #178, the branch angular1.2.x will merge all the modification made for this purpose. In addition, some specification in the tests will be necessary due to a double testing with and without jQuery. This will help us knowing where jQuery is actually necessary to test our modules.

Knowledge prerequisite: JS /Angular / Jasmine

Skill level: Medium

Mentors: Douglas Duteil

jqLite+

Brief explanation: Many projects are using jQuery in them tests to complete the lacks of jqLite. But all the features of jQuery are not necessary to run them. The goal of this project is to provide some jQuery features in separate jqLite components. The good part is that it's removing the utility dependence of jQuery in karma tests for an on purpose dependence to make tests with it.

Expected results: A whole new repo named jqLitePlus that contains jQuery features in separate Angular modules. For example for jquery.find a jqLite+find module or for jquery.trigger a jqLite+trigger module.

Knowledge prerequisite: JS /Angular / Web API / jQuery / Jasmine

Skill level: Hard

Mentors: Douglas Duteil

Router

Bootstrap

Add html template support for Popover

Brief Explanation: The Popover directive is missing support for html content and templates. This has been added to the Tooltip directive but is missing from Popover.