Forum |  HardWare.fr | News | Articles | PC | S'identifier | S'inscrire | Shop Recherche
1365 connectés 

 


 Mot :   Pseudo :  
 
 Page :   1  2  3  4  5  6  7  8  9  10  11
Auteur Sujet :

Ember.js - Framework JS - Ember Octane disponible !

n°2267476
nraynaud
lol
Posté le 10-10-2015 à 04:52:44  profilanswer
 

Reprise du message précédent :

youmoussa a écrit :

4) une CP est calculée quand elle est consommée. Ca veut généralement dire qu'elle doit faire partir d'une chaine de dépendance de propriétés dont une extrémité est utilisée dans un template. La chaine pouvant se réduire à un élément. C'est pas la seule solution, mais la plus courante.
 
5) Pas facile de répondre dans l'absolu sans exemple concret. Un observer est synchrone et est executé à chaque fois, au moment du changement. Une CP n'est executée que lorsqu'elle est consommée. en mettant un point d'arret dans la fonction et en regardant la call stack, il est possible de savoir qui l'utilise. Mais ca ne répond pas à la question pourquoi elle est reéxecutée. Pour ça il faut regarder qui invalide son cache.
 
6) le support d'embedded records n'est pas ce que je maitrise le plus, et je ne suis pas sur que c'est ce qui marche le moins mal dans Ember Data. Tu utilises quelles version d'Ember, Ember Data et EmberFire?


4) ouais, j'essaye de toujours les lire dans un "init" mais clairement c'est le merdier de savoir combien de fois ça va se déclencher et si ça va se déclencher, du coup j'utilise du on('init') dans tous les sens et du Ember.run.debounce(). C'est le fail du framework d'observation.
 
6)
Ember Inspector
1.9.3
Ember
1.7.0
Ember Data
1.0.0-beta.11
EmberFire
0.0.0
Handlebars
1.3.0
jQuery
1.11.1
 
EmberFire 0.0.0 ( [:pingouino] on est pas sortis de l'auberge )
 
Les embedded record j'ai déjà expliqué pourquoi: je veux pouvoir gérer les droits d'accès à un projet (un job) simplement en gérant les droits du noeud racine. Et pareil les jobs sont embedded dans les users.


---------------
trainoo.com, c'est fini
mood
Publicité
Posté le 10-10-2015 à 04:52:44  profilanswer
 

n°2267477
nraynaud
lol
Posté le 10-10-2015 à 04:55:49  profilanswer
 

youmoussa a écrit :


 
2) une autre option est que c'est une route parente qui n'a pas changée.
 
Ex:
 
/articles/1/comment/2 -> /articles/1/comment/3
 
deactivate ne sera jamais appelée
 
/articles/1/comment/2 -> /articles/1/associated/4
 
deactivate va être appelée seulement pour CommentRoute


nan, mais j'ai lu la doc, j'ai mis mon deactivate là où il fallait, j'ai vérifié dans le debugger qu'il sortait bien de la route, et il était pas appelé.
J'ai passé 2-3h sur le problème avec google et des tests, je cherche une aide un peu plus avancée.


---------------
trainoo.com, c'est fini
n°2267490
nraynaud
lol
Posté le 10-10-2015 à 16:50:12  profilanswer
 

et dans le 4) évidemment, on peut pas simplement toujours déclencher la première lecture sur .on('init'), des fois c'est .on('didLoad'), et je suppose que parfois c'est autre chose.


---------------
trainoo.com, c'est fini
n°2267494
youmoussa
Ecrou-vis
Posté le 10-10-2015 à 17:29:39  profilanswer
 

nraynaud a écrit :


nan, mais j'ai lu la doc, j'ai mis mon deactivate là où il fallait, j'ai vérifié dans le debugger qu'il sortait bien de la route, et il était pas appelé.
J'ai passé 2-3h sur le problème avec google et des tests, je cherche une aide un peu plus avancée.


 
Je me doute que des fois ma réponse est un peu simpliste mais

  • quand on fait du dépannage à distance, il faut souvent éviter d'assumer certaines choses
  • je suis sur que certaines personnes lisent ce topic, ca a un but éducatif


Message édité par youmoussa le 10-10-2015 à 17:30:09
n°2267495
youmoussa
Ecrou-vis
Posté le 10-10-2015 à 17:32:58  profilanswer
 

nraynaud a écrit :

Code :
  1. orderedOperations: Ember.computed.sort('operations', 'operationsOrderProperty'),
  2.             enabledOperations: Ember.computed.filterBy('orderedOperations', 'enabled', true),
  3.             computingEnabledOperations: Ember.computed.filterBy('enabledOperations', 'computing', true),
  4.             hasNoComputingOperations: Ember.computed.empty('computingEnabledOperations'),
  5.             hasEnabledOperations: Ember.computed.notEmpty('enabledOperations'),
  6.             canSendProgram: Ember.computed.and('hasNoComputingOperations', 'hasEnabledOperations'),


c'est sensé fonctionner un enchaînement de de computed comme ça ?  
 
J'observe "canSendProgram" et je l'ai lu une première fois dans init mais je reçois pas d'évènement d'observation.
Et computingEnabledOperations est toujours vide.


 
Ca devrait marcher.

n°2267496
youmoussa
Ecrou-vis
Posté le 10-10-2015 à 17:33:51  profilanswer
 

Si tu me donnes les instructions pour reproduire le(s) problème(s), je veux bien jeter un oeil.


Message édité par youmoussa le 10-10-2015 à 17:34:07
n°2267497
nraynaud
lol
Posté le 10-10-2015 à 17:42:34  profilanswer
 

ouch, laisse-moi retrouver le contexte. tu peux faire un pull pendant ce temps.


---------------
trainoo.com, c'est fini
n°2267498
nraynaud
lol
Posté le 10-10-2015 à 17:54:11  profilanswer
 

ok, dans jobModel.js ligne 27, rajouter les computed properties qui manquent.
 
et dans le bas de jobController.js function syncCanSendProgram() tu as le doit de faire tout ce que tu veux pour que le message parte au bon moment (je te propose de vérifier à coup de console.log(), et tu as le droit d'envoyer plus de messages que nécessaire, c'est pas grave à cet endroit)
 
une opération "enable" ça se gère par les petites cases à cocher en bas à gauche de cette copie d'écran:  
https://raw.githubusercontent.com/n [...] ockets.png
 
et pour avoir une opération en cours de calcul bien long, je te suggère simplement d'utiliser une opération pocket c'est ce qu'il y a de plus lent ("+" à côté de shape, puis "+" à côté d'opération, et tu peux ralentir le temps de calcul en utilisant un outil plus petit ou une shape plus grosse)
 
Le principe général c'est que si y'a aucune opération sélectionnée ou si au moins une des opérations sélectionnées est en cours de calcul, 'canSendProgram' doit être faux et l'observateur doit envoyer un message, et il doit envoyer un message quand il redevient vrai.
 
(bonus point is tu arrives aussi à élégamment envoyer un message quand y'a aucun job à l'écran et donc on a aucun programme à envoyer à la machine)


---------------
trainoo.com, c'est fini
n°2267569
nraynaud
lol
Posté le 12-10-2015 à 01:29:45  profilanswer
 

on dirait que même un truc aussi simple que  

Code :
  1. computingOperations: Ember.computed.filterBy('operations', 'computing', true),
  2.            computing: Ember.computed.notEmpty('computingOperations'),


ça marche bien au init, mais plus tard dans la vie de l'appli, les même quand y'a une opération en cours de calcul, le computing change pas (là je l'utilise par un {{#if}} dans un template, donc j'ai aucun observateur explicite, toute la chaîne est par ember).


---------------
trainoo.com, c'est fini
n°2267571
nraynaud
lol
Posté le 12-10-2015 à 01:58:25  profilanswer
 

j'essaye de migrer à la dernière version voir si elle bugge moins, mais je suis coincé avec une deprecation:
http://emberjs.com/deprecations/v1 [...] rs-helpers

 

j'ai un Ember.Handlebars.helper()
Et je sais pas comment traduire leur consigne en ES5 sans ember-cli.

Message cité 1 fois
Message édité par nraynaud le 12-10-2015 à 01:58:48

---------------
trainoo.com, c'est fini
mood
Publicité
Posté le 12-10-2015 à 01:58:25  profilanswer
 

n°2267572
nraynaud
lol
Posté le 12-10-2015 à 04:46:45  profilanswer
 

https://github.com/emberjs/ember.js [...] os.js#L147
et
https://github.com/emberjs/ember.js [...] ros.js#L26
 
J'ai un peu de mal à capter le code, mais ça veut dire, que Ember.computed.map() repasse sur tout le tableau quand la moindre valeur change ? y'a pas un truc qui surveille élément par élément ?


---------------
trainoo.com, c'est fini
n°2267574
youmoussa
Ecrou-vis
Posté le 12-10-2015 à 07:10:21  profilanswer
 

J'ai oublié comment ça se lance ton appli, tu peux me rappeler ?

n°2267575
youmoussa
Ecrou-vis
Posté le 12-10-2015 à 07:18:06  profilanswer
 

`/webapp/visucamTest.html`, c'est bien ça ?

n°2267576
youmoussa
Ecrou-vis
Posté le 12-10-2015 à 07:20:37  profilanswer
 

nraynaud a écrit :

https://github.com/emberjs/ember.js [...] os.js#L147
et
https://github.com/emberjs/ember.js [...] ros.js#L26

 

J'ai un peu de mal à capter le code, mais ça veut dire, que Ember.computed.map() repasse sur tout le tableau quand la moindre valeur change ? y'a pas un truc qui surveille élément par élément ?

 

Tu dois vouloir un truc genre reducedComputed

 

https://github.com/emberjs/ember.js/pull/2711

 

Ca a été viré il me semble avec Glimmer

 
nraynaud a écrit :

j'essaye de migrer à la dernière version voir si elle bugge moins, mais je suis coincé avec une deprecation:
http://emberjs.com/deprecations/v1 [...] rs-helpers

 

j'ai un Ember.Handlebars.helper()
Et je sais pas comment traduire leur consigne en ES5 sans ember-cli.

 

Je te déconseille de faire le saut 1.7 -> 2.1 d'un coup.

 

Et il faudrait savoir ce qui bugue avant d'upgrader.

Message cité 1 fois
Message édité par youmoussa le 12-10-2015 à 07:25:58
n°2267577
nraynaud
lol
Posté le 12-10-2015 à 07:24:30  profilanswer
 

youmoussa a écrit :

`/webapp/visucamTest.html`, c'est bien ça ?


yep


---------------
trainoo.com, c'est fini
n°2267578
nraynaud
lol
Posté le 12-10-2015 à 07:25:01  profilanswer
 

youmoussa a écrit :


 
Je te déconseille de faire le saut 1.7 -> 2.1 d'un coup.
 
Et il faudrait savoir ce qui bugue avant d'upgrader.


j'ai rollbacké pour l'instant.


---------------
trainoo.com, c'est fini
n°2267580
youmoussa
Ecrou-vis
Posté le 12-10-2015 à 07:45:09  profilanswer
 

J'avoue ne pas trop comprendre comment reproduire le problème pour le moment. C'est pas super clair sur ce que je dois faire exactement ( je connais pas ton appli donc les histoires d'opérations longues sans valeurs précises, ça ne me parle pas ) et à quel moment tu t'attends à quoi.
 
C'est quand je check/uncheck une opération ?

n°2267581
nraynaud
lol
Posté le 12-10-2015 à 08:10:25  profilanswer
 

http://i.imgur.com/oQeqJba.gif
 
dans cette séquence, à chaque fois qu'il y a un pinion qui tourne sur une opération (en bas à gauche), il devrait y avoir un pinion qui tourne juste à côté de "name" en haut à gauche.
 
le template avec le "name" et le petit pinion est là:
https://github.com/nraynaud/webgcod [...] ob.hbs#L17
 
computing de job est là:
https://github.com/nraynaud/webgcod [...] del.js#L29


---------------
trainoo.com, c'est fini
n°2267667
nraynaud
lol
Posté le 13-10-2015 à 18:41:44  profilanswer
 

j'imagine que faire "job.get('operations.@each.attribute')" ça marche pas ? il faut faire le map() à la main ?


---------------
trainoo.com, c'est fini
n°2267672
youmoussa
Ecrou-vis
Posté le 13-10-2015 à 19:10:21  profilanswer
 

job.get('operations').mapBy('attribute')


Message édité par youmoussa le 13-10-2015 à 19:10:37
n°2267673
nraynaud
lol
Posté le 13-10-2015 à 19:11:35  profilanswer
 

merci.


---------------
trainoo.com, c'est fini
n°2267674
youmoussa
Ecrou-vis
Posté le 13-10-2015 à 19:12:19  profilanswer
 

J'ai commencé à regarder le code, mais le manque de connaissance dans ce que ça fait combiné à l'absence de tests rend le travail difficile.
 
Idéalement, l'application serait testée et tu m'écrirais le test qui foire :o
 
Il y a une tripotée d'observers ( je parle pas de CP la ) qui peuvent théoriquement compromettre le calcul des CPs. Je ne sais pas par quel bout commencer.


Message édité par youmoussa le 13-10-2015 à 19:13:27
n°2267691
nraynaud
lol
Posté le 14-10-2015 à 01:03:59  profilanswer
 

C'est marrant la dernière fois que j'ai fait une rando, idéalement y'aurait pas eu de neige, mais dans la réalité c'était la merde totale. et je pouvais plus remonter quand j'ai vu qu'il y avait de la merde blanche à passer au-dessus des lacs.
 

Spoiler :

long story short, j'ai abandonné 3j plus tard à un endroit parfaitement sain et sec, mais c'est pas le sujet. Mon idéal n'était pas là et et je me suis démerdé avec ce que j'avais, un piolet, pas de corde, des campons insuffisants et une peur panique de finir dans un lac gelé à crever beaucoup trop lentement en essayant d'enlever mon sac à dos qui me tire vers le fond.  
 
Mon idéal c'est de payer des devs pour faire ça, et probablement virer ember, qui aussi testé qu'il soit, est complètement imprévisible a un code relou à lire, une doc où la recherche marche pas et une recherche de source github complètement polluée par les tests (ironiquement), mais dans l'intermédiaire je dois me démerder tout seul avec mes talents limités et mon framework particulier.


---------------
trainoo.com, c'est fini
n°2267693
nraynaud
lol
Posté le 14-10-2015 à 06:14:14  profilanswer
 

les versions de ember data et ember sont lockées ensemble ?


---------------
trainoo.com, c'est fini
n°2268141
nraynaud
lol
Posté le 20-10-2015 à 16:52:01  profilanswer
 

Je lis pas mal de messages passifs agressifs envers les observateurs dans les docs ember et ici.  
 
1) Comment est-ce que je peux créer un worker et lui envoyer un message ou émettre un message vers une window avec une bound property ? Parce que là les doubles updates ça devient insupportable, j'ai du Ember.run.debounce() partout pour essayer de limiter la casse, et j'ai laissé filer un double update qui aurait bien pu me planter la machine.
 
2) Et comment je peux gérer une property qui retourne une promise ?


---------------
trainoo.com, c'est fini
n°2268153
LeRiton
Posté le 20-10-2015 à 18:32:57  profilanswer
 

nraynaud a écrit :

les versions de ember data et ember sont lockées ensemble ?


 
Depuis la 1.13 et définitivement en branche 2.x oui, avec CLI.

n°2268159
youmoussa
Ecrou-vis
Posté le 20-10-2015 à 19:36:30  profilanswer
 

nraynaud a écrit :

Je lis pas mal de messages passifs agressifs envers les observateurs dans les docs ember et ici.  
 
1) Comment est-ce que je peux créer un worker et lui envoyer un message ou émettre un message vers une window avec une bound property ? Parce que là les doubles updates ça devient insupportable, j'ai du Ember.run.debounce() partout pour essayer de limiter la casse, et j'ai laissé filer un double update qui aurait bien pu me planter la machine.
 
2) Et comment je peux gérer une property qui retourne une promise ?


 
1) tu veux sûrement remplacer le binding par une action. Tu utilises le binding pour mettre à jour l'UI, met quand tu changes la valeur, tu envoies une action plutôt que d'utiliser le double binding
 
2) tu sais utiliser RSVP.js ?

n°2268161
tryptique
Stay hungry, stay foolish
Posté le 20-10-2015 à 20:07:42  profilanswer
 

LeRiton a écrit :

 

Depuis la 1.13 et définitivement en branche 2.x oui, avec CLI.


CLI est toujours pas sorti en 2.x je crois.


---------------
"J'ai les goûts les plus simples du monde, je me contente du meilleur" O. Wilde - Freedom of time is the new luxury. Time to sleep, work, play, relax, travel, inspire and get inspired. Time to write your story.
n°2268169
nraynaud
lol
Posté le 20-10-2015 à 22:14:20  profilanswer
 

youmoussa a écrit :


 
1) tu veux sûrement remplacer le binding par une action. Tu utilises le binding pour mettre à jour l'UI, met quand tu changes la valeur, tu envoies une action plutôt que d'utiliser le double binding
 
2) tu sais utiliser RSVP.js ?


1) ça veut dire qu'au lieu d'observer simplement les éléments directement utiles à mon calcul, je dois remonter toute la chaîne de dépendance et aller voir tout ce qui vient de l'ui, et là aller planter une action?
 
2) ben je l'ai utilisé, mais dans le dos de ember. C'est là: https://github.com/nraynaud/webgcod [...] /models.js


---------------
trainoo.com, c'est fini
n°2268361
nraynaud
lol
Posté le 23-10-2015 à 17:24:56  profilanswer
 

nraynaud a écrit :

Code :
  1. orderedOperations: Ember.computed.sort('operations', 'operationsOrderProperty'),
  2.             enabledOperations: Ember.computed.filterBy('orderedOperations', 'enabled', true),
  3.             computingEnabledOperations: Ember.computed.filterBy('enabledOperations', 'computing', true),
  4.             hasNoComputingOperations: Ember.computed.empty('computingEnabledOperations'),
  5.             hasEnabledOperations: Ember.computed.notEmpty('enabledOperations'),
  6.             canSendProgram: Ember.computed.and('hasNoComputingOperations', 'hasEnabledOperations'),


c'est sensé fonctionner un enchaînement de de computed comme ça ?  
 
J'observe "canSendProgram" et je l'ai lu une première fois dans init mais je reçois pas d'évènement d'observation.
Et computingEnabledOperations est toujours vide.


rooh putain, jai trouvé ! je suis con \o/
 
"computing", il était truish mais pas toujours === true, j'utilisait tout et n'importe quoi pour faire le true, du coup les filterBy, ça se passait pas bien !
 


---------------
trainoo.com, c'est fini
n°2268372
youmoussa
Ecrou-vis
Posté le 23-10-2015 à 21:07:16  profilanswer
 

Saleté de JS :D

n°2269411
nraynaud
lol
Posté le 10-11-2015 à 11:08:01  profilanswer
 

J'ai ça dans mon routeur

Code :
  1. Visucam.Router.map(function () {
  2.            this.resource('job', {path: 'jobs/:job_id'}, function () {
  3.                this.resource('operation', {path: 'operations/:operation_id'});
  4.                this.resource('shape', {path: 'shapes/:shape_id'});
  5.            });
  6.            this.resource('login', {path: 'login/:login_type'});
  7.        });


 
quand je passe de #/jobs/-JyU5xRGYRxe40smF4gJ à #/
 
j'ai pas deactivate d'appelé dans JobRoute, c'est normal ?
J'arrive pas à capter le pb.
 

Code :
  1. Visucam.JobRoute = Ember.Route.extend({
  2.            actions: {
  3.                willTransition: function (transition) {
  4.                    window.postMessage({canSendProgram: false}, '*');
  5.                },
  6.                didTransition: function (transition) {
  7.                    this.controllerFor('job').syncCanSendProgram();
  8.                }
  9.            },
  10.            model: function (params) {
  11.                var _this = this;
  12.                return this.store.find('job', params.job_id).then(null, function (error) {
  13.                    console.log('error', error);
  14.                    if (error && error.stack)
  15.                        console.log(error.stack);
  16.                    _this.transitionTo('index');
  17.                });
  18.            },
  19.            setupController: function (controller, model) {
  20.                this._super.apply(this, arguments);
  21.                this.controllerFor('job').set('currentOperation', null);
  22.                this.controllerFor('job').set('currentShape', null);
  23.            },
  24.            trackPageLeaveAnalytics: function(){
  25.                console.log('deactivate'); //<---- jamais appelé
  26.            }.on('deactivate')
  27.        });


---------------
trainoo.com, c'est fini
n°2269438
youmoussa
Ecrou-vis
Posté le 10-11-2015 à 16:31:30  profilanswer
 

Si je me rappelle bien, deactivate n'est pas un event mais uniquement une callback.

 


Code :
  1. deactivate: function() {
  2.  this.trackPageLeaveAnalytics();
  3. }
 

edit, je confirme, c'est appelé comme ça

 
Code :
  1. exit: function() {
  2.        this.deactivate();
  3.        this.teardownViews();
  4.      },
 

là où `init` est à la fois une callback et un event par exemple

 
Code :
  1. apply(this, this.init, args);
  2. sendEvent(this, "init" );


Message édité par youmoussa le 10-11-2015 à 16:35:05
n°2269445
nraynaud
lol
Posté le 10-11-2015 à 17:40:10  profilanswer
 

merci, je vais voir ça, mais la doc est assez explicite:
http://emberjs.com/api/classes/Emb [...] deactivate
donc ça sent le léger pb de ce côté là.


---------------
trainoo.com, c'est fini
n°2269446
nraynaud
lol
Posté le 10-11-2015 à 17:41:56  profilanswer
 

je confirme qu'en callback ça marche, merci


---------------
trainoo.com, c'est fini
n°2269450
youmoussa
Ecrou-vis
Posté le 10-11-2015 à 17:51:14  profilanswer
 

Je pense que la documentation ne correspond pas à ta version. Ca a du être implémenté dans une version plus récente.

n°2269453
nraynaud
lol
Posté le 10-11-2015 à 18:44:39  profilanswer
 

rah putain, probablement, oui


---------------
trainoo.com, c'est fini
n°2269455
youmoussa
Ecrou-vis
Posté le 10-11-2015 à 18:46:46  profilanswer
 

C'est pour ça que je pousse pour être au moins en 1.10 au boulot, c'est trop chiant sinon :/

n°2269467
nraynaud
lol
Posté le 11-11-2015 à 03:50:29  profilanswer
 

'tain je sais pas dans quel piège j'ai été me foutre, je veux dé-charger les modèles inutiles quand on passe d'une route à l'autre, mais tous les debounce() et workers se réveillent quand l'objet a été déchargé, il va falloir noter tout ce qui est asynchrone et le butter ou l'attendre.


---------------
trainoo.com, c'est fini
n°2269469
tryptique
Stay hungry, stay foolish
Posté le 11-11-2015 à 07:24:30  profilanswer
 

youmoussa a écrit :

C'est pour ça que je pousse pour être au moins en 1.10 au boulot, c'est trop chiant sinon :/


Je croyais qu'un des principes d'Ember était de permettre la mise à jour vers la version suivante dans le contexte d'un sprint :o


---------------
"J'ai les goûts les plus simples du monde, je me contente du meilleur" O. Wilde - Freedom of time is the new luxury. Time to sleep, work, play, relax, travel, inspire and get inspired. Time to write your story.
n°2269471
nraynaud
lol
Posté le 11-11-2015 à 07:36:34  profilanswer
 

bouarf, moi je suis en cowboy dépressif tout seul à la maison, donc la notion de sprint c'est mort.
 
par contre, ça vaudrait peut-être le coup de mettre un lien vers une page dans les warnings de dépréciation, c'est parfois un peu ardu à capter.


---------------
trainoo.com, c'est fini
mood
Publicité
Posté le   profilanswer
 

 Page :   1  2  3  4  5  6  7  8  9  10  11

Aller à :
Ajouter une réponse
 

Sujets relatifs
Comment créer un site web qu'on peut gérer avec un CMS après ?créer un fichier zip et le télécharger
Quelle solution pour créer une base de données ?Besoin d'une personne pour me créer une page accès membre.
Créer une page web html avec zone pour laisser un commantairecréer un rapport xml avec les outils Blindeelephant, waffit
[RESOLU] Créer un CSV à partir d'une chaîne en phpApplications bloquées par Java
Créer un site e-commercecréer son site en 10 minutes ?
Plus de sujets relatifs à : Ember.js - Framework JS - Ember Octane disponible !


Copyright © 1997-2022 Hardware.fr SARL (Signaler un contenu illicite / Données personnelles) / Groupe LDLC / Shop HFR