www

Unnamed repository; edit this file 'description' to name the repository.
Log | Files | Refs | README

commit f3e179091dfbd5ca42812322ff1da40891c0ccd7
parent d65c1cf90bb1035baa17a955a35ed584dff75d50
Author: gduperon <gduperon@5d9ba3ac-444b-4713-9fb3-0b58e79229a2>
Date:   Wed,  5 May 2010 23:25:24 +0000

Bug chrome (blocs positionnés relatifs).
Bug tout le monde se réduit quand on en réduit un.
Bug graphique les liens restent visible quand on change de bloc
Ajout d'une mini-console de débogage javascript assez crue (plutôt!)
Action par défaut dans la recherche (édition pour l'instant)
Susucre graphique pour la recherche (bloc en cours d'édition en vert, changement de fond au survol de la souris pour les résultats)
Mini-corrections sur le rapport
TODO : nettoyer bloc.js et en déporter une partie dans log.js !!!



git-svn-id: https://projetud.info-ufr.univ-montp2.fr/svn/flin607-2009-gduperon@30 5d9ba3ac-444b-4713-9fb3-0b58e79229a2

Diffstat:
Mjside/blocs.js | 5+++--
Mjside/connexions.js | 3+--
Mjside/index.html | 4++++
Mjside/init.js | 1+
Mjside/log.js | 32++++++++++++++++++++++++++++++++
Mjside/recherche.js | 10++++++----
Mjside/style.css | 14+++++++++++++-
Mrapport/rapport.tex | 4++--
8 files changed, 62 insertions(+), 11 deletions(-)

diff --git a/jside/blocs.js b/jside/blocs.js @@ -99,14 +99,15 @@ function utiliser(uid, uidParent) { .find('.port') .click(uiLierBlocs) .end() - .appendTo('#edition-' + uidParent + ' .contenu:first'); + .css('position', 'absolute') // Chrome seems to ignore this in the css file. + .appendTo($('#edition-' + uidParent + ' .contenu').first()); } function uiReduireBloc () { $(this) /*.toggleClass('icone-moins') .toggleClass('icone-plus')*/ - .parents('.bloc') + .parents('.bloc:first') .find('.tete') .toggle() .end() diff --git a/jside/connexions.js b/jside/connexions.js @@ -42,7 +42,6 @@ function uiLierBlocs(ev) { lienBlocsActif.pret = true; return true; } else { - log(lienBlocsActif.pret); /* Fin du hack non-capture de clic après sort */ if (!lienBlocsActif.actif) { lienBlocsActif.actif = true; @@ -50,7 +49,7 @@ function uiLierBlocs(ev) { var segments = $('#modele-lien-blocs') .jqote() .toDom() - .appendTo($('body')); + .appendTo($(this).parents('.editionBloc').first()); var start = $(this); diff --git a/jside/index.html b/jside/index.html @@ -191,6 +191,10 @@ <div id="log-en-tete"> <h2>Log</h2> <input type="button" class="bouton" id="log-pause" value="pause" /> + <form action="#"> + <input type="text" class="bouton" id="log-cmdline" value="'hello world';" style="width: 500px;" /> + <input type="submit" class="bouton" id="log-eval" value="eval" /> + </form> </div> <div class="contenu"> </div> diff --git a/jside/init.js b/jside/init.js @@ -13,6 +13,7 @@ function init() { // Log logPause = false; $('#log-pause').click(logPauseToggle); + $('#log-eval').click(logEval); // Panneau principal (édition). // Évitons que tout soit sélectionné lorsqu'on clique sur une zone vide: diff --git a/jside/log.js b/jside/log.js @@ -16,3 +16,34 @@ function log(msg) { $('.log .contenu').stop().scrollTo($('.log .contenu :last'), 100); } } + +function logEval() { + window.setTimeout(function () { + cmd = $('#log-cmdline'); + log("> " + cmd.val()); + v = eval(cmd.val()); + if (typeof v == 'object') { + if (v.length !== undefined) { + str = v.length + ' : ['; + for (i = 0; i < v.length - 1; i++) { + str += v[i] + ', '; + } + if (v.length > 0) { + str += v[v.length - 1]; + } + log(str + ']'); + } else { + str = ""; + for (i in v) { + str += ' ' + i + ':' + v[i]; + } + log(str); + } + } else { + log(v); + } + //cmd.val(''); + cmd.focus(); + }, 0); + return false; +} +\ No newline at end of file diff --git a/jside/recherche.js b/jside/recherche.js @@ -1,6 +1,6 @@ function uiRechercher() { log("Recherche…"); - rechercher($('#nom-bloc').val()); + rechercher($('#nom-bloc').val(), uiEditer); } function arreterRecherche() { @@ -14,7 +14,8 @@ function demarrerRecherche() { $('#edition-blocs').hide(); } -function rechercher(terme) { +function rechercher(terme, action) { + action = action || function() {return true;} demarrerRecherche(); $( @@ -27,9 +28,10 @@ function rechercher(terme) { return $('#modele-resultat-recherche') .jqote(elem) .toDom() + .addClass(elem.uid == $w.blocActif ? 'actif' : '') .data("uid", elem.uid) - .click(function() { - log(elem.uid); + .click(function () { + action(elem.uid); }) .find('.editer') diff --git a/jside/style.css b/jside/style.css @@ -6,7 +6,11 @@ body { -/* Tous */ +/* Boutons */ + +.log form { + display: inline-block; +} .bouton { display: inline-block; @@ -121,6 +125,14 @@ body { border-bottom: thin solid lightgray; } +#resultats-recherche tr:hover td { + background-color: #fed; +} + +#resultats-recherche .actif td { + background-color: #efd; +} + #resultats-recherche th { text-align: left; } diff --git a/rapport/rapport.tex b/rapport/rapport.tex @@ -101,7 +101,7 @@ Si on généralise ce résultat, on peut dire qu'un programme est défini par un La représentation graphique ou textuelle du programme peut être assurée par un autre programme. -Sa sémantique d'évaluation peut être définie par une machine abstraite, dont les (méta-)entrées sont le programme, ainsi que des entrées pour le programme, et dont les (méta-)sorties sont les sorties que le programme devrait avoir. Tiens ? Entrées, sorties, une relation fonctionnelle (les sorties sont celles du programme pour ses entrées), \dots Eh oui, notre machine abstraite, c'est-à-dire notre sémantique d'évaluation est bel et bien un programme elle aussi. +Sa sémantique d'évaluation peut être définie par une machine abstraite, dont les (méta-)entrées sont le programme, ainsi que des entrées pour le programme, et dont les (méta-)sorties sont les sorties que le programme devrait avoir. Tiens ? Entrées, sorties, une relation fonctionnelle (les sorties sont celles du programme pour ses entrées), \dots\ Eh oui, notre machine abstraite, c'est-à-dire notre sémantique d'évaluation est bel et bien un programme elle aussi. De même, la machine réelle vers laquelle on éspère pouvoir compiler le programme, peut être modélisée par un programme. Pendant que nous y sommes, rien ne justifie la présence de la machine réelle, car la machine abstraite pourrait très bien être la même que celle qui exécute le programme. C'est le cas par exemple si notre langage est le code machine d'un certain processeur : L'octet 0x12345678 a pour signification «diviser l'accumulateur par 2», c'est une définition de la sémantique du langage, et à la fois une définition de la machine qui exécute le programme. @@ -125,7 +125,7 @@ On a donc les équations suivantes dans le cas simple (une seule machine, une se \subsection{Base} -Nous voilà bien avancés\dots Un programme est un programme. C'est donc une définition récursive. Et toute définition récursive doit avoir une base, et une règle pour générer de nouveaux éléments. Nous venons de définir la règle, cherchons les bases possibles~: +Nous voilà bien avancés\dots\ Un programme est un programme. C'est donc une définition récursive. Et toute définition récursive doit avoir une base, et une règle pour générer de nouveaux éléments. Nous venons de définir la règle, cherchons les bases possibles~: \begin{itemize} \item Machine de Turing \item Lambda-calcul