main.html 9.46 KB
<div class="container-fluid page" id="real_gps_data_page">
    <div class="card">

        <div class="card-body" style="height: 100%">
            <div class="top_form_card">
                <form onsubmit="return false;">
                    <div class="row">
                        <div class="col-md-7" style="padding-right: 0;">
                            <div class="form-group">
                                <label class="bmd-label-floating">选择线路</label>
                                <div class="ct_auto_wrap line_autocompleter">
                                    <input type="text" class="form-control">
                                </div>
                            </div>
                        </div>
                        <div class="col-md-3" style="padding: 0;">
                            <div class="form-group top_radio_wrap">
                                <div class="radio">
                                    <label>
                                        <input type="radio" name="upDownRadios" value=0 checked>
                                        上行
                                    </label>&nbsp;&nbsp;
                                    <label>
                                        <input type="radio" name="upDownRadios" value=1>
                                        下行
                                    </label>
                                </div>
                            </div>
                        </div>
                        <div class="col-md-2" style="padding-left: 0;">
                            <div class="form-group top_radio_wrap">
                                <div class="checkbox">
                                    <label>
                                        <input type="checkbox" name="mapCheckbox"> 地图
                                    </label>
                                </div>
                            </div>
                        </div>
                    </div>
                </form>
            </div>

            <div class="c_cont">
                <div class="row">
                    <div class="svg_charts">
                        <svg></svg>
                    </div>

                    <div class="gps_tables">
                        <div class="table_wrap" style="height: 100%;">
                            <div class="table-responsive">
                                <table class="table table-hover" style="margin-bottom: 0;">
                                    <thead class="">
                                    <th>自编号</th>
                                    <th>设备号</th>
                                    <th>当前站点</th>
                                    <th>越界</th>
                                    <th>距离下站</th>
                                    <th>下站时间</th>
                                    <th>终点时间</th>
                                    <th>任务</th>
                                    </thead>
                                </table>

                                <div class="data_list" style="height: calc(100% - 50px);position: relative;">
                                    <table class="table table-hover">
                                        <tbody>
                                        </tbody>
                                    </table>
                                </div>
                            </div>
                        </div>

                        <div class="map_wrap">
                            <div class="map_cont"></div>
                        </div>
                    </div>
                </div>
            </div>
        </div>
    </div>
</div>

<script id="real_gps_table_list-temp" type="text/html">
    {{each list as gps i}}
    <tr data-id="{{gps.deviceId}}">
        <td>{{gps.nbbm}}</td>
        <td>{{gps.deviceId}}</td>
        <td>{{gps.inOut}}#{{gps.stationName}}</td>
        <td>{{gps.overstepDistance}}</td>
        <td>
            {{if gps.release}}
            {{gps.distance}}
            {{/if}}
        </td>
        <td>
            {{if gps.release}}
            {{gps.secStr2==null?gps.secStr:gps.secStr2}}
            {{/if}}
        </td>
        <td>{{gps.zdsj}}</td>
        <td>
            {{if gps.sch}}
            {{gps.sch.dfsj}}#
            {{if gps.sch.bcType=='normal'}}
            全程
            {{else if gps.sch.bcType=='out'}}
            出场
            {{else if gps.sch.bcType=='in'}}
            进场
            {{else if gps.sch.bcType=='region'}}
            区间
            {{else if gps.sch.bcType=='venting'}}
            直放
            {{else if gps.sch.bcType=='major'}}
            放站
            {{else if gps.sch.bcType=='ldks'}}
            两点间空驶
            {{/if}}
            {{/if}}
        </td>
    </tr>
    {{/each}}
</script>

<script id="gps_map_info_win-temp" type="text/html">
    <div class="gps_info_win" style="width: 200px;">
        <h4>{{nbbm}}</h4>
        <h5>
            {{if stationName!=null}}
            {{stationName}} 
            {{else}}
            未知站点
            {{/if}}
        </h5>
        <p>设备号:{{deviceId}}</p>
        <p>速度:{{speed}}</p>
        <p>经度:{{lon}}</p>
        <p>纬度:{{lat}}</p>

        <p>距离下一站 {{distance}} </p>
        <hr>
        {{if secStr!=null}}
        <a href="javascript:;">预计 {{secStr2==null?secStr:secStr2}} 分钟到达下一站</a>
        {{/if}}
        {{if zdsj!=null}}
        <a href="javascript:;">预计 {{zdsj}} 分钟到达终点</a>
        {{/if}}
        <hr>
        <a style="color: grey">{{timeStr}}</a>
    </div>
</script>


<script src="/pages/geo_data/js/map_utils.js"></script>
<script src="/pages/geo_data/js/TransGPS.js"></script>
<script src="/pages/real/js/svg.js"></script>
<script src="/pages/real/js/map.js"></script>

<script>
    var _realGpsArray;
    (function () {
        var wrap = '#real_gps_data_page';

        var _lineCode;
        var _upDown = 0;
        var _stations;

        //线路自动补全
        $.get('/basic/lines', function (rs) {
            var data = [], item;
            for (var i = 0, len = rs.length; i < len; i++) {
                item = rs[i];
                data.push({
                    code: item.lineCode,
                    text: item.name,
                    others: [item.fullChars, item.camelChars]
                });
            }
            gb_ct_autocompleter.build($('.line_autocompleter', wrap), data);
        });

        //线路选择事件
        $('.line_autocompleter input', wrap).on('auto_change', function () {
            _lineCode = $(this).data('val');
            reLoad();
        });

        //切换上下行
        $('[name=upDownRadios]', wrap).on('click', function () {
            _upDown = parseInt($('input[name="upDownRadios"]:checked').val());
            reLoad();
        });

        var reLoad = function () {
            gb_real_gps_svg.showSvg(_lineCode, _upDown, function (rs) {
                _stations = rs;
                //定时刷新 gps
                gb_real_gps_svg.start_gps();

                if ($('.map_wrap', wrap).is(":visible"))
                    gb_real_gps_map.init(_lineCode, _upDown, _stations);
            });
        }

        //显示地图
        $('[name=mapCheckbox]', wrap).on('click', function () {
            var $mm = $('.map_wrap', wrap)
                , $that = $(this).attr('disabled', 'disabled');
            if (this.checked) {
                $mm.show().animateCss('fadeIn', function () {
                    $('.data_list', wrap).hide();
                    $mm.removeClass('fadeIn');
                    $that.removeAttr('disabled');
                });
                gb_real_gps_map.init(_lineCode, _upDown, _stations);
            }
            else {
                $('.data_list', wrap).show();
                $mm.animateCss('fadeOut', function () {
                    $mm.hide().removeClass('fadeOut').find('.map_cont').empty();
                    $that.removeAttr('disabled');
                });
            }
        });

        /**
         * 表格点击
         */
        $('.data_list', wrap).on('click', 'table tr', function () {
            var device = $(this).data('id');
            var rect = $('.svg_charts svg rect[_id=rct_' + device + ']', wrap);

            if (rect.attr('y') == -100)
                gb_utils.showNotification('', '模拟图上同站最多显示3个车子', 'warning');
            if (rect.attr('y') == -300)
                gb_utils.showNotification('', '车子不在线路上!!', 'warning');

            var cont = $('.svg_charts', wrap);
            cont.animate({
                scrollTop: rect.offset().top - cont.offset().top + cont.scrollTop() - 5
            });

            rect.addClass('twinkle').one(animationEnd, function () {
                $(this).removeClass('twinkle');
            });
        });

        /**
         * 点击rect
         */
        $('.svg_charts svg').on('click', 'g.gps-wrap>rect', function () {
            var device = $(this).attr('_id').split('_')[1];

            if (!$('.map_wrap', wrap).is(":visible"))
                $('[name=mapCheckbox]', wrap).trigger('click');

            gb_real_gps_map.focus(device);
        });
    })();
</script>