Como mostrar o progresso da operação numa extensão do portal de gestão de pacotes Azure Windows
Aplica-se a: Windows Azure Pack
Se uma operação iniciada pelo utilizador demorar algum tempo a ser processada, recomenda-se que utilize a ProgressOperation para não bloquear a interface de utilizador do portal de gestão, mas ainda assim permitir que o utilizador veja que a operação está em curso. A ProgressOperation tem várias opções para que possa manter o utilizador informado sobre a operação. Cada uma destas opções pode ser utilizada independentemente uma da outra.
As operações de progresso podem ser determinantes. Pode dizer-se como a operação é completa, por exemplo, a operação pode reportar o valor total por cento. Alternativamente, podem ser indeterminados. Sabe que a operação está ou não completa, mas não o quão perto está de qualquer estado.
ProgressOperation tem uma propriedade indeterminada que indica ao utilizador que existe, ou não, vai ser reportado progresso para a conclusão.
Uma operação pode ser constituída por uma sequência de passos individuais, cada um dos quais pode ter sucesso ou falhar. Quando ocorrerem falhas, qualquer novo progresso na operação é interrompido. Quando as operações têm passos, aparece um botão Detalhes :
Clicar nele revela os passos individuais, com estados individuais como sucesso, falha ou aviso: Consulte os métodos addStep /removeStep no ProgressOperation para obter mais detalhes.
Um exemplo de uma operação de progresso está contido na amostra de um Assistente. A função ''s onComplete' do assistente configura uma operação de progresso para mostrar quando a operação do servidor termina.
Para mostrar progresso para uma operação dentro de um feiticeiro
Utilize o seguinte código para mostrar o progresso dentro de um Assistente.
cdm.stepWizard({ extension: "DomainTenantExtension", steps: [{ template: "createStep1", data: data, // Called when the step is first created onStepCreated: function () { wizard = this; }, // Called each time the step is displayed onStepActivate: step1Activate, // Called before the wizard moves to the next step onNextStep: function () { return Shell.UI.Validation.validateContainer("#dm-create-step1"); } }], // Called when the user clicks the "Finish" button on the last step onComplete: function () { var newPassword, newResellerPortalUrl; newPassword = $("#dm-password").val(); newResellerPortalUrl = registerReseller ? $("#dm-portalUrl").val() : null; // Call whatever backend function we need to. In our example, it returns a promise promise = callback(newPassword, newResellerPortalUrl); // Create a new Progress Operation object var progressOperation = new Shell.UI.ProgressOperation( // Title of operation "Registering endpoint...", // Initial status. null = default null, // Is indeterministic? (Does it NOT provide a % complete) true); // This adds the progress operation we set up earlier to the visible list of PrOp's Shell.UI.ProgressOperations.add(progressOperation); promise .done(function() { // When the operation succeeds, complete the progress operation progressOperation.complete( "Successfully registered the endpoint.", Shell.UI.InteractionSeverity.information); }) .fail(function() { // When the operation fails, complete the progress operation progressOperation.complete( "Failed to register the endpoint.", Shell.UI.InteractionSeverity.error, Shell.UI.InteractionBehavior.ok); }); } }, { // Other supported sized include large, medium & small size: "mediumplus" });
Consulte também
Executar tarefas comuns numa extensão do portal de gestão de pacotes Azure Windows