Tout d’abord, je ne conseille pas d’apporter d’améliorations à cette interface écrite en Angular 1. Mieux vaudrait réécrire une interface basée sur Angular 4.
Néanmoins si tu souhaites mettre à jour duniter-ui, voici la procédure :
Cette commande s’occupera d’installer les dépendances, de compiler l’UI et de surveiller les modifications de fichier.
Pour pouvoir constater les modifications dans un navigateur, il faut lancer la partie « backend » de l’UI en lançant le nœud duniter co-installé avec les dépendances de développement :
Notamment avec bower, car yarn n’installait pas les dépendences de dev.
Une fois bower installé, lui aussi est déprécié et devra être migré :
warning bower@1.8.4: We dont recommend using Bower for new projects. Please consider Yarn and Webpack or Parcel. You can read how to migrate legacy project here: https://bower.io/blog/2017/how-to-migrate-away-from-bower/
J’ai ajouté au readme un chapitre development pour mémoriser ce que j’ai lancé…
Development
Install Nodejs v8+ (use nvm is recommended) and Yarn.
Install with dev dependencies:
yarn install --production=false
Auto build while coding:
yarn watch
J’ouvre un autre terminal, avec la même version de nodejs assigné par nvm (8.9.x) et je lance le serveur :
ce qui me renvoie une erreur :
TypeError: duniterServer.requireFile is not a function
at new WebAdmin (/mnt/data/Documents/dev/nodejs/duniter-ui/server/controller/webmin.js:21:32)
at module.exports (/mnt/data/Documents/dev/nodejs/duniter-ui/server/controller/webmin.js:16:10)
at /mnt/data/Documents/dev/nodejs/duniter-ui/index.js:80:25
at Generator.next (<anonymous>)
at onFulfilled (/mnt/data/Documents/dev/nodejs/duniter-ui/node_modules/co/index.js:65:19)
at /mnt/data/Documents/dev/nodejs/duniter-ui/node_modules/co/index.js:54:5
at new Promise (<anonymous>)
at co (/mnt/data/Documents/dev/nodejs/duniter-ui/node_modules/co/index.js:50:10)
at Object.onDatabaseExecute (/mnt/data/Documents/dev/nodejs/duniter-ui/index.js:53:97)
at Stack.<anonymous> (/mnt/data/Documents/dev/nodejs/duniter-ui/node_modules/duniter/index.js:348:38)
at Generator.next (<anonymous>)
at fulfilled (/mnt/data/Documents/dev/nodejs/duniter-ui/node_modules/duniter/index.js:4:58)
at <anonymous>
Cette version de duniter-ui se base sur la nouvelle version de Duniter (1.7), et comme je ne l’ai pas publiée ça coince.
Je viens de pusher un commit sur duniter-ui, un yarn devrait permettre de corriger ton problème une fois mon commit rappatrié.
edit : ceci dit il semble y avoir ensuite un problème avec la synchro qui prend une éternité et finit par crasher. Je dois avoir du code à pusher qui traîne car mes derniers essais fonctionnaient en moins de quelques minutes. Et là je n’ai pas le temps de regarder, désolé
edit 2 : bon j’ai malgré tout tenté de publier duniter 1.7 sur NPM, mais là c’est la CI gitlab qui ne marche plus, donc je ne peux pas publier par ce biais.
edit 3 : j’ai publié manuellement, bref ça devrait fonctionner, mais ce n’est pas le cas. Je te conseille donc soit de te rebaser sur un commit de version 1.6, soit d’abandonner l’idée de commiter sur duniter-ui.
Bonjour,
Si ça peut t’aider à décider d’y investir du temps, saches qu’on est déjà deux à bien souffrir de cette difficulté. On cherchait à faire le tuto. Merci en tous cas.
Sur le commit “[fix] make duniter-ui compliant with duniter 1.7.x” de duniter-ui.
yarn install
-> installation de duniter 1.6.25…
node run.js direct_webstart
{ Error: Cannot find module '/mnt/data/Documents/dev/nodejs/duniter-ui/node_modules/duniter/node_modules/scryptb/lib/binding/Release/node-v57-linux-x64/scryptb.node'
at Function.Module._resolveFilename (module.js:538:15)
at Function.Module._load (module.js:468:25)
at Module.require (module.js:587:17)
at require (internal/module.js:11:18)
at Object.<anonymous> (/mnt/data/Documents/dev/nodejs/duniter-ui/node_modules/duniter/node_modules/scryptb/index.js:6:20)
at Module._compile (module.js:643:30)
at Object.Module._extensions..js (module.js:654:10)
at Module.load (module.js:556:32)
at tryModuleLoad (module.js:499:12)
at Function.Module._load (module.js:491:3)
at Module.require (module.js:587:17)
at require (internal/module.js:11:18)
at Object.<anonymous> (/mnt/data/Documents/dev/nodejs/duniter-ui/node_modules/duniter/app/modules/keypair/lib/scrypt.js:18:16)
at Module._compile (module.js:643:30)
at Object.Module._extensions..js (module.js:654:10)
at Module.load (module.js:556:32)
at tryModuleLoad (module.js:499:12)
at Function.Module._load (module.js:491:3)
at Module.require (module.js:587:17)
at require (internal/module.js:11:18)
at Object.<anonymous> (/mnt/data/Documents/dev/nodejs/duniter-ui/node_modules/duniter/app/modules/keypair/index.js:16:18)
at Module._compile (module.js:643:30) code: 'MODULE_NOT_FOUND' }
Bon, je vais m’arrêter là pour duniter-ui, car j’ai plein de choses en préparation (duniterpy 0.50.0 et 0.60.0 et d’autres top secrètes ) et j’ai peut-être enfin trouvé un développeur susceptible de nous aider sur Duniter pendant son temps libre, à partir d’octobre.
Pour info : les choses avancent, je stablise Duniter 1.7 qui gagne clairement en vitesse pour la synchro, tout en restant modeste sur la consommation mémoire.
C’est un travail préalable à tout le reste, désolé si ça prens du temps mais je n’en ai pas beaucoup en ce moment.
Je vais y arriver, et je réserve quelques surprises
Pas spécialement. Il n’y a pas vraiment besoin de performance ou de légèreté. Même un gros framework comme Angular est chargé immédiatement dans la version Desktop car il n’y a pas de transmission réseau. A choisir je partirais sur Angular 6 pour plusieurs raisons. Et c’est déjà en projet.
Que proposerais-tu comme première tâche à un nouveau contributeur qui connaît nodejs/typescript et voudrait contribuer au cœur pour découvrir le concept de blockchain ?
Je lui ai parlé de l’api GraphQL et il est partant. Mais c’est peut-être un peu gros pour un début…
Étant donné que l’API GraphQL se fait de plus en plus désirer, je lui proposerai de commencer par développer celle-ci.
Ce n’est d’ailleurs pas si difficile, on peut commencer par cloner Duniter puis faire une copie du fichier app/modules/dump.ts et de s’en inspirer pour créer une nouvelle commande qui prendrait en paramètre un fichier (de requête GraphQL) et produirait en sortie le résultat.
Si un tel développeur réussissait à faire cela, alors il ne resterait plus qu’à brancher la partie réseau et étoffer l’API ainsi débutée
Ainsi les développeurs de clients pourraient rapidement se brancher sur un nœud qui proposerait cette API, ce qui serait une 1ère chose appréciée, tandis que le développeur en écrivant cette API devrait nécessairement se pencher sur les données et la façon dont elles sont générées (blockchain).
est-ce que tu aurais un extrait de dump à proposer en exemple?
En ce qui concerne l’API GraphQL, je peux faire des requêtes et mutation. mais je vois penses que c’est surtout le système de souscription qui peut être intéressant. et je penses que ça serait pas mal si quelqu’un se penche dessus je veux bien être mis en relation. pour l’instant j’utilise les même dto que bma, je vois certaines requêtes dans les tickets mais pas une api listant les fonctionnalités clairement.
Tiens je regardais justement un article de son concepteur où ce dernier explique les grandes lignes de la migration Vue 2 vers Vue 3, notamment celles destinées à favoriser la contribution au cœur.
C’est très inspirant pour Duniter qui se trouve dans une situation similaire, toutes proportions gardées. On voit notamment que Vue est désormais écrit en TypeScript.
salut, je comptais contribuer quelques trucs à duniter-ui.
par exemple le nombre de DU de la masse monétaire qui sort de son carré.
angular ça m’arrange
je forke le dépot duniter-ui ou bien tu es parti sur un autre dépot ?
cool,
bon donc j’ai bien la partie duniter-ui qui fonctionne si on met une version de node pas trop récente avec nvm,
cependant il faut faire marcher aussi duniter.
et là c’est curieux, peu importe la version de node, 8, 10 ou 12, lors de l’install des dépendances de duniter (en typescript) j’ai toujours cette erreur: