水平时段

问题描述

我正在尝试构建水平小时槽查看器。到目前为止,我找到了我需要的东西,但几个月后: https://codepen.io/rsschouwenaar/pen/vOodgO

这是代码:

<!doctype html>

<html lang="en">

<head>
    <meta charset="utf-8">

    <title>The HTML5 Herald</title>
    <meta name="description" content="The HTML5 Herald">
    <meta name="author" content="SitePoint">
    <script src="https://cdnjs.cloudflare.com/ajax/libs/jquery/2.1.3/jquery.min.js"></script>
    <script src="https://momentjs.com/downloads/moment.js"></script>

</head>

<body>

    <div id="timetable" class="clearfix">
        <div class="timetable_content">
            <ul class="hours clearfix">
                <li data-hour="00">00:00</li>
                <li data-hour="01">01:00</li>
                <li data-hour="02">02:00</li>
                <li data-hour="03">03:00</li>
                <li data-hour="04">04:00</li>
                <li data-hour="05">05:00</li>
                <li data-hour="06">06:00</li>
                <li data-hour="07">07:00</li>
                <li data-hour="08">08:00</li>
                <li data-hour="09">09:00</li>
                <li data-hour="10">10:00</li>
                <li data-hour="11">11:00</li>
                <li data-hour="12">12:00</li>
                <li data-hour="13">13:00</li>
                <li data-hour="14">14:00</li>
                <li data-hour="15">15:00</li>
                <li data-hour="16">16:00</li>
                <li data-hour="17">17:00</li>
                <li data-hour="18">18:00</li>
                <li data-hour="19">19:00</li>
                <li data-hour="20">20:00</li>
                <li data-hour="21">21:00</li>
                <li data-hour="22">22:00</li>
                <li data-hour="23">23:00</li>
                <li data-hour="00">00:00</li>
            </ul>
            <ul class="timeslots">
                <li>
                    <span class="timeslot" data-hour-start="18" data-hour-end="19">BDO</span>
                    <span class="button"></span>
                </li>
                <!--                 <li>
                    <span class="timeslot" data-date-start="2015-10-10" data-date-end="2016-2-12">BDO</span>
                    <span class="button"></span>
                </li>
                <li>
                    <span class="timeslot" data-date-start="2015-12-10" data-date-end="2016-2-12">BDO</span>
                    <span class="button"></span>
                </li>
                <li>
                    <span class="timeslot" data-date-start="2015-09-10" data-date-end="2016-7-12">BDO</span>
                    <span class="button"></span>
                </li>
                <li>
                    <span class="timeslot" data-date-start="2015-1-10" data-date-end="2015-3-12">BDO</span>
                    <span class="button"></span>
                </li> -->
            </ul>
        </div>
    </div>
</body>
<style type="text/css">
    #timetable {
        width: 100%;
        height: auto;
        max-width: 768px;
        overflow-y: hidden;
        border: 1px solid #ccc;
    }

    #timetable ul {
        padding-left: 0;
        list-style: none;
        margin: 0 0 0 0;
    }

    #timetable .timetable_content {
        width: 1024px;
    }

    .hours {
        max-height: 50px;
        overflow: hidden;
    }

    .hours li {
        width: 110px;
        text-align: center;
        float: left;
        display: inline-block;
        border-right: 1px solid #ccc;
        padding: 1em;
    }

    .timeslots li {
        border-top: 1px solid #ccc;
    }

    .timeslots .timeslot {
        background: lightblue;
        display: inline-block;
    }

    .clearfix:after {
        content: "";
        display: table;
        clear: both;
    }
</style>
<script>
    (function() {

        var firstHoursLiElWidth = $('.hours li:first').innerWidth();

        var hoursItems = 0;
        $('.hours li').each(function(index) {
            hoursItems += firstHoursLiElWidth;
        });

        $('.hours,.timeslots,.timetable_content').width(hoursItems);
        console.log('<================== start slots =============================>');
        $('.timeslots li').each(function(index) {

            var element = $(this).children('span.timeslot'),startDate = element.data().hourStart,endDate = element.data().hourEnd,startHourAmountHoursInDay = 24,endHourAmountHoursInDay = 24;

            var startDateMoment = startDate
            var endDateMoment = endDate
            var startDateHour = parseInt(startDateMoment,10);
            var endDateHour = parseInt(endDateMoment,10);
            var hoursInProject = (endDateHour - startDateHour) * 60;

            console.log('startDate: ',startDate);
            console.log('endDate: ',endDate);

            console.log('hoursInProject: ',hoursInProject);
            console.log('startMonthAmountDaysInMonth: ',startHourAmountHoursInDay);
            console.log('endMonthAmountDaysInMonth: ',endHourAmountHoursInDay);

            console.log('Hours',startDateHour + ' & ' + endDateHour);

            console.log('startDateHour: ' + startDateHour);
            console.log('endDateHour:' + endDateHour);
            var startDateEl = $(".hours li[data-hour='" + startDateHour + "']").offset().left - 10;
            var endDateEl = $(".hours li[data-hour='" + endDateHour + "']").offset().left;
            var endDateElEnd = endDateEl;
            var timeSlotWidth = endDateElEnd - startDateEl;
            var pixelsPerHour = (Math.round(firstHoursLiElWidth / startHourAmountHoursInDay) * hoursInProject + 'px');

            console.log('Month start: ',startDateEl);
            console.log('pixelsPerHour: ',pixelsPerHour);
            console.log('Month end: ',endDateEl);
            console.log('Day end: ',endDateEl);
            console.log('Element length: ',timeSlotWidth);

            element.css('margin-left',startDateEl);
            element.width(pixelsPerHour);
            console.log('=============================');

        });

    })();
</script>

</html>

这个例子有两个问题:

  1. 我需要纯 JavaScript,而不是 jQuery。
  2. 我需要几个小时(一天中的所有时间),而不是几个月。

这是我目前所做的:

https://codepen.io/orassayag/pen/poeKVYq

这是我的代码:

 @Test
    fun testAssert(){
    assertEquals(1,2)
    }

到目前为止,我尝试将其转换为小时数,但我无法使其正常工作,无论我做什么,小时数都与插槽不匹配。有人能帮我吗? 谢谢。

解决方法

暂无找到可以解决该程序问题的有效方法,小编努力寻找整理中!

如果你已经找到好的解决方法,欢迎将解决方案带上本链接一起发送给小编。

小编邮箱:dio#foxmail.com (将#修改为@)