This app provides monitoring and information features for the common freifunk user and the technical stuff of a freifunk community.
Code base is taken from a TUM Practical Course project and added here to see if Freifunk Altdorf can use it.
https://www.freifunk-altdorf.de
You can not select more than 25 topics
Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.
35 lines
803 B
35 lines
803 B
/** |
|
* Copyright (c) 2013-present, Facebook, Inc. |
|
* |
|
* This source code is licensed under the MIT license found in the |
|
* LICENSE file in the root directory of this source tree. |
|
* |
|
* @providesModule minBy |
|
* @flow |
|
*/ |
|
|
|
var compareNumber = (a, b) => a - b; |
|
|
|
/** |
|
* Returns the minimum element as measured by a scoring function f. Returns the |
|
* first such element if there are ties. |
|
*/ |
|
function minBy<A, B>(as: Iterable<A>, f: (a: A) => B, compare?: ?(u: B, v: B) => number): ?A { |
|
compare = compare || (compareNumber: any); |
|
|
|
var minA = undefined; |
|
var minB = undefined; |
|
var seenFirst = false; |
|
for (var a of as) { |
|
var b = f(a); |
|
if (!seenFirst || compare(b, (minB: any)) < 0) { |
|
minA = a; |
|
minB = b; |
|
seenFirst = true; |
|
} |
|
} |
|
|
|
return minA; |
|
} |
|
|
|
module.exports = minBy; |