Files
tv7playlist/Tv7Playlist/Views/Home/Index.cshtml

180 lines
7.2 KiB
Plaintext

@using Microsoft.AspNetCore.Mvc.Routing
@model HomeModel;
@{
ViewData["Title"] = "TV7 Playlist";
}
<form method="post">
@* <div class="row"> *@
@* <div class="col col-4"> *@
@* <button class="btn btn-warning" asp-action="DisableSelectedEntries" asp-controller="Home">Disable selected</button> *@
@* <button class="btn btn-info" asp-action="EnableSelectedEntries" asp-controller="Home">Enable selected</button> *@
@* </div> *@
@* </div> *@
<div class="row">
<div class="col col-12">
<table class="table table-hover table-striped" id="playlistTable">
<thead>
<tr>
<th></th>
<th></th>
<th>Single Action</th>
<th>Number Import</th>
<th>Number Export</th>
<th>Position</th>
<th>Name</th>
<th>EPG Name</th>
<th>Enabled</th>
<th>Available</th>
<th>URL Proxy</th>
<th>URL Original</th>
<th>Created</th>
<th>Modified</th>
</tr>
</thead>
<tbody>
@{
for (var i = 0; i < Model.PlaylistEntries.Count; i++)
{
<tr>
<td></td>
<td>@Model.PlaylistEntries[i].Id</td>
<td>
<a class="btn btn-secondary" asp-area="" asp-controller="PlaylistEntry" asp-action="Edit" asp-route-id="@Model.PlaylistEntries[i].Id">Edit</a>
<a class="btn btn-danger" asp-area="" asp-controller="PlaylistEntry" asp-action="Delete" asp-route-id="@Model.PlaylistEntries[i].Id">Delete</a>
@{
if (Model.PlaylistEntries[i].Entry.IsEnabled)
{
<a class="btn btn-warning" asp-area="" asp-controller="PlaylistEntry" asp-action="ToggleEnabled" asp-route-id="@Model.PlaylistEntries[i].Id">Disable</a>
}
else
{
<a class="btn btn-info" asp-area="" asp-controller="PlaylistEntry" asp-action="ToggleEnabled" asp-route-id="@Model.PlaylistEntries[i].Id">Enable</a>
}
}
</td>
<td>@Model.PlaylistEntries[i].Entry.ChannelNumberImport</td>
<td>@Model.PlaylistEntries[i].Entry.ChannelNumberExport</td>
<td>@Model.PlaylistEntries[i].Entry.Position</td>
<td>@Model.PlaylistEntries[i].Entry.Name</td>
<td>@Model.PlaylistEntries[i].Entry.EpgMatchName</td>
<td class="text-center">@Html.Raw(Model.PlaylistEntries[i].Entry.IsEnabled ? "<span class=\"text-primary\">Enabled</span>" : "<span class=\"text-danger\">Disabled</span>")</td>
<td class="text-center">@Html.Raw(Model.PlaylistEntries[i].Entry.IsAvailable ? "<span class=\"text-primary\">yes</span>" : "<span class=\"text-danger\">no</span>")</td>
<td>@Model.PlaylistEntries[i].Entry.UrlProxy</td>
<td>@Model.PlaylistEntries[i].Entry.UrlOriginal</td>
<td>@Model.PlaylistEntries[i].Entry.Created.ToString("g")</td>
<td>@Model.PlaylistEntries[i].Entry.Modified.ToString("g")</td>
</tr>
}
}
</tbody>
</table>
</div>
</div>
<script>
$(document).ready(function() {
const table = $('#playlistTable').DataTable({
dom: 'Bfrtip',
columnDefs: [
{
orderable: false,
searchable: false,
className: 'select-checkbox',
targets: [0]
},
{
visible: false,
targets: [1]
},
{
orderable: false,
targets: [2,10,11]
},
{
searchable: false,
targets: [2,10,11,12,13]
},
],
select: {
style: 'multi',
selector: 'td:first-child'
},
buttons: [
{
text: 'Select all',
action: function () {
table.rows().select();
}
},
{
text: 'Select none',
action: function () {
table.rows().deselect();
}
},
{
text: 'Disable selected',
action: function ( e, dt, node, config ) {
const ids = $.map(table.rows('.selected').data(), function (item) {
return item[1]
});
setEnabledForChannels(urlDisable, ids);
},
enabled: false
},
{
text: 'Enable selected',
action: function ( e, dt, node, config ) {
const ids = $.map(table.rows('.selected').data(), function (item) {
return item[1]
});
setEnabledForChannels(urlEnable, ids);
},
enabled: false
},
{
text: 'Delete selected',
action: function ( e, dt, node, config ) {
const ids = $.map(table.rows('.selected').data(), function (item) {
return item[1]
});
alert(JSON.stringify( ids ));
},
enabled: false
}
]
});
table.on( 'select deselect', function () {
const selectedRows = table.rows( { selected: true } ).count();
table.button( 2 ).enable( selectedRows > 0 );
table.button( 3 ).enable( selectedRows > 0 );
table.button( 4 ).enable( selectedRows > 0 );
} );
});
const urlEnable = '@Url.Action("EnableChannels","PlaylistApi")';
const urlDisable = '@Url.Action("DisableChannels","PlaylistApi")';
function setEnabledForChannels(url, ids) {
const options = {};
options.url = url;
options.type = "PUT";
options.data = JSON.stringify(ids);
options.contentType = "application/json";
options.dataType = "html";
options.success = function (msg) {
$("#msg").html(msg);
};
options.error = function () {
$("#msg").html("Error while calling the Web API!");
};
$.ajax(options);
}
</script>
</form>