_..., ,:^;,...; -+===;. ,,--++====++-,,, .: /....., :::::~+++++#:,+#++++++++++++++++++#*..: /,...... (,,,,,,::=+++##++++++++++++++++++++++#. :....../ ...,,,,,::++++++++++++++++++++++++++++++*..,...: *..+...,#@@@@@@@@@++++++++++++++++++++++#*....* @#,;##############@@@+*+#@@@@@@@@@@#*++#..< *@##@@+,-*^^^*-+@####@@@######@@@#####@@,,,+ @#@* @#@@@@#@@+--*^^*--#@@@@@@# @#@. @# @##+++@#, .@@#@@ #@# @@ +@@++++#@@ @@ :@@ :@#* @#@++++++@#* #@ @@+ :*+@@#;,.__.+@#@+,-^^.++@# @@++ ;* :*@@@##@@@@;++r._j^.+@##@+,.__,,@@++. /* ........+++++++++++++#@@@@@###@@#++++, ,: ...,@@@#++===----==@@@####,,....+++++ .: ......@@##@\ ; :@####@,,...... +++. ; .........@###, ; ;xx#@;,,..... *;+, | ........,*;xxxx--^--=xxx,........ :+#; ; ......,,;xxxxxxxxxxxxx;,..... *+# ; ......,::xxxx;. ...... +. . *; ......... +### .... / ,. /:| ,. .+: ... ;##++##, . ,#. (..v..;*./ ** ## ###* .:*&&&+. \.,....<, #&+**==-..,,__ ;## ### :,*+&&&&&&&v+#&,,.._/ #&&&&*...,::,,. ##; ,##* .*****;:&&&&&&&&& ,+*+;~*..*** *.* ### ###* ******* *+#&;* ##,;## **** :, ** ##### ## ### ###, ######## .##### ;## ## ####### ;## #### ,###. ########## ######## ### #### ### ### ### ########## #### #### ,## ### #######* ### ,### ##############: ## ### #### ,## :#### ### ##; ########## ########### ## .## ,### ####### ##### :###### ###### .###### #### ## ### ### ######* :##### #### ############# #### ################ ######## ### #####* *#* #: :### *###* *#### #*master
# EditorConfig helps developers define and maintain consistent | |||||
# coding styles between different editors and IDEs | |||||
# editorconfig.org | |||||
root = true | |||||
[*] | |||||
end_of_line = lf | |||||
charset = utf-8 | |||||
trim_trailing_whitespace = true | |||||
insert_final_newline = true | |||||
indent_style = space | |||||
indent_size = 2 | |||||
[*.hbs] | |||||
insert_final_newline = false | |||||
[*.{diff,md}] | |||||
trim_trailing_whitespace = false |
{ | |||||
/** | |||||
Ember CLI sends analytics information by default. The data is completely | |||||
anonymous, but there are times when you might want to disable this behavior. | |||||
Setting `disableAnalytics` to true will prevent any data from being sent. | |||||
*/ | |||||
"disableAnalytics": false | |||||
} |
# unconventional js | |||||
/blueprints/*/files/ | |||||
/vendor/ | |||||
# compiled output | |||||
/dist/ | |||||
/tmp/ | |||||
# dependencies | |||||
/bower_components/ | |||||
/node_modules/ | |||||
# misc | |||||
/coverage/ | |||||
!.* | |||||
# ember-try | |||||
/.node_modules.ember-try/ | |||||
/bower.json.ember-try | |||||
/package.json.ember-try |
'use strict'; | |||||
module.exports = { | |||||
root: true, | |||||
parser: 'babel-eslint', | |||||
parserOptions: { | |||||
ecmaVersion: 2018, | |||||
sourceType: 'module', | |||||
ecmaFeatures: { | |||||
legacyDecorators: true | |||||
} | |||||
}, | |||||
plugins: [ | |||||
'ember' | |||||
], | |||||
extends: [ | |||||
'eslint:recommended', | |||||
'plugin:ember/recommended' | |||||
], | |||||
env: { | |||||
browser: true | |||||
}, | |||||
rules: { | |||||
'ember/no-jquery': 'error' | |||||
}, | |||||
overrides: [ | |||||
// node files | |||||
{ | |||||
files: [ | |||||
'.eslintrc.js', | |||||
'.template-lintrc.js', | |||||
'ember-cli-build.js', | |||||
'testem.js', | |||||
'blueprints/*/index.js', | |||||
'config/**/*.js', | |||||
'lib/*/index.js', | |||||
'server/**/*.js' | |||||
], | |||||
parserOptions: { | |||||
sourceType: 'script' | |||||
}, | |||||
env: { | |||||
browser: false, | |||||
node: true | |||||
}, | |||||
plugins: ['node'], | |||||
rules: Object.assign({}, require('eslint-plugin-node').configs.recommended.rules, { | |||||
// add your custom rules and overrides for node files here | |||||
// this can be removed once the following is fixed | |||||
// https://github.com/mysticatea/eslint-plugin-node/issues/77 | |||||
'node/no-unpublished-require': 'off' | |||||
}) | |||||
} | |||||
] | |||||
}; |
# See https://help.github.com/ignore-files/ for more about ignoring files. | |||||
# compiled output | |||||
/dist/ | |||||
/tmp/ | |||||
# dependencies | |||||
/bower_components/ | |||||
/node_modules/ | |||||
# misc | |||||
/.env* | |||||
/.pnp* | |||||
/.sass-cache | |||||
/connect.lock | |||||
/coverage/ | |||||
/libpeerconnection.log | |||||
/npm-debug.log* | |||||
/testem.log | |||||
/yarn-error.log | |||||
# ember-try | |||||
/.node_modules.ember-try/ | |||||
/bower.json.ember-try | |||||
/package.json.ember-try |
'use strict'; | |||||
module.exports = { | |||||
extends: 'octane' | |||||
}; |
--- | |||||
language: node_js | |||||
node_js: | |||||
- "10" | |||||
dist: trusty | |||||
addons: | |||||
chrome: stable | |||||
cache: | |||||
directories: | |||||
- $HOME/.npm | |||||
env: | |||||
global: | |||||
# See https://git.io/vdao3 for details. | |||||
- JOBS=1 | |||||
branches: | |||||
only: | |||||
- master | |||||
script: | |||||
- npm test |
{ | |||||
"ignore_dirs": ["tmp", "dist"] | |||||
} |
# einkaufszettel | |||||
This README outlines the details of collaborating on this Ember application. | |||||
A short introduction of this app could easily go here. | |||||
## Prerequisites | |||||
You will need the following things properly installed on your computer. | |||||
* [Git](https://git-scm.com/) | |||||
* [Node.js](https://nodejs.org/) (with npm) | |||||
* [Ember CLI](https://ember-cli.com/) | |||||
* [Google Chrome](https://google.com/chrome/) | |||||
## Installation | |||||
* `git clone <repository-url>` this repository | |||||
* `cd einkaufszettel` | |||||
* `npm install` | |||||
## Running / Development | |||||
* `ember serve` | |||||
* Visit your app at [http://localhost:4200](http://localhost:4200). | |||||
* Visit your tests at [http://localhost:4200/tests](http://localhost:4200/tests). | |||||
### Code Generators | |||||
Make use of the many generators for code, try `ember help generate` for more details | |||||
### Running Tests | |||||
* `ember test` | |||||
* `ember test --server` | |||||
### Linting | |||||
* `npm run lint:hbs` | |||||
* `npm run lint:js` | |||||
* `npm run lint:js -- --fix` | |||||
### Building | |||||
* `ember build` (development) | |||||
* `ember build --environment production` (production) | |||||
### Deploying | |||||
Specify what it takes to deploy your app. | |||||
## Further Reading / Useful Links | |||||
* [ember.js](https://emberjs.com/) | |||||
* [ember-cli](https://ember-cli.com/) | |||||
* Development Browser Extensions | |||||
* [ember inspector for chrome](https://chrome.google.com/webstore/detail/ember-inspector/bmdblncegkenkacieihfhpjfppoconhi) | |||||
* [ember inspector for firefox](https://addons.mozilla.org/en-US/firefox/addon/ember-inspector/) |
import Application from '@ember/application'; | |||||
import Resolver from 'ember-resolver'; | |||||
import loadInitializers from 'ember-load-initializers'; | |||||
import config from './config/environment'; | |||||
export default class App extends Application { | |||||
modulePrefix = config.modulePrefix; | |||||
podModulePrefix = config.podModulePrefix; | |||||
Resolver = Resolver; | |||||
} | |||||
loadInitializers(App, config.modulePrefix); |
<!DOCTYPE html> | |||||
<html> | |||||
<head> | |||||
<meta charset="utf-8"> | |||||
<meta http-equiv="X-UA-Compatible" content="IE=edge"> | |||||
<title>Einkaufszettel</title> | |||||
<meta name="description" content=""> | |||||
<meta name="viewport" content="width=device-width, initial-scale=1"> | |||||
{{content-for "head"}} | |||||
<link integrity="" rel="stylesheet" href="{{rootURL}}assets/vendor.css"> | |||||
<link integrity="" rel="stylesheet" href="{{rootURL}}assets/einkaufszettel.css"> | |||||
{{content-for "head-footer"}} | |||||
</head> | |||||
<body> | |||||
{{content-for "body"}} | |||||
<script src="{{rootURL}}assets/vendor.js"></script> | |||||
<script src="{{rootURL}}assets/einkaufszettel.js"></script> | |||||
{{content-for "body-footer"}} | |||||
</body> | |||||
</html> |
import EmberRouter from '@ember/routing/router'; | |||||
import config from './config/environment'; | |||||
export default class Router extends EmberRouter { | |||||
location = config.locationType; | |||||
rootURL = config.rootURL; | |||||
} | |||||
Router.map(function() { | |||||
}); |
{{!-- The following component displays Ember's default welcome message. --}} | |||||
<WelcomePage /> | |||||
{{!-- Feel free to remove this! --}} | |||||
{{outlet}} |
'use strict'; | |||||
module.exports = function(environment) { | |||||
let ENV = { | |||||
modulePrefix: 'einkaufszettel', | |||||
environment, | |||||
rootURL: '/', | |||||
locationType: 'auto', | |||||
EmberENV: { | |||||
FEATURES: { | |||||
// Here you can enable experimental features on an ember canary build | |||||
// e.g. EMBER_NATIVE_DECORATOR_SUPPORT: true | |||||
}, | |||||
EXTEND_PROTOTYPES: { | |||||
// Prevent Ember Data from overriding Date.parse. | |||||
Date: false | |||||
} | |||||
}, | |||||
APP: { | |||||
// Here you can pass flags/options to your application instance | |||||
// when it is created | |||||
} | |||||
}; | |||||
if (environment === 'development') { | |||||
// ENV.APP.LOG_RESOLVER = true; | |||||
// ENV.APP.LOG_ACTIVE_GENERATION = true; | |||||
// ENV.APP.LOG_TRANSITIONS = true; | |||||
// ENV.APP.LOG_TRANSITIONS_INTERNAL = true; | |||||
// ENV.APP.LOG_VIEW_LOOKUPS = true; | |||||
} | |||||
if (environment === 'test') { | |||||
// Testem prefers this... | |||||
ENV.locationType = 'none'; | |||||
// keep test console output quieter | |||||
ENV.APP.LOG_ACTIVE_GENERATION = false; | |||||
ENV.APP.LOG_VIEW_LOOKUPS = false; | |||||
ENV.APP.rootElement = '#ember-testing'; | |||||
ENV.APP.autoboot = false; | |||||
} | |||||
if (environment === 'production') { | |||||
// here you can enable a production-specific feature | |||||
} | |||||
return ENV; | |||||
}; |
{ | |||||
"application-template-wrapper": false, | |||||
"default-async-observers": true, | |||||
"jquery-integration": false, | |||||
"template-only-glimmer-components": true | |||||
} |
'use strict'; | |||||
const browsers = [ | |||||
'last 1 Chrome versions', | |||||
'last 1 Firefox versions', | |||||
'last 1 Safari versions' | |||||
]; | |||||
const isCI = !!process.env.CI; | |||||
const isProduction = process.env.EMBER_ENV === 'production'; | |||||
if (isCI || isProduction) { | |||||
browsers.push('ie 11'); | |||||
} | |||||
module.exports = { | |||||
browsers | |||||
}; |
'use strict'; | |||||
const EmberApp = require('ember-cli/lib/broccoli/ember-app'); | |||||
module.exports = function(defaults) { | |||||
let app = new EmberApp(defaults, { | |||||
// Add options here | |||||
}); | |||||
// Use `app.import` to add additional libraries to the generated | |||||
// output files. | |||||
// | |||||
// If you need to use different assets in different | |||||
// environments, specify an object as the first parameter. That | |||||
// object's keys should be the environment name and the values | |||||
// should be the asset to use in that environment. | |||||
// | |||||
// If the library that you are including contains AMD or ES6 | |||||
// modules that you would like to import into your application | |||||
// please specify an object with the list of modules as keys | |||||
// along with the exports of each module as its value. | |||||
return app.toTree(); | |||||
}; |
{ | |||||
"name": "einkaufszettel", | |||||
"version": "0.0.0", | |||||
"private": true, | |||||
"description": "Small description for einkaufszettel goes here", | |||||
"repository": "", | |||||
"license": "MIT", | |||||
"author": "", | |||||
"directories": { | |||||
"doc": "doc", | |||||
"test": "tests" | |||||
}, | |||||
"scripts": { | |||||
"build": "ember build --environment=production", | |||||
"lint": "npm-run-all --aggregate-output --continue-on-error --parallel lint:*", | |||||
"lint:hbs": "ember-template-lint .", | |||||
"lint:js": "eslint .", | |||||
"start": "ember serve", | |||||
"test": "npm-run-all lint:* test:*", | |||||
"test:ember": "ember test" | |||||
}, | |||||
"devDependencies": { | |||||
"@ember/optional-features": "^1.3.0", | |||||
"@glimmer/component": "^1.0.0", | |||||
"@glimmer/tracking": "^1.0.0", | |||||
"babel-eslint": "^10.1.0", | |||||
"broccoli-asset-rev": "^3.0.0", | |||||
"ember-auto-import": "^1.5.3", | |||||
"ember-cli": "~3.18.0", | |||||
"ember-cli-app-version": "^3.2.0", | |||||
"ember-cli-babel": "^7.19.0", | |||||
"ember-cli-dependency-checker": "^3.2.0", | |||||
"ember-cli-htmlbars": "^4.3.1", | |||||
"ember-cli-inject-live-reload": "^2.0.2", | |||||
"ember-cli-sri": "^2.1.1", | |||||
"ember-cli-uglify": "^3.0.0", | |||||
"ember-data": "~3.18.0", | |||||
"ember-export-application-global": "^2.0.1", | |||||
"ember-fetch": "^8.0.1", | |||||
"ember-load-initializers": "^2.1.1", | |||||
"ember-maybe-import-regenerator": "^0.1.6", | |||||
"ember-qunit": "^4.6.0", | |||||
"ember-resolver": "^8.0.0", | |||||
"ember-source": "~3.18.0", | |||||
"ember-template-lint": "^2.6.0", | |||||
"ember-welcome-page": "^4.0.0", | |||||
"eslint": "^6.8.0", | |||||
"eslint-plugin-ember": "^8.4.0", | |||||
"eslint-plugin-node": "^11.1.0", | |||||
"loader.js": "^4.7.0", | |||||
"npm-run-all": "^4.1.5", | |||||
"qunit-dom": "^1.2.0" | |||||
}, | |||||
"engines": { | |||||
"node": "10.* || >= 12" | |||||
}, | |||||
"ember": { | |||||
"edition": "octane" | |||||
} | |||||
} |
# http://www.robotstxt.org | |||||
User-agent: * | |||||
Disallow: |
'use strict'; | |||||
module.exports = { | |||||
test_page: 'tests/index.html?hidepassed', | |||||
disable_watching: true, | |||||
launch_in_ci: [ | |||||
'Chrome' | |||||
], | |||||
launch_in_dev: [ | |||||
'Chrome' | |||||
], | |||||
browser_start_timeout: 120, | |||||
browser_args: { | |||||
Chrome: { | |||||
ci: [ | |||||
// --no-sandbox is needed when running Chrome inside a container | |||||
process.env.CI ? '--no-sandbox' : null, | |||||
'--headless', | |||||
'--disable-dev-shm-usage', | |||||
'--disable-software-rasterizer', | |||||
'--mute-audio', | |||||
'--remote-debugging-port=0', | |||||
'--window-size=1440,900' | |||||
].filter(Boolean) | |||||
} | |||||
} | |||||
}; |
<!DOCTYPE html> | |||||
<html> | |||||
<head> | |||||
<meta charset="utf-8"> | |||||
<meta http-equiv="X-UA-Compatible" content="IE=edge"> | |||||
<title>Einkaufszettel Tests</title> | |||||
<meta name="description" content=""> | |||||
<meta name="viewport" content="width=device-width, initial-scale=1"> | |||||
{{content-for "head"}} | |||||
{{content-for "test-head"}} | |||||
<link rel="stylesheet" href="{{rootURL}}assets/vendor.css"> | |||||
<link rel="stylesheet" href="{{rootURL}}assets/einkaufszettel.css"> | |||||
<link rel="stylesheet" href="{{rootURL}}assets/test-support.css"> | |||||
{{content-for "head-footer"}} | |||||
{{content-for "test-head-footer"}} | |||||
</head> | |||||
<body> | |||||
{{content-for "body"}} | |||||
{{content-for "test-body"}} | |||||
<script src="/testem.js" integrity=""></script> | |||||
<script src="{{rootURL}}assets/vendor.js"></script> | |||||
<script src="{{rootURL}}assets/test-support.js"></script> | |||||
<script src="{{rootURL}}assets/einkaufszettel.js"></script> | |||||
<script src="{{rootURL}}assets/tests.js"></script> | |||||
{{content-for "body-footer"}} | |||||
{{content-for "test-body-footer"}} | |||||
</body> | |||||
</html> |
import Application from '../app'; | |||||
import config from '../config/environment'; | |||||
import { setApplication } from '@ember/test-helpers'; | |||||
import { start } from 'ember-qunit'; | |||||
setApplication(Application.create(config.APP)); | |||||
start(); |