slider for selecting score threshold and persistence of said threshold across period changing

This commit is contained in:
Gwenhael Le Moine 2014-10-12 19:07:47 +02:00
parent 596972b459
commit 091058d9ae
34 changed files with 14327 additions and 2829 deletions

View file

@ -13,6 +13,6 @@
"commit": "7a4cf8a706dcd986a70b08d7be2faf34ed247742"
},
"_source": "git://github.com/angular/bower-angular-animate.git",
"_target": "^1.3.0-beta.18",
"_target": "1.3.0-rc.5",
"_originalSource": "angular-animate"
}

View file

@ -0,0 +1,18 @@
{
"name": "angular-aria",
"version": "1.3.0-rc.5",
"main": "./angular-aria.js",
"dependencies": {
"angular": "1.3.0-rc.5"
},
"homepage": "https://github.com/angular/bower-angular-aria",
"_release": "1.3.0-rc.5",
"_resolution": {
"type": "version",
"tag": "v1.3.0-rc.5",
"commit": "b48dc5d0f1f5c7850848a05c24b7cf38d59c21b0"
},
"_source": "git://github.com/angular/bower-angular-aria.git",
"_target": "1.3.0-rc.5",
"_originalSource": "angular-aria"
}

View file

@ -0,0 +1,54 @@
# bower-angular-aria
This repo is for distribution on `bower`. The source for this module is in the
[main AngularJS repo](https://github.com/angular/angular.js/tree/master/src/ngAria).
Please file issues and pull requests against that repo.
## Install
Install with `bower`:
```shell
bower install angular-aria
```
Add a `<script>` to your `index.html`:
```html
<script src="/bower_components/angular-aria/angular-aria.js"></script>
```
And add `ngAria` as a dependency for your app:
```javascript
angular.module('myApp', ['ngAria']);
```
## Documentation
Documentation is available on the
[AngularJS docs site](http://docs.angularjs.org/api/ngAria).
## License
The MIT License
Copyright (c) 2010-2012 Google, Inc. http://angularjs.org
Permission is hereby granted, free of charge, to any person obtaining a copy
of this software and associated documentation files (the "Software"), to deal
in the Software without restriction, including without limitation the rights
to use, copy, modify, merge, publish, distribute, sublicense, and/or sell
copies of the Software, and to permit persons to whom the Software is
furnished to do so, subject to the following conditions:
The above copyright notice and this permission notice shall be included in
all copies or substantial portions of the Software.
THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,
OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN
THE SOFTWARE.

View file

@ -0,0 +1,250 @@
/**
* @license AngularJS v1.3.0-rc.5
* (c) 2010-2014 Google, Inc. http://angularjs.org
* License: MIT
*/
(function(window, angular, undefined) {'use strict';
/**
* @ngdoc module
* @name ngAria
* @description
*
* The `ngAria` module provides support for adding aria tags that convey state or semantic information
* about the application in order to allow assistive technologies to convey appropriate information to
* persons with disabilities.
*
* <div doc-module-components="ngAria"></div>
*
* # Usage
* To enable the addition of the aria tags, just require the module into your application and the tags will
* hook into your ng-show/ng-hide, input, textarea, button, select and ng-required directives and adds the
* appropriate aria-tags.
*
* Currently, the following aria tags are implemented:
*
* + aria-hidden
* + aria-checked
* + aria-disabled
* + aria-required
* + aria-invalid
* + aria-multiline
* + aria-valuenow
* + aria-valuemin
* + aria-valuemax
* + tabindex
*
* You can disable individual aria tags by using the {@link ngAria.$ariaProvider#config config} method.
*/
/* global -ngAriaModule */
var ngAriaModule = angular.module('ngAria', ['ng']).
provider('$aria', $AriaProvider);
/**
* @ngdoc provider
* @name $ariaProvider
*
* @description
*
* Used for configuring aria attributes.
*
* ## Dependencies
* Requires the {@link ngAria} module to be installed.
*/
function $AriaProvider() {
var config = {
ariaHidden : true,
ariaChecked: true,
ariaDisabled: true,
ariaRequired: true,
ariaInvalid: true,
ariaMultiline: true,
ariaValue: true,
tabindex: true
};
/**
* @ngdoc method
* @name $ariaProvider#config
*
* @param {object} config object to enable/disable specific aria tags
*
* - **ariaHidden** `{boolean}` Enables/disables aria-hidden tags
* - **ariaChecked** `{boolean}` Enables/disables aria-checked tags
* - **ariaDisabled** `{boolean}` Enables/disables aria-disabled tags
* - **ariaRequired** `{boolean}` Enables/disables aria-required tags
* - **ariaInvalid** `{boolean}` Enables/disables aria-invalid tags
* - **ariaMultiline** `{boolean}` Enables/disables aria-multiline tags
* - **ariaValue** `{boolean}` Enables/disables aria-valuemin, aria-valuemax and aria-valuenow tags
* - **tabindex** `{boolean}` Enables/disables tabindex tags
*
* @description
* Enables/disables various aria tags
*/
this.config = function(newConfig) {
config = angular.extend(config, newConfig);
};
function camelCase(input) {
return input.replace(/-./g, function(letter, pos) {
return letter[1].toUpperCase();
});
}
function watchExpr(attrName, ariaAttr, negate) {
var ariaCamelName = camelCase(ariaAttr);
return function(scope, elem, attr) {
if (config[ariaCamelName] && !attr[ariaCamelName]) {
scope.$watch(attr[attrName], function(boolVal) {
if (negate) {
boolVal = !boolVal;
}
elem.attr(ariaAttr, boolVal);
});
}
};
}
/**
* @ngdoc service
* @name $aria
*
* @description
*
* Contains helper methods for applying aria tags to HTML
*
* ## Dependencies
* Requires the {@link ngAria} module to be installed.
*/
this.$get = function() {
return {
config: function (key) {
return config[camelCase(key)];
},
$$watchExpr: watchExpr
};
};
}
var ngAriaTabindex = ['$aria', function($aria) {
return function(scope, elem, attr) {
if ($aria.config('tabindex') && !elem.attr('tabindex')) {
elem.attr('tabindex', 0);
}
};
}];
ngAriaModule.directive('ngShow', ['$aria', function($aria) {
return $aria.$$watchExpr('ngShow', 'aria-hidden', true);
}])
.directive('ngHide', ['$aria', function($aria) {
return $aria.$$watchExpr('ngHide', 'aria-hidden', false);
}])
.directive('ngModel', ['$aria', function($aria) {
function shouldAttachAttr (attr, elem) {
return $aria.config(attr) && !elem.attr(attr);
}
function getShape (attr, elem) {
var type = attr.type,
role = attr.role;
return ((type || role) === 'checkbox' || role === 'menuitemcheckbox') ? 'checkbox' :
((type || role) === 'radio' || role === 'menuitemradio') ? 'radio' :
(type === 'range' || role === 'progressbar' || role === 'slider') ? 'range' :
(type || role) === 'textbox' || elem[0].nodeName === 'TEXTAREA' ? 'multiline' : '';
}
return {
restrict: 'A',
require: '?ngModel',
link: function(scope, elem, attr, ngModel) {
var shape = getShape(attr, elem);
var needsTabIndex = shouldAttachAttr('tabindex', elem);
function ngAriaWatchModelValue() {
return ngModel.$modelValue;
}
function getRadioReaction() {
if (needsTabIndex) {
needsTabIndex = false;
return function ngAriaRadioReaction(newVal) {
var boolVal = newVal === attr.value;
elem.attr('aria-checked', boolVal);
elem.attr('tabindex', 0 - !boolVal);
};
} else {
return function ngAriaRadioReaction(newVal) {
elem.attr('aria-checked', newVal === attr.value);
};
}
}
function ngAriaCheckboxReaction(newVal) {
elem.attr('aria-checked', !!newVal);
}
switch (shape) {
case 'radio':
case 'checkbox':
if (shouldAttachAttr('aria-checked', elem)) {
scope.$watch(ngAriaWatchModelValue, shape === 'radio' ?
getRadioReaction() : ngAriaCheckboxReaction);
}
break;
case 'range':
if ($aria.config('ariaValue')) {
if (attr.min && !elem.attr('aria-valuemin')) {
elem.attr('aria-valuemin', attr.min);
}
if (attr.max && !elem.attr('aria-valuemax')) {
elem.attr('aria-valuemax', attr.max);
}
if (!elem.attr('aria-valuenow')) {
scope.$watch(ngAriaWatchModelValue, function ngAriaValueNowReaction(newVal) {
elem.attr('aria-valuenow', newVal);
});
}
}
break;
case 'multiline':
if (shouldAttachAttr('aria-multiline', elem)) {
elem.attr('aria-multiline', true);
}
break;
}
if (needsTabIndex) {
elem.attr('tabindex', 0);
}
if (ngModel.$validators.required && shouldAttachAttr('aria-required', elem)) {
scope.$watch(function ngAriaRequiredWatch() {
return ngModel.$error.required;
}, function ngAriaRequiredReaction(newVal) {
elem.attr('aria-required', !!newVal);
});
}
if (shouldAttachAttr('aria-invalid', elem)) {
scope.$watch(function ngAriaInvalidWatch() {
return ngModel.$invalid;
}, function ngAriaInvalidReaction(newVal) {
elem.attr('aria-invalid', !!newVal);
});
}
}
};
}])
.directive('ngDisabled', ['$aria', function($aria) {
return $aria.$$watchExpr('ngDisabled', 'aria-disabled');
}])
.directive('ngClick', ngAriaTabindex)
.directive('ngDblclick', ngAriaTabindex);
})(window, window.angular);

View file

@ -0,0 +1,11 @@
/*
AngularJS v1.3.0-rc.5
(c) 2010-2014 Google, Inc. http://angularjs.org
License: MIT
*/
(function(h,k,p){'use strict';h=["$aria",function(c){return function(e,f,a){c.config("tabindex")&&!f.attr("tabindex")&&f.attr("tabindex",0)}}];k.module("ngAria",["ng"]).provider("$aria",function(){function c(a){return a.replace(/-./g,function(b,a){return b[1].toUpperCase()})}function e(a,b,g){var d=c(b);return function(c,e,l){f[d]&&!l[d]&&c.$watch(l[a],function(a){g&&(a=!a);e.attr(b,a)})}}var f={ariaHidden:!0,ariaChecked:!0,ariaDisabled:!0,ariaRequired:!0,ariaInvalid:!0,ariaMultiline:!0,ariaValue:!0,
tabindex:!0};this.config=function(a){f=k.extend(f,a)};this.$get=function(){return{config:function(a){return f[c(a)]},$$watchExpr:e}}}).directive("ngShow",["$aria",function(c){return c.$$watchExpr("ngShow","aria-hidden",!0)}]).directive("ngHide",["$aria",function(c){return c.$$watchExpr("ngHide","aria-hidden",!1)}]).directive("ngModel",["$aria",function(c){function e(a,b){return c.config(a)&&!b.attr(a)}function f(a,b){var c=a.type,d=a.role;return"checkbox"===(c||d)||"menuitemcheckbox"===d?"checkbox":
"radio"===(c||d)||"menuitemradio"===d?"radio":"range"===c||"progressbar"===d||"slider"===d?"range":"textbox"===(c||d)||"TEXTAREA"===b[0].nodeName?"multiline":""}return{restrict:"A",require:"?ngModel",link:function(a,b,g,d){function h(){return d.$modelValue}function k(){return m?(m=!1,function(a){a=a===g.value;b.attr("aria-checked",a);b.attr("tabindex",0-!a)}):function(a){b.attr("aria-checked",a===g.value)}}function l(a){b.attr("aria-checked",!!a)}var n=f(g,b),m=e("tabindex",b);switch(n){case "radio":case "checkbox":e("aria-checked",
b)&&a.$watch(h,"radio"===n?k():l);break;case "range":c.config("ariaValue")&&(g.min&&!b.attr("aria-valuemin")&&b.attr("aria-valuemin",g.min),g.max&&!b.attr("aria-valuemax")&&b.attr("aria-valuemax",g.max),b.attr("aria-valuenow")||a.$watch(h,function(a){b.attr("aria-valuenow",a)}));break;case "multiline":e("aria-multiline",b)&&b.attr("aria-multiline",!0)}m&&b.attr("tabindex",0);d.$validators.required&&e("aria-required",b)&&a.$watch(function(){return d.$error.required},function(a){b.attr("aria-required",
!!a)});e("aria-invalid",b)&&a.$watch(function(){return d.$invalid},function(a){b.attr("aria-invalid",!!a)})}}}]).directive("ngDisabled",["$aria",function(c){return c.$$watchExpr("ngDisabled","aria-disabled")}]).directive("ngClick",h).directive("ngDblclick",h)})(window,window.angular);
//# sourceMappingURL=angular-aria.min.js.map

View file

@ -0,0 +1,8 @@
{
"version":3,
"file":"angular-aria.min.js",
"lineCount":10,
"mappings":"A;;;;;aAKC,SAAQ,CAACA,CAAD,CAASC,CAAT,CAAkBC,CAAlB,CAA6B,CA6HlCC,CAAAA,CAAiB,CAAC,OAAD,CAAU,QAAQ,CAACC,CAAD,CAAQ,CAC7C,MAAO,SAAQ,CAACC,CAAD,CAAQC,CAAR,CAAcC,CAAd,CAAoB,CAC7BH,CAAAI,OAAA,CAAa,UAAb,CAAJ,EAAiC,CAAAF,CAAAC,KAAA,CAAU,UAAV,CAAjC,EACED,CAAAC,KAAA,CAAU,UAAV,CAAsB,CAAtB,CAF+B,CADU,CAA1B,CA1FFN,EAAAQ,OAAA,CAAe,QAAf,CAAyB,CAAC,IAAD,CAAzB,CAAAC,SAAAC,CACc,OADdA,CAcnBC,QAAsB,EAAG,CAkCvBC,QAASA,EAAS,CAACC,CAAD,CAAQ,CACxB,MAAOA,EAAAC,QAAA,CAAc,KAAd,CAAqB,QAAQ,CAACC,CAAD,CAASC,CAAT,CAAc,CAChD,MAAOD,EAAA,CAAO,CAAP,CAAAE,YAAA,EADyC,CAA3C,CADiB,CAO1BC,QAASA,EAAS,CAACC,CAAD,CAAWC,CAAX,CAAqBC,CAArB,CAA6B,CAC7C,IAAIC,EAAgBV,CAAA,CAAUQ,CAAV,CACpB,OAAO,SAAQ,CAAChB,CAAD,CAAQC,CAAR,CAAcC,CAAd,CAAoB,CAC7BC,CAAA,CAAOe,CAAP,CAAJ,EAA8B,CAAAhB,CAAA,CAAKgB,CAAL,CAA9B,EACElB,CAAAmB,OAAA,CAAajB,CAAA,CAAKa,CAAL,CAAb,CAA6B,QAAQ,CAACK,CAAD,CAAU,CACzCH,CAAJ,GACEG,CADF,CACY,CAACA,CADb,CAGAnB,EAAAC,KAAA,CAAUc,CAAV,CAAoBI,CAApB,CAJ6C,CAA/C,CAF+B,CAFU,CAxC/C,IAAIjB,EAAS,CACXkB,WAAa,CAAA,CADF,CAEXC,YAAa,CAAA,CAFF,CAGXC,aAAc,CAAA,CAHH,CAIXC,aAAc,CAAA,CAJH,CAKXC,YAAa,CAAA,CALF,CAMXC,cAAe,CAAA,CANJ,CAOXC,UAAW,CAAA,CAPA;AAQXC,SAAU,CAAA,CARC,CA6Bb,KAAAzB,OAAA,CAAc0B,QAAQ,CAACC,CAAD,CAAY,CAChC3B,CAAA,CAASP,CAAAmC,OAAA,CAAe5B,CAAf,CAAuB2B,CAAvB,CADuB,CAoClC,KAAAE,KAAA,CAAYC,QAAQ,EAAG,CACrB,MAAO,CACL9B,OAAQA,QAAS,CAAC+B,CAAD,CAAM,CACrB,MAAO/B,EAAA,CAAOK,CAAA,CAAU0B,CAAV,CAAP,CADc,CADlB,CAILC,YAAarB,CAJR,CADc,CAlEA,CAdNR,CAkGnB8B,UAAA,CAAuB,QAAvB,CAAiC,CAAC,OAAD,CAAU,QAAQ,CAACrC,CAAD,CAAQ,CACzD,MAAOA,EAAAoC,YAAA,CAAkB,QAAlB,CAA4B,aAA5B,CAA2C,CAAA,CAA3C,CADkD,CAA1B,CAAjC,CAAAC,UAAA,CAGW,QAHX,CAGqB,CAAC,OAAD,CAAU,QAAQ,CAACrC,CAAD,CAAQ,CAC7C,MAAOA,EAAAoC,YAAA,CAAkB,QAAlB,CAA4B,aAA5B,CAA2C,CAAA,CAA3C,CADsC,CAA1B,CAHrB,CAAAC,UAAA,CAMW,SANX,CAMsB,CAAC,OAAD,CAAU,QAAQ,CAACrC,CAAD,CAAQ,CAE9CsC,QAASA,EAAiB,CAACnC,CAAD,CAAOD,CAAP,CAAa,CACrC,MAAOF,EAAAI,OAAA,CAAaD,CAAb,CAAP,EAA6B,CAACD,CAAAC,KAAA,CAAUA,CAAV,CADO,CAIvCoC,QAASA,EAAS,CAACpC,CAAD,CAAOD,CAAP,CAAa,CAAA,IACzBsC,EAAOrC,CAAAqC,KADkB,CAEzBC,EAAOtC,CAAAsC,KAEX,OAA2B,UAApB,IAAED,CAAF,EAAUC,CAAV,GAA2C,kBAA3C,GAAkCA,CAAlC,CAAiE,UAAjE;AACoB,OAApB,IAAED,CAAF,EAAUC,CAAV,GAA2C,eAA3C,GAAkCA,CAAlC,CAA8D,OAA9D,CACU,OAAV,GAACD,CAAD,EAA2C,aAA3C,GAAkCC,CAAlC,EAAqE,QAArE,GAA4DA,CAA5D,CAAiF,OAAjF,CACmB,SAAnB,IAACD,CAAD,EAASC,CAAT,GAAuD,UAAvD,GAAkCvC,CAAA,CAAK,CAAL,CAAAwC,SAAlC,CAAoE,WAApE,CAAkF,EAP5D,CAU/B,MAAO,CACLC,SAAU,GADL,CAELC,QAAS,UAFJ,CAGLC,KAAMA,QAAQ,CAAC5C,CAAD,CAAQC,CAAR,CAAcC,CAAd,CAAoB2C,CAApB,CAA6B,CAIzCC,QAASA,EAAqB,EAAG,CAC/B,MAAOD,EAAAE,YADwB,CAIjCC,QAASA,EAAgB,EAAG,CAC1B,MAAIC,EAAJ,EACEA,CACOC,CADS,CAAA,CACTA,CAAAA,QAA4B,CAACC,CAAD,CAAS,CACtC/B,CAAAA,CAAU+B,CAAV/B,GAAqBlB,CAAAkD,MACzBnD,EAAAC,KAAA,CAAU,cAAV,CAA0BkB,CAA1B,CACAnB,EAAAC,KAAA,CAAU,UAAV,CAAsB,CAAtB,CAA0B,CAACkB,CAA3B,CAH0C,CAF9C,EAQS8B,QAA4B,CAACC,CAAD,CAAS,CAC1ClD,CAAAC,KAAA,CAAU,cAAV,CAA0BiD,CAA1B,GAAqCjD,CAAAkD,MAArC,CAD0C,CATpB,CAe5BC,QAASA,EAAsB,CAACF,CAAD,CAAS,CACtClD,CAAAC,KAAA,CAAU,cAAV,CAA0B,CAAEiD,CAAAA,CAA5B,CADsC,CAtBxC,IAAIG,EAAQhB,CAAA,CAASpC,CAAT,CAAeD,CAAf,CAAZ,CACIgD,EAAgBZ,CAAA,CAAiB,UAAjB,CAA6BpC,CAA7B,CAyBpB,QAAQqD,CAAR,EACE,KAAK,OAAL,CACA,KAAK,UAAL,CACMjB,CAAA,CAAiB,cAAjB;AAAiCpC,CAAjC,CAAJ,EACED,CAAAmB,OAAA,CAAa2B,CAAb,CAA8C,OAAV,GAAAQ,CAAA,CAChCN,CAAA,EADgC,CACXK,CADzB,CAGF,MACF,MAAK,OAAL,CACMtD,CAAAI,OAAA,CAAa,WAAb,CAAJ,GACMD,CAAAqD,IAMJ,EANiB,CAAAtD,CAAAC,KAAA,CAAU,eAAV,CAMjB,EALED,CAAAC,KAAA,CAAU,eAAV,CAA2BA,CAAAqD,IAA3B,CAKF,CAHIrD,CAAAsD,IAGJ,EAHiB,CAAAvD,CAAAC,KAAA,CAAU,eAAV,CAGjB,EAFED,CAAAC,KAAA,CAAU,eAAV,CAA2BA,CAAAsD,IAA3B,CAEF,CAAKvD,CAAAC,KAAA,CAAU,eAAV,CAAL,EACEF,CAAAmB,OAAA,CAAa2B,CAAb,CAAoCW,QAA+B,CAACN,CAAD,CAAS,CAC1ElD,CAAAC,KAAA,CAAU,eAAV,CAA2BiD,CAA3B,CAD0E,CAA5E,CARJ,CAaA,MACF,MAAK,WAAL,CACMd,CAAA,CAAiB,gBAAjB,CAAmCpC,CAAnC,CAAJ,EACEA,CAAAC,KAAA,CAAU,gBAAV,CAA4B,CAAA,CAA5B,CAzBN,CA8BI+C,CAAJ,EACEhD,CAAAC,KAAA,CAAU,UAAV,CAAsB,CAAtB,CAGE2C,EAAAa,YAAAC,SAAJ,EAAoCtB,CAAA,CAAiB,eAAjB,CAAkCpC,CAAlC,CAApC,EACED,CAAAmB,OAAA,CAAayC,QAA4B,EAAG,CAC1C,MAAOf,EAAAgB,OAAAF,SADmC,CAA5C,CAEGG,QAA+B,CAACX,CAAD,CAAS,CACzClD,CAAAC,KAAA,CAAU,eAAV;AAA2B,CAAEiD,CAAAA,CAA7B,CADyC,CAF3C,CAOEd,EAAA,CAAiB,cAAjB,CAAiCpC,CAAjC,CAAJ,EACED,CAAAmB,OAAA,CAAa4C,QAA2B,EAAG,CACzC,MAAOlB,EAAAmB,SADkC,CAA3C,CAEGC,QAA8B,CAACd,CAAD,CAAS,CACxClD,CAAAC,KAAA,CAAU,cAAV,CAA0B,CAAEiD,CAAAA,CAA5B,CADwC,CAF1C,CAtEuC,CAHtC,CAhBuC,CAA1B,CANtB,CAAAf,UAAA,CAwGW,YAxGX,CAwGyB,CAAC,OAAD,CAAU,QAAQ,CAACrC,CAAD,CAAQ,CACjD,MAAOA,EAAAoC,YAAA,CAAkB,YAAlB,CAAgC,eAAhC,CAD0C,CAA1B,CAxGzB,CAAAC,UAAA,CA2GW,SA3GX,CA2GsBtC,CA3GtB,CAAAsC,UAAA,CA4GW,YA5GX,CA4GyBtC,CA5GzB,CArIsC,CAArC,CAAD,CAoPGH,MApPH,CAoPWA,MAAAC,QApPX;",
"sources":["angular-aria.js"],
"names":["window","angular","undefined","ngAriaTabindex","$aria","scope","elem","attr","config","module","provider","ngAriaModule","$AriaProvider","camelCase","input","replace","letter","pos","toUpperCase","watchExpr","attrName","ariaAttr","negate","ariaCamelName","$watch","boolVal","ariaHidden","ariaChecked","ariaDisabled","ariaRequired","ariaInvalid","ariaMultiline","ariaValue","tabindex","this.config","newConfig","extend","$get","this.$get","key","$$watchExpr","directive","shouldAttachAttr","getShape","type","role","nodeName","restrict","require","link","ngModel","ngAriaWatchModelValue","$modelValue","getRadioReaction","needsTabIndex","ngAriaRadioReaction","newVal","value","ngAriaCheckboxReaction","shape","min","max","ngAriaValueNowReaction","$validators","required","ngAriaRequiredWatch","$error","ngAriaRequiredReaction","ngAriaInvalidWatch","$invalid","ngAriaInvalidReaction"]
}

View file

@ -0,0 +1,8 @@
{
"name": "angular-aria",
"version": "1.3.0-rc.5",
"main": "./angular-aria.js",
"dependencies": {
"angular": "1.3.0-rc.5"
}
}

View file

@ -0,0 +1,27 @@
{
"name": "angular-aria",
"version": "1.3.0-rc.5",
"description": "AngularJS module for making accessibility easy",
"main": "angular-aria.js",
"scripts": {
"test": "echo \"Error: no test specified\" && exit 1"
},
"repository": {
"type": "git",
"url": "https://github.com/angular/angular.js.git"
},
"keywords": [
"angular",
"framework",
"browser",
"accessibility",
"a11y",
"client-side"
],
"author": "Angular Core Team <angular-core+npm@google.com>",
"license": "MIT",
"bugs": {
"url": "https://github.com/angular/angular.js/issues"
},
"homepage": "http://angularjs.org"
}

View file

@ -1,19 +1,19 @@
{
"name": "angular-i18n",
"version": "1.2.26",
"version": "1.3.0-rc.5",
"ignore": [
"**/.*",
"node_modules",
"components"
],
"homepage": "https://github.com/angular/bower-angular-i18n",
"_release": "1.2.26",
"_release": "1.3.0-rc.5",
"_resolution": {
"type": "version",
"tag": "v1.2.26",
"commit": "d3b29dbaf7f83fc0ff095a6972fc335b062525fb"
"tag": "v1.3.0-rc.5",
"commit": "44c63923486037f25c62d179c426ac27ad3b71bf"
},
"_source": "git://github.com/angular/bower-angular-i18n.git",
"_target": "*",
"_target": "1.3.0-rc.5",
"_originalSource": "angular-i18n"
}

View file

@ -1,6 +1,6 @@
{
"name": "angular-i18n",
"version": "1.2.26",
"version": "1.3.0-rc.5",
"ignore": [
"**/.*",
"node_modules",

View file

@ -1,6 +1,6 @@
{
"name": "angular-i18n",
"version": "",
"version": "1.3.0-rc.5",
"description": "AngularJS module for internationalization",
"main": "angular-i18n.js",
"scripts": {

View file

@ -1,18 +1,18 @@
{
"name": "angular-loader",
"version": "1.2.26",
"version": "1.3.0-rc.5",
"main": "./angular-loader.js",
"dependencies": {
"angular": "1.2.26"
"angular": "1.3.0-rc.5"
},
"homepage": "https://github.com/angular/bower-angular-loader",
"_release": "1.2.26",
"_release": "1.3.0-rc.5",
"_resolution": {
"type": "version",
"tag": "v1.2.26",
"commit": "a90a91969628591d7d399dbc46c4c344f1c89938"
"tag": "v1.3.0-rc.5",
"commit": "adbec6e225feae91aa3eaab59a31331a5c0fcb06"
},
"_source": "git://github.com/angular/bower-angular-loader.git",
"_target": "*",
"_target": "1.3.0-rc.5",
"_originalSource": "angular-loader"
}

View file

@ -1,5 +1,5 @@
/**
* @license AngularJS v1.2.26
* @license AngularJS v1.3.0-rc.5
* (c) 2010-2014 Google, Inc. http://angularjs.org
* License: MIT
*/
@ -31,10 +31,13 @@
* should all be static strings, not variables or general expressions.
*
* @param {string} module The namespace to use for the new minErr instance.
* @param {function} ErrorConstructor Custom error constructor to be instantiated when returning
* error from returned function, for cases when a particular type of error is useful.
* @returns {function(code:string, template:string, ...templateArgs): Error} minErr instance
*/
function minErr(module) {
function minErr(module, ErrorConstructor) {
ErrorConstructor = ErrorConstructor || Error;
return function () {
var code = arguments[0],
prefix = '[' + (module ? module + ':' : '') + code + '] ',
@ -69,14 +72,13 @@ function minErr(module) {
return match;
});
message = message + '\nhttp://errors.angularjs.org/1.2.26/' +
message = message + '\nhttp://errors.angularjs.org/1.3.0-rc.5/' +
(module ? module + '/' : '') + code;
for (i = 2; i < arguments.length; i++) {
message = message + (i == 2 ? '?' : '&') + 'p' + (i-2) + '=' +
encodeURIComponent(stringify(arguments[i]));
}
return new Error(message);
return new ErrorConstructor(message);
};
}
@ -179,15 +181,19 @@ function setupModuleLoader(window) {
/** @type {!Array.<Array.<*>>} */
var invokeQueue = [];
/** @type {!Array.<Function>} */
var configBlocks = [];
/** @type {!Array.<Function>} */
var runBlocks = [];
var config = invokeLater('$injector', 'invoke');
var config = invokeLater('$injector', 'invoke', 'push', configBlocks);
/** @type {angular.Module} */
var moduleInstance = {
// Private state
_invokeQueue: invokeQueue,
_configBlocks: configBlocks,
_runBlocks: runBlocks,
/**
@ -380,9 +386,10 @@ function setupModuleLoader(window) {
* @param {String=} insertMethod
* @returns {angular.Module}
*/
function invokeLater(provider, method, insertMethod) {
function invokeLater(provider, method, insertMethod, queue) {
if (!queue) queue = invokeQueue;
return function() {
invokeQueue[insertMethod || 'push']([provider, method, arguments]);
queue[insertMethod || 'push']([provider, method, arguments]);
return moduleInstance;
};
}

View file

@ -1,9 +1,9 @@
/*
AngularJS v1.2.26
AngularJS v1.3.0-rc.5
(c) 2010-2014 Google, Inc. http://angularjs.org
License: MIT
*/
(function(){'use strict';function d(a){return function(){var c=arguments[0],b,c="["+(a?a+":":"")+c+"] http://errors.angularjs.org/1.2.26/"+(a?a+"/":"")+c;for(b=1;b<arguments.length;b++)c=c+(1==b?"?":"&")+"p"+(b-1)+"="+encodeURIComponent("function"==typeof arguments[b]?arguments[b].toString().replace(/ \{[\s\S]*$/,""):"undefined"==typeof arguments[b]?"undefined":"string"!=typeof arguments[b]?JSON.stringify(arguments[b]):arguments[b]);return Error(c)}}(function(a){var c=d("$injector"),b=d("ng");a=a.angular||
(a.angular={});a.$$minErr=a.$$minErr||d;return a.module||(a.module=function(){var a={};return function(e,d,f){if("hasOwnProperty"===e)throw b("badname","module");d&&a.hasOwnProperty(e)&&(a[e]=null);return a[e]||(a[e]=function(){function a(c,d,e){return function(){b[e||"push"]([c,d,arguments]);return g}}if(!d)throw c("nomod",e);var b=[],h=[],k=a("$injector","invoke"),g={_invokeQueue:b,_runBlocks:h,requires:d,name:e,provider:a("$provide","provider"),factory:a("$provide","factory"),service:a("$provide",
"service"),value:a("$provide","value"),constant:a("$provide","constant","unshift"),animation:a("$animateProvider","register"),filter:a("$filterProvider","register"),controller:a("$controllerProvider","register"),directive:a("$compileProvider","directive"),config:k,run:function(a){h.push(a);return this}};f&&k(f);return g}())}}())})(window)})(window);
(function(){'use strict';function d(b){return function(){var c=arguments[0],e;e="["+(b?b+":":"")+c+"] http://errors.angularjs.org/1.3.0-rc.5/"+(b?b+"/":"")+c;for(c=1;c<arguments.length;c++){e=e+(1==c?"?":"&")+"p"+(c-1)+"=";var d=encodeURIComponent,a;a=arguments[c];a="function"==typeof a?a.toString().replace(/ \{[\s\S]*$/,""):"undefined"==typeof a?"undefined":"string"!=typeof a?JSON.stringify(a):a;e+=d(a)}return Error(e)}}(function(b){function c(a,c,b){return a[c]||(a[c]=b())}var e=d("$injector"),
n=d("ng");b=c(b,"angular",Object);b.$$minErr=b.$$minErr||d;return c(b,"module",function(){var a={};return function(b,d,g){if("hasOwnProperty"===b)throw n("badname","module");d&&a.hasOwnProperty(b)&&(a[b]=null);return c(a,b,function(){function a(b,d,e,f){f||(f=c);return function(){f[e||"push"]([b,d,arguments]);return h}}if(!d)throw e("nomod",b);var c=[],k=[],l=[],m=a("$injector","invoke","push",k),h={_invokeQueue:c,_configBlocks:k,_runBlocks:l,requires:d,name:b,provider:a("$provide","provider"),factory:a("$provide",
"factory"),service:a("$provide","service"),value:a("$provide","value"),constant:a("$provide","constant","unshift"),animation:a("$animateProvider","register"),filter:a("$filterProvider","register"),controller:a("$controllerProvider","register"),directive:a("$compileProvider","directive"),config:m,run:function(a){l.push(a);return this}};g&&m(g);return h})}})})(window)})(window);
//# sourceMappingURL=angular-loader.min.js.map

View file

@ -2,7 +2,7 @@
"version":3,
"file":"angular-loader.min.js",
"lineCount":8,
"mappings":"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",
"mappings":"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",
"sources":["angular-loader.js"],
"names":["minErr","setupModuleLoader","window","$injectorMinErr","ngMinErr","angular","$$minErr","factory","modules","module","name","requires","configFn","context","hasOwnProperty","invokeLater","provider","method","insertMethod","invokeQueue","arguments","moduleInstance","runBlocks","config","run","block","push"]
"names":["minErr","setupModuleLoader","window","ensure","obj","name","factory","$injectorMinErr","ngMinErr","angular","Object","$$minErr","modules","module","requires","configFn","context","hasOwnProperty","invokeLater","provider","method","insertMethod","queue","invokeQueue","arguments","moduleInstance","configBlocks","runBlocks","config","_invokeQueue","_configBlocks","_runBlocks","service","value","constant","animation","filter","controller","directive","run","block","push"]
}

View file

@ -1,8 +1,8 @@
{
"name": "angular-loader",
"version": "1.2.26",
"version": "1.3.0-rc.5",
"main": "./angular-loader.js",
"dependencies": {
"angular": "1.2.26"
"angular": "1.3.0-rc.5"
}
}

View file

@ -1,6 +1,6 @@
{
"name": "angular-loader",
"version": "",
"version": "1.3.0-rc.5",
"description": "AngularJS module for asynchronously loading modules",
"main": "angular-loader.js",
"scripts": {

View file

@ -1,24 +1,24 @@
{
"name": "angular-material",
"version": "0.0.3",
"version": "0.4.0",
"dependencies": {
"angular": "^1.3.0-beta.18",
"angular-animate": "^1.3.0-beta.18",
"hammerjs": "~2.0.3"
"angular": "1.3.0-rc.4",
"angular-animate": "1.3.0-rc.4",
"angular-aria": "1.3.0-rc.4",
"hammerjs": "~2.0.2"
},
"main": [
"angular-material.js",
"angular-material.css"
],
"homepage": "https://github.com/angular/bower-material",
"_release": "0.0.3",
"_release": "0.4.0",
"_resolution": {
"type": "version",
"tag": "v0.0.3",
"commit": "ec33d2ecfdf091e09eb285174c0ef1a948c10485"
"tag": "v0.4.0",
"commit": "d3c6ed5ca2756a74b16e5faf460df64aaa9a0a36"
},
"_source": "git://github.com/angular/bower-material.git",
"_target": "~0.0.3",
"_originalSource": "angular-material",
"_direct": true
"_target": "*",
"_originalSource": "angular-material"
}

File diff suppressed because it is too large Load diff

File diff suppressed because it is too large Load diff

File diff suppressed because one or more lines are too long

File diff suppressed because one or more lines are too long

View file

@ -1,10 +1,11 @@
{
"name": "angular-material",
"version": "0.0.3-master-f291897",
"version": "0.4.0",
"dependencies": {
"angular": "^1.3.0-beta.18",
"angular-animate": "^1.3.0-beta.18",
"hammerjs": "~2.0.3"
"angular": "1.3.0-rc.4",
"angular-animate": "1.3.0-rc.4",
"angular-aria": "1.3.0-rc.4",
"hammerjs": "~2.0.2"
},
"main": [
"angular-material.js",

View file

@ -1,18 +1,18 @@
{
"name": "angular-mocks",
"version": "1.2.26",
"version": "1.3.0-rc.5",
"main": "./angular-mocks.js",
"dependencies": {
"angular": "1.2.26"
"angular": "1.3.0-rc.5"
},
"homepage": "https://github.com/angular/bower-angular-mocks",
"_release": "1.2.26",
"_release": "1.3.0-rc.5",
"_resolution": {
"type": "version",
"tag": "v1.2.26",
"commit": "0eda339dd42aba2628586f39d4806bcfb57fd6f4"
"tag": "v1.3.0-rc.5",
"commit": "ca34816104cd828d4940a9f621789c42f5843f85"
},
"_source": "git://github.com/angular/bower-angular-mocks.git",
"_target": "*",
"_target": "1.3.0-rc.5",
"_originalSource": "angular-mocks"
}

View file

@ -1,5 +1,5 @@
/**
* @license AngularJS v1.2.26
* @license AngularJS v1.3.0-rc.5
* (c) 2010-2014 Google, Inc. http://angularjs.org
* License: MIT
*/
@ -53,9 +53,10 @@ angular.mock.$Browser = function() {
self.onUrlChange = function(listener) {
self.pollFns.push(
function() {
if (self.$$lastUrl != self.$$url) {
if (self.$$lastUrl !== self.$$url || self.$$state !== self.$$lastState) {
self.$$lastUrl = self.$$url;
listener(self.$$url);
self.$$lastState = self.$$state;
listener(self.$$url, self.$$state);
}
}
);
@ -127,7 +128,7 @@ angular.mock.$Browser = function() {
}
};
self.$$baseHref = '';
self.$$baseHref = '/';
self.baseHref = function() {
return this.$$baseHref;
};
@ -151,15 +152,24 @@ angular.mock.$Browser.prototype = {
return pollFn;
},
url: function(url, replace) {
url: function(url, replace, state) {
if (angular.isUndefined(state)) {
state = null;
}
if (url) {
this.$$url = url;
// Native pushState serializes & copies the object; simulate it.
this.$$state = angular.copy(state);
return this;
}
return this.$$url;
},
state: function() {
return this.$$state;
},
cookies: function(name, value) {
if (name) {
if (angular.isUndefined(value)) {
@ -776,13 +786,22 @@ angular.mock.animate = angular.module('ngAnimateMock', ['ng'])
};
});
$provide.decorator('$animate', function($delegate, $$asyncCallback) {
$provide.decorator('$animate', ['$delegate', '$$asyncCallback', '$timeout', '$browser',
function($delegate, $$asyncCallback, $timeout, $browser) {
var animate = {
queue : [],
cancel : $delegate.cancel,
enabled : $delegate.enabled,
triggerCallbacks : function() {
triggerCallbackEvents : function() {
$$asyncCallback.flush();
},
triggerCallbackPromise : function() {
$timeout.flush(0);
},
triggerCallbacks : function() {
this.triggerCallbackEvents();
this.triggerCallbackPromise();
},
triggerReflow : function() {
angular.forEach(reflowQueue, function(fn) {
fn();
@ -797,14 +816,15 @@ angular.mock.animate = angular.module('ngAnimateMock', ['ng'])
animate.queue.push({
event : method,
element : arguments[0],
options : arguments[arguments.length-1],
args : arguments
});
$delegate[method].apply($delegate, arguments);
return $delegate[method].apply($delegate, arguments);
};
});
return animate;
});
}]);
}]);
@ -1009,13 +1029,14 @@ angular.mock.dump = function(object) {
```js
// testing controller
describe('MyController', function() {
var $httpBackend, $rootScope, createController;
var $httpBackend, $rootScope, createController, authRequestHandler;
beforeEach(inject(function($injector) {
// Set up the mock http service responses
$httpBackend = $injector.get('$httpBackend');
// backend definition common for all tests
$httpBackend.when('GET', '/auth.py').respond({userId: 'userX'}, {'A-Token': 'xxx'});
authRequestHandler = $httpBackend.when('GET', '/auth.py')
.respond({userId: 'userX'}, {'A-Token': 'xxx'});
// Get hold of a scope (i.e. the root scope)
$rootScope = $injector.get('$rootScope');
@ -1041,6 +1062,18 @@ angular.mock.dump = function(object) {
});
it('should fail authentication', function() {
// Notice how you can change the response even after it was set
authRequestHandler.respond(401, '');
$httpBackend.expectGET('/auth.py');
var controller = createController();
$httpBackend.flush();
expect($rootScope.status).toBe('Failed...');
});
it('should send msg to server', function() {
var controller = createController();
$httpBackend.flush();
@ -1188,32 +1221,39 @@ function createHttpBackendMock($rootScope, $delegate, $browser) {
* Creates a new backend definition.
*
* @param {string} method HTTP method.
* @param {string|RegExp} url HTTP url.
* @param {string|RegExp|function(string)} url HTTP url or function that receives the url
* and returns true if the url match the current definition.
* @param {(string|RegExp|function(string))=} data HTTP request body or function that receives
* data string and returns true if the data is as expected.
* @param {(Object|function(Object))=} headers HTTP headers or function that receives http header
* object and returns true if the headers match the current definition.
* @returns {requestHandler} Returns an object with `respond` method that controls how a matched
* request is handled.
* request is handled. You can save this object for later use and invoke `respond` again in
* order to change how a matched request is handled.
*
* - respond
* `{function([status,] data[, headers, statusText])
* | function(function(method, url, data, headers)}`
* The respond method takes a set of static data to be returned or a function that can
* return an array containing response status (number), response data (string), response
* headers (Object), and the text for the status (string).
* headers (Object), and the text for the status (string). The respond method returns the
* `requestHandler` object for possible overrides.
*/
$httpBackend.when = function(method, url, data, headers) {
var definition = new MockHttpExpectation(method, url, data, headers),
chain = {
respond: function(status, data, headers, statusText) {
definition.passThrough = undefined;
definition.response = createResponse(status, data, headers, statusText);
return chain;
}
};
if ($browser) {
chain.passThrough = function() {
definition.response = undefined;
definition.passThrough = true;
return chain;
};
}
@ -1227,10 +1267,12 @@ function createHttpBackendMock($rootScope, $delegate, $browser) {
* @description
* Creates a new backend definition for GET requests. For more info see `when()`.
*
* @param {string|RegExp} url HTTP url.
* @param {string|RegExp|function(string)} url HTTP url or function that receives the url
* and returns true if the url match the current definition.
* @param {(Object|function(Object))=} headers HTTP headers.
* @returns {requestHandler} Returns an object with `respond` method that control how a matched
* request is handled.
* request is handled. You can save this object for later use and invoke `respond` again in
* order to change how a matched request is handled.
*/
/**
@ -1239,10 +1281,12 @@ function createHttpBackendMock($rootScope, $delegate, $browser) {
* @description
* Creates a new backend definition for HEAD requests. For more info see `when()`.
*
* @param {string|RegExp} url HTTP url.
* @param {string|RegExp|function(string)} url HTTP url or function that receives the url
* and returns true if the url match the current definition.
* @param {(Object|function(Object))=} headers HTTP headers.
* @returns {requestHandler} Returns an object with `respond` method that control how a matched
* request is handled.
* request is handled. You can save this object for later use and invoke `respond` again in
* order to change how a matched request is handled.
*/
/**
@ -1251,10 +1295,12 @@ function createHttpBackendMock($rootScope, $delegate, $browser) {
* @description
* Creates a new backend definition for DELETE requests. For more info see `when()`.
*
* @param {string|RegExp} url HTTP url.
* @param {string|RegExp|function(string)} url HTTP url or function that receives the url
* and returns true if the url match the current definition.
* @param {(Object|function(Object))=} headers HTTP headers.
* @returns {requestHandler} Returns an object with `respond` method that control how a matched
* request is handled.
* request is handled. You can save this object for later use and invoke `respond` again in
* order to change how a matched request is handled.
*/
/**
@ -1263,12 +1309,14 @@ function createHttpBackendMock($rootScope, $delegate, $browser) {
* @description
* Creates a new backend definition for POST requests. For more info see `when()`.
*
* @param {string|RegExp} url HTTP url.
* @param {string|RegExp|function(string)} url HTTP url or function that receives the url
* and returns true if the url match the current definition.
* @param {(string|RegExp|function(string))=} data HTTP request body or function that receives
* data string and returns true if the data is as expected.
* @param {(Object|function(Object))=} headers HTTP headers.
* @returns {requestHandler} Returns an object with `respond` method that control how a matched
* request is handled.
* request is handled. You can save this object for later use and invoke `respond` again in
* order to change how a matched request is handled.
*/
/**
@ -1277,12 +1325,14 @@ function createHttpBackendMock($rootScope, $delegate, $browser) {
* @description
* Creates a new backend definition for PUT requests. For more info see `when()`.
*
* @param {string|RegExp} url HTTP url.
* @param {string|RegExp|function(string)} url HTTP url or function that receives the url
* and returns true if the url match the current definition.
* @param {(string|RegExp|function(string))=} data HTTP request body or function that receives
* data string and returns true if the data is as expected.
* @param {(Object|function(Object))=} headers HTTP headers.
* @returns {requestHandler} Returns an object with `respond` method that control how a matched
* request is handled.
* request is handled. You can save this object for later use and invoke `respond` again in
* order to change how a matched request is handled.
*/
/**
@ -1291,9 +1341,11 @@ function createHttpBackendMock($rootScope, $delegate, $browser) {
* @description
* Creates a new backend definition for JSONP requests. For more info see `when()`.
*
* @param {string|RegExp} url HTTP url.
* @param {string|RegExp|function(string)} url HTTP url or function that receives the url
* and returns true if the url match the current definition.
* @returns {requestHandler} Returns an object with `respond` method that control how a matched
* request is handled.
* request is handled. You can save this object for later use and invoke `respond` again in
* order to change how a matched request is handled.
*/
createShortMethods('when');
@ -1305,30 +1357,36 @@ function createHttpBackendMock($rootScope, $delegate, $browser) {
* Creates a new request expectation.
*
* @param {string} method HTTP method.
* @param {string|RegExp} url HTTP url.
* @param {string|RegExp|function(string)} url HTTP url or function that receives the url
* and returns true if the url match the current definition.
* @param {(string|RegExp|function(string)|Object)=} data HTTP request body or function that
* receives data string and returns true if the data is as expected, or Object if request body
* is in JSON format.
* @param {(Object|function(Object))=} headers HTTP headers or function that receives http header
* object and returns true if the headers match the current expectation.
* @returns {requestHandler} Returns an object with `respond` method that control how a matched
* request is handled.
* request is handled. You can save this object for later use and invoke `respond` again in
* order to change how a matched request is handled.
*
* - respond
* `{function([status,] data[, headers, statusText])
* | function(function(method, url, data, headers)}`
* The respond method takes a set of static data to be returned or a function that can
* return an array containing response status (number), response data (string), response
* headers (Object), and the text for the status (string).
* headers (Object), and the text for the status (string). The respond method returns the
* `requestHandler` object for possible overrides.
*/
$httpBackend.expect = function(method, url, data, headers) {
var expectation = new MockHttpExpectation(method, url, data, headers);
var expectation = new MockHttpExpectation(method, url, data, headers),
chain = {
respond: function (status, data, headers, statusText) {
expectation.response = createResponse(status, data, headers, statusText);
return chain;
}
};
expectations.push(expectation);
return {
respond: function (status, data, headers, statusText) {
expectation.response = createResponse(status, data, headers, statusText);
}
};
return chain;
};
@ -1338,10 +1396,12 @@ function createHttpBackendMock($rootScope, $delegate, $browser) {
* @description
* Creates a new request expectation for GET requests. For more info see `expect()`.
*
* @param {string|RegExp} url HTTP url.
* @param {string|RegExp|function(string)} url HTTP url or function that receives the url
* and returns true if the url match the current definition.
* @param {Object=} headers HTTP headers.
* @returns {requestHandler} Returns an object with `respond` method that control how a matched
* request is handled. See #expect for more info.
* request is handled. You can save this object for later use and invoke `respond` again in
* order to change how a matched request is handled. See #expect for more info.
*/
/**
@ -1350,10 +1410,12 @@ function createHttpBackendMock($rootScope, $delegate, $browser) {
* @description
* Creates a new request expectation for HEAD requests. For more info see `expect()`.
*
* @param {string|RegExp} url HTTP url.
* @param {string|RegExp|function(string)} url HTTP url or function that receives the url
* and returns true if the url match the current definition.
* @param {Object=} headers HTTP headers.
* @returns {requestHandler} Returns an object with `respond` method that control how a matched
* request is handled.
* request is handled. You can save this object for later use and invoke `respond` again in
* order to change how a matched request is handled.
*/
/**
@ -1362,10 +1424,12 @@ function createHttpBackendMock($rootScope, $delegate, $browser) {
* @description
* Creates a new request expectation for DELETE requests. For more info see `expect()`.
*
* @param {string|RegExp} url HTTP url.
* @param {string|RegExp|function(string)} url HTTP url or function that receives the url
* and returns true if the url match the current definition.
* @param {Object=} headers HTTP headers.
* @returns {requestHandler} Returns an object with `respond` method that control how a matched
* request is handled.
* request is handled. You can save this object for later use and invoke `respond` again in
* order to change how a matched request is handled.
*/
/**
@ -1374,13 +1438,15 @@ function createHttpBackendMock($rootScope, $delegate, $browser) {
* @description
* Creates a new request expectation for POST requests. For more info see `expect()`.
*
* @param {string|RegExp} url HTTP url.
* @param {string|RegExp|function(string)} url HTTP url or function that receives the url
* and returns true if the url match the current definition.
* @param {(string|RegExp|function(string)|Object)=} data HTTP request body or function that
* receives data string and returns true if the data is as expected, or Object if request body
* is in JSON format.
* @param {Object=} headers HTTP headers.
* @returns {requestHandler} Returns an object with `respond` method that control how a matched
* request is handled.
* request is handled. You can save this object for later use and invoke `respond` again in
* order to change how a matched request is handled.
*/
/**
@ -1389,13 +1455,15 @@ function createHttpBackendMock($rootScope, $delegate, $browser) {
* @description
* Creates a new request expectation for PUT requests. For more info see `expect()`.
*
* @param {string|RegExp} url HTTP url.
* @param {string|RegExp|function(string)} url HTTP url or function that receives the url
* and returns true if the url match the current definition.
* @param {(string|RegExp|function(string)|Object)=} data HTTP request body or function that
* receives data string and returns true if the data is as expected, or Object if request body
* is in JSON format.
* @param {Object=} headers HTTP headers.
* @returns {requestHandler} Returns an object with `respond` method that control how a matched
* request is handled.
* request is handled. You can save this object for later use and invoke `respond` again in
* order to change how a matched request is handled.
*/
/**
@ -1404,13 +1472,15 @@ function createHttpBackendMock($rootScope, $delegate, $browser) {
* @description
* Creates a new request expectation for PATCH requests. For more info see `expect()`.
*
* @param {string|RegExp} url HTTP url.
* @param {string|RegExp|function(string)} url HTTP url or function that receives the url
* and returns true if the url match the current definition.
* @param {(string|RegExp|function(string)|Object)=} data HTTP request body or function that
* receives data string and returns true if the data is as expected, or Object if request body
* is in JSON format.
* @param {Object=} headers HTTP headers.
* @returns {requestHandler} Returns an object with `respond` method that control how a matched
* request is handled.
* request is handled. You can save this object for later use and invoke `respond` again in
* order to change how a matched request is handled.
*/
/**
@ -1419,9 +1489,11 @@ function createHttpBackendMock($rootScope, $delegate, $browser) {
* @description
* Creates a new request expectation for JSONP requests. For more info see `expect()`.
*
* @param {string|RegExp} url HTTP url.
* @param {string|RegExp|function(string)} url HTTP url or function that receives the url
* and returns true if the url match the current definition.
* @returns {requestHandler} Returns an object with `respond` method that control how a matched
* request is handled.
* request is handled. You can save this object for later use and invoke `respond` again in
* order to change how a matched request is handled.
*/
createShortMethods('expect');
@ -1436,11 +1508,11 @@ function createHttpBackendMock($rootScope, $delegate, $browser) {
* all pending requests will be flushed. If there are no pending requests when the flush method
* is called an exception is thrown (as this typically a sign of programming error).
*/
$httpBackend.flush = function(count) {
$rootScope.$digest();
$httpBackend.flush = function(count, digest) {
if (digest !== false) $rootScope.$digest();
if (!responses.length) throw new Error('No pending request to flush !');
if (angular.isDefined(count)) {
if (angular.isDefined(count) && count !== null) {
while (count--) {
if (!responses.length) throw new Error('No more pending request to flush !');
responses.shift()();
@ -1450,7 +1522,7 @@ function createHttpBackendMock($rootScope, $delegate, $browser) {
responses.shift()();
}
}
$httpBackend.verifyNoOutstandingExpectation();
$httpBackend.verifyNoOutstandingExpectation(digest);
};
@ -1468,8 +1540,8 @@ function createHttpBackendMock($rootScope, $delegate, $browser) {
* afterEach($httpBackend.verifyNoOutstandingExpectation);
* ```
*/
$httpBackend.verifyNoOutstandingExpectation = function() {
$rootScope.$digest();
$httpBackend.verifyNoOutstandingExpectation = function(digest) {
if (digest !== false) $rootScope.$digest();
if (expectations.length) {
throw new Error('Unsatisfied requests: ' + expectations.join(', '));
}
@ -1513,7 +1585,7 @@ function createHttpBackendMock($rootScope, $delegate, $browser) {
function createShortMethods(prefix) {
angular.forEach(['GET', 'DELETE', 'JSONP'], function(method) {
angular.forEach(['GET', 'DELETE', 'JSONP', 'HEAD'], function(method) {
$httpBackend[prefix + method] = function(url, headers) {
return $httpBackend[prefix](method, url, undefined, headers);
};
@ -1543,6 +1615,7 @@ function MockHttpExpectation(method, url, data, headers) {
this.matchUrl = function(u) {
if (!url) return true;
if (angular.isFunction(url.test)) return url.test(u);
if (angular.isFunction(url)) return url(u);
return url == u;
};
@ -1629,7 +1702,7 @@ function MockXhr() {
* that adds a "flush" and "verifyNoPendingTasks" methods.
*/
angular.mock.$TimeoutDecorator = function($delegate, $browser) {
angular.mock.$TimeoutDecorator = ['$delegate', '$browser', function ($delegate, $browser) {
/**
* @ngdoc method
@ -1668,9 +1741,9 @@ angular.mock.$TimeoutDecorator = function($delegate, $browser) {
}
return $delegate;
};
}];
angular.mock.$RAFDecorator = function($delegate) {
angular.mock.$RAFDecorator = ['$delegate', function($delegate) {
var queue = [];
var rafFn = function(fn) {
var index = queue.length;
@ -1696,9 +1769,9 @@ angular.mock.$RAFDecorator = function($delegate) {
};
return rafFn;
};
}];
angular.mock.$AsyncCallbackDecorator = function($delegate) {
angular.mock.$AsyncCallbackDecorator = ['$delegate', function($delegate) {
var callbacks = [];
var addFn = function(fn) {
callbacks.push(fn);
@ -1710,7 +1783,7 @@ angular.mock.$AsyncCallbackDecorator = function($delegate) {
callbacks = [];
};
return addFn;
};
}];
/**
*
@ -1824,12 +1897,14 @@ angular.module('ngMockE2E', ['ng']).config(['$provide', function($provide) {
* Creates a new backend definition.
*
* @param {string} method HTTP method.
* @param {string|RegExp} url HTTP url.
* @param {string|RegExp|function(string)} url HTTP url or function that receives the url
* and returns true if the url match the current definition.
* @param {(string|RegExp)=} data HTTP request body.
* @param {(Object|function(Object))=} headers HTTP headers or function that receives http header
* object and returns true if the headers match the current definition.
* @returns {requestHandler} Returns an object with `respond` and `passThrough` methods that
* control how a matched request is handled.
* control how a matched request is handled. You can save this object for later use and invoke
* `respond` or `passThrough` again in order to change how a matched request is handled.
*
* - respond
* `{function([status,] data[, headers, statusText])
@ -1840,6 +1915,7 @@ angular.module('ngMockE2E', ['ng']).config(['$provide', function($provide) {
* - passThrough `{function()}` Any request matching a backend definition with
* `passThrough` handler will be passed through to the real backend (an XHR request will be made
* to the server.)
* - Both methods return the `requestHandler` object for possible overrides.
*/
/**
@ -1849,10 +1925,12 @@ angular.module('ngMockE2E', ['ng']).config(['$provide', function($provide) {
* @description
* Creates a new backend definition for GET requests. For more info see `when()`.
*
* @param {string|RegExp} url HTTP url.
* @param {string|RegExp|function(string)} url HTTP url or function that receives the url
* and returns true if the url match the current definition.
* @param {(Object|function(Object))=} headers HTTP headers.
* @returns {requestHandler} Returns an object with `respond` and `passThrough` methods that
* control how a matched request is handled.
* control how a matched request is handled. You can save this object for later use and invoke
* `respond` or `passThrough` again in order to change how a matched request is handled.
*/
/**
@ -1862,10 +1940,12 @@ angular.module('ngMockE2E', ['ng']).config(['$provide', function($provide) {
* @description
* Creates a new backend definition for HEAD requests. For more info see `when()`.
*
* @param {string|RegExp} url HTTP url.
* @param {string|RegExp|function(string)} url HTTP url or function that receives the url
* and returns true if the url match the current definition.
* @param {(Object|function(Object))=} headers HTTP headers.
* @returns {requestHandler} Returns an object with `respond` and `passThrough` methods that
* control how a matched request is handled.
* control how a matched request is handled. You can save this object for later use and invoke
* `respond` or `passThrough` again in order to change how a matched request is handled.
*/
/**
@ -1875,10 +1955,12 @@ angular.module('ngMockE2E', ['ng']).config(['$provide', function($provide) {
* @description
* Creates a new backend definition for DELETE requests. For more info see `when()`.
*
* @param {string|RegExp} url HTTP url.
* @param {string|RegExp|function(string)} url HTTP url or function that receives the url
* and returns true if the url match the current definition.
* @param {(Object|function(Object))=} headers HTTP headers.
* @returns {requestHandler} Returns an object with `respond` and `passThrough` methods that
* control how a matched request is handled.
* control how a matched request is handled. You can save this object for later use and invoke
* `respond` or `passThrough` again in order to change how a matched request is handled.
*/
/**
@ -1888,11 +1970,13 @@ angular.module('ngMockE2E', ['ng']).config(['$provide', function($provide) {
* @description
* Creates a new backend definition for POST requests. For more info see `when()`.
*
* @param {string|RegExp} url HTTP url.
* @param {string|RegExp|function(string)} url HTTP url or function that receives the url
* and returns true if the url match the current definition.
* @param {(string|RegExp)=} data HTTP request body.
* @param {(Object|function(Object))=} headers HTTP headers.
* @returns {requestHandler} Returns an object with `respond` and `passThrough` methods that
* control how a matched request is handled.
* control how a matched request is handled. You can save this object for later use and invoke
* `respond` or `passThrough` again in order to change how a matched request is handled.
*/
/**
@ -1902,11 +1986,13 @@ angular.module('ngMockE2E', ['ng']).config(['$provide', function($provide) {
* @description
* Creates a new backend definition for PUT requests. For more info see `when()`.
*
* @param {string|RegExp} url HTTP url.
* @param {string|RegExp|function(string)} url HTTP url or function that receives the url
* and returns true if the url match the current definition.
* @param {(string|RegExp)=} data HTTP request body.
* @param {(Object|function(Object))=} headers HTTP headers.
* @returns {requestHandler} Returns an object with `respond` and `passThrough` methods that
* control how a matched request is handled.
* control how a matched request is handled. You can save this object for later use and invoke
* `respond` or `passThrough` again in order to change how a matched request is handled.
*/
/**
@ -1916,11 +2002,13 @@ angular.module('ngMockE2E', ['ng']).config(['$provide', function($provide) {
* @description
* Creates a new backend definition for PATCH requests. For more info see `when()`.
*
* @param {string|RegExp} url HTTP url.
* @param {string|RegExp|function(string)} url HTTP url or function that receives the url
* and returns true if the url match the current definition.
* @param {(string|RegExp)=} data HTTP request body.
* @param {(Object|function(Object))=} headers HTTP headers.
* @returns {requestHandler} Returns an object with `respond` and `passThrough` methods that
* control how a matched request is handled.
* control how a matched request is handled. You can save this object for later use and invoke
* `respond` or `passThrough` again in order to change how a matched request is handled.
*/
/**
@ -1930,30 +2018,17 @@ angular.module('ngMockE2E', ['ng']).config(['$provide', function($provide) {
* @description
* Creates a new backend definition for JSONP requests. For more info see `when()`.
*
* @param {string|RegExp} url HTTP url.
* @param {string|RegExp|function(string)} url HTTP url or function that receives the url
* and returns true if the url match the current definition.
* @returns {requestHandler} Returns an object with `respond` and `passThrough` methods that
* control how a matched request is handled.
* control how a matched request is handled. You can save this object for later use and invoke
* `respond` or `passThrough` again in order to change how a matched request is handled.
*/
angular.mock.e2e = {};
angular.mock.e2e.$httpBackendDecorator =
['$rootScope', '$delegate', '$browser', createHttpBackendMock];
angular.mock.clearDataCache = function() {
var key,
cache = angular.element.cache;
for(key in cache) {
if (Object.prototype.hasOwnProperty.call(cache,key)) {
var handle = cache[key].handle;
handle && angular.element(handle.elem).off();
delete cache[key];
}
}
};
if(window.jasmine || window.mocha) {
var currentSpec = null,
@ -1984,8 +2059,6 @@ if(window.jasmine || window.mocha) {
injector.get('$browser').pollFns.length = 0;
}
angular.mock.clearDataCache();
// clean up jquery's fragment cache
angular.forEach(angular.element.fragments, function(val, key) {
delete angular.element.fragments[key];
@ -2148,14 +2221,28 @@ if(window.jasmine || window.mocha) {
/////////////////////
function workFn() {
var modules = currentSpec.$modules || [];
var strictDi = !!currentSpec.$injectorStrict;
modules.unshift('ngMock');
modules.unshift('ng');
var injector = currentSpec.$injector;
if (!injector) {
injector = currentSpec.$injector = angular.injector(modules);
if (strictDi) {
// If strictDi is enabled, annotate the providerInjector blocks
angular.forEach(modules, function(moduleFn) {
if (typeof moduleFn === "function") {
angular.injector.$$annotate(moduleFn);
}
});
}
injector = currentSpec.$injector = angular.injector(modules, strictDi);
currentSpec.$injectorStrict = strictDi;
}
for(var i = 0, ii = blockFns.length; i < ii; i++) {
if (currentSpec.$injectorStrict) {
// If the injector is strict / strictDi, and the spec wants to inject using automatic
// annotation, then annotate the function here.
injector.annotate(blockFns[i]);
}
try {
/* jshint -W040 *//* Jasmine explicitly provides a `this` object when calling functions */
injector.invoke(blockFns[i] || angular.noop, this);
@ -2171,6 +2258,22 @@ if(window.jasmine || window.mocha) {
}
}
};
angular.mock.inject.strictDi = function(value) {
value = arguments.length ? !!value : true;
return isSpecRunning() ? workFn() : workFn;
function workFn() {
if (value !== currentSpec.$injectorStrict) {
if (currentSpec.$injector) {
throw new Error('Injector already created, can not modify strict annotations');
} else {
currentSpec.$injectorStrict = value;
}
}
}
};
}

View file

@ -1,8 +1,8 @@
{
"name": "angular-mocks",
"version": "1.2.26",
"version": "1.3.0-rc.5",
"main": "./angular-mocks.js",
"dependencies": {
"angular": "1.2.26"
"angular": "1.3.0-rc.5"
}
}

View file

@ -1,6 +1,6 @@
{
"name": "angular-mocks",
"version": "",
"version": "1.3.0-rc.5",
"description": "AngularJS mocks for testing",
"main": "angular-mocks.js",
"scripts": {

View file

@ -11,6 +11,7 @@
"commit": "fe7adea2b896fc6eccae8d76542f7b2a320fe2cc"
},
"_source": "git://github.com/angular/bower-angular.git",
"_target": "^1.3.0-beta.18",
"_originalSource": "angular"
"_target": "1.3.0-rc.5",
"_originalSource": "angular",
"_direct": true
}

View file

@ -14,6 +14,6 @@
"commit": "7fc11efb37d6f2334ce957e26e9cf53690e10fa5"
},
"_source": "git://github.com/EightMedia/hammer.js.git",
"_target": "~2.0.3",
"_target": "~2.0.2",
"_originalSource": "hammerjs"
}

View file

@ -3,59 +3,62 @@
<!--[if IE 7]> <html lang="en" ng-app="app" class="no-js lt-ie9 lt-ie8"> <![endif]-->
<!--[if IE 8]> <html lang="en" ng-app="app" class="no-js lt-ie9"> <![endif]-->
<!--[if gt IE 8]><!--> <html lang="en" ng-app="app" class="no-js"> <!--<![endif]-->
<head>
<meta charset="utf-8">
<meta http-equiv="X-UA-Compatible" content="IE=edge">
<title>ledger le-moine.org</title>
<meta name="description" content="">
<meta name="viewport" content="width=device-width, initial-scale=1">
<head>
<meta charset="utf-8">
<meta http-equiv="X-UA-Compatible" content="IE=edge">
<title>ledger le-moine.org</title>
<meta name="description" content="">
<meta name="viewport" content="width=device-width, initial-scale=1">
<link type="image/x-icon" rel="icon" href="/favicon.ico" />
<link type="text/css" rel="stylesheet" href="/bower_components/html5-boilerplate/css/normalize.css">
<link type="text/css" rel="stylesheet" href="/bower_components/html5-boilerplate/css/main.css">
<link type="text/css" rel="stylesheet" href="/bower_components/nvd3/nv.d3.min.css">
<link type="text/css" rel="stylesheet" href="/bower_components/angular-loading-bar/build/loading-bar.min.css">
<link type="text/css" rel="stylesheet" href="/bower_components/ng-table/ng-table.min.css">
<link type="text/css" rel="stylesheet" href="/bower_components/angular-material/angular-material.min.css">
<link type="image/x-icon" rel="icon" href="/favicon.ico" />
<link type="text/css" rel="stylesheet" href="/bower_components/html5-boilerplate/css/normalize.css">
<link type="text/css" rel="stylesheet" href="/bower_components/html5-boilerplate/css/main.css">
<link type="text/css" rel="stylesheet" href="/bower_components/nvd3/nv.d3.min.css">
<link type="text/css" rel="stylesheet" href="/bower_components/angular-loading-bar/build/loading-bar.min.css">
<link type="text/css" rel="stylesheet" href="/bower_components/ng-table/ng-table.min.css">
<link type="text/css" rel="stylesheet" href="/bower_components/angular-material/angular-material.min.css">
<link type="text/css" rel="stylesheet" href="/css/app.css"/>
<script src="/bower_components/html5-boilerplate/js/vendor/modernizr-2.6.2.min.js"></script>
</head>
<body layout="vertical" layout-fill>
<link type="text/css" rel="stylesheet" href="/css/app.css"/>
<script src="/bower_components/html5-boilerplate/js/vendor/modernizr-2.6.2.min.js"></script>
</head>
<body layout="vertical" layout-fill>
<!--[if lt IE 7]>
<p class="browsehappy">You are using an <strong>outdated</strong> browser. Please <a href="http://browsehappy.com/">upgrade your browser</a> to improve your experience.</p>
<![endif]-->
<!--[if lt IE 7]>
<p class="browsehappy">You are using an <strong>outdated</strong> browser. Please <a href="http://browsehappy.com/">upgrade your browser</a> to improve your experience.</p>
<![endif]-->
<div ui-view="navbar"></div>
<div ui-view="navbar"></div>
<div class="main" ui-view="main"></div>
<div class="main" ui-view="main"></div>
<!-- In production use:
<script src="//ajax.googleapis.com/ajax/libs/angularjs/x.x.x/angular.min.js"></script>
-->
<script src="/bower_components/underscore/underscore.js"></script>
<script src="/bower_components/moment/moment.js"></script>
<script src="/bower_components/d3/d3.min.js"></script>
<script src="/bower_components/nvd3/nv.d3.min.js"></script>
<!-- In production use:
<script src="//ajax.googleapis.com/ajax/libs/angularjs/x.x.x/angular.min.js"></script>
-->
<script src="/bower_components/underscore/underscore.js"></script>
<script src="/bower_components/moment/moment.js"></script>
<script src="/bower_components/hammerjs/hammer.min.js"></script>
<script src="/bower_components/d3/d3.min.js"></script>
<script src="/bower_components/nvd3/nv.d3.min.js"></script>
<script src="/bower_components/angular/angular.js"></script>
<script src="/bower_components/angular-i18n/angular-locale_en-us.js"></script>
<script src="/bower_components/angular-ui-router/release/angular-ui-router.js"></script>
<script src="/bower_components/angular-material/angular-material.min.js"></script>
<script src="/bower_components/angular-moment/angular-moment.min.js"></script>
<script src="/bower_components/angularjs-nvd3-directives/dist/angularjs-nvd3-directives.min.js"></script>
<script src="/bower_components/angular-loading-bar/build/loading-bar.min.js"></script>
<script src="/bower_components/angular-underscore/angular-underscore.min.js"></script>
<script src="/bower_components/ng-table/ng-table.min.js"></script>
<script src="/bower_components/angular/angular.js"></script>
<script src="/bower_components/angular-i18n/angular-locale_en-us.js"></script>
<script src="/bower_components/angular-ui-router/release/angular-ui-router.js"></script>
<script src="/bower_components/angular-aria/angular-aria.min.js"></script>
<script src="/bower_components/angular-animate/angular-animate.min.js"></script>
<script src="/bower_components/angular-material/angular-material.min.js"></script>
<script src="/bower_components/angular-moment/angular-moment.min.js"></script>
<script src="/bower_components/angularjs-nvd3-directives/dist/angularjs-nvd3-directives.min.js"></script>
<script src="/bower_components/angular-loading-bar/build/loading-bar.min.js"></script>
<script src="/bower_components/angular-underscore/angular-underscore.min.js"></script>
<script src="/bower_components/ng-table/ng-table.min.js"></script>
<!-- APP -->
<script src="/js/app.js"></script>
<script src="/js/state.js"></script>
<script src="/js/services/API.js"></script>
<script src="/js/controllers/AppCtrl.js"></script>
<script src="/js/controllers/NavbarCtrl.js"></script>
<script src="/js/controllers/BalanceCtrl.js"></script>
<!-- APP -->
<script src="/js/app.js"></script>
<script src="/js/state.js"></script>
<script src="/js/services/API.js"></script>
<script src="/js/controllers/AppCtrl.js"></script>
<script src="/js/controllers/NavbarCtrl.js"></script>
<script src="/js/controllers/BalanceCtrl.js"></script>
</body>
</body>
</html>

View file

@ -3,5 +3,6 @@ var app = angular.module( 'app', [ 'ui.router',
'angularMoment',
'chieffancypants.loadingBar',
'ngTable',
'angular-underscore'
'angular-underscore',
'ngMaterial'
] );

View file

@ -71,7 +71,7 @@ app.controller( 'BalanceCtrl',
_($scope.balance.buckets).each( function( bucket ) {
bucket.data = [];
if ( _(bucket.accounts_selected).isEmpty() ) {
if ( _(bucket.accounts_selected).isEmpty() && bucket.score_threshold === 0 ) {
bucket.data = bucket.raw_data;
} else {
_(bucket.accounts_selected).each( function( account_selected ) {
@ -84,14 +84,20 @@ app.controller( 'BalanceCtrl',
}, 0 );
} );
};
$scope.select = { all: function( bucket ) {
bucket.accounts_selected = bucket.raw_data;
},
score_higher_than: function( bucket, score ) {
bucket.accounts_selected = _(bucket.raw_data).filter( function( account ) {
return account.score > score;
} );
}};
$scope.select = { score_higher_than: function( bucket, score ) {
bucket.accounts_selected = _(bucket.raw_data).filter( function( account ) {
return account.score >= score;
} );
}};
$scope.balance = {
buckets: [ { categories: 'Expenses',
score_threshold: 0 },
{ categories: 'Income Equity',
score_threshold: 0 } ],
details: {}
};
var retrieve_data = function () {
var from, to, period;
@ -113,19 +119,6 @@ app.controller( 'BalanceCtrl',
period += ' to ' + to.year() + '-' + ( to.month() + 1 ) + '-' + to.date();
}
$scope.balance = {
buckets: [ {
categories: 'Expenses',
data: [],
total: 0
}, {
categories: 'Income Equity',
data: [],
total: 0
} ],
details: {}
};
API.register( { period: period,
categories: '' } )
.then( function ( response ) {
@ -151,6 +144,7 @@ app.controller( 'BalanceCtrl',
}, 0 );
bucket.accounts_selected = bucket.raw_data;
$scope.select.score_higher_than( bucket, bucket.score_threshold );
$scope.filter_data();
} );
} );

View file

@ -27,19 +27,18 @@
<div layout="vertical" layout-md="horizontal" layout-padding>
<div flex data-ng-repeat="bucket in balance.buckets">
<material-toolbar class="material-theme-light">
<h3 flex="100">{{bucket.categories}}, total = {{bucket.total | number:2}} €</h3>
<select multiple flex="100"
<h3>{{bucket.categories}}, total = {{bucket.total | number:2}} €</h3>
<material-slider discrete
min="0" max="10" step="1"
data-ng-model="bucket.score_threshold"
data-ng-change="select.score_higher_than( bucket, bucket.score_threshold ); filter_data()">
</material-slider>
<select multiple
data-ng-model="bucket.accounts_selected"
data-ng-options="account.account for account in bucket.raw_data | orderBy:'account'"
data-ng-change="filter_data()">
<option value=''>...</option>
</select>
<material-button flex="50"
class="material-theme-light-blue"
data-ng-click="select.all( bucket ); filter_data()">All</material-button>
<material-button flex="50"
class="material-theme-light-blue"
data-ng-click="select.score_higher_than( bucket, 5 ); filter_data()">Superfluous</material-button>
</material-toolbar>
<material-content>
<nvd3-pie-chart data="bucket.data"

View file

@ -5,22 +5,26 @@
"homepage": "https://github.com/cycojesus/ledgerrb",
"license": "MIT",
"dependencies": {
"angular": "latest",
"angular-i18n": "latest",
"angular-loader": "latest",
"angular": "1.3.0-rc.5",
"angular-i18n": "1.3.0-rc.5",
"angular-animate": "1.3.0-rc.5",
"angular-aria": "1.3.0-rc.5",
"angular-loader": "1.3.0-rc.5",
"angular-loading-bar": "latest",
"angular-material": "~0.0.3",
"angular-mocks": "latest",
"angular-material": "latest",
"angular-mocks": "1.3.0-rc.5",
"angular-moment": "latest",
"angular-ui-router": "latest",
"angularjs-nvd3-directives": "latest",
"html5-boilerplate": "latest",
"ng-table": "latest",
"underscore": "latest",
"angular-underscore": "latest"
"angular-underscore": "latest"
},
"resolutions": {
"angular": "^1.3.0-beta.18",
"d3": "~3.4.1"
"d3": "~3.4.1",
"angular": "1.3.0-rc.5",
"angular-animate": "1.3.0-rc.5",
"angular-aria": "1.3.0-rc.5"
}
}