(function () { "use strict"; var localNgcResources = {}; var bridge = new CloudExperienceHost.Bridge(); WinJS.UI.Pages.define("/views/localNgc.html", { init: function (element, options) { var languagePromise = bridge.invoke("CloudExperienceHost.Globalization.Language.getPreferredLang").then(function (preferredLang) { _htmlRoot.setAttribute("lang", preferredLang); }, function () { }); var dirPromise = bridge.invoke("CloudExperienceHost.Globalization.Language.getReadingDirection").then(function (dirVal) { _htmlRoot.setAttribute("dir", dirVal); }, function () { }); var stringPromise = bridge.invoke("CloudExperienceHost.LocalNgc.localNgcLocalizedStrings").then(function (result) { localNgcResources = JSON.parse(result); }); var cssPromise = uiHelpers.LoadCssPromise(document.head, "..", bridge); return WinJS.Promise.join({ languagePromise: languagePromise, dirPromise: dirPromise, stringPromise: stringPromise, cssPromise: cssPromise }); }, ready: function (element, options) { var pageElementsWithTextContent = [Title, Body, TryAgainButton, NextButton, SkipButton]; var i = 0; for (i = 0; i < pageElementsWithTextContent.length; i++) { pageElementsWithTextContent[i].textContent = localNgcResources[pageElementsWithTextContent[i].id]; } var buttonsWithAccessKeys = [TryAgainButton, NextButton]; buttonsWithAccessKeys.forEach(function (eachElement) { var result = CloudExperienceHost.ResourceManager.GetContentAndAccesskey(localNgcResources[eachElement.id]); eachElement.textContent = result.content; eachElement.accessKey = result.accessKey; }); uiHelpers.RegisterEaseOfAccess(EaseOfAccess, bridge); NextButton.addEventListener("click", function () { event.preventDefault(); _logEvent("LocalNgcNextButtonClick"); NextButton.disabled = true; _createLocalPin(); }.bind(this)); _setVisibility(TryAgainButton, false); TryAgainButton.addEventListener("click", function () { event.preventDefault(); _logEvent("LocalNgcTryAgainButtonClick"); TryAgainButton.disabled = true; _createLocalPin(); }); _setVisibility(SkipButton, false); SkipButton.addEventListener("click", function () { event.preventDefault(); _logEvent("LocalNgcSkipButtonClick"); _enrollmentCancelled(); }); _setVisibility(ErrorText, false); function _createLocalPin() { _logEvent("LocalNgcEnrollStart"); bridge.invoke("CloudExperienceHost.LocalNgc.createLocalPinAsync").done(function () { NextButton.disabled = false; _enrollmentSucceeded(); }, function (e) { TryAgainButton.disabled = false; _showTryAgainPage(); _logError(e); if (e.number !== -2146893770) { _setVisibility(ErrorText, true); ErrorText.textContent = e.number; } }); } function _enrollmentCancelled() { _logEvent("LocalNgcCancelled"); bridge.invoke("CloudExperienceHost.HelloCleanup.cleanupHelloEnrollment"); bridge.fireEvent(CloudExperienceHost.Events.done, CloudExperienceHost.AppResult.cancel); } function _enrollmentSucceeded() { _logEvent("LocalNgcEnrolled"); bridge.fireEvent(CloudExperienceHost.Events.done, CloudExperienceHost.AppResult.success); } function _logEvent(eventName) { bridge.invoke("CloudExperienceHost.Telemetry.logEvent", eventName); } function _logError(e) { if (e && e.number) { bridge.invoke("CloudExperienceHost.Telemetry.logEvent", "LocalNgcFailure", e.number); } else { bridge.invoke("CloudExperienceHost.Telemetry.logEvent", "LocalNgcUndefinedFailure"); } } function _showTryAgainPage() { Title.textContent = localNgcResources['TitleTryAgain']; Body.textContent = localNgcResources['BodyTryAgain']; _setVisibility(TryAgainButton, true); TryAgainButton.focus(); _setVisibility(NextButton, false); _setVisibility(SkipButton, true); } function _setVisibility(container, visible) { container.style.visibility = (visible) ? 'visible' : 'hidden'; container.style.display = (visible) ? 'inline' : 'none'; container.setAttribute("aria-hidden", (visible) ? "false" : "true"); } }, error: function (e) { bridge.invoke("CloudExperienceHost.HelloCleanup.cleanupHelloEnrollment"); bridge.fireEvent(CloudExperienceHost.Events.done, CloudExperienceHost.AppResult.fail); }, }); })();