<commit_before>(function (widget, utils) {
    var diameter = 600;

    var margin = {top: 10, right: 0, bottom: 30, left: 60},
        width = diameter - margin.left - margin.right,
        height = diameter - margin.top - margin.bottom;

    var x = d3.time.scale()
            .range([0, width]);

    var y = d3.scale.linear()
            .range([height, 0]);

    var xAxis = d3.svg.axis()
            .scale(x)
            .orient("bottom");

    var yAxis = d3.svg.axis()
            .scale(y)
            .tickFormat(function (d) {
                return utils.formatTimeInMs(d * 24 * 60 * 60 * 1000);
            })
            .orient("left");

    var color = d3.scale.category10();

    var line = d3.svg.line()
            .interpolate("basis")
            .x(function(d) { return x(d.date); })
            .y(function(d) { return y(d.runtime); });

    var svg = widget.create("Pipeline runtime",
                            "Runtime of all jobs",
                            "/pipelineruntime.csv")
            .svg(diameter)
            .attr('class', 'pipelineRuntime');

    d3.csv('/pipelineruntime', function (_, data) {
        var jobNames = d3.keys(data[0]).filter(function(key) { return key !== "date"; });

        color.domain(jobNames);

        data.forEach(function (d) {
            d.date = new Date(d.date);
        });

        var runtimes = jobNames.map(function (jobName) {
            return {
                jobName: jobName,
                values: data
                    .map(function (d) {<commit_msg>Show 'no data' for pipeline runtime graph<commit_after>(function (widget, utils) {
    var diameter = 600;

    var margin = {top: 10, right: 0, bottom: 30, left: 60},
        width = diameter - margin.left - margin.right,
        height = diameter - margin.top - margin.bottom;

    var x = d3.time.scale()
            .range([0, width]);

    var y = d3.scale.linear()
            .range([height, 0]);

    var xAxis = d3.svg.axis()
            .scale(x)
            .orient("bottom");

    var yAxis = d3.svg.axis()
            .scale(y)
            .tickFormat(function (d) {
                return utils.formatTimeInMs(d * 24 * 60 * 60 * 1000);
            })
            .orient("left");

    var color = d3.scale.category10();

    var line = d3.svg.line()
            .interpolate("basis")
            .x(function(d) { return x(d.date); })
            .y(function(d) { return y(d.runtime); });

    var svg = widget.create("Pipeline runtime",
                            "Runtime of all jobs",
                            "/pipelineruntime.csv")
            .svg(diameter)
            .attr('class', 'pipelineRuntime');

    d3.csv('/pipelineruntime', function (_, data) {
        var jobNames = d3.keys(data[0]).filter(function(key) { return key !== "date"; });

        if (!jobNames.length) {
            return;
        }

        color.domain(jobNames);

        data.forEach(function (d) {
            d.date = new Date(d.date);
        });

        var runtimes = jobNames.map(function (jobName) {
            return {
                jobName: jobName,
                values: data
                    .map(function (d) {
{'fraction_non_alphanumeric': 0.14618044640050298, 'fraction_numerical': 0.020748192392329456, 'mean_word_length': 1.5578778135048232, 'pattern_counts': {'":': 0, '<': 3, '<?xml version=': 0, '>': 3, 'https://': 0, 'lorem ipsum': 0, 'www.': 0, 'xml': 0}, 'pii_count': 0, 'substrings_counts': 0, 'word_list_counts': {'cursed_substrings.json': 0, 'profanity_word_list.json': 0, 'sexual_word_list.json': 0, 'zh_pornsignals.json': 0}}
{'dir': 'git-commits-cleaned', 'id': '4544430', 'n_tokens_mistral': 1017, 'n_tokens_neox': 933, 'n_words': 215}