2019-11-06 13:43:39 +03:00
|
|
|
define(["loading", "dom", "libraryMenu", "globalize", "scripts/imagehelper", "humanedate", "emby-button", "emby-itemscontainer", "cardStyle"], function (loading, dom, libraryMenu, globalize, imageHelper) {
|
2018-10-23 01:05:09 +03:00
|
|
|
"use strict";
|
|
|
|
|
|
|
|
function canDelete(deviceId) {
|
2019-11-06 13:43:39 +03:00
|
|
|
return deviceId !== ApiClient.deviceId();
|
2018-10-23 01:05:09 +03:00
|
|
|
}
|
|
|
|
|
|
|
|
function deleteDevice(page, id) {
|
|
|
|
var msg = globalize.translate("DeleteDeviceConfirmation");
|
2019-11-06 13:43:39 +03:00
|
|
|
|
|
|
|
require(["confirm"], function (confirm) {
|
2018-10-23 01:05:09 +03:00
|
|
|
confirm({
|
|
|
|
text: msg,
|
|
|
|
title: globalize.translate("HeaderDeleteDevice"),
|
|
|
|
confirmText: globalize.translate("ButtonDelete"),
|
2019-09-05 12:41:39 -07:00
|
|
|
primary: "delete"
|
2019-11-06 13:43:39 +03:00
|
|
|
}).then(function () {
|
|
|
|
loading.show();
|
|
|
|
ApiClient.ajax({
|
2018-10-23 01:05:09 +03:00
|
|
|
type: "DELETE",
|
|
|
|
url: ApiClient.getUrl("Devices", {
|
|
|
|
Id: id
|
|
|
|
})
|
2019-11-06 13:43:39 +03:00
|
|
|
}).then(function () {
|
|
|
|
loadData(page);
|
|
|
|
});
|
|
|
|
});
|
|
|
|
});
|
2018-10-23 01:05:09 +03:00
|
|
|
}
|
|
|
|
|
|
|
|
function showDeviceMenu(view, btn, deviceId) {
|
|
|
|
var menuItems = [];
|
2019-11-06 13:43:39 +03:00
|
|
|
|
|
|
|
if (canEdit) {
|
|
|
|
menuItems.push({
|
|
|
|
name: globalize.translate("Edit"),
|
|
|
|
id: "open",
|
2019-11-23 16:02:57 +03:00
|
|
|
icon: "mode_edit"
|
2019-11-06 13:43:39 +03:00
|
|
|
});
|
|
|
|
}
|
|
|
|
|
|
|
|
if (canDelete(deviceId)) {
|
|
|
|
menuItems.push({
|
|
|
|
name: globalize.translate("Delete"),
|
|
|
|
id: "delete",
|
2019-11-22 19:49:01 +03:00
|
|
|
icon: "delete"
|
2019-11-06 13:43:39 +03:00
|
|
|
});
|
|
|
|
}
|
|
|
|
|
|
|
|
require(["actionsheet"], function (actionsheet) {
|
2018-10-23 01:05:09 +03:00
|
|
|
actionsheet.show({
|
|
|
|
items: menuItems,
|
|
|
|
positionTo: btn,
|
2019-11-06 13:43:39 +03:00
|
|
|
callback: function (id) {
|
2018-10-23 01:05:09 +03:00
|
|
|
switch (id) {
|
|
|
|
case "open":
|
2019-03-29 15:07:26 -07:00
|
|
|
Dashboard.navigate("device.html?id=" + deviceId);
|
2018-10-23 01:05:09 +03:00
|
|
|
break;
|
2019-11-06 13:43:39 +03:00
|
|
|
|
2018-10-23 01:05:09 +03:00
|
|
|
case "delete":
|
2019-11-06 13:43:39 +03:00
|
|
|
deleteDevice(view, deviceId);
|
2018-10-23 01:05:09 +03:00
|
|
|
}
|
|
|
|
}
|
2019-11-06 13:43:39 +03:00
|
|
|
});
|
|
|
|
});
|
2018-10-23 01:05:09 +03:00
|
|
|
}
|
|
|
|
|
|
|
|
function load(page, devices) {
|
|
|
|
var html = "";
|
2019-11-06 13:43:39 +03:00
|
|
|
html += devices.map(function (device) {
|
2018-10-23 01:05:09 +03:00
|
|
|
var deviceHtml = "";
|
2019-07-01 13:24:49 -07:00
|
|
|
deviceHtml += "<div data-id='" + device.Id + "' class='card backdropCard'>";
|
|
|
|
deviceHtml += '<div class="cardBox visualCardBox">';
|
|
|
|
deviceHtml += '<div class="cardScalable">';
|
|
|
|
deviceHtml += '<div class="cardPadder cardPadder-backdrop"></div>';
|
|
|
|
deviceHtml += '<a is="emby-linkbutton" href="' + (canEdit ? "device.html?id=" + device.Id : "#") + '" class="cardContent cardImageContainer">';
|
2019-12-20 17:44:38 -05:00
|
|
|
var iconUrl = imageHelper.getDeviceIcon(device);
|
2019-11-06 13:43:39 +03:00
|
|
|
|
2019-07-01 13:24:49 -07:00
|
|
|
if (iconUrl) {
|
|
|
|
deviceHtml += '<div class="cardImage" style="background-image:url(\'' + iconUrl + "');background-size: auto 64%;background-position:center center;\">";
|
|
|
|
deviceHtml += "</div>";
|
|
|
|
} else {
|
2020-01-19 12:57:09 +01:00
|
|
|
deviceHtml += '<i class="cardImageIcon material-icons">tablet_android</i>';
|
2019-07-01 13:24:49 -07:00
|
|
|
}
|
2019-11-06 13:43:39 +03:00
|
|
|
|
2019-07-01 13:24:49 -07:00
|
|
|
deviceHtml += "</a>";
|
|
|
|
deviceHtml += "</div>";
|
|
|
|
deviceHtml += '<div class="cardFooter">';
|
2019-11-06 13:43:39 +03:00
|
|
|
|
2019-07-01 13:24:49 -07:00
|
|
|
if (canEdit || canDelete(device.Id)) {
|
|
|
|
deviceHtml += '<div style="text-align:right; float:right;padding-top:5px;">';
|
2020-02-16 01:31:14 +01:00
|
|
|
deviceHtml += '<button type="button" is="paper-icon-button-light" data-id="' + device.Id + '" title="' + globalize.translate("Menu") + '" class="btnDeviceMenu"><i class="material-icons more_horiz"></i></button>';
|
2019-07-01 13:24:49 -07:00
|
|
|
deviceHtml += "</div>";
|
|
|
|
}
|
2019-11-06 13:43:39 +03:00
|
|
|
|
2019-07-01 13:24:49 -07:00
|
|
|
deviceHtml += "<div class='cardText'>";
|
|
|
|
deviceHtml += device.Name;
|
|
|
|
deviceHtml += "</div>";
|
|
|
|
deviceHtml += "<div class='cardText cardText-secondary'>";
|
|
|
|
deviceHtml += device.AppName + " " + device.AppVersion;
|
|
|
|
deviceHtml += "</div>";
|
|
|
|
deviceHtml += "<div class='cardText cardText-secondary'>";
|
2019-11-06 13:43:39 +03:00
|
|
|
|
2019-07-01 13:24:49 -07:00
|
|
|
if (device.LastUserName) {
|
|
|
|
deviceHtml += device.LastUserName;
|
2019-09-11 03:50:29 -07:00
|
|
|
deviceHtml += ", " + humaneDate(device.DateLastActivity);
|
2019-07-01 13:24:49 -07:00
|
|
|
}
|
2019-11-06 13:43:39 +03:00
|
|
|
|
2019-07-01 13:24:49 -07:00
|
|
|
deviceHtml += " ";
|
|
|
|
deviceHtml += "</div>";
|
|
|
|
deviceHtml += "</div>";
|
|
|
|
deviceHtml += "</div>";
|
|
|
|
deviceHtml += "</div>";
|
2019-07-01 14:29:46 -07:00
|
|
|
return deviceHtml;
|
2019-07-01 13:24:49 -07:00
|
|
|
}).join("");
|
|
|
|
page.querySelector(".devicesList").innerHTML = html;
|
2018-10-23 01:05:09 +03:00
|
|
|
}
|
|
|
|
|
|
|
|
function loadData(page) {
|
2019-11-06 13:43:39 +03:00
|
|
|
loading.show();
|
|
|
|
ApiClient.getJSON(ApiClient.getUrl("Devices")).then(function (result) {
|
|
|
|
load(page, result.Items);
|
|
|
|
loading.hide();
|
|
|
|
});
|
2018-10-23 01:05:09 +03:00
|
|
|
}
|
2019-11-06 13:43:39 +03:00
|
|
|
|
2018-10-23 01:05:09 +03:00
|
|
|
var canEdit = ApiClient.isMinServerVersion("3.4.1.31");
|
2019-11-06 13:43:39 +03:00
|
|
|
return function (view, params) {
|
|
|
|
view.querySelector(".devicesList").addEventListener("click", function (e) {
|
2018-10-23 01:05:09 +03:00
|
|
|
var btnDeviceMenu = dom.parentWithClass(e.target, "btnDeviceMenu");
|
2019-11-06 13:43:39 +03:00
|
|
|
|
|
|
|
if (btnDeviceMenu) {
|
|
|
|
showDeviceMenu(view, btnDeviceMenu, btnDeviceMenu.getAttribute("data-id"));
|
|
|
|
}
|
|
|
|
});
|
|
|
|
view.addEventListener("viewshow", function () {
|
|
|
|
loadData(this);
|
|
|
|
});
|
|
|
|
};
|
2019-09-01 18:38:23 +03:00
|
|
|
});
|