aboutsummaryrefslogtreecommitdiffstats
BranchCommit messageAuthorAge
g3_v1_0feat(Angular.js): add externs file for Closure CompilerMartin Probst12 years
g3_v1_2fix(input): don't perform HTML5 validation on updated model-valueCaitlin Potter12 years
g3_v1_3fix(input): don't perform HTML5 validation on updated model-valueCaitlin Potter12 years
masterdocs(guides/directive): add (') to contractionLuke Eller12 years
nganimate-docs-at-symbol-HTML-entity-to-characterdocs(ngAnimate): change "&#64" to "@" symbolTeddy Wing12 years
v0.9.xfix(e2e): add index-nocache.html to run e2e tests without cacheIgor Minar14 years
v1.0.xrefactor(externs): move Closure Externs back to Closure code repositoryMartin Probst12 years
v1.2.xfix(filter.ngdoc): Check if "input" variable is definedRenat Yakubov12 years
 
TagDownloadAuthorAge
v1.2.15angular.js-1.2.15.tar.bz2  jenkins12 years
v1.3.0-beta.3angular.js-1.3.0-beta.3.tar.bz2  jenkins12 years
v1.3.0-beta.2angular.js-1.3.0-beta.2.tar.bz2  jenkins12 years
v1.3.0-beta.1angular.js-1.3.0-beta.1.tar.bz2  jenkins12 years
v1.2.14angular.js-1.2.14.tar.bz2  jenkins12 years
v1.2.13angular.js-1.2.13.tar.bz2  jenkins12 years
v1.2.12angular.js-1.2.12.tar.bz2  jenkins12 years
v1.2.11angular.js-1.2.11.tar.bz2  jenkins12 years
v1.2.10angular.js-1.2.10.tar.bz2  jenkins12 years
v1.2.9angular.js-1.2.9.tar.bz2  jenkins12 years
v1.2.8angular.js-1.2.8.tar.bz2  jenkins12 years
v1.2.7angular.js-1.2.7.tar.bz2  chimney-sweeper12 years
v1.2.6angular.js-1.2.6.tar.bz2  chimney-sweeper12 years
v1.2.5angular.js-1.2.5.tar.bz2  Jeff Cross12 years
v1.2.4angular.js-1.2.4.tar.bz2  Matias Niemelä12 years
v1.2.3angular.js-1.2.3.tar.bz2  Peter Bacon Darwin12 years
v1.2.2angular.js-1.2.2.tar.bz2  Igor Minar12 years
v1.2.1angular.js-1.2.1.tar.bz2  Vojta Jina12 years
v1.2.0angular.js-1.2.0.tar.bz2  Igor Minar12 years
v1.2.0-rc.3angular.js-1.2.0-rc.3.tar.bz2  Igor Minar12 years
v1.2.0-rc.2angular.js-1.2.0-rc.2.tar.bz2  Igor Minar12 years
v1.0.8angular.js-1.0.8.tar.bz2  Igor Minar12 years
v1.2.0rc1angular.js-1.2.0rc1.tar.bz2  Igor Minar12 years
v1.0.7angular.js-1.0.7.tar.bz2  Igor Minar13 years
v1.1.5angular.js-1.1.5.tar.bz2  Igor Minar13 years
v1.0.6angular.js-1.0.6.tar.bz2  Igor Minar13 years
v1.1.4angular.js-1.1.4.tar.bz2  Igor Minar13 years
v1.0.5angular.js-1.0.5.tar.bz2  Igor Minar13 years
v1.1.3angular.js-1.1.3.tar.bz2  Igor Minar13 years
v1.0.4angular.js-1.0.4.tar.bz2  Igor Minar13 years
v1.1.2angular.js-1.1.2.tar.bz2  Igor Minar13 years
v1.1.1angular.js-1.1.1.tar.bz2  Igor Minar13 years
v1.0.3angular.js-1.0.3.tar.bz2  Igor Minar13 years
v1.1.0angular.js-1.1.0.tar.bz2  Igor Minar13 years
v1.0.2angular.js-1.0.2.tar.bz2  Igor Minar13 years
v1.0.1angular.js-1.0.1.tar.bz2  Igor Minar14 years
v1.0.0angular.js-1.0.0.tar.bz2  Igor Minar14 years
v1.0.0rc12angular.js-1.0.0rc12.tar.bz2  Igor Minar14 years
v1.0.0rc11angular.js-1.0.0rc11.tar.bz2  Igor Minar14 years
v1.0.0rc10angular.js-1.0.0rc10.tar.bz2  Igor Minar14 years
v1.0.0rc9angular.js-1.0.0rc9.tar.bz2  Igor Minar14 years
v1.0.0rc8angular.js-1.0.0rc8.tar.bz2  Igor Minar14 years
v1.0.0rc7angular.js-1.0.0rc7.tar.bz2  Igor Minar14 years
v1.0.0rc6angular.js-1.0.0rc6.tar.bz2  Igor Minar14 years
v1.0.0rc5angular.js-1.0.0rc5.tar.bz2  Igor Minar14 years
v1.0.0rc4angular.js-1.0.0rc4.tar.bz2  Igor Minar14 years
v1.0.0rc3angular.js-1.0.0rc3.tar.bz2  Igor Minar14 years
v1.0.0rc2angular.js-1.0.0rc2.tar.bz2  Igor Minar14 years
g3-v1.0.0-rc2angular.js-g3-v1.0.0-rc2.tar.bz2  Vojta Jina14 years
g3-v1.0.0rc1angular.js-g3-v1.0.0rc1.tar.bz2  Vojta Jina14 years
v1.0.0rc1angular.js-1.0.0rc1.tar.bz2  Igor Minar14 years
v0.10.6angular.js-0.10.6.tar.bz2  Igor Minar14 years
v0.10.5angular.js-0.10.5.tar.bz2  Igor Minar14 years
v0.10.4angular.js-0.10.4.tar.bz2  Igor Minar14 years
v0.10.3angular.js-0.10.3.tar.bz2  Igor Minar14 years
v0.10.2angular.js-0.10.2.tar.bz2  Igor Minar14 years
v0.10.1angular.js-0.10.1.tar.bz2  Igor Minar14 years
v0.10.0angular.js-0.10.0.tar.bz2  Igor Minar14 years
v0.9.19angular.js-0.9.19.tar.bz2  Igor Minar14 years
v0.9.18angular.js-0.9.18.tar.bz2  Igor Minar14 years
v0.9.17angular.js-0.9.17.tar.bz2  Igor Minar15 years
v0.9.16angular.js-0.9.16.tar.bz2  Igor Minar15 years
v0.9.15angular.js-0.9.15.tar.bz2  Igor Minar15 years
v0.9.14angular.js-0.9.14.tar.bz2  Igor Minar15 years
v0.9.13angular.js-0.9.13.tar.bz2  Igor Minar15 years
v0.9.12angular.js-0.9.12.tar.bz2  Igor Minar15 years
v0.9.11angular.js-0.9.11.tar.bz2  Igor Minar15 years
v0.9.10angular.js-0.9.10.tar.bz2  Igor Minar15 years
v0.9.9angular.js-0.9.9.tar.bz2  Igor Minar15 years
v0.9.7angular.js-0.9.7.tar.bz2  Igor Minar15 years
v0.9.6angular.js-0.9.6.tar.bz2  Igor Minar15 years
v0.9.5angular.js-0.9.5.tar.bz2  Igor Minar15 years
v0.9.4angular.js-0.9.4.tar.bz2  Igor Minar15 years
v0.9.3angular.js-0.9.3.tar.bz2  Igor Minar15 years
v0.9.2angular.js-0.9.2.tar.bz2  Igor Minar15 years
v0.9.1angular.js-0.9.1.tar.bz2  Igor Minar15 years
v0.9.0angular.js-0.9.0.tar.bz2  Igor Minar15 years
an class="nb">document)); } (callback||noop)(list); }); return list; }, save: function(document, callback) { var self = this; var data = {}; document['$saveTo'](data); this._jsonRequest(["POST", "", data], function(response) { document['$loadFrom'](response); var cachedDoc = self.cache(document); _.each(self._cache_collections, function(collection){ if (collection['$$accept'](document)) { angularArray['includeIf'](collection, cachedDoc, true); } }); if (document['$$anchor']) { self.anchor[document['$$anchor']] = document['$id']; } if (callback) callback(document); }); }, remove: function(document, callback) { var self = this; var data = {}; document['$saveTo'](data); this._jsonRequest(["DELETE", "", data], function(response) { delete self._cache[document['$entity'] + '/' + document['$id']]; _.each(self._cache_collections, function(collection){ for ( var i = 0; i < collection.length; i++) { var item = collection[i]; if (item['$id'] == document['$id']) { collection.splice(i, 1); } } }); (callback||noop)(response); }); }, _jsonRequest: function(request, callback, failure) { request['$$callback'] = callback; request['$$failure'] = failure||function(response){ throw response; }; this.bulkRequest.push(request); }, flush: function() { if (this.bulkRequest.length === 0) return; var self = this; var bulkRequest = this.bulkRequest; this.bulkRequest = []; log('REQUEST:', bulkRequest); function callback(code, bulkResponse){ log('RESPONSE[' + code + ']: ', bulkResponse); if(bulkResponse['$status_code'] == 401) { self.users['login'](function(){ self.post(bulkRequest, callback); }); } else if(bulkResponse['$status_code']) { alert(toJson(bulkResponse)); } else { for ( var i = 0; i < bulkResponse.length; i++) { var response = bulkResponse[i]; var request = bulkRequest[i]; var responseCode = response['$status_code']; if(responseCode) { if(responseCode == 403) { self.users['notAuthorized'](); } else { request['$$failure'](response); } } else { request['$$callback'](response); } } } } this.post(bulkRequest, callback); }, saveScope: function(scope, callback) { var saveCounter = 1; function onSaveDone() { saveCounter--; if (saveCounter === 0 && callback) callback(); } for(var key in scope) { var item = scope[key]; if (item && item['$save'] == Model.prototype['$save']) { saveCounter++; item['$save'](onSaveDone); } } onSaveDone(); }, query: function(type, query, arg, callback){ var self = this; var queryList = []; queryList['$$accept'] = function(doc){ return false; }; this._cache_collections.push(queryList); var request = type['title'] + '/' + query + '=' + arg; this._jsonRequest(["GET", request], function(response){ var list = response; foreach(list, function(item){ var document = type()['$loadFrom'](item); queryList.push(self.cache(document)); }); (callback||noop)(queryList); }); return queryList; }, entities: function(callback) { var entities = []; var self = this; this._jsonRequest(["GET", "$entities"], function(response) { foreach(response, function(value, entityName){ entities.push(self.entity(entityName)); }); entities.sort(function(a,b){return a.title > b.title ? 1 : -1;}); (callback||noop)(entities); }); return entities; }, documentCountsByUser: function(){ var counts = {}; var self = this; self.post([["GET", "$users"]], function(code, response){ extend(counts, response[0]); }); return counts; }, userDocumentIdsByEntity: function(user){ var ids = {}; var self = this; self.post([["GET", "$users/" + user]], function(code, response){ extend(ids, response[0]); }); return ids; }, entity: function(name, defaults){ if (!name) { return DataStore.NullEntity; } var self = this; var entity = extend(function(initialState){ return new Model(entity, initialState); }, { // entity.name does not work as name seems to be reserved for functions 'title': name, '$$factory': true, datastore: this, //private, obfuscate 'defaults': defaults || {}, 'load': function(id, callback){ return self.load(entity(), id, callback); }, 'loadMany': function(ids, callback){ return self.loadMany(entity, ids, callback); }, 'loadOrCreate': function(id, callback){ return self.loadOrCreate(entity(), id, callback); }, 'all': function(callback){ return self.loadAll(entity, callback); }, 'query': function(query, queryArgs, callback){ return self.query(entity, query, queryArgs, callback); }, 'properties': function(callback) { self._jsonRequest(["GET", name + "/$properties"], callback); } }); return entity; }, join: function(join){ function fn(){ throw "Joined entities can not be instantiated into a document."; }; function base(name){return name ? name.substring(0, name.indexOf('.')) : undefined;} function next(name){return name.substring(name.indexOf('.') + 1);} var joinOrder = _(join).chain(). map(function($, name){ return name;}). sortBy(function(name){ var path = []; do { if (_(path).include(name)) throw "Infinite loop in join: " + path.join(" -> "); path.push(name); if (!join[name]) throw _("Named entity '<%=name%>' is undefined.").template({name:name}); name = base(join[name].on); } while(name); return path.length; }). value(); if (_(joinOrder).select(function($){return join[$].on;}).length != joinOrder.length - 1) throw "Exactly one entity needs to be primary."; fn['query'] = function(exp, value) { var joinedResult = []; var baseName = base(exp); if (baseName != joinOrder[0]) throw _("Named entity '<%=name%>' is not a primary entity.").template({name:baseName}); var Entity = join[baseName].join; var joinIndex = 1; Entity['query'](next(exp), value, function(result){ var nextJoinName = joinOrder[joinIndex++]; var nextJoin = join[nextJoinName]; var nextJoinOn = nextJoin.on; var joinIds = {}; _(result).each(function(doc){ var row = {}; joinedResult.push(row); row[baseName] = doc; var id = Scope.getter(row, nextJoinOn); joinIds[id] = id; }); nextJoin.join.loadMany(_.toArray(joinIds), function(result){ var byId = {}; _(result).each(function(doc){ byId[doc.$id] = doc; }); _(joinedResult).each(function(row){ var id = Scope.getter(row, nextJoinOn); row[nextJoinName] = byId[id]; }); }); }); return joinedResult; }; return fn; } };