Création d'une barre de progression de plusieurs opérations


18

Actuellement, j'utilise Tridion 2011 SP1 et j'aimerais créer un processus de longue durée.

Le processus reçoit une mise à jour en interrogeant un service externe jusqu'à ce qu'il soit terminé.

Exemple de cette barre:

enter image description here

Donc ce que je voudrais arriver:

  1. Démarrer l'opération sur le service et recevoir un jeton que je peux interroger.
  2. Afficher la barre des opérations multiples
  3. Le code effectue un sondage sur le service toutes les x ms/s.
  4. L'état de la barre des opérations multiples est ensuite mis à jour ou une erreur est affichée si une erreur s'est produite.
  5. Lorsque l'état est reçu comme terminé, exécutez mon rappel pour me laisser afficher les résultats à l'utilisateur.

J'ai jeté un coup d'oeil à la façon dont Outbound E-Mail gère cette implémentation, mais je ne suis pas en mesure d'obtenir un échantillon de travail.

Quel serait le moyen le plus simple pour mon implémentation? Je vois que Outbound E-Mail le définit en tant que modèle, puis renvoie le modèle à partir d'une fabrique de modèles. Est-ce le seul moyen?

Une aide/un conseil?

Mise à jour =====

utilisant Ended la réponse de Chris Summers et mis en œuvre comme suit:

// Create a progress message 
var progress_msg = $messages.registerProgress('Doing something 1/3', 'Really important'); 

// For each Update 
progress_msg.setTitle('Doing something n/3'); 

// When you are done hide the progress 
progress_msg.finish(); 
progress_msg.dispose(); 

// Show Success or Failure (Error)$ messages.registerGoal("Your success"); 
$messages.registerError("Your error"); 
20

Jetez un oeil à la PowerTools Example Tool. Le JS pour l'outil est visible à http://code.google.com/p/tridion-2011-power-tools/source/browse/trunk/PowerTools.Editor/PowerTools/Client/Example/Example.js - Il a une barre de progression qui interroge un service d'arrière-plan, jetez un oeil à la méthode PowerTools.Popups.Example.prototype._onExecuteButtonClicked(). Si vous souhaitez que cette info apparaisse dans le centre de messagerie (comme indiqué dans votre graphique) plutôt que dans la barre d'outils par défaut, envoyez simplement votre message au centre de messagerie. Vous pouvez utiliser quelque chose comme ce qui suit:

 $messages.registerNotification("Your message");$ messages.registerGoal("Your success"); 
$messages.registerError("Your error"); 

créer un modèle général est la meilleure façon d'y parvenir, comme le cadre Anguilla va générer tous vos proxys JavaScript pour vos services pour vous.

  0

Merci pour le lien! Actuellement en train de le regarder. Donc, la méthode que vous recommandez est exactement la même que celle qui se produit lorsque vous copiez/collez un élément? Il se connecte en utilisant les méthodes mentionnées ci-dessus? 20 févr.. 132013-02-20 15:03:32

  0

Correct - Si vous utilisez firefox vous verrez toutes les méthodes sur l'objet $ messages 20 févr.. 132013-02-20 18:55:44

  0

Merci de m'avoir indiqué la bonne façon, j'ai fini par créer un seul élément de progrès avec $ messages.registerProgress et en changeant le titre après chaque sondage. Et puis le fermer et montrer une erreur ou un succès. 21 févr.. 132013-02-21 07:14:02