define(['loading', 'dom', 'libraryMenu', 'globalize', 'scripts/imagehelper', 'date-fns', 'dfnshelper', 'emby-button', 'emby-itemscontainer', 'cardStyle'], function (loading, dom, libraryMenu, globalize, imageHelper, datefns, dfnshelper) { 'use strict'; function canDelete(deviceId) { return deviceId !== ApiClient.deviceId(); } function deleteDevice(page, id) { var msg = globalize.translate('DeleteDeviceConfirmation'); require(['confirm'], function (confirm) { confirm({ text: msg, title: globalize.translate('HeaderDeleteDevice'), confirmText: globalize.translate('ButtonDelete'), primary: 'delete' }).then(function () { loading.show(); ApiClient.ajax({ type: 'DELETE', url: ApiClient.getUrl('Devices', { Id: id }) }).then(function () { loadData(page); }); }); }); } function showDeviceMenu(view, btn, deviceId) { var menuItems = []; if (canEdit) { menuItems.push({ name: globalize.translate('Edit'), id: 'open', icon: 'mode_edit' }); } if (canDelete(deviceId)) { menuItems.push({ name: globalize.translate('Delete'), id: 'delete', icon: 'delete' }); } require(['actionsheet'], function (actionsheet) { actionsheet.show({ items: menuItems, positionTo: btn, callback: function (id) { switch (id) { case 'open': Dashboard.navigate('device.html?id=' + deviceId); break; case 'delete': deleteDevice(view, deviceId); } } }); }); } function load(page, devices) { var html = ''; html += devices.map(function (device) { var deviceHtml = ''; deviceHtml += "
"; deviceHtml += '
'; deviceHtml += ''; deviceHtml += '
'; if (canEdit || canDelete(device.Id)) { deviceHtml += '
'; deviceHtml += ''; deviceHtml += '
'; } deviceHtml += "
"; deviceHtml += device.Name; deviceHtml += '
'; deviceHtml += "
"; deviceHtml += device.AppName + ' ' + device.AppVersion; deviceHtml += '
'; deviceHtml += "
"; if (device.LastUserName) { deviceHtml += device.LastUserName; deviceHtml += ', ' + datefns.formatDistanceToNow(Date.parse(device.DateLastActivity), dfnshelper.localeWithSuffix); } deviceHtml += ' '; deviceHtml += '
'; deviceHtml += '
'; deviceHtml += '
'; deviceHtml += '
'; return deviceHtml; }).join(''); page.querySelector('.devicesList').innerHTML = html; } function loadData(page) { loading.show(); ApiClient.getJSON(ApiClient.getUrl('Devices')).then(function (result) { load(page, result.Items); loading.hide(); }); } var canEdit = ApiClient.isMinServerVersion('3.4.1.31'); return function (view, params) { view.querySelector('.devicesList').addEventListener('click', function (e) { var btnDeviceMenu = dom.parentWithClass(e.target, 'btnDeviceMenu'); if (btnDeviceMenu) { showDeviceMenu(view, btnDeviceMenu, btnDeviceMenu.getAttribute('data-id')); } }); view.addEventListener('viewshow', function () { loadData(this); }); }; });