Giter Club home page Giter Club logo

encore-ui's Introduction

Build Status Coverage Status devDependency Status

What is EncoreUI?

EncoreUI is a library of reusable AngularJS widgets for internal Rackspace projects. While a few components are specific to Rackspace, most are generic enough to be used by any app.

Using EncoreUI In Your Own Project

To help guide you in getting a new project off the ground quickly, please reference "Using EncoreUI In Your Own Project"

Demo App

You can see all components in action by visiting the EncoreUI demo page.

Further Reading

encore-ui's People

Contributors

100stacks avatar bry4n avatar cathysiller avatar ccarteronline avatar chriscantu avatar citguy avatar cmartinez1499 avatar droogans avatar ericcarraway avatar halkon avatar hussamd avatar jj4th avatar julianbonilla avatar khaziwallis avatar klamping avatar kobowley avatar kreempuff avatar kyleondata avatar leonels avatar manojdas2212 avatar mattymcgriddle avatar parlarjb avatar rnreekez avatar satyamkotakonda avatar sharkysharks avatar ssalinas24 avatar thenando avatar tomreece avatar velveteer avatar waffle-iron avatar

Stargazers

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

Watchers

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

encore-ui's Issues

checkboxes in rxFormOptionTable check all at checkboxes at once

For the following code:

        <rx-form-option-table
            data="instance.dbList"
            columns="instance.columnList"
            type="checkbox"
            model="fields.user.dblist"
            field-id="createUserDBList">

With the following hard-coded values:

$scope.instance.columnList = [{ 'label': 'Database', 'key': 'name'}];
$scope.instance.dbList = [{"name":"so_data", "id": "so_data"},{"name":"such_storage", "id": "such_storage"}];

Clicking on a checkbox actually clicks on both of the checkboxes.

Need backup script in case CDN files are erased

If all the files in the CDN are inadvertently removed, there isn't a simple way to re-instate them. We need either a backup system or a quick build system to rebuild all the various versions of encore-ui.

Provide default rxAppNav directive input styles

A common search input style will be used for any navigation item that needs an account/user search (e.g. Cloud Atlas, Billing UI):
image
image

We should provide a common directive to allow easy implementation of this.

Add documentation around rxApp

Things to be documented:

  • updating routes from an app
  • accessing $root for menu items
  • accessing $route for menu items
  • rationale for including menu data in encore-ui (and future plans)

Update Encore Component Demo Page Layout and Design

TODO:

  • add style and 'example' text around live example region
  • convert HTML/JS/CSS/Example to a tabset

The current layout for EncoreUI's components will not scale of the long run.

Per Eric, the design should stylistically match:
Demo Page Design

However the component page's layout should match the winjs's site:
WinJS Demo Site

Documentation: emphasize that columns data is required

For rxForm.js, the documentation for rxFormOptionTable says the following:

data - Array of objects used to populate table. Should have properties that match columns key.
columns - Array of objects with label/key values.

I would emphasize that column json data is required, and replace the "should" in data with "need to" - I just spent longer time than usual trying to get a serious of radio buttons working with chunky_bacon.

rxEnvironment tld in domain

Noticed in the rxEnvironment code that the tld is being used in the domain name (as it should by definition)

However, the latest discussions regarding the environment URL's resulted in the URL being (For Example in staging): staging.en.core.rackspace.com and the apps will live

staging.en.core.rackspace.com/billing
staging.en.core.rackspace.com/cloudatlas
etc.

Maybe we change tld to appName? and apply it to the end of the environment URL?

Not sure what the best solution would be here

add performance testing for components

Encore-UI has reached a point where some performance testing of the JS could be added to find potential bottlenecks. It would be nice to add monitoring to these performance tests, so we can track performance over time.

Update component stability indexes

Some components have existed long enough for their stability index to be increased. This issue should entail reviewing all the components currently available and adjusting their index according to their latest stability.

rx-form-*

It'd be useful if we could fire off functions within the Ctrl when the model within these forms are modified.

Improve 'grunt server' build time

Normally when developing a component, the time between a file save and the build completing ranges between 10-15 seconds. To reduce this time, these tasks shouldn't be run in the 'watch' statement:

  • rxPageObjects
  • complexity
  • jscs (This check is done on commit)
  • jshint (This check is done on commit)
  • bower
  • clean
  • cssmin
  • ngmin & uglify

rxPaginate needs more midway examples

With the addition of creating the opts hash for over-riding default parameters in rxPaginate, there are now more edge cases that need to be tested for in the midway tests.

I'm not sure how we should go about adding additional examples. Perhaps we can link to different pages with more examples somewhere in the app, so that the main page can stay the way it is?

Keep src js and LESS files in bower mod

Then we can pick and choose separate directives and overwrite any LESS variables for any hacks needed until encore-ui is fully stable. Which will be a huge help for those of us doing integration at this point in time.

Once encore ui is more stable this can go away.

tpl.min.map doesn't work with bower install

When the bower component is created, a reference to the tpl.min.map file is incorrect (is still has the version number in it). A grunt 'replace' task needs to be written to remove the version number from the file reference.

Environment (dev, staging, prod) based functionality

Encore-UI needs to be able to detect what environment it is in (or told via the app) so that things like app links can be appropriately determined.

For example, if I'm in cloud atlas on staging and try going to billing-ui, it should take me to the billing-ui environment.

Also, some functionality we only want in staging (e.g. if a product is in development, it should only be available via staging/dev). We should be able to hide/show navigation based on that.

Fail build when demo page has an error

In order to prevent JS errors from appearing on the demo app, the build script should get for errors on the demo page. To do this, a PhantomJS instance should be spun up, the demo page loaded, then it checks for any errors thrown (using window.onerror). If nothing is thrown, then the check will pass.

Tabset

We are currently using within chunky_bacon, maybe we should add this common element to the encore-ui style set.

Better error handling/messages

A lot of the error messages for Encore-UI components are vague and don't provide much help. Work should be done to add validation to public functions so that if the proper details aren't found, a proper error message is given.

rxApp: get, set, getChildren and setChildren

Allow controllers/apps to dynamically update the navigation through utility functions in rxAppRoutes. These updates will be based on a 'key' defined in the route object.

Here is a brief outline of what it might look like.

{
    linkText: 'Ticket Queues',
    key: 'ticketqueues'
    href: { tld: 'cloudatlas', path: 'ticketqueues' }
}
var tqRoutes = rxApp.appRoutes.get('ticketqueues'); 
tqRoutes.setChildren([
    {
        href: 'ticketqueues/list',
        linkText: 'My Selected Queues'
    },
    {
        href: 'ticketqueues/my',
        linkText: 'My Tickets'
    }, {
        href: 'ticketqueues/queues',
        linkText: 'Queue Admin'
    }
]);

rxLogout dependency on Auth service

The rxLogout directive depends on the Auth service, which isn't available in Encore-ui. We'll need to revisit this when we start to depend on this repo more.

Private variables naming scheme.

Do you want to go with the Google Style Guide and have it look like this:

var privateVar_ = somePrivateFunction_(input);

Or go with the Python Style Guide, and do it like this:

var _privateVar = _somePrivateFunction(input);

I overwhelmingly prefer the second one. But I can do either.

fix(rxBreadcrumbs): change default hash in path URIs

Currently there is a hardcoded '#' in the path URIs, ie. http://rackerlabs.github.io/#/servers/ from:

function rxBreadcrumbsCtrl ($scope, rxBreadcrumbsSvc) {
    rxBreadcrumbsSvc.set([{
        path: '/servers/',
        name: 'Servers'
    }, {
        name: 'Create New Server'
    }]);
}

. This can't be changed via the injected array / object.

What is encore?

Hi, I was looking at encore and just wondering what it is?

feat(rxNav): allow custom

DCX Applications needs to be able to modify the links, logo and whether to display the login link. Also exposing $scope to allow extending of directive.

Create rx-toggle attribute directive

Create a new attribute directive that allows toggling of a property on click. For example"

<button rx-toggle="myProp">Toggle myProp Value</button>

And on click, myProp would toggle between true and false.

rxAppNavItem: href not updating

When an href contains an expression with a reference to a route param:
href: '/{{user}}/cbs/snapshots'
That param isn't being updated in the link after it's changed (e.g. route change)

rxSortUtil.sortCol not supporting multiple tables in one scope

When implementing the payment options I had to list out two tables and implement sorting with it. Due to the default behavior of rxSortUtil.sortCol I was unable to do this (one table essentially would sort the other).

My solution was to create my own sortCol function where I would pass some sort ID that would be specific to that table, and from it generate the sortCol function to be used for that table.

function (sort) {
    return function (predicate) {
        var reverse = ($scope[sort].predicate === predicate) ? !$scope[sort].reverse : false;
        $scope[sort] = { reverse: reverse, predicate: predicate };
    };
}

May not be the best solution, or the right one, but just wanted to point this out

Implement use of ui-router

UI-Router is a major enhancement over the default Angular router. Implement use of it with rxAppNav and rxBreadcrumbs and require it for all Encore apps.

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.