modules/performance-statistics-ext/report/js/computeTab.js (135 lines of code) (raw):

/* * Licensed to the Apache Software Foundation (ASF) under one or more * contributor license agreements. See the NOTICE file distributed with * this work for additional information regarding copyright ownership. * The ASF licenses this file to You under the Apache License, Version 2.0 * (the "License"); you may not use this file except in compliance with * the License. You may obtain a copy of the License at * * http://www.apache.org/licenses/LICENSE-2.0 * * Unless required by applicable law or agreed to in writing, software * distributed under the License is distributed on an "AS IS" BASIS, * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. * See the License for the specific language governing permissions and * limitations under the License. */ /** Builds tasks statistics table. */ $('#computeStatisticsTable').bootstrapTable({ pagination: true, search: true, columns: [{ field: 'taskName', title: 'Task name', sortable: true }, { field: 'count', title: 'Executions', sortable: true }, { field: 'duration', title: 'Total duration, ms', sortable: true }, { field: 'jobsCount', title: 'Jobs count', sortable: true }, { field: 'jobsTotalDuration', title: 'Jobs total duration', sortable: true }], data: prepareComputeTableData(), sortName: 'duration', sortOrder: 'desc' }); /** Tasks statistics table data. */ function prepareComputeTableData() { var data = []; $.each(REPORT_DATA.compute, function (taskName, taskData) { data.push({ "taskName": taskName, "count": taskData["count"], "duration": taskData["duration"], "jobsCount": taskData["jobsCount"], "jobsTotalDuration": taskData["jobsTotalDuration"] }); }); return data; } /** Builds top slow task table. */ $('#topSlowComputeTable').bootstrapTable({ pagination: true, search: true, columns: [{ field: 'taskName', title: 'Task name', sortable: true }, { field: 'duration', title: 'Duration, ms', sortable: true, sortOrder: 'desc' }, { field: 'startTime', title: 'Start time', sortable: true }, { field: 'nodeId', title: 'Originating node id', sortable: true }, { field: 'jobsTotalDuration', title: 'Jobs total duration', sortable: true }, { field: 'affPartId', title: 'Affinity partition id', sortable: true }], data: prepareSlowTasksTableData(), sortName: 'duration', sortOrder: 'desc', detailViewIcon: true, detailViewByClick: true, detailView: true, onExpandRow: function (index, row, $detail) { buildJobsSubTable($detail.html("<h5>Jobs</h5><table></table>").find('table'), row.index) } }); /** Top of slow tasks table data. */ function prepareSlowTasksTableData() { var data = []; $.each(REPORT_DATA.topSlowCompute, function (k, sqlData) { data.push({ taskName: sqlData["taskName"], duration: sqlData["duration"], startTime: new Date(sqlData["startTime"]), nodeId: sqlData["nodeId"], affPartId: sqlData["affPartId"], jobsTotalDuration: sqlData["jobsTotalDuration"], index: k }); }); return data; } /** Builds jobs statistics subtable. */ function buildJobsSubTable($el, index) { var jobs = REPORT_DATA.topSlowCompute[index]["jobs"]; var data = []; $.each(jobs, function (k, job) { data.push({ queuedTime: job["queuedTime"], duration: job["duration"], startTime: new Date(job["startTime"]), nodeId: job["nodeId"], isTimedOut: job["isTimedOut"] }); }); $el.bootstrapTable({ columns: [{ field: 'nodeId', title: 'Node id', sortable: true }, { field: 'queuedTime', title: 'Queued time, ms', sortable: true }, { field: 'duration', title: 'Duration, ms', sortable: true, sortOrder: 'desc' }, { field: 'startTime', title: 'Start time', sortable: true }, { field: 'isTimedOut', title: 'Timed out', sortable: true }], data: data, sortName: 'duration', sortOrder: 'desc' }) }