Forum |  HardWare.fr | News | Articles | PC | S'identifier | S'inscrire | Shop Recherche
2938 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°2239619
nraynaud
lol
Posté le 03-10-2014 à 17:11:08  profilanswer
 

Reprise du message précédent :

youmoussa a écrit :


 
Nope, tu accedes le contenu à travers `objectAt`.
 
C'est quoi le use case?


j'ai des libs qui veulent leurs polylignes sous forme de buffer de float32, j'en ai d'autres qui les veulent sous forme de tableau de {X,Y}, et d'autres sous forme de tableaux de tableaux (le points sont un tableau[x, y, z]).
 
donc j'ai trafiqué les points (en jouant sur le fait que [1] sera converti en ["1"] sur un objet), mais je peux pas trop trafiquer les polylignes elles-mêmes.


---------------
trainoo.com, c'est fini
mood
Publicité
Posté le 03-10-2014 à 17:11:08  profilanswer
 

n°2239620
nraynaud
lol
Posté le 03-10-2014 à 17:12:28  profilanswer
 

youmoussa a écrit :


 
Nope. Vous pouvez toujours me payer le billet d'avion :o
 
Je connais ( pas personnellement ) 2 mecs qui font du Ember en France ( un est le pote (?) de nraynaud sur besancon, l'autre bosse pour Capitaine Train ( qui se sont enfin payés un vrai design :o ). Peut être qu'ils connaissent mieux que moi.
 
Si ma précédente réponse était pas claire, tu peux toujours relancer.


bah il reste quand même une bonne partie de mon ancienne équipe de Besac qui fait du ember. Mais ils avaient fait venir Tom Dale.


---------------
trainoo.com, c'est fini
n°2239621
youmoussa
Ecrou-vis
Posté le 03-10-2014 à 17:14:09  profilanswer
 

C'est en lecture seule?
 
J'imagine que le mieux dans ce cas c'est de créer un composant par type, qui se charge lui de faire la conversion.


---------------
Galerie HFR - Photoblog San Francisco - American Cars Photos
n°2239622
youmoussa
Ecrou-vis
Posté le 03-10-2014 à 17:15:10  profilanswer
 

nraynaud a écrit :


bah il reste quand même une bonne partie de mon ancienne équipe de Besac qui fait du ember. Mais ils avaient fait venir Tom Dale.


 
Donc ce sont les mêmes :jap:
 
Je ne savais pas que tu bossais là bas. Tom était tout content de me raconter sa grande expérience du TGV pour finir à Besançon :D


---------------
Galerie HFR - Photoblog San Francisco - American Cars Photos
n°2239623
nraynaud
lol
Posté le 03-10-2014 à 17:22:35  profilanswer
 

youmoussa a écrit :

Donc ce sont les mêmes :jap:
 
Je ne savais pas que tu bossais là bas. Tom était tout content de me raconter sa grande expérience du TGV pour finir à Besançon :D


j'ai démissionné quelques années avant qu'ils fassent du Ember (ou même du web tout court), mais quand ils l'ont fait venir, ils m'ont invité à venir le rencontrer. Donc je suis descendu de mon trou perdu (Montbéliard [:pingouino]) pour aller à mon ancien bureau.
Du coup le seul mec avec qui j'ai effectivement bossé c'est @sly7_7 (il était stagiaire à l'époque), Mike est arrivé après (le reste de l'équipe, je crois pas qu'ils soient actifs au niveau Ember).


---------------
trainoo.com, c'est fini
n°2239645
nraynaud
lol
Posté le 04-10-2014 à 15:53:13  profilanswer
 

question stupide, je vois que ember-precompile ne compresse pas le HTML dans ses templates, y'a moyen de le faire.
 
genre il génère des trucs comme ça:  

Code :
  1. data.buffer.push("\n                </div>\n            </div>\n        </div>\n    </div>\n</div>\n<div id=\"drawing\">\n    " );


---------------
trainoo.com, c'est fini
n°2239759
nraynaud
lol
Posté le 07-10-2014 à 01:04:36  profilanswer
 

y'a moyen d'observer toutes les propriétés d'un objet en Ember ?
 
Et j'ai pas la liste à l'avance, voire même elle est dynamique (rapport à mon implémentation du choix du type).
 
Toutes les solutions de undo que je trouve sur le net supposent qu'on connaisse à l'avance la liste des propriétés à surveiller.


---------------
trainoo.com, c'est fini
n°2239760
youmoussa
Ecrou-vis
Posté le 07-10-2014 à 05:52:09  profilanswer
 

Tu peux le faire sur un POJO. Sur un Ember.Object ça semble plus délicat, surtout pour différencier les propriétés de la classe mère et celle de ton instance.
 
Ça a beau être dynamique, tu as un nombre limite de classes. Ça doit pas être la mort de maintenir un tableau de propriétés à observer par type.
 


---------------
Galerie HFR - Photoblog San Francisco - American Cars Photos
n°2239787
nraynaud
lol
Posté le 08-10-2014 à 04:38:01  profilanswer
 

je veux ça: ember-routing-linkto-target-attribute ça en est où ? je capte rien à ce que je google.
et si c'est pas dans la dernière stable, comment je peux contourner ?


---------------
trainoo.com, c'est fini
n°2239788
youmoussa
Ecrou-vis
Posté le 08-10-2014 à 05:15:25  profilanswer
 

c'est derrière un feature flag.
 
http://emberjs.com/guides/configur [...] ure-flags/
 
https://github.com/emberjs/ember.js [...] tures.json
 
Tu dois pouvoir t'en servir si tu utilises une 1.8 beta, et il faut l'activer si tu utilises la 1.7.
 
C'est pas dispo pour les versions précédentes.


Message édité par youmoussa le 08-10-2014 à 05:19:13

---------------
Galerie HFR - Photoblog San Francisco - American Cars Photos
mood
Publicité
Posté le 08-10-2014 à 05:15:25  profilanswer
 

n°2239789
nraynaud
lol
Posté le 08-10-2014 à 05:34:51  profilanswer
 

merci


---------------
trainoo.com, c'est fini
n°2239790
youmoussa
Ecrou-vis
Posté le 08-10-2014 à 05:42:17  profilanswer
 

C'est pour gérer la redirection quand tu détruis une opération que tu veux ça ?

 

Je fais un code review, je te ferai une PR


Message édité par youmoussa le 08-10-2014 à 05:42:39

---------------
Galerie HFR - Photoblog San Francisco - American Cars Photos
n°2239791
nraynaud
lol
Posté le 08-10-2014 à 05:56:25  profilanswer
 

non, c'est pour un éditeur de dessin qui serait dans une tab séparée, mais je suis pas sur finalement, ça sent l'interface à la con.


---------------
trainoo.com, c'est fini
n°2239793
youmoussa
Ecrou-vis
Posté le 08-10-2014 à 07:32:32  profilanswer
 

hop, j'ai fait la PR
 
https://github.com/nraynaud/webgcode/pull/1
 
Dis moi si j'ai peté qqch :o


---------------
Galerie HFR - Photoblog San Francisco - American Cars Photos
n°2239794
nraynaud
lol
Posté le 08-10-2014 à 07:54:01  profilanswer
 

Merci.
 
quand on remonte dans la route / après avoir été dans une opération, ça remet pas currentOperation à null, c'est pour ça que j'avais tout fait à la main au final.


---------------
trainoo.com, c'est fini
n°2239836
youmoussa
Ecrou-vis
Posté le 08-10-2014 à 17:18:34  profilanswer
 

Oups.
 
J'ai corrigé le code.


---------------
Galerie HFR - Photoblog San Francisco - American Cars Photos
n°2239844
youmoussa
Ecrou-vis
Posté le 08-10-2014 à 17:44:38  profilanswer
 

Bon, maintenant que j'ai lu le code, je pense pouvoir te proposer quelque chose pour le côté typage dynamique qui n'en est pas vraiment un.
 
Faut que je réfléchisse un poil plus.


---------------
Galerie HFR - Photoblog San Francisco - American Cars Photos
n°2239846
nraynaud
lol
Posté le 08-10-2014 à 18:11:50  profilanswer
 

Ok, merci. Si t'as le undo en tête au passage, ça serait cool


---------------
trainoo.com, c'est fini
n°2239847
youmoussa
Ecrou-vis
Posté le 08-10-2014 à 18:20:43  profilanswer
 

Je vais y réfléchir  :jap:  
 
Il faut trouver un mécanisme générique tirant avantage des setters sur CP j'imagine, avec comme objectif de stocker la valeur avant modification.


---------------
Galerie HFR - Photoblog San Francisco - American Cars Photos
n°2239848
youmoussa
Ecrou-vis
Posté le 08-10-2014 à 18:23:00  profilanswer
 

Je verrais bien aussi tes différentes opérations définies dans leur propre classe au lieu de changer le type a la volée.


---------------
Galerie HFR - Photoblog San Francisco - American Cars Photos
n°2239853
nraynaud
lol
Posté le 08-10-2014 à 18:51:55  profilanswer
 

ben c'est ce que j'avais fait au début, mais je savais pas faire la combo de changement de type.


---------------
trainoo.com, c'est fini
n°2241238
nraynaud
lol
Posté le 26-10-2014 à 23:20:11  profilanswer
 

dans ember data, on peut mettre des méthodes sur les modèles ?


---------------
trainoo.com, c'est fini
n°2241239
youmoussa
Ecrou-vis
Posté le 26-10-2014 à 23:22:36  profilanswer
 

C'est un Ember.Object comme un autre, donc oui.
 
Je ne sais pas si tu veux parler de persistance a ce sujet.


---------------
Galerie HFR - Photoblog San Francisco - American Cars Photos
n°2241241
nraynaud
lol
Posté le 26-10-2014 à 23:39:52  profilanswer
 

bof, la relation avec la persistance est ténue, je m'attends pas à ce qu'il expédie du code, sa closure et sa stack sur la socket.
 
 
C'est juste que quand il ré-hydrate un objet, c'est plus pratique pour moi si c'est un vrai objet avec des méthodes qu'un de ces systèmes où t'as une structure pour stocker les données et tu dois mettre tes fonctions à côté. Je vois aucun exemple comme ça dans les docs de ember data, donc je me méfie.


---------------
trainoo.com, c'est fini
n°2241255
nraynaud
lol
Posté le 27-10-2014 à 05:00:51  profilanswer
 

'tain y'a tout qui prend des heures :fou: Ils ont même niqué les toString() pour pas qu'on puisse explorer le graphe d'objet depuis la console, le code est titanesque et à moitié magique, les trucs trouvés sur stack overflow marchent pas :fou:
 
comment je peux attraper le store (genre datatore) depuis l'extérieur de l'appli ? Je suis pas dans un objet je suis dans le contexte global.
 
genre la réponse à ça:
http://stackoverflow.com/questions [...] at-i-can-d


---------------
trainoo.com, c'est fini
n°2241256
youmoussa
Ecrou-vis
Posté le 27-10-2014 à 06:45:27  profilanswer
 

La bonne méthode pour passer le store c'est d'utiliser un initializer

 

http://emberjs.com/api/classes/Emb [...] itializers

 

Tu as le container, donc tu peux avoir accès au store avec

 
Code :
  1. container.lookup('store:main')


Après, si tu expliques un peu plus le contexte, il y a peut être un meilleur truc à faire


Message édité par youmoussa le 27-10-2014 à 06:47:49

---------------
Galerie HFR - Photoblog San Francisco - American Cars Photos
n°2241257
nraynaud
lol
Posté le 27-10-2014 à 07:09:07  profilanswer
 

Merci, je vais regarder ça.


---------------
trainoo.com, c'est fini
n°2241259
nraynaud
lol
Posté le 27-10-2014 à 07:40:04  profilanswer
 

je suis sensé le trouver sur quel objet mon "container" ?
l'objet racine ("App" dans tous les exemples) n'a pas de méthode lookup dessus, pourtant y'a une propriété __container__ dessus.
 
je trouve pas la doc de container (enfin je sais pas à quelle classe ou mixin ou adapter ou whatever il appartient).
 
Je trouve pas la doc de la fonction lookup non plus (ni quelle classe la déclare), la boite de recherche du site va se perdre dans des minutes de meeting et autres release notes.


---------------
trainoo.com, c'est fini
n°2241312
youmoussa
Ecrou-vis
Posté le 27-10-2014 à 15:13:42  profilanswer
 

Apparemment, il n'y a pas de doc là dessus effectivement, donc le code et les tests serviront de doc
 
https://github.com/emberjs/ember.js [...] ntainer.js
 
https://github.com/emberjs/ember.js [...] er_test.js
 
 
 
Se servir du store de manière globale, c'est pour des tests ou pour un but précis? Accéder n'importe quoi de n'importe où, ca va souvent rarement dans le sens d'une bonne modularisation et ca rend l'écriture de test pénible.

Message cité 1 fois
Message édité par youmoussa le 28-10-2014 à 02:30:59

---------------
Galerie HFR - Photoblog San Francisco - American Cars Photos
n°2241395
nraynaud
lol
Posté le 27-10-2014 à 22:53:16  profilanswer
 

youmoussa a écrit :

C'est un Ember.Object comme un autre


je reviens là-dessus, parce que, surprise, c'est pas vraiment le cas (j'avais posé la question parce que je sentais le coup venir).
 
donc sur mon ember.object j'avais:

Code :
  1. updateSpeed: function () {
  2.                var toolDiameter = this.get('toolDiameter');
  3.                var surfaceSpeed = this.get('surfaceSpeed');
  4.                this.set('speed', Math.round(surfaceSpeed * 1000 / Math.PI / toolDiameter));
  5.            }.observes('surfaceSpeed', 'toolDiameter').on('init'),


C'est une propriété dont on peu laisser le système calculer la valeur ou la définir à la main. Initialement la valeur est calculée.
 
sauf que quand j'appelle le store.createRecord() pour créer le record de ce type, le .on('init') se déclenche et ça provoque une erreur:

Error while processing route: index Attempted to handle event `didSetProperty` on <Visucam.Job:ember330:fixture-0> while in state root.empty. Called with {name: speed, oldValue: undefined, originalValue: undefined, value: 21221}. Error: Attempted to handle event `didSetProperty` on <Visucam.Job:ember330:fixture-0> while in state root.empty. Called with {name: speed, oldValue: undefined, originalValue: undefined, value: 21221}.


donc y'a une espèce de fenêtre de vulnérabilité où on peut pas changer des trucs (c'est évoqué là aussi : http://coryforsyth.com/2013/06/10/ [...] e-machine/ ).
 
donc mon impression c'est qu'il faut changer mon .on('init') en autre chose.  
 
Et là c'est un peu relou, basiquement quand un handler est mal déclaré, il se passe rien, il faut bidouiller jusqu'à tomber sur le bon.
 
 
ici :
https://github.com/emberjs/data/blo [...] es.js#L689
ça suggère qu'il existe un event nommé 'didCreate', j'ai essayé de déclarer .on('didCreate'), mais ça n'appelle pas la fonction , j'ai essayé de déclarer une fonction  

Code :
  1. didCreate: function(){
  2. this.updateSpeed();
  3. console.log('didCreate');
  4. }


sur le modèle, mais ça semble pas appelé
 
Bref, je suis un peu paumé, comme d'hab.
 
Il faut noter que la propriété calculée marche une fois le système démarré, c'est son initialisation qui ne marche pas.


---------------
trainoo.com, c'est fini
n°2241397
youmoussa
Ecrou-vis
Posté le 28-10-2014 à 02:36:38  profilanswer
 

Je vais faire mon sport du lundi et je jette un œil :o
 
Tu utilises encore un observer au lieu d'une CP car c'est utilisé par ta librairie 3D?


---------------
Galerie HFR - Photoblog San Francisco - American Cars Photos
n°2241398
nraynaud
lol
Posté le 28-10-2014 à 02:55:04  profilanswer
 

non, j'utilise un observer parce que je veux que l'utilisateur puisse changer ce que la machine a calculé.


---------------
trainoo.com, c'est fini
n°2241399
youmoussa
Ecrou-vis
Posté le 28-10-2014 à 04:56:01  profilanswer
 

ca n'a rien d'incompatible avec une CP


---------------
Galerie HFR - Photoblog San Francisco - American Cars Photos
n°2241401
nraynaud
lol
Posté le 28-10-2014 à 05:22:00  profilanswer
 

j'y avais pas pensé, genre une computed property dans laquelle on peut écrire avec un champ caché en-dessous ?


---------------
trainoo.com, c'est fini
n°2241402
youmoussa
Ecrou-vis
Posté le 28-10-2014 à 05:36:03  profilanswer
 

Pourquoi caché ? Il est censé changer la valeur comment l'utilisateur ?


---------------
Galerie HFR - Photoblog San Francisco - American Cars Photos
n°2241403
nraynaud
lol
Posté le 28-10-2014 à 05:40:37  profilanswer
 

http://nraynaud.github.io/webgcode [...] est.html#/
change le surface speed, ça change la vitesse de rotation. Mais tu peux changer la vitesse de rotation toi-même.
Pareil pour le feedrate, il peut être calculé à partir de la vitesse et du chipload, ou tu peux le définir directement.


---------------
trainoo.com, c'est fini
n°2241407
youmoussa
Ecrou-vis
Posté le 28-10-2014 à 05:49:52  profilanswer
 

En théorie, un truc dans le genre devrait marcher

 
Code :
  1. speed: function(key, value) {
  2.   if( arguments.length > 1 ) {
  3.     // Setter
  4.     return value;
  5.   } else {
  6.     // Getter
  7.     var  toolDiameter = this.get('toolDiameter'),
  8.          surfaceSpeed = this.get('surfaceSpeed');
  9.     return Math.round(surfaceSpeed * 1000 / Math.PI / toolDiameter);
  10.   }
  11. }.property('surfaceSpeed', 'toolDiameter')
 

Quand tu tapes à la mimine une valeur, tu es en mode setter.
Si `surfaceSpeed` ou `toolDiameter` changent, ca effectue le calcul ( partie getter de la CP ).


Message édité par youmoussa le 28-10-2014 à 05:53:21

---------------
Galerie HFR - Photoblog San Francisco - American Cars Photos
n°2241409
nraynaud
lol
Posté le 28-10-2014 à 05:57:09  profilanswer
 

J'ai pas bien compris, si je lis la vitesse, j'ai toujours celle qui est calculée, au lieu d'avoir celle que l'utilisateur a saisie.
Et surtout ça m'explique pas comment j'utilise les events dans ember data.
 
Et entre temps je rencontre un autre problème :fou:  
'tain c'est le Vietnam.


---------------
trainoo.com, c'est fini
n°2241410
youmoussa
Ecrou-vis
Posté le 28-10-2014 à 06:03:44  profilanswer
 

nraynaud a écrit :


je reviens là-dessus, parce que, surprise, c'est pas vraiment le cas (j'avais posé la question parce que je sentais le coup venir).

 

donc sur mon ember.object j'avais:

Code :
  1. updateSpeed: function () {
  2.                var toolDiameter = this.get('toolDiameter');
  3.                var surfaceSpeed = this.get('surfaceSpeed');
  4.                this.set('speed', Math.round(surfaceSpeed * 1000 / Math.PI / toolDiameter));
  5.            }.observes('surfaceSpeed', 'toolDiameter').on('init'),


C'est une propriété dont on peu laisser le système calculer la valeur ou la définir à la main. Initialement la valeur est calculée.

 

sauf que quand j'appelle le store.createRecord() pour créer le record de ce type, le .on('init') se déclenche et ça provoque une erreur:

Error while processing route: index Attempted to handle event `didSetProperty` on <Visucam.Job:ember330:fixture-0> while in state root.empty. Called with {name: speed, oldValue: undefined, originalValue: undefined, value: 21221}. Error: Attempted to handle event `didSetProperty` on <Visucam.Job:ember330:fixture-0> while in state root.empty. Called with {name: speed, oldValue: undefined, originalValue: undefined, value: 21221}.


donc y'a une espèce de fenêtre de vulnérabilité où on peut pas changer des trucs (c'est évoqué là aussi : http://coryforsyth.com/2013/06/10/ [...] e-machine/ ).

 

donc mon impression c'est qu'il faut changer mon .on('init') en autre chose.

 

Et là c'est un peu relou, basiquement quand un handler est mal déclaré, il se passe rien, il faut bidouiller jusqu'à tomber sur le bon.

 


ici :
https://github.com/emberjs/data/blo [...] es.js#L689
ça suggère qu'il existe un event nommé 'didCreate', j'ai essayé de déclarer .on('didCreate'), mais ça n'appelle pas la fonction , j'ai essayé de déclarer une fonction

Code :
  1. didCreate: function(){
  2. this.updateSpeed();
  3. console.log('didCreate');
  4. }


sur le modèle, mais ça semble pas appelé

 

Bref, je suis un peu paumé, comme d'hab.

 

Il faut noter que la propriété calculée marche une fois le système démarré, c'est son initialisation qui ne marche pas.

 

Ca devrait pas arriver, ce n'est pas exactement le même problème je pense. Le message d'erreur parle de "root.empty" pas de in flight.

 

Le problème avec in flight, c'est lorsque que le modèle est en attente d'une réponse du serveur. Il n'y a pas de logique pour résoudre un conflit, donc pour le moment ED te jette. Pour éviter ce genre de problème, il faut empêcher l'utilisateur de modifier l'enregistrement pendant ce laps de temps.

 

Rien qu'en lisant le code, je ne vois pas ce qui génère cette erreur, il faudrait que je debuggue pour te dire exactement le problème.


Message édité par youmoussa le 28-10-2014 à 06:04:34

---------------
Galerie HFR - Photoblog San Francisco - American Cars Photos
n°2241411
youmoussa
Ecrou-vis
Posté le 28-10-2014 à 06:11:54  profilanswer
 

nraynaud a écrit :

J'ai pas bien compris, si je lis la vitesse, j'ai toujours celle qui est calculée, au lieu d'avoir celle que l'utilisateur a saisie.

 

non, car ca tire avantage du cache des CPs.

 

Tu fais rien, et tu demandes la CP: elle n'est pas en cache, donc la fonction est appelée, tu tombes dans la partie getter.
La valeur te plait pas, tu tapes dans le champs, avec le binding, ca va faire un `set('speed', laNouvelleValeur)`. Tu tombes dans la partie setter qui ne fait rien de spéciale, et c'est `laNouvelleValeur` qui est mise en cache
Tu redemandes `get('speed')`, ca te renvoie direct la valeur du cache.
Tu changes `toolDiameter`, ca invalide le cache, sans recalculer la valeur. C'est uniquement lors du prochain accès que ce sera calculé.
Dans ce cas précis, c'est quand la vue se remet à jour. Et dans ce cas, la fonction associée est executée et renvoie la valeur du getter.

 
nraynaud a écrit :


Et surtout ça m'explique pas comment j'utilise les events dans ember data.

 

`on('didCreate')` aurait du marcher AMHA.

Message cité 1 fois
Message édité par youmoussa le 28-10-2014 à 06:18:24

---------------
Galerie HFR - Photoblog San Francisco - American Cars Photos
n°2241413
youmoussa
Ecrou-vis
Posté le 28-10-2014 à 06:14:19  profilanswer
 

Il suffit de lire les tests pour savoir comment utiliser les events :o
 
https://github.com/emberjs/data/blo [...] est.js#L21


---------------
Galerie HFR - Photoblog San Francisco - American Cars Photos
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