Pushpin: Apporter des idées de la ferme

Créé le 6 nov. 2019  ·  4Commentaires  ·  Source: automerge/pushpin

En jouant un peu avec la punaise #310 et #316, j'en suis venu à reconnaître que ce que j'aimerais vraiment accomplir est plus ou moins ce que je voulais avec mon expérience dat://code.gozala.io/ (qui n'est pas trop différent de https://observablehq.com/) c'est un moyen d'écrire un peu de code qui me permet de prendre des données et de créer un widget unique ou réutilisable. Je suppose que je l'utilise un peu comme des feuilles de calcul, sauf avec une interface sur mesure adaptée à une tâche spécifique.

En fait, la ferme était exactement cela, bien mieux en fait, car je trouve que le tableau est une bien meilleure surface pour ce type d'interactions qu'un bloc-notes que vous devez faire défiler de haut en bas ou une feuille de calcul d'ailleurs.

Je me demande donc si nous pourrions ressusciter ce qui rend la ferme si attrayante. D'après ma conversation avec @pvh, j'ai l'impression que même si Elm est une langue vraiment agréable, elle s'est avérée très limitante dans la pratique github.com/browserhtml/browserhtml ou même dans https://observablehq.com/ mentionné). Cependant, je pense que l'élément le plus convaincant de la ferme était l'idée que tout sur l'écran était représenté en utilisant (doc, lens)lens lui-même était un morceau de code également stocké dans un document.

Je voudrais ramener cela mais en omettant (au moins au début) le compilateur Elm. Il se trouve aussi que j'ai utilisé la bibliothèque https://github.com/mozilla/reflex/ qui est plus ou moins une architecture Elm dans JS, qui ne nécessite aucune étape de compilation (le vérificateur de type serait bien cependant) .

Donc, en mettant tout cela ensemble, voici ce que j'aimerais essayer:

  1. Développez #310 pour devenir un composant "d'édition d'objectif", qui permet essentiellement d'écrire un peu de JS qui pourrait ensuite être référé et chargé via une URL. Malheureusement, il semble que les URL hypermerge:/ ne peuvent pas être chargées uniquement hyperfile:/... , mais cela pourrait peut-être être résolu ou, dans le pire des cas, le composant pourrait créer de nouvelles URL hyperfile:/ après les modifications.

  2. Créez un autre composant "pipeline" qui intègre un composant "lens authoring" ou plutôt un sélecteur pour l'objectif existant et un sélecteur de données "doc" pour projeter l'un avec l'autre. _J'aimerais que le pipeline ne se limite pas à la vue (données, objectif) où le projet d'objectif (HTML) mais autorise les projections de données à données afin que les choses puissent être enchaînées dans des pipelines plus grands, mais cela pourrait être un peu exagéré en ce moment) _. L'objectif par défaut pourrait être l'inspecteur (voir # 316) de sorte que seul le document rendrait quelque chose et à partir de là, on pourrait choisir d'en utiliser un autre ou d'en créer un.

Notez qu'avec quelque chose comme ça, je pourrais facilement recréer l'outil que j'utilise fréquemment https://hackmd.io/ où je pourrais utiliser le composant "éditeur de code" pour taper le démarquage et le composant "pipeline" pour rendre son aperçu côte à côte ou tout ce qui aura du sens.

PS : Je suis toujours en train de réfléchir à cette idée, mais je partagerais pour obtenir des commentaires et tenter de la documenter

Commentaire le plus utile

cc @pfrazee semble similaire à ce que vous faites avec "afficher les fichiers" dans Beaker.

Tous les 4 commentaires

cc @pfrazee semble similaire à ce que vous faites avec "afficher les fichiers" dans Beaker.

C'est aussi très similaire à ce que Wireline essaie de faire, je pense.

Une autre chose qui ne cesse de tourner dans ma tête, c'est quand je pense à data -> view et data -> data , c'est en quelque sorte toujours le saut du premier au second. Je me souviens que dans l'une des discussions sur http://offlinefirst.org/camp/ , il y avait une idée de joindre des liens vers les blocs de données (doc dans le contexte de la punaise) pour les "vues rendues" et des liens vers le "code source" pour rendre ces vues.

Et si nous généralisions data -> view à data -> data où la sortie se trouve être un document html (qui en fait vaut peut-être même la peine de persister en tant que tel document). De cette façon, la punaise pourrait simplement rendre les documents qui se trouvent être HTML directement et ceux qui ne le sont pas en tant que data inspector .

Quant aux widgets existants, ils pourraient être considérés comme Note : data -> html , Thread: data -> html , etc...

Le principal problème avec la persistance et la restauration de html est les écouteurs d'événements, mais c'est aussi le problème que j'ai rencontré lorsque j'ai essayé de retirer toute la logique d'application du thread principal et je pense que j'ai quelques idées pour résoudre ce problème.

Pour être précis, pour le faire fonctionner à partir de la solution de thread principal sur laquelle j'ai opté, il fallait utiliser une bibliothèque decoder.flow inspirée de la bibliothèque JSON Decoder d'Elm où les décodeurs sont des comibantors d'analyseur déclaratif qui peuvent être sérialisés, chargés dans le thread principal et utilisé pour extraire/encoder les informations pertinentes de l'événement et les renvoyer au fil où le programme est en cours d'exécution.

Dans ce cas d'utilisation spécifique, je pense que les encodeurs composés pourraient être enregistrés dans le même document que la sortie html rendue et référencés dans le hachage en utilisant son adresse (c'est probablement le hachage de contenu).

Cette page vous a été utile?
0 / 5 - 0 notes

Questions connexes

Gozala picture Gozala  ·  9Commentaires

pvh picture pvh  ·  4Commentaires

edrex picture edrex  ·  7Commentaires

Gozala picture Gozala  ·  13Commentaires

canadaduane picture canadaduane  ·  9Commentaires