ui: update ember, dist steps
This commit is contained in:
parent
767cdaa168
commit
098928baa0
|
@ -0,0 +1,6 @@
|
|||
# A sample Gemfile
|
||||
source "https://rubygems.org"
|
||||
|
||||
gem "uglifier"
|
||||
gem "sass"
|
||||
gem "therubyracer"
|
|
@ -0,0 +1,22 @@
|
|||
GEM
|
||||
remote: https://rubygems.org/
|
||||
specs:
|
||||
execjs (2.0.2)
|
||||
json (1.8.1)
|
||||
libv8 (3.16.14.3)
|
||||
ref (1.0.5)
|
||||
sass (3.3.6)
|
||||
therubyracer (0.12.1)
|
||||
libv8 (~> 3.16.14.0)
|
||||
ref
|
||||
uglifier (2.5.0)
|
||||
execjs (>= 0.3.0)
|
||||
json (>= 1.8.0)
|
||||
|
||||
PLATFORMS
|
||||
ruby
|
||||
|
||||
DEPENDENCIES
|
||||
sass
|
||||
therubyracer
|
||||
uglifier
|
10
ui/Makefile
10
ui/Makefile
|
@ -4,7 +4,11 @@ server:
|
|||
watch:
|
||||
sass styles:static --watch
|
||||
|
||||
build:
|
||||
sass styles/base.scss static/base.css
|
||||
dist:
|
||||
@echo "compile styles/*.scss"
|
||||
@sass styles/base.scss static/base.css
|
||||
@ruby scripts/compile.rb
|
||||
cp -R ./static dist/static
|
||||
cp index.html dist/
|
||||
|
||||
.PHONY: server watch build
|
||||
.PHONY: server watch dist
|
||||
|
|
17
ui/README.md
17
ui/README.md
|
@ -25,14 +25,11 @@ performance and usability.
|
|||
|
||||
Improvements and bug fixes are welcome and encouraged for the Web UI.
|
||||
|
||||
The UI is built with SASS CSS, so you'll need to compile that through
|
||||
the associated makefile, as well as installing the `sass` gem.
|
||||
You'll need sass to compile CSS stylesheets. Install that with
|
||||
bundler:
|
||||
|
||||
gem install sass
|
||||
|
||||
One-time stylesheet compilation:
|
||||
|
||||
make build
|
||||
cd ui/
|
||||
bundle
|
||||
|
||||
Reloading compilation for development:
|
||||
|
||||
|
@ -47,3 +44,9 @@ An example of this command, from inside the `ui/` directory, would be:
|
|||
|
||||
consul agent -bootstrap -server -data-dir /tmp/ -ui-dir .
|
||||
|
||||
|
||||
### Releasing
|
||||
|
||||
These steps are slightly manual at the moment.
|
||||
|
||||
1. Build with `make dist`
|
||||
|
|
|
@ -403,7 +403,7 @@
|
|||
|
||||
<script src="javascripts/libs/jquery-1.10.2.js"></script>
|
||||
<script src="javascripts/libs/handlebars-1.1.2.js"></script>
|
||||
<script src="javascripts/libs/ember-1.5.0.js"></script>
|
||||
<script src="javascripts/libs/ember-1.5.1.js"></script>
|
||||
<script src="javascripts/libs/ember-validations.js"></script>
|
||||
<script src="javascripts/fixtures.js"></script>
|
||||
<script src="javascripts/app/router.js"></script>
|
||||
|
@ -411,7 +411,6 @@
|
|||
<script src="javascripts/app/models.js"></script>
|
||||
<script src="javascripts/app/views.js"></script>
|
||||
<script src="javascripts/app/controllers.js"></script>
|
||||
|
||||
<!-- to activate the test runner, add the "?test" query string parameter -->
|
||||
<script src="tests/runner.js"></script>
|
||||
</body>
|
||||
|
|
|
@ -5,7 +5,7 @@
|
|||
* Portions Copyright 2008-2011 Apple Inc. All rights reserved.
|
||||
* @license Licensed under MIT license
|
||||
* See https://raw.github.com/emberjs/ember.js/master/LICENSE
|
||||
* @version 1.5.0
|
||||
* @version 1.5.1
|
||||
*/
|
||||
|
||||
|
||||
|
@ -227,7 +227,7 @@ if (!Ember.testing) {
|
|||
* Portions Copyright 2008-2011 Apple Inc. All rights reserved.
|
||||
* @license Licensed under MIT license
|
||||
* See https://raw.github.com/emberjs/ember.js/master/LICENSE
|
||||
* @version 1.5.0
|
||||
* @version 1.5.1
|
||||
*/
|
||||
|
||||
|
||||
|
@ -310,7 +310,7 @@ var define, requireModule, require, requirejs;
|
|||
|
||||
@class Ember
|
||||
@static
|
||||
@version 1.5.0
|
||||
@version 1.5.1
|
||||
*/
|
||||
|
||||
if ('undefined' === typeof Ember) {
|
||||
|
@ -337,10 +337,10 @@ Ember.toString = function() { return "Ember"; };
|
|||
/**
|
||||
@property VERSION
|
||||
@type String
|
||||
@default '1.5.0'
|
||||
@default '1.5.1'
|
||||
@static
|
||||
*/
|
||||
Ember.VERSION = '1.5.0';
|
||||
Ember.VERSION = '1.5.1';
|
||||
|
||||
/**
|
||||
Standard environmental variables. You can define these in a global `EmberENV`
|
||||
|
@ -10704,7 +10704,7 @@ define("rsvp",
|
|||
})();
|
||||
|
||||
(function() {
|
||||
define("container/container",
|
||||
define("container/container",
|
||||
["container/inheriting_dict","exports"],
|
||||
function(__dependency1__, __exports__) {
|
||||
"use strict";
|
||||
|
@ -11516,7 +11516,7 @@ define("container/container",
|
|||
|
||||
__exports__["default"] = Container;
|
||||
});
|
||||
define("container/inheriting_dict",
|
||||
define("container/inheriting_dict",
|
||||
["exports"],
|
||||
function(__exports__) {
|
||||
"use strict";
|
||||
|
@ -11630,7 +11630,7 @@ define("container/inheriting_dict",
|
|||
|
||||
__exports__["default"] = InheritingDict;
|
||||
});
|
||||
define("container",
|
||||
define("container",
|
||||
["container/container","exports"],
|
||||
function(__dependency1__, __exports__) {
|
||||
"use strict";
|
||||
|
@ -15872,10 +15872,11 @@ function ReduceComputedProperty(options) {
|
|||
this.cacheable();
|
||||
|
||||
this.recomputeOnce = function(propertyName) {
|
||||
// TODO: Coalesce recomputation by <this, propertyName, cp>.
|
||||
recompute.call(this, propertyName);
|
||||
// What we really want to do is coalesce by <cp, propertyName>.
|
||||
// We need a form of `scheduleOnce` that accepts an arbitrary token to
|
||||
// coalesce by, in addition to the target and method.
|
||||
Ember.run.once(this, recompute, propertyName);
|
||||
};
|
||||
|
||||
var recompute = function(propertyName) {
|
||||
var dependentKeys = cp._dependentKeys,
|
||||
meta = cp._instanceMeta(this, propertyName),
|
||||
|
@ -34955,6 +34956,15 @@ Ember.Router = Ember.Object.extend(Ember.Evented, {
|
|||
*/
|
||||
location: 'hash',
|
||||
|
||||
/**
|
||||
Represents the URL of the root of the application, often '/'. This prefix is
|
||||
assumed on all routes defined on this router.
|
||||
|
||||
@property rootURL
|
||||
@default '/'
|
||||
*/
|
||||
rootURL: '/',
|
||||
|
||||
init: function() {
|
||||
this.router = this.constructor.router || this.constructor.map(Ember.K);
|
||||
this._activeViews = {};
|
||||
|
@ -35134,6 +35144,10 @@ Ember.Router = Ember.Object.extend(Ember.Evented, {
|
|||
var location = get(this, 'location'),
|
||||
rootURL = get(this, 'rootURL');
|
||||
|
||||
if (rootURL && !this.container.has('-location-setting:root-url')) {
|
||||
this.container.register('-location-setting:root-url', rootURL, { instantiate: false });
|
||||
}
|
||||
|
||||
if ('string' === typeof location && this.container) {
|
||||
var resolvedLocation = this.container.lookup('location:' + location);
|
||||
|
||||
|
@ -35147,7 +35161,7 @@ Ember.Router = Ember.Object.extend(Ember.Evented, {
|
|||
}
|
||||
}
|
||||
|
||||
if (typeof rootURL === 'string') {
|
||||
if (rootURL && typeof rootURL === 'string') {
|
||||
location.rootURL = rootURL;
|
||||
}
|
||||
|
||||
|
@ -39239,6 +39253,7 @@ Ember.Location = {
|
|||
},
|
||||
|
||||
implementations: {},
|
||||
_location: window.location,
|
||||
|
||||
/**
|
||||
Returns the current `location.hash` by parsing location.href since browsers
|
||||
|
@ -39249,8 +39264,10 @@ Ember.Location = {
|
|||
@private
|
||||
@method getHash
|
||||
*/
|
||||
getHash: function () {
|
||||
var href = window.location.href,
|
||||
_getHash: function () {
|
||||
// AutoLocation has it at _location, HashLocation at .location.
|
||||
// Being nice and not changing
|
||||
var href = (this._location || this.location).href,
|
||||
hashIndex = href.indexOf('#');
|
||||
|
||||
if (hashIndex === -1) {
|
||||
|
@ -39365,8 +39382,7 @@ Ember.NoneLocation = Ember.Object.extend({
|
|||
@submodule ember-routing
|
||||
*/
|
||||
|
||||
var get = Ember.get, set = Ember.set,
|
||||
getHash = Ember.Location.getHash;
|
||||
var get = Ember.get, set = Ember.set;
|
||||
|
||||
/**
|
||||
`Ember.HashLocation` implements the location API using the browser's
|
||||
|
@ -39381,9 +39397,18 @@ Ember.HashLocation = Ember.Object.extend({
|
|||
implementation: 'hash',
|
||||
|
||||
init: function() {
|
||||
set(this, 'location', get(this, 'location') || window.location);
|
||||
set(this, 'location', get(this, '_location') || window.location);
|
||||
},
|
||||
|
||||
/**
|
||||
@private
|
||||
|
||||
Returns normalized location.hash
|
||||
|
||||
@method getHash
|
||||
*/
|
||||
getHash: Ember.Location._getHash,
|
||||
|
||||
/**
|
||||
Returns the current `location.hash`, minus the '#' at the front.
|
||||
|
||||
|
@ -39391,7 +39416,7 @@ Ember.HashLocation = Ember.Object.extend({
|
|||
@method getURL
|
||||
*/
|
||||
getURL: function() {
|
||||
return getHash().substr(1);
|
||||
return this.getHash().substr(1);
|
||||
},
|
||||
|
||||
/**
|
||||
|
@ -39524,7 +39549,7 @@ Ember.HistoryLocation = Ember.Object.extend({
|
|||
rootURL: '/',
|
||||
|
||||
/**
|
||||
Returns the current `location.pathname` without `rootURL`.
|
||||
Returns the current `location.pathname` without `rootURL` or `baseURL`
|
||||
|
||||
@private
|
||||
@method getURL
|
||||
|
@ -39555,7 +39580,7 @@ Ember.HistoryLocation = Ember.Object.extend({
|
|||
var state = this.getState();
|
||||
path = this.formatURL(path);
|
||||
|
||||
if (state && state.path !== path) {
|
||||
if (!state || state.path !== path) {
|
||||
this.pushState(path);
|
||||
}
|
||||
},
|
||||
|
@ -39572,15 +39597,16 @@ Ember.HistoryLocation = Ember.Object.extend({
|
|||
var state = this.getState();
|
||||
path = this.formatURL(path);
|
||||
|
||||
if (state && state.path !== path) {
|
||||
if (!state || state.path !== path) {
|
||||
this.replaceState(path);
|
||||
}
|
||||
},
|
||||
|
||||
/**
|
||||
Get the current `history.state`
|
||||
Polyfill checks for native browser support and falls back to retrieving
|
||||
from a private _historyState variable
|
||||
Get the current `history.state`. Checks for if a polyfill is
|
||||
required and if so fetches this._historyState. The state returned
|
||||
from getState may be null if an iframe has changed a window's
|
||||
history.
|
||||
|
||||
@private
|
||||
@method getState
|
||||
|
@ -39700,11 +39726,11 @@ Ember.HistoryLocation = Ember.Object.extend({
|
|||
@submodule ember-routing
|
||||
*/
|
||||
|
||||
var get = Ember.get, set = Ember.set;
|
||||
var documentMode = document.documentMode,
|
||||
history = window.history,
|
||||
location = window.location,
|
||||
getHash = Ember.Location.getHash;
|
||||
var get = Ember.get, set = Ember.set,
|
||||
HistoryLocation = Ember.HistoryLocation,
|
||||
HashLocation = Ember.HashLocation,
|
||||
NoneLocation = Ember.NoneLocation,
|
||||
EmberLocation = Ember.Location;
|
||||
|
||||
/**
|
||||
Ember.AutoLocation will select the best location option based off browser
|
||||
|
@ -39723,6 +39749,19 @@ Ember.HistoryLocation = Ember.Object.extend({
|
|||
var AutoLocation = Ember.AutoLocation = {
|
||||
|
||||
/**
|
||||
@private
|
||||
|
||||
This property is used by router:main to know whether to cancel the routing
|
||||
setup process, which is needed while we redirect the browser.
|
||||
|
||||
@property cancelRouterSetup
|
||||
@default false
|
||||
*/
|
||||
cancelRouterSetup: false,
|
||||
|
||||
/**
|
||||
@private
|
||||
|
||||
Will be pre-pended to path upon state change.
|
||||
|
||||
@property rootURL
|
||||
|
@ -39733,28 +39772,78 @@ Ember.HistoryLocation = Ember.Object.extend({
|
|||
/**
|
||||
@private
|
||||
|
||||
Exposed for testing
|
||||
Attached for mocking in tests
|
||||
|
||||
@property _window
|
||||
@default window
|
||||
*/
|
||||
_window: window,
|
||||
|
||||
/**
|
||||
@private
|
||||
|
||||
Attached for mocking in tests
|
||||
|
||||
@property location
|
||||
@default window.location
|
||||
*/
|
||||
_location: location,
|
||||
_location: window.location,
|
||||
|
||||
/**
|
||||
@private
|
||||
|
||||
Attached for mocking in tests
|
||||
|
||||
@property _history
|
||||
@default window.history
|
||||
*/
|
||||
_history: window.history,
|
||||
|
||||
/**
|
||||
@private
|
||||
|
||||
Attached for mocking in tests
|
||||
|
||||
@property _HistoryLocation
|
||||
@default Ember.HistoryLocation
|
||||
*/
|
||||
_HistoryLocation: HistoryLocation,
|
||||
|
||||
/**
|
||||
@private
|
||||
|
||||
Attached for mocking in tests
|
||||
|
||||
@property _HashLocation
|
||||
@default Ember.HashLocation
|
||||
*/
|
||||
_HashLocation: HashLocation,
|
||||
|
||||
/**
|
||||
@private
|
||||
|
||||
Attached for mocking in tests
|
||||
|
||||
@property _NoneLocation
|
||||
@default Ember.NoneLocation
|
||||
*/
|
||||
_NoneLocation: NoneLocation,
|
||||
|
||||
/**
|
||||
@private
|
||||
|
||||
Returns location.origin or builds it if device doesn't support it.
|
||||
|
||||
@method getOrigin
|
||||
@method _getOrigin
|
||||
*/
|
||||
getOrigin: function () {
|
||||
_getOrigin: function () {
|
||||
var location = this._location,
|
||||
origin = location.origin;
|
||||
|
||||
// Older browsers, especially IE, don't have origin
|
||||
if (!origin) {
|
||||
origin = location.protocol + '//' + location.hostname;
|
||||
|
||||
|
||||
if (location.port) {
|
||||
origin += ':' + location.port;
|
||||
}
|
||||
|
@ -39769,14 +39858,14 @@ Ember.HistoryLocation = Ember.Object.extend({
|
|||
We assume that if the history object has a pushState method, the host should
|
||||
support HistoryLocation.
|
||||
|
||||
@property supportsHistory
|
||||
@method _getSupportsHistory
|
||||
*/
|
||||
supportsHistory: (function () {
|
||||
_getSupportsHistory: function () {
|
||||
// Boosted from Modernizr: https://github.com/Modernizr/Modernizr/blob/master/feature-detects/history.js
|
||||
// The stock browser on Android 2.2 & 2.3 returns positive on history support
|
||||
// Unfortunately support is really buggy and there is no clean way to detect
|
||||
// these bugs, so we fall back to a user agent sniff :(
|
||||
var userAgent = window.navigator.userAgent;
|
||||
var userAgent = this._window.navigator.userAgent;
|
||||
|
||||
// We only want Android 2, stock browser, and not Chrome which identifies
|
||||
// itself as 'Mobile Safari' as well
|
||||
|
@ -39786,8 +39875,8 @@ Ember.HistoryLocation = Ember.Object.extend({
|
|||
return false;
|
||||
}
|
||||
|
||||
return !!(history && 'pushState' in history);
|
||||
})(),
|
||||
return !!(this._history && 'pushState' in this._history);
|
||||
},
|
||||
|
||||
/**
|
||||
@private
|
||||
|
@ -39795,56 +39884,13 @@ Ember.HistoryLocation = Ember.Object.extend({
|
|||
IE8 running in IE7 compatibility mode gives false positive, so we must also
|
||||
check documentMode.
|
||||
|
||||
@property supportsHashChange
|
||||
@method _getSupportsHashChange
|
||||
*/
|
||||
supportsHashChange: ('onhashchange' in window && (documentMode === undefined || documentMode > 7 )),
|
||||
_getSupportsHashChange: function () {
|
||||
var window = this._window,
|
||||
documentMode = window.document.documentMode;
|
||||
|
||||
create: function (options) {
|
||||
if (options && options.rootURL) {
|
||||
this.rootURL = options.rootURL;
|
||||
}
|
||||
|
||||
var implementationClass, historyPath, hashPath,
|
||||
cancelRouterSetup = false,
|
||||
currentPath = this.getFullPath();
|
||||
|
||||
if (this.supportsHistory) {
|
||||
historyPath = this.getHistoryPath();
|
||||
|
||||
// Since we support history paths, let's be sure we're using them else
|
||||
// switch the location over to it.
|
||||
if (currentPath === historyPath) {
|
||||
implementationClass = Ember.HistoryLocation;
|
||||
} else {
|
||||
cancelRouterSetup = true;
|
||||
this.replacePath(historyPath);
|
||||
}
|
||||
|
||||
} else if (this.supportsHashChange) {
|
||||
hashPath = this.getHashPath();
|
||||
|
||||
// Be sure we're using a hashed path, otherwise let's switch over it to so
|
||||
// we start off clean and consistent.
|
||||
if (currentPath === hashPath) {
|
||||
implementationClass = Ember.HashLocation;
|
||||
} else {
|
||||
cancelRouterSetup = true;
|
||||
this.replacePath(hashPath);
|
||||
}
|
||||
}
|
||||
|
||||
// If none has been set
|
||||
if (!implementationClass) {
|
||||
implementationClass = Ember.NoneLocation;
|
||||
}
|
||||
|
||||
var implementation = implementationClass.create.apply(implementationClass, arguments);
|
||||
|
||||
if (cancelRouterSetup) {
|
||||
set(implementation, 'cancelRouterSetup', true);
|
||||
}
|
||||
|
||||
return implementation;
|
||||
return ('onhashchange' in window && (documentMode === undefined || documentMode > 7 ));
|
||||
},
|
||||
|
||||
/**
|
||||
|
@ -39853,10 +39899,18 @@ Ember.HistoryLocation = Ember.Object.extend({
|
|||
Redirects the browser using location.replace, prepending the locatin.origin
|
||||
to prevent phishing attempts
|
||||
|
||||
@method replacePath
|
||||
@method _replacePath
|
||||
*/
|
||||
replacePath: function (path) {
|
||||
this._location.replace(this.getOrigin() + path);
|
||||
_replacePath: function (path) {
|
||||
this._location.replace(this._getOrigin() + path);
|
||||
},
|
||||
|
||||
/**
|
||||
@private
|
||||
@method _getRootURL
|
||||
*/
|
||||
_getRootURL: function () {
|
||||
return this.rootURL;
|
||||
},
|
||||
|
||||
/**
|
||||
|
@ -39864,10 +39918,10 @@ Ember.HistoryLocation = Ember.Object.extend({
|
|||
|
||||
Returns the current `location.pathname`, normalized for IE inconsistencies.
|
||||
|
||||
@method getPath
|
||||
@method _getPath
|
||||
*/
|
||||
getPath: function () {
|
||||
var pathname = location.pathname;
|
||||
_getPath: function () {
|
||||
var pathname = this._location.pathname;
|
||||
// Various versions of IE/Opera don't always return a leading slash
|
||||
if (pathname.charAt(0) !== '/') {
|
||||
pathname = '/' + pathname;
|
||||
|
@ -39879,30 +39933,81 @@ Ember.HistoryLocation = Ember.Object.extend({
|
|||
/**
|
||||
@private
|
||||
|
||||
Returns the full pathname including the hash string.
|
||||
Returns normalized location.hash as an alias to Ember.Location._getHash
|
||||
|
||||
@method getFullPath
|
||||
@method _getHash
|
||||
*/
|
||||
getFullPath: function () {
|
||||
return this.getPath() + getHash().substr(1);
|
||||
_getHash: EmberLocation._getHash,
|
||||
|
||||
/**
|
||||
@private
|
||||
|
||||
Returns location.search
|
||||
|
||||
@method _getQuery
|
||||
*/
|
||||
_getQuery: function () {
|
||||
return this._location.search;
|
||||
},
|
||||
|
||||
/**
|
||||
@private
|
||||
|
||||
Returns the full pathname including query and hash
|
||||
|
||||
@method _getFullPath
|
||||
*/
|
||||
_getFullPath: function () {
|
||||
return this._getPath() + this._getQuery() + this._getHash();
|
||||
},
|
||||
|
||||
/**
|
||||
@private
|
||||
|
||||
Returns the current path as it should appear for HistoryLocation supported
|
||||
browsers. This may very well differ from the real current path (e.g. if it
|
||||
browsers. This may very well differ from the real current path (e.g. if it
|
||||
starts off as a hashed URL)
|
||||
|
||||
@method getHistoryPath
|
||||
@method _getHistoryPath
|
||||
*/
|
||||
getHistoryPath: function () {
|
||||
var path = this.getPath(),
|
||||
hashPath = getHash().substr(1),
|
||||
url = path + hashPath;
|
||||
_getHistoryPath: function () {
|
||||
var rootURL = this._getRootURL(),
|
||||
path = this._getPath(),
|
||||
hash = this._getHash(),
|
||||
query = this._getQuery(),
|
||||
rootURLIndex = path.indexOf(rootURL),
|
||||
routeHash, hashParts;
|
||||
|
||||
// Removes any stacked double stashes
|
||||
return url.replace(/\/\//, '/');
|
||||
Ember.assert('Path ' + path + ' does not start with the provided rootURL ' + rootURL, rootURLIndex === 0);
|
||||
|
||||
// By convention, Ember.js routes using HashLocation are required to start
|
||||
// with `#/`. Anything else should NOT be considered a route and should
|
||||
// be passed straight through, without transformation.
|
||||
if (hash.substr(0, 2) === '#/') {
|
||||
// There could be extra hash segments after the route
|
||||
hashParts = hash.substr(1).split('#');
|
||||
// The first one is always the route url
|
||||
routeHash = hashParts.shift();
|
||||
|
||||
// If the path already has a trailing slash, remove the one
|
||||
// from the hashed route so we don't double up.
|
||||
if (path.slice(-1) === '/') {
|
||||
routeHash = routeHash.substr(1);
|
||||
}
|
||||
|
||||
// This is the "expected" final order
|
||||
path += routeHash;
|
||||
path += query;
|
||||
|
||||
if (hashParts.length) {
|
||||
path += '#' + hashParts.join('#');
|
||||
}
|
||||
} else {
|
||||
path += query;
|
||||
path += hash;
|
||||
}
|
||||
|
||||
return path;
|
||||
},
|
||||
|
||||
/**
|
||||
|
@ -39911,19 +40016,79 @@ Ember.HistoryLocation = Ember.Object.extend({
|
|||
Returns the current path as it should appear for HashLocation supported
|
||||
browsers. This may very well differ from the real current path.
|
||||
|
||||
@method getHashPath
|
||||
@method _getHashPath
|
||||
*/
|
||||
getHashPath: function () {
|
||||
var historyPath = this.getHistoryPath(),
|
||||
exp = new RegExp('(' + this.rootURL + ')(.+)'),
|
||||
url = historyPath.replace(exp, '$1#/$2');
|
||||
_getHashPath: function () {
|
||||
var rootURL = this._getRootURL(),
|
||||
path = rootURL,
|
||||
historyPath = this._getHistoryPath(),
|
||||
routePath = historyPath.substr(rootURL.length);
|
||||
|
||||
// Remove any stacked double stashes
|
||||
url = url.replace(/\/\//, '/');
|
||||
if (routePath !== '') {
|
||||
if (routePath.charAt(0) !== '/') {
|
||||
routePath = '/' + routePath;
|
||||
}
|
||||
|
||||
return url;
|
||||
path += '#' + routePath;
|
||||
}
|
||||
|
||||
return path;
|
||||
},
|
||||
|
||||
/**
|
||||
Selects the best location option based off browser support and returns an
|
||||
instance of that Location class.
|
||||
|
||||
@see Ember.AutoLocation
|
||||
@method create
|
||||
*/
|
||||
create: function (options) {
|
||||
if (options && options.rootURL) {
|
||||
Ember.assert('rootURL must end with a trailing forward slash e.g. "/app/"', options.rootURL.charAt(options.rootURL.length-1) === '/');
|
||||
this.rootURL = options.rootURL;
|
||||
}
|
||||
|
||||
var historyPath, hashPath,
|
||||
cancelRouterSetup = false,
|
||||
implementationClass = this._NoneLocation,
|
||||
currentPath = this._getFullPath();
|
||||
|
||||
if (this._getSupportsHistory()) {
|
||||
historyPath = this._getHistoryPath();
|
||||
|
||||
// Since we support history paths, let's be sure we're using them else
|
||||
// switch the location over to it.
|
||||
if (currentPath === historyPath) {
|
||||
implementationClass = this._HistoryLocation;
|
||||
} else {
|
||||
cancelRouterSetup = true;
|
||||
this._replacePath(historyPath);
|
||||
}
|
||||
|
||||
} else if (this._getSupportsHashChange()) {
|
||||
hashPath = this._getHashPath();
|
||||
|
||||
// Be sure we're using a hashed path, otherwise let's switch over it to so
|
||||
// we start off clean and consistent. We'll count an index path with no
|
||||
// hash as "good enough" as well.
|
||||
if (currentPath === hashPath || (currentPath === '/' && hashPath === '/#/')) {
|
||||
implementationClass = this._HashLocation;
|
||||
} else {
|
||||
// Our URL isn't in the expected hash-supported format, so we want to
|
||||
// cancel the router setup and replace the URL to start off clean
|
||||
cancelRouterSetup = true;
|
||||
this._replacePath(hashPath);
|
||||
}
|
||||
}
|
||||
|
||||
var implementation = implementationClass.create.apply(implementationClass, arguments);
|
||||
|
||||
if (cancelRouterSetup) {
|
||||
set(implementation, 'cancelRouterSetup', true);
|
||||
}
|
||||
|
||||
return implementation;
|
||||
}
|
||||
|
||||
};
|
||||
|
||||
})();
|
||||
|
@ -41235,6 +41400,7 @@ Ember.Application.reopenClass({
|
|||
container.injection('controller', 'namespace', 'application:main');
|
||||
|
||||
container.injection('route', 'router', 'router:main');
|
||||
container.injection('location', 'rootURL', '-location-setting:root-url');
|
||||
|
||||
// DEBUGGING
|
||||
container.register('resolver-for-debugging:main', container.resolver.__resolver__, { instantiate: false });
|
||||
|
@ -42083,7 +42249,7 @@ Ember Extension Support
|
|||
|
||||
})();
|
||||
|
||||
define("container/container",
|
||||
define("container/container",
|
||||
["container/inheriting_dict","exports"],
|
||||
function(__dependency1__, __exports__) {
|
||||
"use strict";
|
||||
|
@ -42501,7 +42667,7 @@ define("container/container",
|
|||
validateFullName(fullName);
|
||||
if (this.parent) { illegalChildOperation('typeInjection'); }
|
||||
|
||||
var fullNameType = fullName.split(':')[0];
|
||||
var fullNameType = fullName.split(':')[0];
|
||||
if(fullNameType === type) {
|
||||
throw new Error('Cannot inject a `' + fullName + '` on other ' + type + '(s). Register the `' + fullName + '` as a different type and perform the typeInjection.');
|
||||
}
|
||||
|
@ -42565,6 +42731,9 @@ define("container/container",
|
|||
validateFullName(fullName);
|
||||
var normalizedName = this.normalize(fullName);
|
||||
|
||||
if (this.cache.has(normalizedName)) {
|
||||
throw new Error("Attempted to register an injection for a type that has already been looked up. ('" + normalizedName + "', '" + property + "', '" + injectionName + "')");
|
||||
}
|
||||
addInjection(this.injections, normalizedName, property, normalizedInjectionName);
|
||||
},
|
||||
|
||||
|
@ -42667,6 +42836,9 @@ define("container/container",
|
|||
|
||||
validateFullName(fullName);
|
||||
|
||||
if (this.factoryCache.has(normalizedName)) {
|
||||
throw new Error("Attempted to register a factoryInjection for a type that has already been looked up. ('" + normalizedName + "', '" + property + "', '" + injectionName + "')");
|
||||
}
|
||||
addInjection(this.factoryInjections, normalizedName, property, normalizedInjectionName);
|
||||
},
|
||||
|
||||
|
@ -42898,7 +43070,7 @@ define("container/container",
|
|||
}
|
||||
|
||||
__exports__["default"] = Container;
|
||||
});define("ember-runtime/ext/rsvp",
|
||||
});define("ember-runtime/ext/rsvp",
|
||||
["ember-metal/core","ember-metal/logger","exports"],
|
||||
function(__dependency1__, __dependency2__, __exports__) {
|
||||
"use strict";
|
||||
|
@ -42921,6 +43093,8 @@ define("container/container",
|
|||
} else {
|
||||
throw error;
|
||||
}
|
||||
} else if (Ember.onerror) {
|
||||
Ember.onerror(error);
|
||||
} else {
|
||||
Logger.error(error.stack);
|
||||
Ember.assert(error, false);
|
||||
|
@ -42931,7 +43105,7 @@ define("container/container",
|
|||
RSVP.on('error', RSVP.onerrorDefault);
|
||||
|
||||
__exports__["default"] = RSVP;
|
||||
});define("ember-runtime/system/container",
|
||||
});define("ember-runtime/system/container",
|
||||
["ember-metal/property_set","exports"],
|
||||
function(__dependency1__, __exports__) {
|
||||
"use strict";
|
|
@ -0,0 +1,32 @@
|
|||
require 'uglifier'
|
||||
|
||||
File.open("static/application.min.js", "w") {|file| file.truncate(0) }
|
||||
|
||||
libs = [
|
||||
"javascripts/libs/jquery-1.10.2.js",
|
||||
"javascripts/libs/handlebars-1.1.2.js",
|
||||
"javascripts/libs/ember-1.5.1.js",
|
||||
"javascripts/libs/ember-validations.js",
|
||||
]
|
||||
|
||||
app = [
|
||||
"javascripts/app/router.js",
|
||||
"javascripts/app/models.js",
|
||||
"javascripts/app/routes.js",
|
||||
"javascripts/app/controllers.js",
|
||||
"javascripts/app/views.js",
|
||||
]
|
||||
|
||||
libs.each do |js_file|
|
||||
File.open("static/application.min.js", "a") do |f|
|
||||
puts "compile #{js_file}"
|
||||
f << Uglifier.compile(File.read(js_file))
|
||||
end
|
||||
end
|
||||
|
||||
app.each do |js_file|
|
||||
File.open("static/application.min.js", "a") do |f|
|
||||
puts "compile #{js_file}"
|
||||
f << Uglifier.compile(File.read(js_file))
|
||||
end
|
||||
end
|
Loading…
Reference in New Issue