cleverstack / angular-seed Goto Github PK
View Code? Open in Web Editor NEWThe AngularJS based Modular Frontend for CleverStack, MEAN and so much more
Home Page: http://youtube.com/watch?v=-4ArURHExhQ
License: MIT License
The AngularJS based Modular Frontend for CleverStack, MEAN and so much more
Home Page: http://youtube.com/watch?v=-4ArURHExhQ
License: MIT License
I don't think we are going to need:
Into grunt
, for:
Have you guys thought about using ui-router instead of ngRoute?
It appears the Project does not work on Windows (though it may be a greater issue with node)
I have Windows 7 enterprise 64bit version. I attempted to run clever init myTestApp
and it did not complete for ~40 min so I Ctrl-C'ed the command
I then attempted to re-run it again, using --force to overwrite the existing app, but it failed on removing some directories.
I then opened Windows explorer to remove the directories, but it failed, saying "The source filename(s) are longer than what is supported by the system. Try moving to a location which has a shorter pathname".
Given that Windows blows, I am not sure what can be done here. I've worked around this problem with special Git options, but this isn't a git repo so I'm not sure how I'd use that to solve the problem here.
Anyway just thought I'd leave a note here about the problem in case you guys have any suggestions. I see you prominently displaying notes for "Windows Users" througout the docs, so hopefully I'm just missing something simple?
The htmlmin was failing for a while until I discovered a typo in one of the html files.
Had to track it down manually, which was painful and time consuming.
As an alternative look into htmlcompressor.
Currently when I run
setup to install NPM & Bower packages for each module and adds modules to bundleDependencies
Something changes in the "components" directory structure of jQuery - that screws up the path ref in main.js which does not change in the :9000 site to reflect the directory change.
before setup - after clean install path is jquery: '../components/jquery/jquery',
after setup - the path is jquery: '../components/jquery/dist/jquery',
We need proper documentation for:
The current protractor version (0.10.0) in the package.json file causes the end to end tests to fail. When changed to 0.24.2 it works again. Submitting a pull request now.
Hi quick question, i noticed performance tests under the backend tests directory. Where do i find documentation on how to run them and what are they measuring ?
Kind regards
B
Hello,
Im new to CleverStack and Angular. Tried installing the CleverStack CLI successfully and then tried running the server by extracting the Angular-Seed. But unfortunately im getting the following error. Can you please advise and let me know what am i missing here.
Clever Serve
events.js:72
throw er; // Unhandled 'error' event
^
Error: spawn ENOENT
at errnoException (child_process.js:988:11)
at Process.ChildProcess._handle.onexit (child_process.js:779:34)
Thanks,
Karthik Kornalies
I was thinking in something along this lines:
define(['angular'], function (angular) {
'use strict';
var services = angular.module('ngSeed.services');
/**
* @ngdoc service
* @name $auth
* @description
* Dead-easy auth checking.
*
* Please note that custom login requiring logic, on-location-change auth
* checking, and default login success behaviour can be overwriten with a decorator.
*
* In the next example we replace the handleLoginStart function
* with one that opens a login-modal instead of redirecting
* to a login page, and handleLoginSuccess with one that closes it.
*
* ```
* app.config(function($provide){
* $provide.decorator('$auth', function ($delegate) {
* $delegate.handleLoginStart = function() {
* $('#login-modal').modal('open');
* };
* $delegate.handleLoginFinish = function() {
* $('#login-modal').modal('close');
* };
* return $delegate;
* });
* });
*/
app.factory('$auth', [
'$rootScope', '$location'
function ($rootScope, $location) {
/**
* @name currentUser
* @type {Object}
* @description the logged in user or undefined
*/
var currentUser;
/**
* @description
* The actual service.
*/
return {
/**
* @name requireLogin
* @description
* Custom login requiring logic.
*/
handleLoginStart: function (redirect) {
console.log("$auth: redirecting to /login");
$location.path('/login');
$location.search({
redirect: encodeURIComponent(redirect)
});
return;
},
/**
* @name handleLocationChange
* @description
* This method takes a user navigating, does a quick auth check
* and if everything is alright proceeds. Otherwise,
*/
handleLocationChange: function (event, next, current) {
if(!$route.current) {
console.log("$auth: Welcome newcomer!");
}
if($auth.isLoggedIn()){
next = '/'+next.split('/').splice(3).join('/').split("?")[0];
var route = $route.routes[next];
console.log("$auth: Guest access to", next);
console.log("$auth:", next, "is", route.public ? "public" : "private");
if(!route.public) {
this.handleLoginStart(next.substr(1));
}
console.log("$auth: proceeding to load", next);
}
},
/**
* @name handleLoginSuccess
* @description
* This method redirects the user to the redirect search term if
* it exists.
*/
handleLoginSuccess: function () {
if($location.search().redirect) {
console.log("$auth: redirecting to", $location.search().redirect);
$location.path($location.search().redirect);
}
},
/**
* @name getCurrentUser
* @return {Object} the current user
*/
getCurrentUser: function () {
return currentUser;
},
/**
* @name isLoggedIn
* @return {Boolean} true or false if there is or not a current user
*/
isLoggedIn: function () {
return !!currentUser;
},
/**
* @name login
* @param {Object} credentials the credentials to be passed to the login service
* @return {Promise} the promise your login service returns on login
* @description
* This methods can, are meant to and should be *decorated* not to have to pass in
* the UserService on every call.
*/
login: function (UserService, credentials) {
$rootScope.$emit('$auth:loginStart');
return UserService.login(credentials).then(function (res) {
if(res.status) {
currentUser = res.user;
$rootScope.$emit('$auth:loginSuccess');
} else {
$rootScope.$emit('$auth:loginFailure');
}
});
},
/**
* @name logout
* @return {Promise} the promise your login service returns on logout
* @description
* This methods can, are meant to and should be *decorated* not to have to pass in
* the UserService on every call.
*/
logout: function (UserService) {
$rootScope.$emit('$auth:logoutStart');
return UserService.logout().then(function (res) {
if(res.status) {
$rootScope.$emit('$auth:logoutSuccess');
currentUser = undefined;
} else {
$rootScope.$emit('$auth:logoutFailure');
}
});
}
}
}
]);
app.config(['$httpProvider', function ($httpProvider) {
}]);
app.run(['$rootScope', '$location', '$route', '$auth'
, function ($rootScope, $location, $route, $auth) {
/**
* @description
* Verifies user authorization before allowing any navigation.
*/
$rootScope.$on('$locationChangeStart', function (event, next, current) {
if(typeof $auth.handleLocationChange === 'function') {
$auth.handleLocationChange(event, next, current);
}
});
/**
* @description
* If there is a redirection route set, navigate there.
*/
$rootScope.$on('$auth:loginSuccess', function() {
if(typeof $auth.handleLoginSuccess === 'function') {
$auth.handleLoginSuccess();
}
});
}]);
});
This would be a completely centralized, generic auth system that checks by default on location change start if the user is logged in and redirects him to the login page, and after the user gets logged in, redirects him back to the page he was trying to access.
In the case it was a modal window instead of a page, as it is right now a decorator should be used to alter the behaviour of the handlers.
What I see is definitely bad about this pattern is that someone could listen to the events and hooking up their own functionality without changing the decorators (easy-to-get weird behaviour), not everyone is familiar with the decorator pattern (easy-to-get whole auth broken), not easily configurable (would require the user to decorate a bunch of stuff or to dig deep into the $delegate).
Whereas using a provider it works just as any other provider ($httpProvider, for instance), it allows for easy configuration, if necessary things can be decorated as well.
Pull #74 breaks the grunt build. To reporduce:
$ git clone https://github.com/CleverStack/angular-seed.git
$ cd angular-seed
$ npm install && bower install
$ grunt
build will fail with:
Running "requirejs:compile" (requirejs) task
Error: ENOENT, no such file or directory '/Users/cbeck/projects/a6/camaro-admin/dist/components/jquery/dist/jquery.js'
In module tree:
main
{ [Error: Error: ENOENT, no such file or directory '/Users/cbeck/projects/a6/camaro-admin/dist/components/jquery/dist/jquery.js'
In module tree:
main
at Object.fs.openSync (fs.js:427:18)
]
originalError:
{ [Error: ENOENT, no such file or directory '/Users/cbeck/projects/a6/camaro-admin/dist/components/jquery/dist/jquery.js']
errno: 34,
code: 'ENOENT',
path: '/Users/cbeck/projects/a6/camaro-admin/dist/components/jquery/dist/jquery.js',
syscall: 'open',
fileName: '/Users/cbeck/projects/a6/camaro-admin/dist/components/jquery/dist/jquery.js',
moduleTree: [ 'main' ] } }
There is no dist
directory under app/components/jquery
$ tree -L 1 app/components/jquery
app/components/jquery
├── AUTHORS.txt
├── CONTRIBUTING.md
├── Gruntfile.js
├── MIT-LICENSE.txt
├── README.md
├── bower.json
├── build
├── component.json
├── composer.json
├── jquery-migrate.js
├── jquery-migrate.min.js
├── jquery.js
├── jquery.min.js
├── jquery.min.map
├── package.json
├── speed
├── src
└── test
Make a ng-authorized
directive that can be used to protect a view from an unauthorized/unauthenticated user. It should make available for the template the user data.
ng-authorized(options)
h3 Welcome {{user.name}}!
It'll take an options object (or an empty object, meaning that any user that is logged in will have acces to it) to help filter which sections are available to which users.
If the user has no access it would redirect him to a login url. This should be configurable somewhere, I'm thinking this should be part of the "SessionService". If we are going full RESTful, it should be AuthService and it should be part of the AuthService we already have in place that uses http interceptors.
This is just an idea, @pilsy, @simonwjackson if you have anything to add/say here please do.
While running karma start --auto-watch
, the "node" process that was created by it was constantly using around 50% of processor time (on 2.2 i7 processor).
This Karma issue (karma-runner/karma#389) explains that is because of the greedy file pattern on components folder.
After I changed the pattern from:
{ pattern: 'app/components/**/*.js', included: false, served: true },
to
{ pattern: 'app/components/**/*.js', included: false, served: true, watched: false },
the "node" process fell down to reasonable 2%.
With this change the developer will have to re-start the runner when components folder is changed, but that folder is not updated too often anyway.
I guess I could have sent a PR for this, but the change is too small for PR.
This is also a question because we want to support small to medium as well as medium to large applications it would make sense to provide examples of good folder structures.
For little apps it doesn't hurt to have drawers
for controllers, services and other resources, but for the big ones it is actually better to make separate modules out of each of those and have a common
module that is shared. That way the app code would actually make sense when you look at it as you'd have app/scripts/dashboard
and it'll have all the dashboard code, or app/scripts/messages
and it'll have all the messages module code.
Port over the loginRequired function, alongside with the event based looping.
They currently are usable, but we could throw in:
And older.
Apps should be able to be designed using small modules
that provide certain functionality. Like a polls module
, or a user module
. Some modules
will be common modules
, some will have very specific functionality. This layout comes to mind:
app
app/index.html
app/components
app/styles
#…more app related folders
# The scrips app, bootstrapping and such
app/scripts
# This is where the common stuff will be.
app/scripts/common
app/scripts/common/controllers
app/scripts/common/services
app/scripts/common/directives
app/scripts/common/filters
# A polls module
app/scripts/polls
app/scripts/polls/controllers
app/scripts/polls/services
app/scripts/polls/directives
app/scripts/polls/filters
# The users module
app/scripts/users
app/scripts/users/controllers
app/scripts/users/services
app/scripts/users/directives
app/scripts/users/filters
This way all the scripts are separated nicely. An even better approach in my opinion would be to have each module
include all it's necessary elements:
# Main files
app/index.html
app/bootstrap.js
# Main module
app/common/components
app/common/scripts/{controllers|services|directives|filters|config}
app/common/views/{partials}
app/common/styles/{less}
app/common/images
# Users module
app/users/components
app/users/scripts/{controllers|services|directives|filters|config}
app/users/views/{partials}
app/users/styles/{less}
app/users/images
This way adding a module to a project would be a matter of copy-paste and could even be easily automated when cleverstack-cli
is available. The build process would have to change, same as the bootstrapping. Perhaps this could be the chance to reconsider a leaner dependency management tool.
Any thoughts team? @danielyoung @pilsy @nailgun @simonwjackson
Should this be replaced by autounit?
Currently you get an EISDIR error when visiting :9090
Do you remember what happened here @danielyoung ? was this just a case of us not removing connect:unit from the gruntfile?
Hi guys,
Running OSX and tried running sudo npm install -g cleverstack-cli as per the instructions in the readme.
It comes back with:
npm http 404 https://registry.npmjs.org/cleverstack-cli
npm ERR! 404 'cleverstack-cli' is not in the npm registry.
npm ERR! 404 You should bug the author to publish it
It might be me, but it says to bug you so here I am!
Functional & Unit for Login/Logout + Signup
That way the following code can be used
section.ie(ng-browser-detect="ie<9")
span.error This browser is not supported. Please use a decent browser.
It should support:
chrome 27
)chrome >25
)webkit
)os x
, windows
, android
)And it should be able to define any of those separately or within an object:
section.ie(ng-browser-detect=" { name: 'chrome', version: '>25', os: 'os x' }")
span.error I'm sorry but we don't support Google Chrome 25 on Mac OS X
There is a one more prerequisite for setup cleverstack-angular-seed at the OS X: wget
should be installed before. It's nessesary for a downloading BrowserStackTunnel jar cli tool.
Please, fix the readme file.
Here are a few things that I've come across while getting started:
GET http://localhost:8080/user 401 (Unauthorized)
CSSessionProvider: using default loginStart method cs_session_provider.js:144
CSSessionProvider: using default loginSuccess method cs_session_provider.js:148
CSSessionProvider: using default locationChange method cs_session_provider.js:152
CSSessionProvider: Welcome newcomer! cs_session_provider.js:231
CSSessionProvider: Checking your session... cs_session_provider.js:232
GET http://localhost:8080/user/current 404 (Not Found) angular.js:7962
CSSessionProvider: request failed cs_session_provider.js:240
CSSessionProvider: proceeding as guest. cs_session_provider.js:241
CSSessionProvider: Guest access to /mymodule cs_session_provider.js:214
CSSessionProvider: /mymodule is public
Thanks!
Dan
Nomads-MacBook-Pro-2:cleverwalkingskeleton nomad$ clever test
Scanning folders for Gruntfiles...
Running "mochaTest:unit" (mochaTest) task
classes.Controller
.listAction()
✓ should call .send() with all Model instances
.getAction()
✓ should call .send() with Model instance by id
.postAction()
✓ should create new Model instance
✓ should call .send() with new Model instance
.putAction()
✓ should update Model instance by id
✓ should call .send() with updated Model instance
.deleteAction()
null
✓ should delete Model instance by id
service.BaseService
.setup(dbAdapter)
✓ should set .db to dbAdapter
.startTransaction()
✓ should call .db.startTransaction()
.query(sql)
Running SQL: test
✓ should call .db.query() with valid arguments
.findById(id)
✓ should find Model instance by id
.create(data)
✓ should create new Model instance with data
.findAll(options)
✓ should return all Model instances
.find(options)
✓ should return Model instances filtered by query options
.update(id, data)
✓ should update Model instance by id with data
.destroy(id)
✓ should mark Model instance as deleted by id
utils
.stacktrace()
✓ should return array
✓ should return stack stace beginning at current function
✓ should contain function names and filepaths
19 passing (687ms)
Running "mochaTest:e2e" (mochaTest) task
No files to check...OK
Done, without errors.
Running "karma:unit" (karma) task
INFO [karma]: Karma v0.10.10 server started at http://localhost:9090/
INFO [launcher]: Starting browser Chrome
INFO [launcher]: Starting browser PhantomJS
INFO [PhantomJS 1.9.7 (Mac OS X)]: Connected on socket 5p0hqBxWl3UJICLsLg1X
INFO [Chrome 35.0.1916 (Mac OS X 10.9.3)]: Connected on socket _PlJ_0yof8mGVwJiLg1Y
WARN [web-server]: 404: /base/app/modules/moduleone.js
WARN [web-server]: 404: /base/app/modules/moduletwo.js
Chrome 35.0.1916 (Mac OS X 10.9.3) ERROR: 'There is no timestamp for /base/app/modules/moduleone.js!'
Chrome 35.0.1916 (Mac OS X 10.9.3) ERROR: 'There is no timestamp for /base/app/modules/moduletwo.js!'
Chrome 35.0.1916 (Mac OS X 10.9.3) ERROR: 'There is no timestamp for /base/app/modules/modulethree.js!'
PhantomJS 1.9.7 (Mac OS X) ERROR: 'There is no timestamp for /base/app/modules/moduleone.js!'
PhantomJS 1.9.7 (Mac OS X) ERROR: 'There is no timestamp for /base/app/modules/moduletwo.js!'
PhantomJS 1.9.7 (Mac OS X) ERROR: 'There is no timestamp for /base/app/modules/modulethree.js!'
PhantomJS 1.9.7 (Mac OS X) ERROR
Error: Script error for: moduleone
http://requirejs.org/docs/errors.html#scripterror
at /Users/nomad/Projects/cleverwalkingskeleton/frontend/node_modules/requirejs/require.js:141
PhantomJS 1.9.7 (Mac OS X) ERROR
Error: Script error for: moduletwo
http://requirejs.org/docs/errors.html#scripterror
at /Users/nomad/Projects/cleverwalkingskeleton/frontend/node_modules/requirejs/require.js:141
PhantomJS 1.9.7 (Mac OS X): Executed 0 of 0 ERROR (0 secs / 0 secs)
PhantomJS 1.9.7 (Mac OS X): Executed 0 of 0 ERROR (0.119 secs / 0 secs)
Chrome 35.0.1916 (Mac OS X 10.9.3): Executed 0 of 0 SUCCESS (0 secs / 0 secs)
WARN [web-server]: 404: /base/app/modules/moduleone.js
Chrome 35.0.1916 (Mac OS X 10.9.3) ERROR
Uncaught Error: Script error for: moduleone
http://requirejs.org/docs/errors.html#scripterror
at /Users/nomad/Projects/cleverwalkingskeleton/frontend/node_modules/requirejs/require.js:141
Chrome 35.0.1916 (Mac OS X 10.9.3) ERROR
Uncaught Error: Script error for: moduletwo
http://requirejs.org/docs/errors.html#scripterror
at /Users/nomad/Projects/cleverwalkingskeleton/frontend/node_modules/requirejs/require.js:141
Chrome 35.0.1916 (Mac OS X 10.9.3) ERROR
Uncaught Error: Script error for: modulethree
http://requirejs.org/docs/errors.html#scripterror
at /Users/nomad/Projects/cleverwalkingskeleton/frontend/node_modules/requirejs/require.js:141
PhantomJS 1.9.7 (Mac OS X): Executed 0 of 0 ERROR (0.119 secs / 0 secs)
Chrome 35.0.1916 (Mac OS X 10.9.3): Executed 0 of 0 ERROR (0.144 secs / 0 secs)
Warning: Task "karma:unit" failed. Used --force, continuing.
Done, but with warnings.
Execution Time (2014-05-28 04:54:34 UTC)
loading tasks 699ms ▇▇▇▇▇▇▇▇▇▇▇▇▇▇▇▇▇▇▇▇▇▇▇▇▇ 23%
karma:unit 2.4s ▇▇▇▇▇▇▇▇▇▇▇▇▇▇▇▇▇▇▇▇▇▇▇▇▇▇▇▇▇▇▇▇▇▇▇▇▇▇▇▇▇▇▇▇▇▇▇▇▇▇▇▇▇▇▇▇▇▇▇▇▇▇▇▇▇▇▇▇▇▇▇▇▇▇▇▇▇▇▇▇▇▇▇ 77%
Total 3.1s
Tests ran successfully.
Nomads-MacBook-Pro-2:cleverwalkingskeleton nomad$ clever test
Scanning folders for Gruntfiles...
Running "mochaTest:unit" (mochaTest) task
classes.Controller
.listAction()
✓ should call .send() with all Model instances
.getAction()
✓ should call .send() with Model instance by id
.postAction()
✓ should create new Model instance
✓ should call .send() with new Model instance
.putAction()
✓ should update Model instance by id
✓ should call .send() with updated Model instance
.deleteAction()
null
✓ should delete Model instance by id
service.BaseService
.setup(dbAdapter)
✓ should set .db to dbAdapter
.startTransaction()
✓ should call .db.startTransaction()
.query(sql)
Running SQL: test
✓ should call .db.query() with valid arguments
.findById(id)
✓ should find Model instance by id
.create(data)
✓ should create new Model instance with data
.findAll(options)
✓ should return all Model instances
.find(options)
✓ should return Model instances filtered by query options
.update(id, data)
✓ should update Model instance by id with data
.destroy(id)
✓ should mark Model instance as deleted by id
utils
.stacktrace()
✓ should return array
✓ should return stack stace beginning at current function
✓ should contain function names and filepaths
19 passing (688ms)
Running "mochaTest:e2e" (mochaTest) task
No files to check...OK
Done, without errors.
Running "karma:unit" (karma) task
INFO [karma]: Karma v0.10.10 server started at http://localhost:9090/
INFO [launcher]: Starting browser Chrome
INFO [launcher]: Starting browser PhantomJS
INFO [PhantomJS 1.9.7 (Mac OS X)]: Connected on socket HSVl7W_kbtxB3e-ULmgW
INFO [Chrome 35.0.1916 (Mac OS X 10.9.3)]: Connected on socket 4QlxFM-tl9s2WgUmLmgX
PhantomJS 1.9.7 (Mac OS X) ERROR: 'There is no timestamp for /base/app/modules/moduleone.js!'
PhantomJS 1.9.7 (Mac OS X) ERROR: 'There is no timestamp for /base/app/modules/moduletwo.js!'
PhantomJS 1.9.7 (Mac OS X) ERROR: 'There is no timestamp for /base/app/modules/modulethree.js!'
PhantomJS 1.9.7 (Mac OS X): Executed 0 of 0 SUCCESS (0 secs / 0 secs)
Chrome 35.0.1916 (Mac OS X 10.9.3): Executed 0 of 0 SUCCESS (0 secs / 0 secs)
WARN [web-server]: 404: /base/app/modules/moduleone.js
PhantomJS 1.9.7 (Mac OS X) ERROR
Error: Script error for: moduleone
http://requirejs.org/docs/errors.html#scripterror
at /Users/nomad/Projects/cleverwalkingskeleton/frontend/node_modules/requirejs/require.js:141
PhantomJS 1.9.7 (Mac OS X) ERROR
Error: Script error for: moduletwo
http://requirejs.org/docs/errors.html#scripterror
at /Users/nomad/Projects/cleverwalkingskeleton/frontend/node_modules/requirejs/require.js:141
PhantomJS 1.9.7 (Mac OS X) ERROR
Error: Script error for: modulethree
http://requirejs.org/docs/errors.html#scripterror
at /Users/nomad/Projects/cleverwalkingskeleton/frontend/node_modules/requirejs/require.js:141
Chrome 35.0.1916 (Mac OS X 10.9.3) ERROR: 'There is no timestamp for /base/app/modules/moduleone.js!'
Chrome 35.0.1916 (Mac OS X 10.9.3) ERROR: 'There is no timestamp for /base/app/modules/moduletwo.js!'
Chrome 35.0.1916 (Mac OS X 10.9.3) ERROR: 'There is no timestamp for /base/app/modules/modulethree.js!'
PhantomJS 1.9.7 (Mac OS X): Executed 0 of 0 ERROR (0.098 secs / 0 secs)
Chrome 35.0.1916 (Mac OS X 10.9.3): Executed 0 of 0 SUCCESS (0 secs / 0 secs)
WARN [web-server]: 404: /base/app/modules/moduleone.js
Chrome 35.0.1916 (Mac OS X 10.9.3) ERROR
Uncaught Error: Script error for: moduleone
http://requirejs.org/docs/errors.html#scripterror
at /Users/nomad/Projects/cleverwalkingskeleton/frontend/node_modules/requirejs/require.js:141
Chrome 35.0.1916 (Mac OS X 10.9.3) ERROR
Uncaught Error: Script error for: moduletwo
http://requirejs.org/docs/errors.html#scripterror
at /Users/nomad/Projects/cleverwalkingskeleton/frontend/node_modules/requirejs/require.js:141
Chrome 35.0.1916 (Mac OS X 10.9.3) ERROR
Uncaught Error: Script error for: modulethree
http://requirejs.org/docs/errors.html#scripterror
at /Users/nomad/Projects/cleverwalkingskeleton/frontend/node_modules/requirejs/require.js:141
PhantomJS 1.9.7 (Mac OS X): Executed 0 of 0 ERROR (0.098 secs / 0 secs)
Chrome 35.0.1916 (Mac OS X 10.9.3): Executed 0 of 0 ERROR (0.157 secs / 0 secs)
Warning: Task "karma:unit" failed. Used --force, continuing.
Done, but with warnings.
Execution Time (2014-05-28 04:54:57 UTC)
loading tasks 711ms ▇▇▇▇▇▇▇▇▇▇▇▇▇▇▇▇▇▇▇▇▇▇▇▇▇ 23%
karma:unit 2.4s ▇▇▇▇▇▇▇▇▇▇▇▇▇▇▇▇▇▇▇▇▇▇▇▇▇▇▇▇▇▇▇▇▇▇▇▇▇▇▇▇▇▇▇▇▇▇▇▇▇▇▇▇▇▇▇▇▇▇▇▇▇▇▇▇▇▇▇▇▇▇▇▇▇▇▇▇▇▇▇▇▇▇▇ 77%
Total 3.1s
Tests ran successfully.
Nomads-MacBook-Pro-2:cleverwalkingskeleton nomad$ clever test e2e
Scanning folders for Gruntfiles...
Running "mochaTest:e2e" (mochaTest) task
No files to check...OK
Done, without errors.
Running "connect:livereload" (connect) task
Started connect web server on 127.0.0.1:9000.
Running "protractor:singlerun" (protractor) task
Using the selenium server at http://localhost:4444/wd/hub
[launcher] Running 1 instances of WebDriver[launcher] chrome passed
Test failed but keep the grunt process alive.
Done, without errors.
Execution Time (2014-05-28 04:55:13 UTC)
loading tasks 696ms ▇▇▇▇▇▇▇▇▇▇▇▇▇▇▇▇▇▇▇▇▇▇▇▇▇▇▇▇ 27%
protractor:singlerun 1.9s ▇▇▇▇▇▇▇▇▇▇▇▇▇▇▇▇▇▇▇▇▇▇▇▇▇▇▇▇▇▇▇▇▇▇▇▇▇▇▇▇▇▇▇▇▇▇▇▇▇▇▇▇▇▇▇▇▇▇▇▇▇▇▇▇▇▇▇▇▇▇▇▇▇ 72%
Total 2.6s
Tests ran successfully.
Nomads-MacBook-Pro-2:cleverwalkingskeleton nomad$
Something like
$ npm install
$ bower install
$ grunt
would help a lot for total nodejs newbies
Thanks
Gruntfile.js needs a fix for nested templates that doesn't enter the app/components folder so we don't have to keep adding ///* to our gruntfile every time something new nests... also affects images and other assets.
After init'ing a fresh project and running clever serve, trying to register or login a user causes chrome to spit out the following CORS error. Thanks for taking a look.
OPTIONS http://localhost:8080/user Request header field X-XSRF-TOKEN is not allowed by Access-Control-Allow-Headers. angular.js:7962
XMLHttpRequest cannot load http://localhost:8080/user. Request header field X-XSRF-TOKEN is not allowed by Access-Control-Allow-Headers. register:1
Add grunt
task to build the docs and see them live as in:
# Rebuilds the docs
grunt docs
# Serve the docs
grunt docs:server
The dist/styles/*.main.css file is uncompressed and could lead to a heafty download
I just try to use CleverStack but when i try http://localhost:9000/
Resource interpreted as Stylesheet but transferred with MIME type text/html: "http://localhost:9000/components/fontawesome/css/font-awesome.css".
localhost/:19 Resource interpreted as Stylesheet but transferred with MIME type text/html: "http://localhost:9000/components/angular-ui/build/angular-ui.css".
localhost/:20 Resource interpreted as Stylesheet but transferred with MIME type text/html: "http://localhost:9000/components/ng-table/ng-table.min.css".
localhost/:22 Resource interpreted as Stylesheet but transferred with MIME type text/html: "http://localhost:9000/components/jquery-minicolors/jquery.minicolors.css".
localhost/:23 Resource interpreted as Stylesheet but transferred with MIME type text/html: "http://localhost:9000/components/select2/select2.css".
localhost/:24 Resource interpreted as Stylesheet but transferred with MIME type text/html: "http://localhost:9000/components/select2/select2-bootstrap.css".
pace.min.js:1 Uncaught SyntaxError: Unexpected token <
localhost/:28 Resource interpreted as Script but transferred with MIME type text/html: "http://localhost:9000/components/pace/pace.min.js".
localhost/:50 Resource interpreted as Script but transferred with MIME type text/html: "http://localhost:9000/components/requirejs/require.js".
require.js:1 Uncaught SyntaxError: Unexpected token <
(index):72 GET http://localhost:35729/livereload.js?snipver=1 net::ERR_CONNECTION_REFUSED(anonymous function) @ (index):72
The fallbackToIndex
middleware should throw 404's if it's a file it's looking for and it's non-existant.
The fact that it fallbacks to index even on 404's for files (that have an extension) makes it load the index again, which bootstraps angular, which loads that same file that should be a 404 but loads the index again, which bootstraps angular, which loads that same file that….and on and on and on.
So yeah, this has to be fixed.
A declarative, efficient, and flexible JavaScript library for building user interfaces.
🖖 Vue.js is a progressive, incrementally-adoptable JavaScript framework for building UI on the web.
TypeScript is a superset of JavaScript that compiles to clean JavaScript output.
An Open Source Machine Learning Framework for Everyone
The Web framework for perfectionists with deadlines.
A PHP framework for web artisans
Bring data to life with SVG, Canvas and HTML. 📊📈🎉
JavaScript (JS) is a lightweight interpreted programming language with first-class functions.
Some thing interesting about web. New door for the world.
A server is a program made to process requests and deliver data to clients.
Machine learning is a way of modeling and interpreting data that allows a piece of software to respond intelligently.
Some thing interesting about visualization, use data art
Some thing interesting about game, make everyone happy.
We are working to build community through open source technology. NB: members must have two-factor auth.
Open source projects and samples from Microsoft.
Google ❤️ Open Source for everyone.
Alibaba Open Source for everyone
Data-Driven Documents codes.
China tencent open source team.