@using NzbDrone.Core.Instrumentation
@model IEnumerable<Log>
@{ ViewBag.Title = "Logs";}
@section ActionMenu{
    <ul class="sub-menu">
        <li>@Ajax.ActionLink("Clear Logs", "Clear", "Log", null, new AjaxOptions{ OnSuccess = "redrawGrid", Confirm = "Delete all logs?" }, new { Title = "Delete all logs" })</li>
        <li>@Html.ActionLink("File", "File", "Log", null, new { Title = "View debug log file" })</li>
    </ul>
}
@section HeaderContent{
    <style>
        #logGrid td
        {
            padding: 2px 8px 2px 8px;
        }
    </style>
}
<div class="infoBox">
    Log entries older than 30 days are automatically deleted.</div>
<div class="grid-container">
    <table id="logGrid" class="dataTablesGrid hidden-grid">
        <thead>
            <tr>
                <th>
                    Time
                </th>
                <th>
                    Level
                </th>
                <th>
                    Source
                </th>
                <th>
                    Message
                </th>
                @*Details Column*@
                <th style="display: none;">
                    Details
                </th>
            </tr>
        </thead>
        <tbody>
        </tbody>
    </table>
</div>
@section Scripts{
    <script type="text/javascript">
        $(document).ready(function () {
            $('.dataTablesGrid').removeClass('hidden-grid');

            oTable = $('#logGrid').dataTable({
                "sAjaxSource": "/log/ajaxbinding",
                "bProcessing": false,
                "bServerSide": true,
                "bShowAll": false,
                "bPaginate": true,
                "bLengthChange": false,
                "bFilter": true,
                "bSort": true,
                "bInfo": true,
                "bAutoWidth": false,
                "iDisplayLength": 50,
                "sPaginationType": "four_button",
                "aoColumns": [
                                { sName: "Time", sWidth: '150px', "mDataProp": "Time", bSearchable: false }, //Time
                                { sName: "Level", sWidth: '60px', "mDataProp": "Level" }, //Level
                                { sName: "Logger", sWidth: '240px', "mDataProp": "Source" }, //Source
                                { sName: "Message", sWidth: 'auto', "mDataProp": "Message", "bSortable": false }, //Message
                                { sName: "Exception", sWidth: 'auto', "mDataProp": "Details", "bSortable": false, "bVisible": false, "fnRender": function (row) {
                                    var result = "<div>Method: " + row.aData["Method"] + "</div>";
                                    
                                    if (row.aData["ExceptionType"] !== null) {
                                        result += "<div>Exception Type: " + row.aData["ExceptionType"] + "</div>" +
                                            "<div class=\"stackFrame\">Exception: " + row.aData["Exception"] + "</div>";
                                    }
                                    
                                    return result;
                                }
                            } //Details
                            ],
                "aaSorting": [[0, 'desc']],
                "fnRowCallback": function (nRow, aData, iDisplayIndex, iDisplayIndexFull) {
                    fnRowCallback(nRow, aData);
                }
            });
        });

        function fnRowCallback(nRow, aData) {
            if (aData["Level"] == "Warn") {
                nRow.style.backgroundColor = "#FFD700";
            }
            else if (aData["Level"] == "Error") {
                nRow.style.backgroundColor = "#FF7500";
            }
            else if (aData["Level"] == "Fatal") {
                nRow.style.backgroundColor = "black";
                nRow.style.color = "red";
            }
        }
    </script>
}
