Переписать дизайн в javascript - PullRequest
0 голосов
/ 21 апреля 2020

У меня есть это <ul></ul>, которое будет добавлено по умолчанию <li></li>, но как только дата выбрана в указателе даты, она должна быть перезаписана. Он просто добавил новый <li></li>

image">

после того, как я выбрал дату в указателе даты:

after

Вот мой javascript код:

    // // Data Picker Initialization
$(document).ready(() => {
    $('#daterange').daterangepicker({
        opens: 'center',
        showDropdowns: true,
        startDate: "2020/04/16",
        endDate: "2020/04/16",
        locale: {
            format: 'YYYY/MM/DD'
        }
    }, function (start, end, label) {
        var startDate = start.format('YYYY-MM-DD');
        var endDate = end.format('YYYY-MM-DD');
        window.alert("A new date selection was made: " + start.format('YYYY-MM-DD') + ' to ' + end.format('YYYY-MM-DD'));

        var staticUrlDowntime = "/topdowntime/" + startDate + "/" + endDate;
        console.log(staticUrlDowntime);
        $(document).ready(() => {
            $.ajax({
                url: (staticUrlDowntime),
                method: "GET",
                dataType: "json",
                success: (data) => {
                    $.each(data, (key, val) => {
                        $("#top5Downtime").append("<li>" + val.event_description + " - " + val.error_count + "</li>");
                    });
                }
            })
        });

    })
    //var dta = moment().subtract(1, 'day').format("YYYY-MM-DD"); //code to get the yesterdate
    var dta = "2020-04-16"
    console.log(dta);

    var staticUrlTop5Downtime = "/topdowntime/" + dta;
    console.log(staticUrlTop5Downtime);
    $(document).ready(() => {
        $.ajax({
            url: (staticUrlTop5Downtime),
            method: "GET",
            dataType: "json",
            success: (data) => {
                $.each(data, (key, val) => {
                    $("#top5Downtime").append("<li>" + val.event_description + " - " + val.error_count + "</li>");
                });
            }
        })
    });
    /** CODE FOR BAR CHART */
    const svgContainer = d3.select('#bar-chart')
        .append("svg");

    const margin = 80;
    const svgWidth = 50;
    const width = 1100 - 2 * margin;
    const height = 600 - 2 * margin;

    const chart = svgContainer.append('g')
        .attr('transform', "translate(" + svgWidth + "," + margin + ")");

    const xScale = d3.scaleBand()
        .range([0, width])
        .domain(sample.map((s) => s.language))
        .padding(0.4)

    const yScale = d3.scaleLinear()
        .range([height, 0])
        .domain([0, 100]);

    // vertical grid lines
    // const makeXLines = () => d3.axisBottom()
    //   .scale(xScale)

    const makeYLines = () => d3.axisLeft()
        .scale(yScale)

    chart.append('g')
        .attr('transform', `translate(0, ${height})`)
        .call(d3.axisBottom(xScale));

    chart.append('g')
        .call(d3.axisLeft(yScale));

    chart.append('g')
        .attr('class', 'grid')
        .call(makeYLines()
            .tickSize(-width, 0, 0)
            .tickFormat('')
        )

    const barGroups = chart.selectAll()
        .data(sample)
        .enter()
        .append('g')

    barGroups
        .append('rect')
        .attr('class', 'bar')
        .attr('x', (g) => xScale(g.language))
        .attr('y', (g) => yScale(g.value))
        .attr('height', (g) => height - yScale(g.value))
        .attr('width', xScale.bandwidth())

    barGroups
        .append('text')
        .attr('class', 'value')
        .attr('x', (a) => xScale(a.language) + xScale.bandwidth() / 2)
        .attr('y', (a) => yScale(a.value) + 30)
        .attr('text-anchor', 'middle')
        .text((a) => `${a.value}%`)

    svgContainer
        .append('text')
        .attr('class', 'label')
        .attr('x', -(height / 2) - margin)
        .attr('y', svgWidth / 3.5)
        .attr('transform', 'rotate(-90)')
        .attr('text-anchor', 'middle')
        .text('Percentage (%)')

    svgContainer.append('text')
        .attr('class', 'label')
        .attr('x', width / 2 + margin)
        .attr('y', height + margin * 1.7)
        .attr('text-anchor', 'middle')
        .text('Languages')

    svgContainer.append('text')
        .attr('class', 'title')
        .attr('x', width / 2 + margin)
        .attr('y', 40)
        .attr('text-anchor', 'middle')
        .text('Top availability CAMs for date: ' + dta);

    $('#daterange').on('apply.daterangepicker', function (ev, picker) {
        var startDate = picker.startDate.format('YYYY-MM-DD');
        var endDate = picker.endDate.format('YYYY-MM-DD');
        console.log(startDate);
        console.log(endDate);
        // var sampUrl = "/sampleURL/" + startDate;
        // console.log(sampUrl);

        // const svgContainer = d3.select('#bar-chart')
        //     .append("svg");

        // const margin = 80;
        // const svgWidth = 50;
        // const width = 1100 - 2 * margin;
        // const height = 600 - 2 * margin;

        // const chart = svgContainer.append('g')
        //     .attr('transform', "translate(" + svgWidth + "," + margin + ")");

        // const xScale = d3.scaleBand()
        //     .range([0, width])
        //     .domain(sample.map((s) => s.language))
        //     .padding(0.4)

        // const yScale = d3.scaleLinear()
        //     .range([height, 0])
        //     .domain([0, 100]);

        // const makeYLines = () => d3.axisLeft()
        //     .scale(yScale)

        // chart.append('g')
        //     .attr('transform', `translate(0, ${height})`)
        //     .call(d3.axisBottom(xScale));

        // chart.append('g')
        //     .call(d3.axisLeft(yScale));

        // chart.append('g')
        //     .attr('class', 'grid')
        //     .call(makeYLines()
        //         .tickSize(-width, 0, 0)
        //         .tickFormat('')
        //     )

        // const barGroups = chart.selectAll()
        //     .data(sample)
        //     .enter()
        //     .append('g')

        // barGroups
        //     .append('rect')
        //     .attr('class', 'bar')
        //     .attr('x', (g) => xScale(g.language))
        //     .attr('y', (g) => yScale(g.value))
        //     .attr('height', (g) => height - yScale(g.value))
        //     .attr('width', xScale.bandwidth())

        // barGroups
        //     .append('text')
        //     .attr('class', 'value')
        //     .attr('x', (a) => xScale(a.language) + xScale.bandwidth() / 2)
        //     .attr('y', (a) => yScale(a.value) + 30)
        //     .attr('text-anchor', 'middle')
        //     .text((a) => `${a.value}%`)

        // svgContainer
        //     .append('text')
        //     .attr('class', 'label')
        //     .attr('x', -(height / 2) - margin)
        //     .attr('y', svgWidth / 3.5)
        //     .attr('transform', 'rotate(-90)')
        //     .attr('text-anchor', 'middle')
        //     .text('Love meter (%)')

        // svgContainer.append('text')
        //     .attr('class', 'label')
        //     .attr('x', width / 2 + margin)
        //     .attr('y', height + margin * 1.7)
        //     .attr('text-anchor', 'middle')
        //     .text('Languages')

        // svgContainer.append('text')
        //     .attr('class', 'title')
        //     .attr('x', width / 2 + margin)
        //     .attr('y', 40)
        //     .attr('text-anchor', 'middle')
        //     .text('Top availability CAMs for date: ' + startDate);

    });
});

Извините за грязный код. Уберу это после того, как я закончу экспериментировать. Кроме того, у меня та же проблема с графиком, он просто добавляет график внизу и не перезаписывает старый график по умолчанию. Все еще новичок в javascript и обучении. Любая помощь будет принята с благодарностью.

1 Ответ

2 голосов
/ 21 апреля 2020

Как насчет, если я не ошибаюсь, очистите контейнер, а затем добавьте li теги

как

success: (data) => {
    $("#top5Downtime").html('');
    $.each(data, (key, val) => {
        $("#top5Downtime").append("<li>" + val.event_description + " - " + val.error_count + "</li>");
    });
}
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...