Permalink
Browse files

the initial version

  • Loading branch information...
0 parents commit 3f2cce012077bced39185888820034780278d2f7 @IgorMinar IgorMinar committed Dec 24, 2010
Showing with 29,648 additions and 0 deletions.
  1. +5 −0 .gitignore
  2. +146 −0 README.md
  3. 0 app/css/.gitignore
  4. +30 −0 app/css/app.css
  5. 0 app/img/.gitignore
  6. +21 −0 app/index.html
  7. +10 −0 app/js/controllers.js
  8. +1 −0 app/js/filters.js
  9. +21 −0 app/js/services.js
  10. +1 −0 app/js/widgets.js
  11. +32 −0 app/lib/angular/angular-ie-compat.js
  12. +8,690 −0 app/lib/angular/angular.js
  13. +106 −0 app/lib/angular/angular.min.js
  14. +1 −0 app/lib/angular/version.txt
  15. 0 app/partials/.gitignore
  16. +1 −0 app/partials/partial1.html
  17. +1 −0 app/partials/partial2.html
  18. +12 −0 jsTestDriver.conf
  19. +2 −0 logs/.gitignore
  20. +12 −0 scripts/test-server.sh
  21. +10 −0 scripts/test.sh
  22. +19 −0 scripts/watchr.rb
  23. +243 −0 scripts/web-server.js
  24. +10 −0 test/e2e/runner.html
  25. +41 −0 test/e2e/scenarios.js
  26. +303 −0 test/lib/angular/angular-mocks.js
  27. +16,805 −0 test/lib/angular/angular-scenario.js
  28. +2 −0 test/lib/angular/version.txt
  29. +111 −0 test/lib/jasmine-jstd-adapter/JasmineAdapter.js
  30. +1 −0 test/lib/jasmine-jstd-adapter/version.txt
  31. +20 −0 test/lib/jasmine/MIT.LICENSE
  32. +180 −0 test/lib/jasmine/index.js
  33. +188 −0 test/lib/jasmine/jasmine-html.js
  34. +166 −0 test/lib/jasmine/jasmine.css
  35. +2,421 −0 test/lib/jasmine/jasmine.js
  36. +2 −0 test/lib/jasmine/version.txt
  37. BIN test/lib/jstestdriver/JsTestDriver.jar
  38. +2 −0 test/lib/jstestdriver/version.txt
  39. +29 −0 test/unit/controllersSpec.js
  40. +1 −0 test/unit/filtersSpec.js
  41. +1 −0 test/unit/servicesSpec.js
  42. +1 −0 test/unit/widgetsSpec.js
@@ -0,0 +1,5 @@
+**/.DS_Store
+nbproject
+manifest.mf
+build.xml
+
146 README.md
@@ -0,0 +1,146 @@
+# angular-seed — the seed for <angular/> apps
+
+This project is an application skeleton for a typical [angular](http://angularjs.org/) web app. You
+can use it to quickly bootstrap your angular webapp projects and dev environment for these projects.
+
+The seed contains angular libraries, test libraries and a bunch of scripts all preconfigured for
+instant web development gratification. Just clone the repo (or download the zip/tarball), start up
+our (or yours) webserver and you are ready to develop and test your application.
+
+The seed app doesn't do much, just shows how to wire two controllers and views together. You can
+check it out by opening app/index.html in your browser (might not work file `file://` scheme in
+certain browsers, see note below).
+
+_Note: While angular is client-side-only technology and it's possible to create angular webapps that
+don't require a backend server at all, we recommend hosting the project files using a local
+webserver during development to avoid issues with security restrictions (sandbox) in browsers. The
+sandbox implementation varies between browsers, but quite often prevents things like cookies, xhr,
+etc to function properly when an html page is opened via `file://` scheme instead of `http://`._
+
+
+## How to use angular-seed
+
+Clone the angular-seed repository and start hacking...
+
+
+### Running the app during development
+
+You can pick one of these options:
+
+* serve this repository with your webserver
+* install node.js and run `scripts/web-server.js`
+
+Then navigate your browser to `http://localhost:<port>/app/index.html` to see the app running in
+your browser.
+
+
+### Running the app in production
+
+This really depends on how complex is your app and the overall infrastructure of your system, but
+the general rule is that all you need in production are all the files under the `app/` directory.
+Everything else should be omitted.
+
+angular apps are really just a bunch of static html, css and js files that just need to be hosted
+somewhere, where they can be accessed by browsers.
+
+If your angular app is talking to the backend server via xhr or other means, you need to figure
+out what is the best way to host the static files to comply with the same origin policy if
+applicable. Usually this is done by hosting the files by the backend server or through
+reverse-proxying the backend server(s) and a webserver(s).
+
+
+### Running unit tests
+
+We recommend using [jasmine](http://pivotal.github.com/jasmine/) and
+[JsTestDriver](http://code.google.com/p/js-test-driver/) for your unit tests/specs, but you are free
+to use whatever works for you.
+
+Requires java and a local or remote browser.
+
+* start `scripts/test-server.sh`
+* navigate your browser to `http://localhost:9876/`
+* click on one of the capture links (preferably the "strict" one)
+* run `scripts/test.sh`
+
+
+### Continuous unit testing
+
+Requires ruby and [watchr](https://github.com/mynyml/watchr) gem.
+
+* start JSTD server and capture a browser as described above
+* start watchr as `watchr scripts/watchr.rb`
+* in a different window/tab/editor `tail -f logs/jstd.log`
+* edit files in `app/` or `src/` and save them
+* watch the log to see updates
+
+There are many other ways to achieve the same effect. Feel free to use them if you prefer them over
+watchr.
+
+
+### End to end testing
+
+angular ships with a baked-in end-to-end test runner that understands angular, your app and allows
+you to write your tests with jasmine-like BDD syntax.
+
+Requires a webserver, node.js or your backend server that hosts the angular static files.
+
+* create your end-to-end tests in `test/e2e/scenarios.js`
+* serve your project directory with your http/backend server or node.js + `scripts/web-server.js`
+* open `http://localhost:port/test/e2e/runner.html` in your browser
+
+
+### Receiving updates from upstream
+
+When we upgrade angular-seed's repo with newer angular or testing library code, you can just
+fetch the changes and merge them into your project with git.
+
+
+## Directory Layout
+
+ app/ --> all of the files to be used in production
+ css/ --> css files
+ app.css --> default stylesheet
+ img/ --> image files
+ js/ --> javascript files
+ controllers.js --> application controllers
+ filters.js --> custom angular filters
+ services.js --> custom angular services
+ widgets.js --> custom angular widgets
+ lib/ --> angular and 3rd party javascript libraries
+ angular/
+ angular.js --> the latest angular js
+ angular.min.js --> the latest minified angular js
+ angular-ie-compat.js --> angular patch for IE 6&7 compatibility
+ version.txt --> version number
+ partials/ --> angular view partials (partial html templates)
+ partial1.html
+ partial2.html
+
+ jsTestDriver.conf --> config file for JsTestDriver
+
+ logs/ --> JSTD and other logs go here (git-ignored)
+
+ scripts/ --> handy shell/js/ruby scripts
+ test-server.sh --> starts JSTD server
+ test.sh --> runs all unit tests
+ watchr.rb --> config script for continuous testing with watchr
+ web-server.js --> simple development webserver based on node.js
+
+ test/ --> test source files and libraries
+ e2e/ -->
+ runner.html --> end-to-end test runner (open in your browser to run)
+ scenarios.js --> end-to-end specs
+ lib/
+ angular/ --> angular testing libraries
+ angular-mocks.js --> mocks that replace certain angular services in tests
+ angular-scenario.js --> angular's scenario (end-to-end) test runner library
+ version.txt --> version file
+ jasmine/ --> Pivotal's Jasmine - an elegant BDD-style testing framework
+ jasmine-jstd-adapter/ --> bridge between JSTD and Jasmine
+ jstestdriver/ --> JSTD - JavaScript test runner
+ unit/ --> unit level specs/tests
+ controllersSpec.js --> specs for controllers
+
+## Contact
+
+For more information on angular please check out http://angularjs.org/
No changes.
@@ -0,0 +1,30 @@
+/* app css stylesheet */
+
+.menu {
+ list-style: none;
+ border-bottom: 0.1em solid black;
+ margin-bottom: 2em;
+ padding: 0 0 0.5em;
+}
+
+.menu:before {
+ content: "[";
+}
+
+.menu:after {
+ content: "]";
+}
+
+.menu > li {
+ display: inline;
+}
+
+.menu > li:before {
+ content: "|";
+ padding-right: 0.3em;
+}
+
+.menu > li:nth-child(1):before {
+ content: "";
+ padding: 0;
+}
No changes.
@@ -0,0 +1,21 @@
+<!doctype html>
+<html xmlns:ng="http://angularjs.org/">
+<head>
+ <title>my angular app</title>
+ <link rel="stylesheet" href="css/app.css"/>
+</head>
+<body style="display:none" ng:show="true">
+ <ul class="menu">
+ <li><a href="#/view1">view1</a></li>
+ <li><a href="#/view2">view2</a></li>
+ </ul>
+
+ <ng:include src="$route.current.template" scope="$route.current.scope"></ng:include>
+
+ <script src="lib/angular/angular.js" ng:autobind></script>
+ <script src="js/services.js"></script>
+ <script src="js/controllers.js"></script>
+ <script src="js/filters.js"></script>
+ <script src="js/widgets.js"></script>
+</body>
+</html>
@@ -0,0 +1,10 @@
+/* App Controllers */
+
+
+function MyCtrl1() {}
+MyCtrl1.$inject = [];
+
+
+function MyCtrl2() {
+}
+MyCtrl1.$inject = [];
@@ -0,0 +1 @@
+/* http://docs.angularjs.org/#!angular.filter */
@@ -0,0 +1,21 @@
+/* http://docs.angularjs.org/#!angular.service */
+
+/**
+ * App service which is responsible for the main configuration of the app.
+ */
+angular.service('myAngularApp', function($route, $location, $window) {
+
+ $route.when('/view1', {template: 'partials/partial1.html', controller: MyCtrl1});
+ $route.when('/view2', {template: 'partials/partial2.html', controller: MyCtrl2});
+
+ $route.onChange(function() {
+ if ($location.hash === '') {
+ $location.updateHash('/view1');
+ this.$eval();
+ } else {
+ $route.current.scope.params = $route.current.params;
+ $window.scrollTo(0,0);
+ }
+ });
+
+}, {$inject:['$route', '$location', '$window'], $creation: 'eager'});
@@ -0,0 +1 @@
+/* http://docs.angularjs.org/#!angular.widget */
@@ -0,0 +1,32 @@
+/*
+Content-Type: multipart/related; boundary="_"
+
+--_
+Content-Location:img0
+Content-Transfer-Encoding:base64
+
+R0lGODlhCwAXAKIAAMzMzO/v7/f39////////wAAAAAAAAAAACH5BAUUAAQALAAAAAALABcAAAMrSLoc/AG8FeUUIN+sGebWAnbKSJodqqlsOxJtqYooU9vvk+vcJIcTkg+QAAA7
+--_
+Content-Location:img1
+Content-Transfer-Encoding:base64
+
+R0lGODlhCwAXAKIAAMzMzO/v7/f39////////wAAAAAAAAAAACH5BAUUAAQALAAAAAALABcAAAMrCLTcoM29yN6k9socs91e5X3EyJloipYrO4ohTMqA0Fn2XVNswJe+H+SXAAA7
+--_
+Content-Location:img2
+Content-Transfer-Encoding:base64
+
+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
+--_--
+*/
+(function(){
+ var jsUri = document.location.href.replace(/\/[^/]+(#.*)?$/, '/') + document.getElementById('ng-ie-compat').src;
+ var css = '#ng-callout .ng-arrow-left{*background-image:url("mhtml:' + jsUri + '!img0")}#ng-callout .ng-arrow-right{*background-image:url("mhtml:' + jsUri + '!img1")}.ng-input-indicator-wait {*background-image:url("mhtml:' + jsUri + '!img2")}'
+ var s = document.createElement('style');
+ s.setAttribute('type', 'text/css');
+ if (s.styleSheet) {
+ s.styleSheet.cssText = css;
+ } else {
+ s.appendChild(document.createTextNode(css));
+ }
+ document.getElementsByTagName('head')[0].appendChild(s);
+})();
Oops, something went wrong.

0 comments on commit 3f2cce0

Please sign in to comment.