Skip to content
Snippets Groups Projects
Unverified Commit e4fd8e2d authored by Éloïs's avatar Éloïs
Browse files

[enh] draw lots x members

parent 2aa0f03a
No related branches found
No related tags found
1 merge request!62Dev2
......@@ -66,3 +66,5 @@ MEMBERS members
NEXT_YN Feign the following Y[n] landing
MEMBER_FILTER search a member
EXPIRE_TIME expiration datetime
RANDOM_LIST Draw lots
MEMBERS members
\ No newline at end of file
......@@ -66,3 +66,5 @@ MEMBERS membres
NEXT_YN Simuler le palier Y[n] suivant
MEMBER_FILTER rechercher un membre
EXPIRE_TIME date et heure d'expiration
RANDOM_LIST Tirer au sort
MEMBERS membres
\ No newline at end of file
module.exports = function randomInt (low, high) {
return Math.floor(Math.random() * (high - low) + low);
}
......@@ -4,6 +4,7 @@ const co = require('co')
const constants = require(__dirname + '/../lib/constants')
const randomInt = require(__dirname + '/../lib/randomInt')
const timestampToDatetime = require(__dirname + '/../lib/timestampToDatetime')
const membersQuality = require(__dirname + '/tools/membersQuality')
......@@ -68,6 +69,8 @@ module.exports = (req, res, next) => co(function *() {
var centrality = req.query.centrality || "no"; // Valeur par défaut
var format = req.query.format || 'HTML'; // Valeur par défaut
const nextYn = (req.query.nextYn=="yes") ? "yes":"no";
const randomList = (req.query.randomList=="yes") ? "yes":"no";
const numberOfRandomMembers = req.query.randomCounts || 10
// Vérifier la valeur de nextYn dans le cache
let lastUpgradeTimeDatas = membersQuality(-1);
......@@ -154,6 +157,19 @@ module.exports = (req, res, next) => co(function *() {
// Récupérer la liste des identités ayant actuellement le statut de membre
membersList = yield duniterServer.dal.peerDAL.query('SELECT `uid`,`pub`,`member`,`written_on`,`wotb_id` FROM i_index WHERE `member`=1');
if (randomList == "yes") {
// Tirer au sort randomCounts membres
const maxLengthRandomMembers = Math.min(numberOfRandomMembers,membersList.length)
let randomMembers = []
while (randomMembers.length < maxLengthRandomMembers) {
const randomInt_ = randomInt(0, membersList.length)
if (randomMembers.indexOf(membersList[randomInt_].uid) == -1) {
randomMembers.push(membersList[randomInt_])
}
}
membersList = randomMembers
}
// Récupérer pour chaque identité, le numéro du block d'écriture du dernier membership
// Ainsi que la première ou dernière certification
for (let m=0;m<membersList.length;m++)
......@@ -560,6 +576,7 @@ module.exports = (req, res, next) => co(function *() {
// get parameters
days, mode, sort_by, order,
pendingSigs, centrality, nextYn,
numberOfRandomMembers, randomList,
// page data
currentBlockchainTimestamp,
......
......@@ -47,6 +47,8 @@ ${printMenu(MENU_LANG, help, "MEMBERS")}
<input type="checkbox" name="pendingSigs" value="yes" ${pendingSigs == 'yes' ? 'checked' : ''}>${LANG["CHECKBOX_PENDING_SIGS"]}.<br>
<input type="checkbox" name="mode" value="emitted" ${mode == 'emitted' ? 'checked' : ''}>${LANG["CHECKBOX_MODE_SIG"]}.<br>
<input type="checkbox" name="nextYn" value="yes" ${nextYn == 'yes' ? 'checked' : ''}> ${LANG["NEXT_YN"]}<br>
<input type="checkbox" name="randomList" value="yes" ${randomList == 'yes' ? 'checked' : ''}> ${LANG["RANDOM_LIST"]}
<input type="number" name="randomCounts" value="${numberOfRandomMembers}"/> ${LANG["MEMBERS"]}.<br>
<hr>
<!-- Afficher la légende et l'aide -->
......
0% Loading or .
You are about to add 0 people to the discussion. Proceed with caution.
Please register or to comment