On vient de faire une visio avec @Paidge pour regarder comment intégrer des requêtes GraphQL WotWizard à une appli VueJS. Avec @ManUtopiK ils vont voir comment intégrer d3js ou chartsjs pour les graphiques. @gerard94, il faudrait qu’on fasse un fil sur le forum avec des exemples de requêtes WotWizard pour aider à le prendre en main.
# Dont forget to RTFM (Help/manual.en.pdf) !!! and, above all, page 3.
# All certifications sorted by receivers ($to = true) or by senders ($to = false). Very big. Use with care.
query Certifications ($to: Boolean!, $start: String, $end: String) {
now {
number
bct
}
identities(status_list: MEMBER, start: $start, end: $end) {
uid
sent_certifications @skip(if: $to) {
other: to {
uid
}
registration: block {
bct
}
limit: expires_on
}
received_certifications @include(if: $to) {
certifications {
other: from {
uid
}
registration: block {
bct
}
limit: expires_on
}
}
}
}
# What time is it?
query Now {
now {
number
bct
}
}
# Calculation of 'uid's distance when she is certified by the extra certifiers 'certs' and list of next best certifiers, chosen in 'group' and limited to 'ansNb' results.
query CalculateDist ($group: [String!], $uid: String, $certs: [String!], $ansNb: Int) {
now {
number
bct
}
valD: calcDist(uid: $uid, certifiers: $certs) {
value {
ratio
}
ok: dist_ok
}
list: bestDist(group: $group, uid:$uid, certifiers: $certs, answerNb: $ansNb) {
id {
uid
}
valD: dist {
value {
ratio
}
}
}
}
# Idem for quality instead of distance.
query CalculateQual ($group: [String!], $uid: String, $certs: [String!], $ansNb: Int) {
now {
number
bct
}
val: calcQual(uid: $uid, certifiers: $certs) {
ratio
}
list: bestQual(group: $group, uid:$uid, certifiers: $certs, answerNb: $ansNb) {
id {
uid
}
val: qual {
ratio
}
}
}
# Limit dates of availability of memberships.
query LimitsMem ($group: [String!]) {
now {
number
bct
}
identities: memEnds(group: $group) {
uid
limitDate
}
}
# Limit dates before revocation.
query LimitsMissing ($group: [String!]) {
now {
number
bct
}
identities: missEnds(group: $group) {
uid
limitDate
}
}
# Limit dates of availability of the last five certifications.
query LimitsCerts ($group: [String!]) {
now {
number
bct
}
datedIdentities: certEnds(group: $group) {
id {
uid
status
}
limitDate: date
}
}
# All identities sorted by uid. Very big. Use with care.
query Identities ($status: Identity_Status!) {
now {
number
bct
}
identities(status_list: [$status]) {
uid
pubkey
hash
block: id_written_block {
bct
}
limitDate
}
}
# Find the hashes all identities with their uid or public key beginning by 'hint' and whose status is in 'statuses'.
query IdSearchFind ($hint: String, $statuses: [Identity_Status!]) {
now {
number
bct
}
idSearch (with: {hint: $hint, status_list: $statuses}) {
revokedNb
missingNb
memberNb
newcomerNb
ids {
uid
status
hash
}
}
}
# Find all informations about the identity whose hash is 'hash'.
query IdSearchFix ($hash: Hash!, $dispDist: Boolean = false, $dispQual: Boolean = false, $dispCentr: Boolean = false) {
now {
number
bct
}
idFromHash (hash: $hash) {
hash
uid
pubkey
id_written_block {
number
bct
}
lastApplication {
number
bct
}
limitDate
status
sentry
membership_pending
membership_pending_limitDate
minDate
minDatePassed
history {
in
block {
number
bct
}
}
received_certifications {
certifications {
from {
uid
}
expires_on
pending
}
limit
}
sent_certifications {
to {
uid
}
expires_on
pending
}
all_certifiers {
uid
}
all_certified {
uid
}
all_certifiersIO {
id {
uid
}
hist {
in
block {
number
bct
}
}
}
all_certifiedIO {
id {
uid
}
hist {
in
block {
number
bct
}
}
}
distance @include(if: $dispDist) {
value {
num
denom
ratio
}
dist_ok
}
distanceE @include(if: $dispDist) {
value {
num
denom
ratio
}
dist_ok
}
quality @include(if: $dispQual) {
num
denom
ratio
}
qualityE @include(if: $dispQual) {
num
denom
ratio
}
centrality @include(if: $dispCentr)
}
}
# Real time of the last block.
query CountMax {
countMax {
utc0
}
}
# History of members entering or exiting the wot.
query MembersCount ($start: Int64, $end: Int64, $text: Boolean! = true) {
now {
number
bct
}
events: membersCount(start: $start, end: $end) {
block {
number @include(if: $text)
utc0
bct @include(if: $text)
}
idList @include(if: $text) {
in: inOut
id {
uid
}
}
number
}
}
# Parameters of the money.
query AllParameters {
allParameters {
name
par_type
comment
value
}
}
# Dispatch 'group' between 'selected' (members), 'others', 'unknown' and 'duplicate'.
query Group ($group: [String!]!) {
filterGroup (group: $group, status_list: MEMBER) {
selected
others {
... dispPath
}
unknown {
... dispPath
}
duplicate {
... dispPath
}
}
}
fragment dispPath on Error {
uid: mes
path {
... on Field {
name
}
... on Rank {
index
}
}
}
# List all distances in 'group', or in wot if 'group' is absent or null.
query Distances ($group: [String!]) {
now {
number
bct
}
identities(group: $group, status_list: MEMBER) {
uid
distance {
value {
num
denom
ratio
}
}
}
}
# List all qualities in 'group', or in wot if 'group' is absent or null.
query Qualities ($group: [String!]) {
now {
number
bct
}
identities(group: $group, status_list: MEMBER) {
uid
quality {
num
denom
ratio
}
}
}
# List all degrees of centrality in 'group', or in wot if 'group' is absent or null.
query Centralities ($group: [String!]) {
now {
number
bct
}
identities(group: $group, status_list: MEMBER) {
uid
centrality
}
}
# List all sentries
query Sentries {
now {
number
bct
}
sentryThreshold
sentries {
uid
}
}
# Display of the Preparatory File.
query WWFile {
now {
number
bct
}
parameter(name: sigQty) {
sigQty:value
}
wwFile(full: true) {
certifs_dossiers {
... on MarkedDatedCertification {
datedCertification {
date
certification {
from {
uid
}
to {
uid
}
expires_on
}
}
}
... on MarkedDossier {
dossier {
main_certifs
newcomer {
uid
lastApplication {
lastAppDate: bct
}
distance: distanceE {
value {
ratio
}
dist_ok
}
}
date
minDate
expires_on:limit
certifications {
date
certification {
from {
uid
quality {
ratio
}
}
expires_on
}
}
}
}
}
}
}
# Display of Permutations.
query WWPerms {
now {
number
bct
}
wwResult {
permutations {
proba
permutation {
id {
uid
}
date
after
}
}
}
}
# Subscription to the forecasts of the WW window.
subscription By {
wwResult {
now {
number
bct
}
computation_duration
permutations_nb
dossiers_nb
certifs_nb
forecastsByNames {
id {
uid
}
date
after
proba
}
forecastsByDates {
id {
uid
}
date
after
proba
}
}
}
# Subscription to the metadata of the WW window.
subscription Meta {
wwFile(full: false) {
now {
number
bct
}
certifs_dossiers {
...on MarkedDatedCertification {
datedCertification {
date
certification {
from {
uid
}
to {
uid
}
expires_on
}
}
}
...on MarkedDossier {
dossier {
main_certifs
newcomer {
uid
lastApplication {
lastAppDate: bct
}
distance: distanceE {
value {
ratio
}
}
}
date
minDate
expires_on:limit
certifications {
date
certification {
from {
uid
quality {
ratio
}
}
expires_on
}
}
}
}
}
}
}
Vous pourriez peut-être l’expliquer un peu mieux dans l’aide pour qu’il n’y ait pas de confusion, je n’ai pas non plus compris comment cela fonctionnait au début.
Une question… comment appliquer ce paramètre ?
“Nombre maximal de propositions de certificateurs :”
Oui ça me sera utile quand je vais la redévelopper pour wotwizard.netlify.app
J’ai compris qu’il fallait saisir les noms de son groupe local (ou pas) ainsi qu’une identité qui va devenir membre (ou pas) pour obtenir une liste de certificateurs potentiels et déterminer le taux de respect de la règle de distance ou la qualité obtenue. Mais tout n’est pas clair (en tous cas le champ “Nouveaux certificateurs”). Qu’est-ce que ça veut dire ça par exemple ?
Dans mon cas, cela m’a aidé à prévoir dans quelle mesure la qualité des liens d’une DÉJÀ membre (carmela dans ce cas) (vous devez écrire ce membre dans le champ que vous mentionnez, “Pseudo de l’identité considerée”) augmenterait s’il recevait de nouvelles certifications (que vous pouvez mettre dans le champ “Nouveaux Certificateurs”).
La qualité actuelle de “carmela” est de 76% et avec ces 4 nouvelles certifications, elle passerait à 79,39%, presque 80%
Calculer la règle de distance, ou la qualité, d’une identité, placée dans le champ « Pseudo de l’identité considérée » (ou « uid ») si elle devient certifiée par les membres inscrits dans le champ « Nouveaux certificateurs » (ou « certificateurs »). Si le champ « uid » est vide, le calcul se fait pour n’importe quel éventuel futur membre, à partir des seuls « certificateurs ».
Prévoir, parmi les identités placées dans le premier champ « groupe », les membres qui apporteront la meilleure ‹ distance › ou qualité à l’identité du champ « uid » (qui peut toujours être vide) s’ils la certifient, en tenant compte des « certificateurs » déjà inscrits. Si le champ « groupe » est vide, la prévision s’étend à l’ensemble des membres de la toile de confiance. Le nombre maximal de membres proposés est inscrit dans le dernier champ.
Stratégie d’utilisation possible pour l’entrée d’un nouveau membre :
Entrer dans « groupe » les identités présentes dans le groupe participant.
Laisser le champ « uid » vide.
Cliquer sur OK.
Choisir une des propositions et copier le pseudo dans le champ « certificateurs ».
Cliquer sur OK pour afficher le résultat et les nouvelles propositions actualisées.
Revenir au 4.
Pour le retour d’un membre exclu, faire de même, mais mettre son pseudo dans le champ « uid ».
etc…
Je n’ai pas mentionné le respect de la licence, qui va évidemment de soi.