зеркало из https://github.com/nextcloud/news.git
add generators to iterate over objects
This commit is contained in:
Родитель
295adcbef7
Коммит
bf52ed4a0a
|
@ -43,6 +43,7 @@ module.exports = function (grunt) {
|
|||
'filter/**/*.js',
|
||||
'service/**/*.js',
|
||||
'gui/**/*.js',
|
||||
'utility/**/*.js',
|
||||
'directive/**/*.js'
|
||||
],
|
||||
dest: '<%= meta.production %>app.js'
|
||||
|
@ -89,7 +90,6 @@ module.exports = function (grunt) {
|
|||
'app/Run.js',
|
||||
'filter/**/*.js',
|
||||
'service/**/*.js',
|
||||
'model/**/*.js',
|
||||
'controller/**/*.js',
|
||||
'directive/**/*.js',
|
||||
'tests/**/*.js',
|
||||
|
@ -106,7 +106,7 @@ module.exports = function (grunt) {
|
|||
'tests/**/*.js',
|
||||
'app/**/*.js',
|
||||
'controller/**/*.js',
|
||||
'model/**/*.js',
|
||||
'utility/**/*.js',
|
||||
'directive/**/*.js',
|
||||
'filter/**/*.js',
|
||||
'service/**/*.js',
|
||||
|
|
190
js/build/app.js
190
js/build/app.js
|
@ -291,13 +291,13 @@ var $__build_47_app__ = function () {
|
|||
this.subscribe = function (obj) {
|
||||
return {
|
||||
toChannels: function () {
|
||||
for (var channels = [], $__4 = 0; $__4 < arguments.length; $__4++)
|
||||
$traceurRuntime.setProperty(channels, $__4, arguments[$traceurRuntime.toProperty($__4)]);
|
||||
for (var $__2 = channels[$traceurRuntime.toProperty(Symbol.iterator)](), $__3; !($__3 = $__2.next()).done;) {
|
||||
for (var channels = [], $__7 = 0; $__7 < arguments.length; $__7++)
|
||||
$traceurRuntime.setProperty(channels, $__7, arguments[$traceurRuntime.toProperty($__7)]);
|
||||
for (var $__3 = channels[$traceurRuntime.toProperty(Symbol.iterator)](), $__4; !($__4 = $__3.next()).done;) {
|
||||
try {
|
||||
throw undefined;
|
||||
} catch (channel) {
|
||||
channel = $__3.value;
|
||||
channel = $__4.value;
|
||||
{
|
||||
$traceurRuntime.setProperty($__0.channels, channel, $__0.channels[$traceurRuntime.toProperty(channel)] || []);
|
||||
$__0.channels[$traceurRuntime.toProperty(channel)].push(obj);
|
||||
|
@ -308,19 +308,33 @@ var $__build_47_app__ = function () {
|
|||
};
|
||||
};
|
||||
this.publishAll = function (data) {
|
||||
for (var $channel in data) {
|
||||
for (var $__5 = items(data)[$traceurRuntime.toProperty(Symbol.iterator)](), $__6; !($__6 = $__5.next()).done;) {
|
||||
try {
|
||||
throw undefined;
|
||||
} catch (channel) {
|
||||
channel = $channel;
|
||||
if ($__0.channels[$traceurRuntime.toProperty(channel)] !== undefined) {
|
||||
for (var $__2 = $__0.channels[$traceurRuntime.toProperty(channel)][$traceurRuntime.toProperty(Symbol.iterator)](), $__3; !($__3 = $__2.next()).done;) {
|
||||
try {
|
||||
throw undefined;
|
||||
} catch (listener) {
|
||||
listener = $__3.value;
|
||||
{
|
||||
listener.receive(data[$traceurRuntime.toProperty(channel)], channel);
|
||||
} catch (messages) {
|
||||
try {
|
||||
throw undefined;
|
||||
} catch (channel) {
|
||||
try {
|
||||
throw undefined;
|
||||
} catch ($__8) {
|
||||
{
|
||||
$__8 = $traceurRuntime.assertObject($__6.value);
|
||||
channel = $__8[0];
|
||||
messages = $__8[1];
|
||||
}
|
||||
{
|
||||
if ($__0.channels[$traceurRuntime.toProperty(channel)] !== undefined) {
|
||||
for (var $__3 = $__0.channels[$traceurRuntime.toProperty(channel)][$traceurRuntime.toProperty(Symbol.iterator)](), $__4; !($__4 = $__3.next()).done;) {
|
||||
try {
|
||||
throw undefined;
|
||||
} catch (listener) {
|
||||
listener = $__4.value;
|
||||
{
|
||||
listener.receive(messages, channel);
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
|
@ -344,19 +358,31 @@ var $__build_47_app__ = function () {
|
|||
$__0.add(value);
|
||||
});
|
||||
},
|
||||
add: function (value) {
|
||||
var existing = this.hashMap[$traceurRuntime.toProperty(value[$traceurRuntime.toProperty(this.id)])];
|
||||
add: function (obj) {
|
||||
var existing = this.hashMap[$traceurRuntime.toProperty(obj[$traceurRuntime.toProperty(this.id)])];
|
||||
if (existing === undefined) {
|
||||
this.values.push(value);
|
||||
$traceurRuntime.setProperty(this.hashMap, value[$traceurRuntime.toProperty(this.id)], value);
|
||||
this.values.push(obj);
|
||||
$traceurRuntime.setProperty(this.hashMap, obj[$traceurRuntime.toProperty(this.id)], obj);
|
||||
} else {
|
||||
for (var $key in value) {
|
||||
for (var $__3 = items(obj)[$traceurRuntime.toProperty(Symbol.iterator)](), $__4; !($__4 = $__3.next()).done;) {
|
||||
try {
|
||||
throw undefined;
|
||||
} catch (key) {
|
||||
key = $key;
|
||||
if (value.hasOwnProperty(key)) {
|
||||
$traceurRuntime.setProperty(existing, key, value[$traceurRuntime.toProperty(key)]);
|
||||
} catch (value) {
|
||||
try {
|
||||
throw undefined;
|
||||
} catch (key) {
|
||||
try {
|
||||
throw undefined;
|
||||
} catch ($__8) {
|
||||
{
|
||||
$__8 = $traceurRuntime.assertObject($__4.value);
|
||||
key = $__8[0];
|
||||
value = $__8[1];
|
||||
}
|
||||
{
|
||||
$traceurRuntime.setProperty(existing, key, value);
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
|
@ -416,12 +442,26 @@ var $__build_47_app__ = function () {
|
|||
var $__0 = this;
|
||||
this.settings = {};
|
||||
this.receive = function (data) {
|
||||
for (var $key in data) {
|
||||
for (var $__3 = items(data)[$traceurRuntime.toProperty(Symbol.iterator)](), $__4; !($__4 = $__3.next()).done;) {
|
||||
try {
|
||||
throw undefined;
|
||||
} catch (key) {
|
||||
key = $key;
|
||||
$traceurRuntime.setProperty($__0.settings, key, data[$traceurRuntime.toProperty(key)]);
|
||||
} catch (value) {
|
||||
try {
|
||||
throw undefined;
|
||||
} catch (key) {
|
||||
try {
|
||||
throw undefined;
|
||||
} catch ($__8) {
|
||||
{
|
||||
$__8 = $traceurRuntime.assertObject($__4.value);
|
||||
key = $__8[0];
|
||||
value = $__8[1];
|
||||
}
|
||||
{
|
||||
$traceurRuntime.setProperty($__0.settings, key, value);
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
};
|
||||
|
@ -446,11 +486,11 @@ var $__build_47_app__ = function () {
|
|||
};
|
||||
var scrollToNextItem = function (scrollArea) {
|
||||
var items = scrollArea.find('.feed_item');
|
||||
for (var $__2 = items[$traceurRuntime.toProperty(Symbol.iterator)](), $__3; !($__3 = $__2.next()).done;) {
|
||||
for (var $__3 = items[$traceurRuntime.toProperty(Symbol.iterator)](), $__4; !($__4 = $__3.next()).done;) {
|
||||
try {
|
||||
throw undefined;
|
||||
} catch (item) {
|
||||
item = $__3.value;
|
||||
item = $__4.value;
|
||||
{
|
||||
item = $(item);
|
||||
if (item.position().top > 1) {
|
||||
|
@ -464,11 +504,11 @@ var $__build_47_app__ = function () {
|
|||
};
|
||||
var scrollToPreviousItem = function (scrollArea) {
|
||||
var items = scrollArea.find('.feed_item');
|
||||
for (var $__2 = items[$traceurRuntime.toProperty(Symbol.iterator)](), $__3; !($__3 = $__2.next()).done;) {
|
||||
for (var $__3 = items[$traceurRuntime.toProperty(Symbol.iterator)](), $__4; !($__4 = $__3.next()).done;) {
|
||||
try {
|
||||
throw undefined;
|
||||
} catch (item) {
|
||||
item = $__3.value;
|
||||
item = $__4.value;
|
||||
{
|
||||
item = $(item);
|
||||
if (item.position().top >= 0) {
|
||||
|
@ -491,11 +531,11 @@ var $__build_47_app__ = function () {
|
|||
};
|
||||
var getActiveItem = function (scrollArea) {
|
||||
var items = scrollArea.find('.feed_item');
|
||||
for (var $__2 = items[$traceurRuntime.toProperty(Symbol.iterator)](), $__3; !($__3 = $__2.next()).done;) {
|
||||
for (var $__3 = items[$traceurRuntime.toProperty(Symbol.iterator)](), $__4; !($__4 = $__3.next()).done;) {
|
||||
try {
|
||||
throw undefined;
|
||||
} catch (item) {
|
||||
item = $__3.value;
|
||||
item = $__4.value;
|
||||
{
|
||||
item = $(item);
|
||||
if (item.height() + item.position().top > 30) {
|
||||
|
@ -563,6 +603,88 @@ var $__build_47_app__ = function () {
|
|||
}
|
||||
});
|
||||
}(window, document, jQuery));
|
||||
var call = Function.prototype.call.bind(Function.prototype.call);
|
||||
var hasOwn = Object.prototype.hasOwnProperty;
|
||||
window.items = function (obj) {
|
||||
'use strict';
|
||||
var $__2;
|
||||
return $__2 = {}, Object.defineProperty($__2, Symbol.iterator, {
|
||||
value: function () {
|
||||
return $traceurRuntime.initGeneratorFunction(function $__9() {
|
||||
var $__10, $__11, $__12, $__13, $x, x;
|
||||
return $traceurRuntime.createGeneratorInstance(function ($ctx) {
|
||||
while (true)
|
||||
switch ($ctx.state) {
|
||||
case 0:
|
||||
$__10 = [];
|
||||
$__11 = obj;
|
||||
for ($__12 in $__11)
|
||||
$__10.push($__12);
|
||||
$ctx.state = 26;
|
||||
break;
|
||||
case 26:
|
||||
$__13 = 0;
|
||||
$ctx.state = 24;
|
||||
break;
|
||||
case 24:
|
||||
$ctx.state = $__13 < $__10.length ? 20 : -2;
|
||||
break;
|
||||
case 15:
|
||||
$__13++;
|
||||
$ctx.state = 24;
|
||||
break;
|
||||
case 20:
|
||||
$x = $__10[$traceurRuntime.toProperty($__13)];
|
||||
$ctx.state = 21;
|
||||
break;
|
||||
case 21:
|
||||
$ctx.state = !($traceurRuntime.toProperty($x) in $__11) ? 15 : 18;
|
||||
break;
|
||||
case 18:
|
||||
$ctx.pushTry(8, null);
|
||||
$ctx.state = 11;
|
||||
break;
|
||||
case 11:
|
||||
throw undefined;
|
||||
$ctx.state = 13;
|
||||
break;
|
||||
case 13:
|
||||
$ctx.popTry();
|
||||
$ctx.state = 15;
|
||||
break;
|
||||
case 8:
|
||||
$ctx.popTry();
|
||||
x = $ctx.storedException;
|
||||
$ctx.state = 6;
|
||||
break;
|
||||
case 6:
|
||||
x = $x;
|
||||
$ctx.state = 7;
|
||||
break;
|
||||
case 7:
|
||||
$ctx.state = call(hasOwn, obj, x) ? 1 : 15;
|
||||
break;
|
||||
case 1:
|
||||
$ctx.state = 2;
|
||||
return [
|
||||
x,
|
||||
obj[$traceurRuntime.toProperty(x)]
|
||||
];
|
||||
case 2:
|
||||
$ctx.maybeThrow();
|
||||
$ctx.state = 15;
|
||||
break;
|
||||
default:
|
||||
return $ctx.end();
|
||||
}
|
||||
}, $__9, this);
|
||||
})();
|
||||
},
|
||||
configurable: true,
|
||||
enumerable: true,
|
||||
writable: true
|
||||
}), $__2;
|
||||
};
|
||||
}(window, document, angular, jQuery, OC, oc_requesttoken));
|
||||
return {};
|
||||
}();
|
|
@ -21,6 +21,7 @@ module.exports = function (config) {
|
|||
'filter/**/*.js': ['traceur'],
|
||||
'service/**/*.js': ['traceur'],
|
||||
'directive/**/*.js': ['traceur'],
|
||||
'utility/**/*.js': ['traceur'],
|
||||
'tests/unit/**/*Spec.js': ['traceur']
|
||||
},
|
||||
|
||||
|
@ -45,6 +46,7 @@ module.exports = function (config) {
|
|||
'vendor/angular-animate/angular-animate.js',
|
||||
'tests/unit/stubs/App.js',
|
||||
'tests/unit/stubs/OC.js',
|
||||
'utility/**/*.js',
|
||||
'controller/**/*.js',
|
||||
'filter/**/*.js',
|
||||
'service/**/*.js',
|
||||
|
|
|
@ -25,10 +25,10 @@ app.service('Publisher', function () {
|
|||
};
|
||||
|
||||
this.publishAll = (data) => {
|
||||
for (let channel in data) {
|
||||
for (let [channel, messages] of items(data)) {
|
||||
if (this.channels[channel] !== undefined) {
|
||||
for (let listener of this.channels[channel]) {
|
||||
listener.receive(data[channel], channel);
|
||||
listener.receive(messages, channel);
|
||||
}
|
||||
}
|
||||
}
|
||||
|
|
|
@ -25,18 +25,16 @@ app.factory('Resource', () => {
|
|||
});
|
||||
}
|
||||
|
||||
add (value) {
|
||||
let existing = this.hashMap[value[this.id]];
|
||||
add (obj) {
|
||||
let existing = this.hashMap[obj[this.id]];
|
||||
|
||||
if (existing === undefined) {
|
||||
this.values.push(value);
|
||||
this.hashMap[value[this.id]] = value;
|
||||
this.values.push(obj);
|
||||
this.hashMap[obj[this.id]] = obj;
|
||||
} else {
|
||||
// copy values from new to old object if it exists already
|
||||
for (let key in value) {
|
||||
if (value.hasOwnProperty(key)) {
|
||||
existing[key] = value[key];
|
||||
}
|
||||
for (let [key, value] of items(obj)) {
|
||||
existing[key] = value;
|
||||
}
|
||||
}
|
||||
}
|
||||
|
|
|
@ -13,8 +13,8 @@ app.service('Settings', function () {
|
|||
this.settings = {};
|
||||
|
||||
this.receive = (data) => {
|
||||
for (let key in data) {
|
||||
this.settings[key] = data[key];
|
||||
for (let [key, value] of items(data)) {
|
||||
this.settings[key] = value;
|
||||
}
|
||||
};
|
||||
|
||||
|
|
|
@ -8,7 +8,7 @@
|
|||
* @copyright Bernhard Posselt 2012, 2014
|
||||
*/
|
||||
window.OC = {
|
||||
generateUrl: () => {
|
||||
generateUrl () {
|
||||
'use strict';
|
||||
|
||||
return '';
|
||||
|
|
|
@ -0,0 +1,31 @@
|
|||
/**
|
||||
* ownCloud - News
|
||||
*
|
||||
* This file is licensed under the Affero General Public License version 3 or
|
||||
* later. See the COPYING file.
|
||||
*
|
||||
* @author Bernhard Posselt <dev@bernhard-posselt.com>
|
||||
* @copyright Bernhard Posselt 2014
|
||||
*/
|
||||
|
||||
const call = Function.prototype.call.bind(Function.prototype.call);
|
||||
const hasOwn = Object.prototype.hasOwnProperty;
|
||||
|
||||
/**
|
||||
* From http://wiki.ecmascript.org/doku.php?id=harmony:iterators#standard_api
|
||||
* Allows to iterate over objects like for (let [key, value] of objects)
|
||||
*/
|
||||
window.items = function (obj) {
|
||||
'use strict';
|
||||
|
||||
return {
|
||||
[Symbol.iterator]: function () {
|
||||
return (function*() {
|
||||
for (let x in obj) {
|
||||
if (call(hasOwn, obj, x))
|
||||
yield [x, obj[x]];
|
||||
}
|
||||
})();
|
||||
}
|
||||
};
|
||||
}
|
Загрузка…
Ссылка в новой задаче