mirror of
https://github.com/modernw/App-Installer-For-Windows-8.x-Reset.git
synced 2026-04-11 17:57:19 +10:00
601 lines
34 KiB
JavaScript
601 lines
34 KiB
JavaScript
(function(global) {
|
|
var strres = external.StringResources;
|
|
var conf = external.Config.current;
|
|
var set = conf.getSection("Settings");
|
|
|
|
function createLocalizedCompare(locale) {
|
|
return function(a, b) {
|
|
a = a || "";
|
|
b = b || "";
|
|
|
|
return a.localeCompare(b, locale, {
|
|
numeric: true, // 2 < 10
|
|
sensitivity: "base" // 不区分大小写 / 重音
|
|
});
|
|
};
|
|
}
|
|
var pagemgr = new PageManager();
|
|
OnLoad.add(function() {
|
|
var listContainer = document.getElementById("applist");
|
|
var appItemTemplate = document.getElementById("appitem-template");
|
|
var mgr = Package.manager;
|
|
var nstr = Bridge.NString;
|
|
var datasrc = new DataView.DataSource();
|
|
datasrc.setKeySelector(function(item) {
|
|
if (item === null || item === void 0) return null;
|
|
return Bridge.String.tolower(Bridge.String.trim(item.Identity.FullName));
|
|
});
|
|
var themeColor = Bridge.UI.themeColor;
|
|
var loadingDisplay = document.getElementById("applist-loading");
|
|
var loadingStatus = loadingDisplay.querySelector(".title");
|
|
var emptyDisplay = document.createElement("div");
|
|
var dataLengthDisplay = document.getElementById("applist-datalen");
|
|
var appSearchList = document.getElementById("applist-search");
|
|
emptyDisplay.textContent = strres.get("MANAGER_MANAGE_LISTEMPTY");
|
|
var listView = new DataView.ListView(listContainer, function(item) {
|
|
var appItem = appItemTemplate.cloneNode(true);
|
|
appItem.id = "";
|
|
appItem.style.display = "";
|
|
var logoimg = appItem.querySelector("img");
|
|
logoimg.src = item.Properties.LogoBase64 || logoimg.src;
|
|
logoimg.parentElement.style.backgroundColor = themeColor;
|
|
var appName = appItem.querySelector(".displayName");
|
|
appName.textContent = item.Properties.DisplayName || item.Identity.Name;
|
|
var appPub = appItem.querySelector(".publisher");
|
|
appPub.textContent = item.Properties.Publisher;
|
|
appItem.data = item;
|
|
appItem.setAttribute("data-install-location", item.InstallLocation);
|
|
appItem.setAttribute("data-development-mode", item.DevelopmentMode);
|
|
appItem.setAttribute("data-is-bundle", item.IsBundle);
|
|
appItem.setAttribute("data-is-framework", item.Properties.Framework);
|
|
appItem.setAttribute("data-family-name", item.Identity.FamilyName);
|
|
appItem.setAttribute("data-full-name", item.Identity.FullName);
|
|
appItem.setAttribute("data-version", item.Identity.Version.Expression);
|
|
appItem.setAttribute("data-users", item.Users);
|
|
appItem.setAttribute("data-publisher-id", item.Identity.PublisherId);
|
|
logoimg.parentElement.style.backgroundColor = item.BackgroundColor;
|
|
if (item.BackgroundColor === "transparent") {
|
|
logoimg.parentElement.style.backgroundColor = themeColor;
|
|
}
|
|
var uninstallButton = appItem.querySelector("div[role=control] .uninstall");
|
|
Windows.UI.Event.Util.addEvent(uninstallButton, "click", function(e) {
|
|
e.stopPropagation();
|
|
this.disabled = true;
|
|
var itemNode = this.parentNode.parentNode.parentNode;
|
|
var flyout = document.getElementById("app-uninstall-flyout");
|
|
if (typeof flyout.appDataSource !== "undefined") flyout.appDataSource.clear();
|
|
if (typeof flyout.appDataSource !== "undefined") {
|
|
Package.reader.readFromInstallLocation(this.parentNode.parentNode.parentNode.data.InstallLocation, true).then(function(result) {
|
|
try {
|
|
if (typeof result.json.applications === "undefined" || result.json.applications.length === 0) {
|
|
result.json.applications = [{
|
|
DisplayName: item.Properties.DisplayName || item.Identity.Name,
|
|
SmallLogo_Base64: item.Properties.LogoBase64,
|
|
}];
|
|
}
|
|
flyout.appDataSource.updateList(result.json.applications);
|
|
|
|
} catch (e) {}
|
|
}, function(result) {
|
|
try { flyout.appDataSource.updateList(result.json.applications); } catch (e) {}
|
|
});
|
|
}
|
|
var self = this;
|
|
var confirm = flyout.querySelector(".confirm");
|
|
confirm.onclick = null;
|
|
confirm.onclick = function() {
|
|
self.disabled = true;
|
|
flyout.winControl.hide();
|
|
var fullName = itemNode.getAttribute("data-full-name");
|
|
itemNode.classList.add("uninstalling");
|
|
var progressPart = itemNode.querySelector("div[role=progress]");
|
|
var statusDisplay = progressPart.querySelector(".status");
|
|
statusDisplay.textContent = strres.get("MANAGER_APP_UNINSTALL_ING");
|
|
var progressDisplay = progressPart.querySelector(".progress");
|
|
progressDisplay.removeAttribute("value");
|
|
self.disabled = true;
|
|
(function(itemNode, statusDisplay, progressDisplay, self) {
|
|
mgr.remove(fullName).then(function(_s) {
|
|
itemNode.classList.remove("uninstalling");
|
|
itemNode.classList.add("uninstalled");
|
|
if (_s.succeeded) {
|
|
statusDisplay.textContent = strres.get("MANAGER_APP_UNINSTALL_SUCCEED");
|
|
datasrc.remove(itemNode.data);
|
|
} else {
|
|
statusDisplay.textContent = _s.message;
|
|
setTimeout(function(iNode, uButton) {
|
|
iNode.classList.remove("uninstalled");
|
|
uButton.disabled = false;
|
|
}, 5000, itemNode, self);
|
|
}
|
|
}, function(_f) {
|
|
itemNode.classList.remove("uninstalling");
|
|
itemNode.classList.add("uninstalled");
|
|
try {
|
|
if (_f.succeeded) {
|
|
statusDisplay.textContent = strres.get("MANAGER_APP_UNINSTALL_SUCCEED");
|
|
datasrc.remove(itemNode.data);
|
|
} else {
|
|
statusDisplay.textContent = _f.message;
|
|
setTimeout(function(iNode, uButton) {
|
|
iNode.classList.remove("uninstalled");
|
|
uButton.disabled = false;
|
|
}, 5000, itemNode, self);
|
|
}
|
|
} catch (e) {
|
|
statusDisplay.textContent = e.message;
|
|
setTimeout(function(iNode, uButton) {
|
|
iNode.classList.remove("uninstalled");
|
|
uButton.disabled = false;
|
|
}, 5000, itemNode, self);
|
|
}
|
|
self.disabled = false;
|
|
}, function(_p) {
|
|
statusDisplay.textContent = Bridge.String.format(
|
|
strres.get("MANAGER_APP_UNINSTALL_PROGRESSING"),
|
|
_p
|
|
);
|
|
progressDisplay.value = _p;
|
|
});
|
|
})(itemNode, statusDisplay, progressDisplay, self);
|
|
};
|
|
var winFlyout = flyout.winControl;
|
|
if (winFlyout._beforehideHandler) {
|
|
winFlyout.removeEventListener("beforehide", winFlyout._beforehideHandler);
|
|
}
|
|
winFlyout._beforehideHandler = function() {
|
|
self.disabled = false;
|
|
};
|
|
winFlyout.addEventListener("beforehide", winFlyout._beforehideHandler);
|
|
flyout.winControl.show(this);
|
|
});
|
|
Windows.UI.Event.Util.addEvent(appItem.querySelector("div[role=advance] a"), "click", function(e) {
|
|
e.stopPropagation();
|
|
try {
|
|
pagemgr.go("appinfo", this.parentNode.parentNode.parentNode.data);
|
|
} catch (ex) {}
|
|
});
|
|
return appItem;
|
|
});
|
|
listView.selectionMode = "single";
|
|
listView.bind(datasrc);
|
|
listView.emptyView = emptyDisplay;
|
|
listView.searchHandler = function(text, item) {
|
|
return ((item.Properties.DisplayName || item.Identity.Name || "") + (item.Properties.Publisher || "")).indexOf(text) >= 0;
|
|
};
|
|
appSearchList.control = new Search.Box(appSearchList, {
|
|
placeholderText: strres.get("MANAGER_MANAGE_SEARCHPLACEHOLDER"),
|
|
chooseSuggestionOnEnter: false
|
|
});
|
|
appSearchList.control.ontextchanged = function(ev) {
|
|
console.log(ev.text);
|
|
listView.searchText = ev.detail.text;
|
|
};
|
|
listView.onsearchend = function() {
|
|
dataLengthDisplay.textContent = external.String.format(strres.get("MANAGER_MANAGE_FINDAPPS"), listView.findItemLength);
|
|
};
|
|
var timer = null;
|
|
|
|
function refreshAppList() {
|
|
dataLengthDisplay.textContent = "";
|
|
|
|
function processData(manifest, dataitem) {
|
|
//if (dataitem.Identity.FamilyName = "Microsoft.MicrosoftEdge.Stable_8wekyb3d8bbwe") debugger;
|
|
dataitem.Properties.DisplayName = dataitem.Properties.DisplayName || manifest.properties.display_name || dataitem.Properties.DisplayName;
|
|
if ((dataitem.Properties.DisplayName || "").indexOf("ms-resource:") === 0) {
|
|
dataitem.Properties.DisplayName = "";
|
|
}
|
|
if (manifest.applications.length === 1) {
|
|
dataitem.Properties.DisplayName = dataitem.Properties.DisplayName || manifest.applications[0].DisplayName || "";
|
|
}
|
|
if ((dataitem.Properties.DisplayName || "").indexOf("ms-resource:") === 0) {
|
|
dataitem.Properties.DisplayName = "";
|
|
}
|
|
if (manifest.applications.length === 1) {
|
|
dataitem.Properties.DisplayName = dataitem.Properties.DisplayName || manifest.applications[0].ShortName || "";
|
|
}
|
|
if ((dataitem.Properties.DisplayName || "").indexOf("ms-resource:") === 0) {
|
|
dataitem.Properties.DisplayName = "";
|
|
}
|
|
dataitem.Properties.DisplayName = dataitem.Properties.DisplayName || dataitem.Identity.FamilyName;
|
|
dataitem.Properties.Puvlisher = dataitem.Properties.Publisher || manifest.properties.publisher_display_name || dataitem.Properties.Publisher;
|
|
dataitem.Properties.Framework = dataitem.Properties.Framework || manifest.properties.framework;
|
|
dataitem.Properties.Logo = dataitem.Properties.Logo || manifest.properties.logo;
|
|
dataitem.Properties.LogoBase64 = dataitem.Properties.LogoBase64 || manifest.properties.logo_base64;
|
|
if (manifest.applications.length === 1) {
|
|
dataitem.Properties.LogoBase64 = dataitem.Properties.LogoBase64 || manifest.applications[0].Square44x44Logo_Base64 || manifest.applications[0].SmallLogo_Base64;
|
|
}
|
|
dataitem.Properties.ResourcePackage = dataitem.Properties.ResourcePackage || manifest.properties.resource_package;
|
|
dataitem.Properties.Description = dataitem.Properties.Description || manifest.properties.description;
|
|
try {
|
|
dataitem.BackgroundColor = manifest.applications[0].BackgroundColor || "transparent";
|
|
} catch (e) {
|
|
dataitem.BackgroundColor = "transparent";
|
|
}
|
|
return dataitem;
|
|
}
|
|
|
|
function update(datas) {
|
|
var newDatas = [];
|
|
var promises = [];
|
|
for (var i = 0; i < datas.length; i++) {
|
|
var data = datas[i];
|
|
if (external.System.isWindows10) {
|
|
if (data.Properties.DisplayName === null || data.Properties.DisplayName === "" || data.Properties.DisplayName === void 0 ||
|
|
data.Properties.LogoBase64 === null || data.Properties.LogoBase64 === "" || data.Properties.LogoBase64 === void 0
|
|
) {
|
|
promises.push(function(item, arr) {
|
|
return Package.reader.readFromInstallLocation(item.InstallLocation, true).then(function(result) {
|
|
try {
|
|
arr.push(processData(result.json, item));
|
|
} catch (e) {
|
|
item.BackgroundColor = "transparent";
|
|
arr.push(item);
|
|
}
|
|
}, function(result) {
|
|
try {
|
|
arr.push(processData(result.json, item));
|
|
} catch (e) {
|
|
item.BackgroundColor = "transparent";
|
|
arr.push(item);
|
|
}
|
|
});
|
|
}(data, newDatas));
|
|
} else {
|
|
promises.push(function(item, arr) {
|
|
return Package.reader.readFromInstallLocation(item.InstallLocation, false).then(function(result) {
|
|
try {
|
|
item.BackgroundColor = result.json.applications[0].BackgroundColor;
|
|
arr.push(item);
|
|
} catch (e) {
|
|
item.BackgroundColor = "transparent";
|
|
arr.push(item);
|
|
}
|
|
}, function(result) {
|
|
try {
|
|
item.BackgroundColor = result.json.applications[0].BackgroundColor;
|
|
arr.push(item);
|
|
} catch (e) {
|
|
item.BackgroundColor = "transparent";
|
|
arr.push(item);
|
|
}
|
|
});
|
|
}(data, newDatas));
|
|
}
|
|
} else {
|
|
promises.push(function(item, arr) {
|
|
return Package.reader.readFromInstallLocation(item.InstallLocation, true).then(function(result) {
|
|
try {
|
|
arr.push(processData(result.json, item));
|
|
} catch (e) {
|
|
item.BackgroundColor = "transparent";
|
|
arr.push(item);
|
|
}
|
|
}, function(result) {
|
|
try {
|
|
arr.push(processData(result.json, item));
|
|
} catch (e) {
|
|
item.BackgroundColor = "transparent";
|
|
arr.push(item);
|
|
}
|
|
});
|
|
}(data, newDatas));
|
|
}
|
|
}
|
|
|
|
function updateDatas() {
|
|
datasrc.updateList(newDatas, function(item) {
|
|
return item.Identity.FullName || "";
|
|
});
|
|
var compare = function(a, b) { return a - b; };
|
|
try {
|
|
compare = createLocalizedCompare(external.System.Locale.currentLocale);
|
|
} catch (e) {
|
|
try {
|
|
compare = createLocalizedCompare(navigator.language);
|
|
} catch (e) {
|
|
compare = function(a, b) {
|
|
if (a < b) return -1;
|
|
if (a > b) return 1;
|
|
return 0;
|
|
};
|
|
}
|
|
}
|
|
datasrc.sort(function(a, b) {
|
|
return compare(a.Properties.DisplayName, b.Properties.DisplayName);
|
|
});
|
|
dataLengthDisplay.textContent = external.String.format(strres.get("MANAGER_MANAGE_FINDAPPS"), listView.findItemLength);
|
|
}
|
|
return Promise.join(promises).then(updateDatas, updateDatas);
|
|
}
|
|
if (timer) clearTimeout(timer);
|
|
timer = null;
|
|
loadingDisplay.style.display = "";
|
|
loadingDisplay.classList.remove("noloading");
|
|
loadingDisplay.bar.show();
|
|
|
|
function waitAndHide() {
|
|
return new Promise(function(resolve, reject) {
|
|
if (timer) clearTimeout(timer);
|
|
timer = null;
|
|
timer = setTimeout(function(rs, rj) {
|
|
//loadingDisplay.style.display = "none";
|
|
loadingDisplay.bar.hide();
|
|
rs();
|
|
}, 5000, resolve, reject);
|
|
});
|
|
}
|
|
loadingStatus.textContent = strres.get("MANAGER_APP_INSTALLEDAPPS_LOADING");
|
|
return mgr.get().then(function(result) {
|
|
return update(result.list).then(function() {
|
|
loadingDisplay.classList.add("noloading");
|
|
loadingStatus.textContent = strres.get("MANAGER_APP_INSTALLEDAPPS_SUCCEED");
|
|
setTimeout(function(lv) {
|
|
lv.refresh();
|
|
}, 500, listView);
|
|
}).then(waitAndHide);
|
|
}, function(error) {
|
|
loadingDisplay.classList.add("noloading");
|
|
var errmsg = (error.result ? (error.result.message || error.result.ErrorCode || "获取失败") : (error.message || error.error || error));
|
|
loadingStatus.textContent = external.String.format(strres.get("MANAGER_APP_INSTALLEDAPPS_FAILED"), errmsg);
|
|
try { update(error.list); } catch (e) {}
|
|
setTimeout(function(lv) {
|
|
lv.refresh();
|
|
}, 500, listView);
|
|
return waitAndHide();
|
|
});
|
|
}
|
|
var appbar = document.getElementById("appBar");
|
|
var appbarControl = new AppBar.AppBar(appbar);
|
|
var refreshButton = new AppBar.Command();
|
|
refreshButton.icon = "";
|
|
refreshButton.label = strres.get("MANAGER_APP_REFRESH");
|
|
global.refreshAppList2 = function refreshAppList2() {
|
|
appbarControl.hide();
|
|
refreshButton.disabled = true;
|
|
return refreshAppList().then(function() {
|
|
refreshButton.disabled = false;
|
|
}, function(error) {
|
|
refreshButton.disabled = false;
|
|
});
|
|
}
|
|
var showSystemApps = document.getElementById("applist-showsystemapp");
|
|
var showFrameworks = document.getElementById("applist-showframework");
|
|
showSystemApps.checked = set.getKey("PackageManager:ShowSystemApps").readBool(false);
|
|
showFrameworks.checked = set.getKey("PackageManager:ShowFrameworks").readBool(false);
|
|
listView.filter = function(item) {
|
|
try {
|
|
if (!showFrameworks.checked && item.Properties.Framework) return false;
|
|
if (!showSystemApps.checked && item.Users.indexOf("NT AUTHORITY\\SYSTEM") !== -1) return false;
|
|
return true;
|
|
} catch (e) {
|
|
return false;
|
|
}
|
|
};
|
|
Windows.UI.Event.Util.addEvent(showSystemApps, "change", function() {
|
|
listView.refresh();
|
|
dataLengthDisplay.textContent = external.String.format(strres.get("MANAGER_MANAGE_FINDAPPS"), listView.findItemLength);
|
|
set.getKey("PackageManager:ShowSystemApps").set(showSystemApps.checked);
|
|
});
|
|
Windows.UI.Event.Util.addEvent(showFrameworks, "change", function() {
|
|
listView.refresh();
|
|
dataLengthDisplay.textContent = external.String.format(strres.get("MANAGER_MANAGE_FINDAPPS"), listView.findItemLength);
|
|
set.getKey("PackageManager:ShowFrameworks").set(showFrameworks.checked);
|
|
});
|
|
refreshButton.addEventListener("click", refreshAppList2);
|
|
appbarControl.add(refreshButton);
|
|
refreshAppList2();
|
|
var appDetailPage = document.getElementById("page-appinfo");
|
|
pagemgr.register("manager", document.getElementById("tag-manager"), document.getElementById("page-manager"));
|
|
pagemgr.register("appinfo", document.getElementById("tag-appinfo"), document.getElementById("page-appinfo"), setAppInfoPageContent);
|
|
var appinfoBackPage = appDetailPage.querySelector(".win-backbutton");
|
|
Windows.UI.Event.Util.addEvent(appinfoBackPage, "click", function(e) {
|
|
pagemgr.back();
|
|
});
|
|
appDetailPage.appDataSource = new DataView.DataSource();
|
|
var appListView = new DataView.ListView(appDetailPage.querySelector(".apps"), function(item) {
|
|
var appItem = appItemTemplate.cloneNode(true);
|
|
appItem.id = "";
|
|
appItem.style.display = "";
|
|
var logoimg = appItem.querySelector("img");
|
|
logoimg.src = item.Square44x44Logo_Base64 || item.SmallLogo_Base64;
|
|
if (logoimg.src == "" || logoimg.src == null || logoimg.src == void 0) logoimg.removeAttribute("src");
|
|
logoimg.parentElement.style.backgroundColor = item.BackgroundColor;
|
|
if (Bridge.NString.equals(item.BackgroundColor, "transparent")) logoimg.parentElement.style.backgroundColor = themeColor;
|
|
var appName = appItem.querySelector(".displayName");
|
|
appName.textContent = item.DisplayName || item.ShortName;
|
|
var appPub = appItem.querySelector(".publisher");
|
|
appPub.style.display = "none";
|
|
appItem.querySelector("div[role=advance]").style.display = "none";
|
|
var ctrls = appItem.querySelector("div[role=control]");
|
|
ctrls.innerHTML = "";
|
|
appItem.data = item;
|
|
var launchButton = document.createElement("button");
|
|
launchButton.textContent = strres.get("MANAGER_APP_LAUNCH");
|
|
launchButton.setAttribute("data-app-user-model-id", item.AppUserModelID);
|
|
var createShortcutButton = document.createElement("button");
|
|
createShortcutButton.setAttribute("data-app-user-model-id", item.AppUserModelID);
|
|
createShortcutButton.textContent = strres.get("MANAGER_APP_SHORTCUTCREATE_TITLE");
|
|
createShortcutButton.style.marginRight = "10px";
|
|
Windows.UI.Event.Util.addEvent(launchButton, "click", function(e) {
|
|
e.stopPropagation();
|
|
Package.manager.active(this.getAttribute("data-app-user-model-id"));
|
|
});
|
|
Windows.UI.Event.Util.addEvent(createShortcutButton, "click", function(e) {
|
|
e.stopPropagation();
|
|
var backid =
|
|
messageBoxAdvance(function() {
|
|
var ring = document.createElement("progress");
|
|
ring.classList.add("win-ring");
|
|
ring.style.color = "white";
|
|
var text = document.createElement("span");
|
|
text.textContent = strres.get("MANAGER_APP_SHORTCUTCREATE_BACK_TEXT_ING");
|
|
text.style.marginLeft = "20px";
|
|
var container = document.createElement("div");
|
|
container.style.display = "flex";
|
|
container.style.flexDirection = "row";
|
|
container.appendChild(ring);
|
|
container.appendChild(text);
|
|
container.style.marginTop = "10px";
|
|
var openInstallLocation = document.createElement("button");
|
|
openInstallLocation.textContent = strres.get("MANAGER_APP_SHORTCUTCREATE_OPENINSTALLLOCATION");
|
|
openInstallLocation.style.marginTop = "10px";
|
|
openInstallLocation.style.display = "block";
|
|
openInstallLocation.setAttribute("data-install-location", appDetailPage.data.InstallLocation);
|
|
openInstallLocation.onclick = function() {
|
|
external.Storage.Path.open(this.getAttribute("data-install-location"));
|
|
};
|
|
var finalc = document.createElement("div");
|
|
finalc.appendChild(container);
|
|
finalc.appendChild(document.createElement("br"));
|
|
finalc.appendChild(openInstallLocation);
|
|
return finalc;
|
|
}(), strres.get("MANAGER_APP_SHORTCUTCREATE_BACK_TITLE"), [], "#159d9d");
|
|
document.getElementById(backid).querySelector(".notice-controls").style.display = "none";
|
|
var back = document.getElementById(backid);
|
|
external.createAppShortcut(appDetailPage.data.InstallLocation, this.getAttribute("data-app-user-model-id"), function(complete) {
|
|
complete = JSON.parse(complete);
|
|
if (typeof back.remove !== "undefined") back.remove();
|
|
else if (typeof back.removeNode !== "undefined") back.removeNode(true);
|
|
else back.parentNode.removeChild(back);
|
|
if (complete.succeeded) messageBoxAdvance(strres.get("MANAGER_APP_SHORTCUTCREATE_BACK_TEXT_SUCCEED"), strres.get("MANAGER_APP_SHORTCUTCREATE_BACK_TITLE_SUCCEED"), [], "#159d9d");
|
|
else messageBoxAdvance(complete.message, strres.get("MANAGER_APP_SHORTCUTCREATE_BACK_TITLE_FAILED"), [], "#159d9d");
|
|
}, function(error) {
|
|
error = JSON.parse(error);
|
|
if (typeof back.remove !== "undefined") back.remove();
|
|
else if (typeof back.removeNode !== "undefined") back.removeNode(true);
|
|
else back.parentNode.removeChild(back);
|
|
messageBoxAdvance((error.message || error.error || error), strres.get("MANAGER_APP_SHORTCUTCREATE_BACK_TITLE_FAILED"), [], "#159d9d");
|
|
});
|
|
});
|
|
ctrls.appendChild(launchButton);
|
|
ctrls.appendChild(createShortcutButton);
|
|
return appItem;
|
|
});
|
|
appListView.selectionMode = "single";
|
|
appListView.bind(appDetailPage.appDataSource);
|
|
appListView.emptyView = emptyDisplay.cloneNode(true);
|
|
var appDetailUninstall = appDetailPage.querySelector("#detail-uninstall-btn");
|
|
var appDetailUninstallStatusBlock = appDetailPage.querySelector("#appinfo-uninstallstatus");
|
|
var appDetailUninstallProgress = appDetailUninstallStatusBlock.querySelector(".progress");
|
|
var appDetailUninstallProgressStatus = appDetailUninstallStatusBlock.querySelector(".status");
|
|
appDetailUninstallStatusBlock.bar = new TransitionPanel(appDetailUninstallStatusBlock, {
|
|
axis: 'y',
|
|
duration: 500,
|
|
});
|
|
Windows.UI.Event.Util.addEvent(appDetailUninstall, "click", function(e) {
|
|
e.stopPropagation();
|
|
appinfoBackPage.disabled = true;
|
|
appDetailUninstallProgress.removeAttribute("value");
|
|
var item = appDetailPage.data;
|
|
var flyout = document.getElementById("app-uninstall-flyout");
|
|
if (typeof flyout.appDataSource !== "undefined") flyout.appDataSource.clear();
|
|
if (typeof flyout.appDataSource !== "undefined") {
|
|
flyout.appDataSource.updateList(appDetailPage.appDataSource.get());
|
|
}
|
|
var self = this;
|
|
var confirm = flyout.querySelector(".confirm");
|
|
confirm.onclick = null;
|
|
confirm.onclick = function() {
|
|
self.disabled = true;
|
|
flyout.winControl.hide();
|
|
var fullName = item.Identity.FullName;
|
|
var progressPart = appDetailUninstallStatusBlock;
|
|
var statusDisplay = appDetailUninstallProgressStatus;
|
|
statusDisplay.textContent = strres.get("MANAGER_APP_UNINSTALL_ING");
|
|
var progressDisplay = appDetailUninstallProgress;
|
|
progressDisplay.style.display = "";
|
|
self.disabled = true;
|
|
progressPart.bar.show();
|
|
(function(statusDisplay, progressDisplay, self, item) {
|
|
mgr.remove(fullName).then(function(_s) {
|
|
if (_s.succeeded) {
|
|
statusDisplay.textContent = strres.get("MANAGER_APP_UNINSTALL_SUCCEED");
|
|
datasrc.remove(item);
|
|
appinfoBackPage.disabled = false;
|
|
} else {
|
|
statusDisplay.textContent = _s.message;
|
|
}
|
|
setTimeout(function(uButton, isSuccess) {
|
|
appinfoBackPage.disabled = false;
|
|
uButton.disabled = isSuccess;
|
|
progressPart.bar.hide();
|
|
}, 5000, self, _s.succeeded);
|
|
progressDisplay.style.display = "none";
|
|
}, function(_f) {
|
|
try {
|
|
if (_f.succeeded) {
|
|
statusDisplay.textContent = strres.get("MANAGER_APP_UNINSTALL_SUCCEED");
|
|
datasrc.remove(item);
|
|
appinfoBackPage.disabled = false;
|
|
} else {
|
|
statusDisplay.textContent = _f.message;
|
|
}
|
|
setTimeout(function(uButton, isSuccess) {
|
|
appinfoBackPage.disabled = false;
|
|
uButton.disabled = isSuccess;
|
|
progressPart.bar.hide();
|
|
}, 5000, self, _f.succeeded);
|
|
} catch (e) {
|
|
statusDisplay.textContent = e.message;
|
|
appinfoBackPage.disabled = false;
|
|
setTimeout(function(uButton, isSuccess) {
|
|
appinfoBackPage.disabled = false;
|
|
uButton.disabled = isSuccess;
|
|
progressPart.bar.hide();
|
|
}, 5000, self, _f.succeeded);
|
|
}
|
|
self.disabled = false;
|
|
progressDisplay.style.display = "none";
|
|
}, function(_p) {
|
|
statusDisplay.textContent = Bridge.String.format(
|
|
strres.get("MANAGER_APP_UNINSTALL_PROGRESSING"),
|
|
_p
|
|
);
|
|
progressDisplay.value = _p;
|
|
});
|
|
})(statusDisplay, progressDisplay, self, item);
|
|
};
|
|
var winFlyout = flyout.winControl;
|
|
if (winFlyout._beforehideHandler) {
|
|
winFlyout.removeEventListener("beforehide", winFlyout._beforehideHandler);
|
|
}
|
|
winFlyout._beforehideHandler = function() {
|
|
self.disabled = false;
|
|
};
|
|
winFlyout.addEventListener("beforehide", winFlyout._beforehideHandler);
|
|
flyout.winControl.show(this);
|
|
});
|
|
var uninstallFlyout = document.getElementById("app-uninstall-flyout");
|
|
uninstallFlyout.appListView = new DataView.ListView(uninstallFlyout.querySelector(".applist"), function(item) {
|
|
var appItem = appItemTemplate.cloneNode(true);
|
|
appItem.id = "";
|
|
appItem.style.display = "";
|
|
var logoimg = appItem.querySelector("img");
|
|
logoimg.src = item.Square44x44Logo_Base64 || item.SmallLogo_Base64;
|
|
if (logoimg.src == "" || logoimg.src == null || logoimg.src == void 0) logoimg.removeAttribute("src");
|
|
logoimg.parentElement.style.backgroundColor = item.BackgroundColor;
|
|
if (Bridge.NString.equals(item.BackgroundColor, "transparent")) logoimg.parentElement.style.backgroundColor = themeColor;
|
|
var appName = appItem.querySelector(".displayName");
|
|
appName.style.wordBreak = "normal";
|
|
appName.style.wordWrap = "normal";
|
|
appName.textContent = item.DisplayName || item.ShortName;
|
|
var appPub = appItem.querySelector(".publisher");
|
|
appPub.style.display = "none";
|
|
appItem.querySelector("div[role=advance]").style.display = "none";
|
|
var ctrls = appItem.querySelector("div[role=control]");
|
|
ctrls.innerHTML = "";
|
|
appItem.data = item;
|
|
return appItem;
|
|
});
|
|
uninstallFlyout.appDataSource = new DataView.DataSource();
|
|
uninstallFlyout.appListView.bind(uninstallFlyout.appDataSource);
|
|
initLoaderPage();
|
|
pagemgr.addEventListener("load", function(e) {
|
|
appbarControl.enabled = e == "manager";
|
|
refreshButton.style.display = e == "manager" ? "" : "none";
|
|
});
|
|
pagemgr.register("load", document.getElementById("tag-load"), document.getElementById("page-load"));
|
|
pagemgr.go("manager");
|
|
});
|
|
})(this); |