Skip to content

Commit d19dc73

Browse files
author
Lee Richmond
committed
Add frontend
1 parent 6ab9a0e commit d19dc73

Some content is hidden

Large Commits have some content hidden by default. Use the searchbox below for content that may be hidden.

47 files changed

+788
-0
lines changed

.gitignore

+19
Original file line numberDiff line numberDiff line change
@@ -20,3 +20,22 @@ spec/examples.txt
2020

2121
# Ignore Byebug command history file.
2222
.byebug_history
23+
24+
# FRONTEND
25+
/frontend/dist
26+
/frontend/tmp
27+
28+
# dependencies
29+
/frontend/node_modules
30+
/frontend/bower_components
31+
32+
# misc
33+
/frontend/.sass-cache
34+
/frontend/connect.lock
35+
/frontend/coverage/*
36+
/frontend/libpeerconnection.log
37+
/frontend/npm-debug.log
38+
/frontend/testem.log
39+
40+
/frontend/node_modules
41+
/frontend/bower_components
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,8 @@
1+
class DepartmentsController < ApplicationController
2+
jsonapi { }
3+
4+
def index
5+
departments = Department.all
6+
render_ams(departments)
7+
end
8+
end

config/routes.rb

+1
Original file line numberDiff line numberDiff line change
@@ -1,5 +1,6 @@
11
Rails.application.routes.draw do
22
scope path: '/api' do
33
resources :employees
4+
resources :departments, only: [:index]
45
end
56
end

frontend/.bowerrc

+4
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,4 @@
1+
{
2+
"directory": "bower_components",
3+
"analytics": false
4+
}

frontend/.editorconfig

+34
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,34 @@
1+
# EditorConfig helps developers define and maintain consistent
2+
# coding styles between different editors and IDEs
3+
# editorconfig.org
4+
5+
root = true
6+
7+
8+
[*]
9+
end_of_line = lf
10+
charset = utf-8
11+
trim_trailing_whitespace = true
12+
insert_final_newline = true
13+
indent_style = space
14+
indent_size = 2
15+
16+
[*.js]
17+
indent_style = space
18+
indent_size = 2
19+
20+
[*.hbs]
21+
insert_final_newline = false
22+
indent_style = space
23+
indent_size = 2
24+
25+
[*.css]
26+
indent_style = space
27+
indent_size = 2
28+
29+
[*.html]
30+
indent_style = space
31+
indent_size = 2
32+
33+
[*.{diff,md}]
34+
trim_trailing_whitespace = false

frontend/.ember-cli

+9
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,9 @@
1+
{
2+
/**
3+
Ember CLI sends analytics information by default. The data is completely
4+
anonymous, but there are times when you might want to disable this behavior.
5+
6+
Setting `disableAnalytics` to true will prevent any data from being sent.
7+
*/
8+
"disableAnalytics": false
9+
}

frontend/.gitignore

+17
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,17 @@
1+
# See http://help.github.com/ignore-files/ for more about ignoring files.
2+
3+
# compiled output
4+
/dist
5+
/tmp
6+
7+
# dependencies
8+
/node_modules
9+
/bower_components
10+
11+
# misc
12+
/.sass-cache
13+
/connect.lock
14+
/coverage/*
15+
/libpeerconnection.log
16+
npm-debug.log
17+
testem.log

frontend/.jshintrc

+32
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,32 @@
1+
{
2+
"predef": [
3+
"document",
4+
"window",
5+
"-Promise"
6+
],
7+
"browser": true,
8+
"boss": true,
9+
"curly": true,
10+
"debug": false,
11+
"devel": true,
12+
"eqeqeq": true,
13+
"evil": true,
14+
"forin": false,
15+
"immed": false,
16+
"laxbreak": false,
17+
"newcap": true,
18+
"noarg": true,
19+
"noempty": false,
20+
"nonew": false,
21+
"nomen": false,
22+
"onevar": false,
23+
"plusplus": false,
24+
"regexp": false,
25+
"undef": true,
26+
"sub": true,
27+
"strict": false,
28+
"white": false,
29+
"eqnull": true,
30+
"esnext": true,
31+
"unused": true
32+
}

frontend/.travis.yml

+23
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,23 @@
1+
---
2+
language: node_js
3+
node_js:
4+
- "0.12"
5+
6+
sudo: false
7+
8+
cache:
9+
directories:
10+
- node_modules
11+
12+
before_install:
13+
- export PATH=/usr/local/phantomjs-2.0.0/bin:$PATH
14+
- "npm config set spin false"
15+
- "npm install -g npm@^2"
16+
17+
install:
18+
- npm install -g bower
19+
- npm install
20+
- bower install
21+
22+
script:
23+
- npm test

frontend/.watchmanconfig

+3
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,3 @@
1+
{
2+
"ignore_dirs": ["tmp", "dist"]
3+
}

frontend/README.md

+53
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,53 @@
1+
# Frontend
2+
3+
This README outlines the details of collaborating on this Ember application.
4+
A short introduction of this app could easily go here.
5+
6+
## Prerequisites
7+
8+
You will need the following things properly installed on your computer.
9+
10+
* [Git](http://git-scm.com/)
11+
* [Node.js](http://nodejs.org/) (with NPM)
12+
* [Bower](http://bower.io/)
13+
* [Ember CLI](http://www.ember-cli.com/)
14+
* [PhantomJS](http://phantomjs.org/)
15+
16+
## Installation
17+
18+
* `git clone <repository-url>` this repository
19+
* change into the new directory
20+
* `npm install`
21+
* `bower install`
22+
23+
## Running / Development
24+
25+
* `ember server`
26+
* Visit your app at [http://localhost:4200](http://localhost:4200).
27+
28+
### Code Generators
29+
30+
Make use of the many generators for code, try `ember help generate` for more details
31+
32+
### Running Tests
33+
34+
* `ember test`
35+
* `ember test --server`
36+
37+
### Building
38+
39+
* `ember build` (development)
40+
* `ember build --environment production` (production)
41+
42+
### Deploying
43+
44+
Specify what it takes to deploy your app.
45+
46+
## Further Reading / Useful Links
47+
48+
* [ember.js](http://emberjs.com/)
49+
* [ember-cli](http://www.ember-cli.com/)
50+
* Development Browser Extensions
51+
* [ember inspector for chrome](https://chrome.google.com/webstore/detail/ember-inspector/bmdblncegkenkacieihfhpjfppoconhi)
52+
* [ember inspector for firefox](https://addons.mozilla.org/en-US/firefox/addon/ember-inspector/)
53+

frontend/app/adapters/application.js

+5
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,5 @@
1+
import DS from 'ember-data';
2+
3+
export default DS.JSONAPIAdapter.extend(DS.EmbeddedRecordsMixin, {
4+
namespace: 'api'
5+
});

frontend/app/app.js

+18
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,18 @@
1+
import Ember from 'ember';
2+
import Resolver from './resolver';
3+
import loadInitializers from 'ember-load-initializers';
4+
import config from './config/environment';
5+
6+
let App;
7+
8+
Ember.MODEL_FACTORY_INJECTIONS = true;
9+
10+
App = Ember.Application.extend({
11+
modulePrefix: config.modulePrefix,
12+
podModulePrefix: config.podModulePrefix,
13+
Resolver
14+
});
15+
16+
loadInitializers(App, config.modulePrefix);
17+
18+
export default App;

frontend/app/components/.gitkeep

Whitespace-only changes.

frontend/app/controllers/.gitkeep

Whitespace-only changes.

frontend/app/helpers/.gitkeep

Whitespace-only changes.

frontend/app/index.html

+26
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,26 @@
1+
<!DOCTYPE html>
2+
<html>
3+
<head>
4+
<meta charset="utf-8">
5+
<meta http-equiv="X-UA-Compatible" content="IE=edge">
6+
<title>Frontend</title>
7+
<meta name="description" content="">
8+
<meta name="viewport" content="width=device-width, initial-scale=1">
9+
10+
{{content-for "head"}}
11+
12+
<link rel="stylesheet" href="assets/vendor.css">
13+
<link rel="stylesheet" href="assets/frontend.css">
14+
<link href="https://fonts.googleapis.com/icon?family=Material+Icons" rel="stylesheet">
15+
16+
{{content-for "head-footer"}}
17+
</head>
18+
<body>
19+
{{content-for "body"}}
20+
21+
<script src="assets/vendor.js"></script>
22+
<script src="assets/frontend.js"></script>
23+
24+
{{content-for "body-footer"}}
25+
</body>
26+
</html>

frontend/app/models/.gitkeep

Whitespace-only changes.

frontend/app/models/department.js

+5
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,5 @@
1+
import DS from 'ember-data';
2+
3+
export default DS.Model.extend({
4+
name: DS.attr('string')
5+
});

frontend/app/models/employee.js

+8
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,8 @@
1+
import DS from 'ember-data';
2+
3+
export default DS.Model.extend({
4+
name: DS.attr('string'),
5+
age: DS.attr('number'),
6+
7+
department: DS.belongsTo()
8+
});
+37
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,37 @@
1+
import Ember from 'ember';
2+
3+
export default Ember.Controller.extend({
4+
adding: false,
5+
store: Ember.inject.service(),
6+
query: null,
7+
8+
init() {
9+
this.get('store').findAll('department').then((departments) => {
10+
this.set('departments', departments);
11+
});
12+
},
13+
14+
actions: {
15+
showAddNew() {
16+
this.set('newEmployee', this.get('store').createRecord('employee'));
17+
this.set('adding', true);
18+
},
19+
20+
search() {
21+
this.send('refresh');
22+
},
23+
24+
submit(employee) {
25+
employee.save().then(() => {
26+
this.send('refresh');
27+
this.set('adding', false);
28+
});
29+
},
30+
31+
delete(employee) {
32+
employee.destroyRecord().then(() => {
33+
this.send('refresh');
34+
});
35+
}
36+
}
37+
});

frontend/app/pods/employees/route.js

+24
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,24 @@
1+
import Ember from 'ember';
2+
3+
export default Ember.Route.extend({
4+
model() {
5+
return this._refresh();
6+
},
7+
8+
_refresh() {
9+
let query = this.get('controller.query');
10+
11+
return this.store.query('employee', {
12+
include: 'department',
13+
filter: { name_prefix: query }
14+
});
15+
},
16+
17+
actions: {
18+
refresh() {
19+
this._refresh().then((employees) => {
20+
this.set('controller.model', employees);
21+
});
22+
}
23+
}
24+
});

0 commit comments

Comments
 (0)