Bootstrap 3 Nav 中的 Google Chart [英] Google Chart within Bootstrap 3 Nav

查看:21
本文介绍了Bootstrap 3 Nav 中的 Google Chart的处理方法,对大家解决问题具有一定的参考价值,需要的朋友们下面随着小编来一起学习吧!

问题描述

我有一个使用 bootstrap 3 导航标签的页面,在其中一个标签上,我有一个离左边太远的谷歌时间线图表.我尝试将 chartArea.left 选项设置为不同的值,但这似乎没有任何作用,也设置了不同的宽度.

 var selectedLanguage = 'en';if ($("#selected-language") && $("#selected-language").val()) {selectedLanguage = $("#selected-language").val();}google.charts.load('当前', {'包裹':['时间线'],'语言':selectedLanguage});google.charts.setOnLoadCallback(drawTimelineChart);函数 drawTimelineChart() {//调用ajax获取jsonvar json = {时间线图表":[{"rowLabel": "委托","barLabel": "实际","工具提示": "","开始": "2018-07-18T16:25:29",结束":2018-07-20T10:48:42"}, {"rowLabel": "预生产","barLabel": "实际","工具提示": "","开始": "2018-07-20T10:48:42",结束":2018-07-20T10:48:45"}, {"rowLabel": "生产","barLabel": "实际","工具提示": "","开始": "2018-07-20T10:48:45",结束":2018-09-28T14:08:03"}, {"rowLabel": "预生产","barLabel": "实际","工具提示": "","开始": "2018-07-20T10:48:45",结束":2018-09-28T12:22:05"}, {"rowLabel": "生产","barLabel": "实际","工具提示": "","开始": "2018-09-28T12:22:05",结束":2018-09-28T14:08:03"}]};设置时间线图表数据(json);}函数 setTimelineChartData(jsonObj) {如果(jsonObj){var container = document.getElementById('portfolio-time-management-chart');var chart = new google.visualization.Timeline(container);var dataTable = new google.visualization.DataTable();如果(jsonObj && jsonObj.timelineCharts){数据表.addColumn({类型:'字符串',id:'状态'});数据表.addColumn({类型:'字符串',id:'标签'});数据表.addColumn({类型:'字符串',角色:'工具提示'});数据表.addColumn({类型:'日期',id:'开始'});数据表.addColumn({类型:'日期',id:'结束'});var hasData = false;$.each(jsonObj.timelineCharts, function(index,timelineChart) {如果(时间线图表){var startDate = new Date(timelineChart.start);var endDate = new Date(timelineChart.end);数据表.addRow([timelineChart.rowLabel、timelineChart.barLabel、timelineChart.barLabel、startDate、endDate]);hasData = true;}});var windowHeight = $(window).height() * 0.5;var windowWidth = $(window).width() * 0.7;变量选项 = {高度:窗口高度,宽度:窗口宽度,图表区域:{左:'30%'}};如果(hasData){图表绘制(数据表,选项);}}}}

.panel.with-nav-tabs.panel-tab-block {框阴影:无;-moz-box-shadow:无;-webkit-box-shadow:无;}.with-nav-tabs.panel-tab-block .nav-tabs>li>a,.with-nav-tabs.panel-tab-block .nav-tabs>li>a:hover,.with-nav-tabs.panel-tab-block .nav-tabs>li>a:focus {颜色:#ffffff;背景色:#999999;}.with-nav-tabs.panel-tab-block .nav-tabs>.open>a,.with-nav-tabs.panel-tab-block .nav-tabs>.open>a:hover,.with-nav-tabs.panel-tab-block .nav-tabs>.open>a:focus,.with-nav-tabs.panel-tab-block .nav-tabs>li>a:hover,.with-nav-tabs.panel-tab-block .nav-tabs>li>a:focus {颜色:#fff;背景色:#666666;}.with-nav-tabs.panel-tab-block .nav-tabs>li.active>a,.with-nav-tabs.panel-tab-block .nav-tabs>li.active>a:hover,.with-nav-tabs.panel-tab-block .nav-tabs>li.active>a:focus {颜色:#fff;背景色:#2f70b1;边框颜色:#2f70b1;}.with-nav-tabs.panel-tab-block .nav-tabs>li.dropdown .dropdown-menu {背景颜色:#428bca;边框颜色:#3071a9;}.with-nav-tabs.panel-tab-block .nav-tabs>li.dropdown .dropdown-menu>li>a {颜色:#fff;}.with-nav-tabs.panel-tab-block .nav-tabs>li.dropdown .dropdown-menu>li>a:hover,.with-nav-tabs.panel-tab-block .nav-tabs>li.dropdown .dropdown-menu>li>a:focus {背景颜色:#3071a9;}.with-nav-tabs.panel-tab-block .nav-tabs>li.dropdown .dropdown-menu>.active>a,.with-nav-tabs.panel-tab-block .nav-tabs>li.dropdown .dropdown-menu>.active>a:hover,.with-nav-tabs.panel-tab-block .nav-tabs>li.dropdown .dropdown-menu>.active>a:focus {背景颜色:#4a9fe9;}.list-group-item {颜色:#000000;背景颜色:#e4e4e4;填充:0.5em;溢出:自动;边框:1px 实心 #1d3c5c;}.list-group-item-title {背景色:#fff;}.list-group 标签 {底边距:0px;}.spacer-sml {边距:0;填充:0;高度:2em;}

<script src="https://code.jquery.com/jquery-3.3.1.min.js"><;/脚本><script src="https://cdnjs.cloudflare.com/ajax/libs/jqueryui/1.12.1/jquery-ui.min.js"></script><script src="https://cdnjs.cloudflare.com/ajax/libs/jquery-validate/1.17.0/jquery.validate.min.js"></script><script src="https://www.gstatic.com/charts/loader.js"></script><link href="https://maxcdn.bootstrapcdn.com/bootstrap/3.3.7/css/bootstrap.min.css" rel="stylesheet"/><script src="https://maxcdn.bootstrapcdn.com/bootstrap/3.3.7/js/bootstrap.min.js"></script><div class="container-fluidportfolio-overview-container"><div class="col-sm-2"><div class="row"><ul class="list-group"><li class="list-group-item list-group-item-title text-center "><label class="portfolio-details">Side Details...</label><li class="list-group-item list-group-item-title text-center "><label class="portfolio-details"></label><li class="list-group-item list-group-item-title text-center "><label class="portfolio-details"></label><li class="list-group-item list-group-item-title text-center "><label class="portfolio-details"></label><li class="list-group-item list-group-item-title text-center "><label class="portfolio-details"></label>

<div class="col-sm-10"><div class="panel with-nav-tabs panel-tab-block"><div class="panel-heading"><ul class="nav nav-tabs"><li class="active"><a data-toggle="tab" role="tab" class="" href="#portfolio-projects-tab">项目</a></li><li><a data-toggle="tab" role="tab" class="" href="#portfolio-time-management-tab">时间线图</a></li>

<div class="panel-body"><div class="tab-content"><div id="portfolio-projects-tab" class="tab-pane 淡入活跃"><div class="tab-block-content"><div class="row"><div class="col-sm-12"><div class="spacer-sml"></div>

<div class="col-sm-12"><h1>默认情况下加载的项目选项卡,但问题是时间线图表选项卡图表被隐藏

<div id="portfolio-time-management-tab" class="tab-pane淡入淡出"><div class="row col-xs-12"><div class="spacer-sml"></div>

<div class="col-xs-11"><div id="portfolio-time-management-chart" style="position:relative;"></div>

<div class="row col-xs-12"><div class="spacer-sml"></div>

<div class="row"><div class="spacer-sml"></div>

有谁知道我怎样才能看到完整的图表?

解决方案

默认情况下,谷歌图表将遵循其容器的大小.
如果容器在绘制时隐藏,
那么它无法确定特定图表元素的适当大小.

需要等到标签显示出来,
在第一次画画之前.

 $('a[data-toggle="tab"]').on('shown.bs.tab', function (e) {开关 ($(e.target).html()) {案例时间线图":drawTimelineChart();休息;}});

请参阅以下工作片段...

var selectedLanguage = 'en';if ($("#selected-language") && $("#selected-language").val()) {selectedLanguage = $("#selected-language").val();}google.charts.load('当前', {'包裹':['时间线'],'语言':selectedLanguage}).then(函数(){$('a[data-toggle="tab"]').on('shown.bs.tab', function (e) {开关 ($(e.target).html()) {案例时间线图":drawTimelineChart();window.addEventListener('resize', drawTimelineChart);休息;}});});函数 drawTimelineChart() {//调用ajax获取jsonvar json = {时间线图表":[{"rowLabel": "委托","barLabel": "实际","工具提示": "","开始": "2018-07-18T16:25:29",结束":2018-07-20T10:48:42"}, {"rowLabel": "预生产","barLabel": "实际","工具提示": "","开始": "2018-07-20T10:48:42",结束":2018-07-20T10:48:45"}, {"rowLabel": "生产","barLabel": "实际","工具提示": "","开始": "2018-07-20T10:48:45",结束":2018-09-28T14:08:03"}, {"rowLabel": "预生产","barLabel": "实际","工具提示": "","开始": "2018-07-20T10:48:45",结束":2018-09-28T12:22:05"}, {"rowLabel": "生产","barLabel": "实际","工具提示": "","开始": "2018-09-28T12:22:05",结束":2018-09-28T14:08:03"}]};设置时间线图表数据(json);}函数 setTimelineChartData(jsonObj) {如果(jsonObj){var container = document.getElementById('portfolio-time-management-chart');var chart = new google.visualization.Timeline(container);var dataTable = new google.visualization.DataTable();如果(jsonObj && jsonObj.timelineCharts){数据表.addColumn({类型:'字符串',id:'状态'});数据表.addColumn({类型:'字符串',id:'标签'});数据表.addColumn({类型:'字符串',角色:'工具提示'});数据表.addColumn({类型:'日期',id:'开始'});数据表.addColumn({类型:'日期',id:'结束'});var hasData = false;$.each(jsonObj.timelineCharts, function(index,timelineChart) {如果(时间线图表){var startDate = new Date(timelineChart.start);var endDate = new Date(timelineChart.end);数据表.addRow([timelineChart.rowLabel、timelineChart.barLabel、timelineChart.barLabel、startDate、endDate]);hasData = true;}});var windowHeight = $(window).height() * 0.5;var windowWidth = $(window).width() * 0.7;变量选项 = {高度:窗口高度,宽度:窗口宽度,};如果(hasData){图表绘制(数据表,选项);}}}}

.panel.with-nav-tabs.panel-tab-block {框阴影:无;-moz-box-shadow:无;-webkit-box-shadow:无;}.with-nav-tabs.panel-tab-block .nav-tabs>li>a,.with-nav-tabs.panel-tab-block .nav-tabs>li>a:hover,.with-nav-tabs.panel-tab-block .nav-tabs>li>a:focus {颜色:#ffffff;背景色:#999999;}.with-nav-tabs.panel-tab-block .nav-tabs>.open>a,.with-nav-tabs.panel-tab-block .nav-tabs>.open>a:hover,.with-nav-tabs.panel-tab-block .nav-tabs>.open>a:focus,.with-nav-tabs.panel-tab-block .nav-tabs>li>a:hover,.with-nav-tabs.panel-tab-block .nav-tabs>li>a:focus {颜色:#fff;背景色:#666666;}.with-nav-tabs.panel-tab-block .nav-tabs>li.active>a,.with-nav-tabs.panel-tab-block .nav-tabs>li.active>a:hover,.with-nav-tabs.panel-tab-block .nav-tabs>li.active>a:focus {颜色:#fff;背景色:#2f70b1;边框颜色:#2f70b1;}.with-nav-tabs.panel-tab-block .nav-tabs>li.dropdown .dropdown-menu {背景颜色:#428bca;边框颜色:#3071a9;}.with-nav-tabs.panel-tab-block .nav-tabs>li.dropdown .dropdown-menu>li>a {颜色:#fff;}.with-nav-tabs.panel-tab-block .nav-tabs>li.dropdown .dropdown-menu>li>a:hover,.with-nav-tabs.panel-tab-block .nav-tabs>li.dropdown .dropdown-menu>li>a:focus {背景颜色:#3071a9;}.with-nav-tabs.panel-tab-block .nav-tabs>li.dropdown .dropdown-menu>.active>a,.with-nav-tabs.panel-tab-block .nav-tabs>li.dropdown .dropdown-menu>.active>a:hover,.with-nav-tabs.panel-tab-block .nav-tabs>li.dropdown .dropdown-menu>.active>a:focus {背景颜色:#4a9fe9;}.list-group-item {颜色:#000000;背景颜色:#e4e4e4;填充:0.5em;溢出:自动;边框:1px 实心 #1d3c5c;}.list-group-item-title {背景色:#fff;}.list-group 标签 {底边距:0px;}.spacer-sml {边距:0;填充:0;高度:2em;}

<script src="https://code.jquery.com/jquery-3.3.1.min.js"><;/脚本><script src="https://cdnjs.cloudflare.com/ajax/libs/jqueryui/1.12.1/jquery-ui.min.js"></script><script src="https://cdnjs.cloudflare.com/ajax/libs/jquery-validate/1.17.0/jquery.validate.min.js"></script><script src="https://www.gstatic.com/charts/loader.js"></script><link href="https://maxcdn.bootstrapcdn.com/bootstrap/3.3.7/css/bootstrap.min.css" rel="stylesheet"/><script src="https://maxcdn.bootstrapcdn.com/bootstrap/3.3.7/js/bootstrap.min.js"></script><div class="container-fluidportfolio-overview-container"><div class="col-sm-2"><div class="row"><ul class="list-group"><li class="list-group-item list-group-item-title text-center "><label class="portfolio-details">Side Details...</label><li class="list-group-item list-group-item-title text-center "><label class="portfolio-details"></label><li class="list-group-item list-group-item-title text-center "><label class="portfolio-details"></label><li class="list-group-item list-group-item-title text-center "><label class="portfolio-details"></label><li class="list-group-item list-group-item-title text-center "><label class="portfolio-details"></label>

<div class="col-sm-10"><div class="panel with-nav-tabs panel-tab-block"><div class="panel-heading"><ul class="nav nav-tabs"><li class="active"><a data-toggle="tab" role="tab" class="" href="#portfolio-projects-tab">项目</a></li><li><a data-toggle="tab" role="tab" class="" href="#portfolio-time-management-tab">时间线图</a></li>

<div class="panel-body"><div class="tab-content"><div id="portfolio-projects-tab" class="tab-pane 淡入活跃"><div class="tab-block-content"><div class="row"><div class="col-sm-12"><div class="spacer-sml"></div>

<div class="col-sm-12"><h1>默认情况下加载的项目选项卡,但问题是时间线图表选项卡图表被隐藏

<div id="portfolio-time-management-tab" class="tab-pane淡入淡出"><div class="row col-xs-12"><div class="spacer-sml"></div>

<div class="col-xs-11"><div id="portfolio-time-management-chart" style="position:relative;"></div>

<div class="row col-xs-12"><div class="spacer-sml"></div>

<div class="row"><div class="spacer-sml"></div>

I have a page using bootstrap 3 nav tabs and on one of the tabs I have a google timeline chart that is too far to the left. I have tried setting the chartArea.left option to different values but that doesn't seem to do anything, as well as setting different widths.

    var selectedLanguage = 'en';
    if ($("#selected-language") && $("#selected-language").val()) {
        selectedLanguage = $("#selected-language").val();
    }

    google.charts.load('current', {
        'packages': ['timeline'],
        'language': selectedLanguage
    });

    google.charts.setOnLoadCallback(drawTimelineChart);

    function drawTimelineChart() {
        //Do ajax call to get json 
        var json = {
            "timelineCharts": [{
                "rowLabel": "Commissioned",
                "barLabel": "Actual",
                "tooltip": "",
                "start": "2018-07-18T16:25:29",
                "end": "2018-07-20T10:48:42"
            }, {
                "rowLabel": "Pre-Production",
                "barLabel": "Actual",
                "tooltip": "",
                "start": "2018-07-20T10:48:42",
                "end": "2018-07-20T10:48:45"
            }, {
                "rowLabel": "Production",
                "barLabel": "Actual",
                "tooltip": "",
                "start": "2018-07-20T10:48:45",
                "end": "2018-09-28T14:08:03"
            }, {
                "rowLabel": "Pre-Production",
                "barLabel": "Actual",
                "tooltip": "",
                "start": "2018-07-20T10:48:45",
                "end": "2018-09-28T12:22:05"
            }, {
                "rowLabel": "Production",
                "barLabel": "Actual",
                "tooltip": "",
                "start": "2018-09-28T12:22:05",
                "end": "2018-09-28T14:08:03"
            }]
        };
        setTimelineChartData(json);
    }

    function setTimelineChartData(jsonObj) {
        if (jsonObj) {
            var container = document.getElementById('portfolio-time-management-chart');
            var chart = new google.visualization.Timeline(container);
            var dataTable = new google.visualization.DataTable();

            if (jsonObj && jsonObj.timelineCharts) {
                dataTable.addColumn({
                    type: 'string',
                    id: 'Status'
                });
                dataTable.addColumn({
                    type: 'string',
                    id: 'Label'
                });
                dataTable.addColumn({
                    type: 'string',
                    role: 'Tooltip'
                });
                dataTable.addColumn({
                    type: 'date',
                    id: 'Start'
                });
                dataTable.addColumn({
                    type: 'date',
                    id: 'End'
                });

                var hasData = false;
                $.each(jsonObj.timelineCharts, function(index, timelineChart) {
                    if (timelineChart) {
                        var startDate = new Date(timelineChart.start);
                        var endDate = new Date(timelineChart.end);

                        dataTable.addRow(
                            [timelineChart.rowLabel, timelineChart.barLabel, timelineChart.barLabel, startDate, endDate]
                        );
                        hasData = true;
                    }
                });
                var windowHeight = $(window).height() * 0.5;
                var windowWidth = $(window).width() * 0.7;
                var options = {
                    height: windowHeight,
                    width: windowWidth,
                    chartArea: {
                        left: '30%'
                    }

                };
                if (hasData) {
                    chart.draw(dataTable, options);
                }
            }

        }
    }

.panel.with-nav-tabs.panel-tab-block {
    box-shadow: none;
    -moz-box-shadow: none;
    -webkit-box-shadow: none;
}

.with-nav-tabs.panel-tab-block .nav-tabs>li>a,
.with-nav-tabs.panel-tab-block .nav-tabs>li>a:hover,
.with-nav-tabs.panel-tab-block .nav-tabs>li>a:focus {
    color: #ffffff;
    background-color: #999999;
}

.with-nav-tabs.panel-tab-block .nav-tabs>.open>a,
.with-nav-tabs.panel-tab-block .nav-tabs>.open>a:hover,
.with-nav-tabs.panel-tab-block .nav-tabs>.open>a:focus,
.with-nav-tabs.panel-tab-block .nav-tabs>li>a:hover,
.with-nav-tabs.panel-tab-block .nav-tabs>li>a:focus {
    color: #fff;
    background-color: #666666;
}

.with-nav-tabs.panel-tab-block .nav-tabs>li.active>a,
.with-nav-tabs.panel-tab-block .nav-tabs>li.active>a:hover,
.with-nav-tabs.panel-tab-block .nav-tabs>li.active>a:focus {
    color: #fff;
    background-color: #2f70b1;
    border-color: #2f70b1;
}

.with-nav-tabs.panel-tab-block .nav-tabs>li.dropdown .dropdown-menu {
    background-color: #428bca;
    border-color: #3071a9;
}

.with-nav-tabs.panel-tab-block .nav-tabs>li.dropdown .dropdown-menu>li>a {
    color: #fff;
}

.with-nav-tabs.panel-tab-block .nav-tabs>li.dropdown .dropdown-menu>li>a:hover,
.with-nav-tabs.panel-tab-block .nav-tabs>li.dropdown .dropdown-menu>li>a:focus {
    background-color: #3071a9;
}

.with-nav-tabs.panel-tab-block .nav-tabs>li.dropdown .dropdown-menu>.active>a,
.with-nav-tabs.panel-tab-block .nav-tabs>li.dropdown .dropdown-menu>.active>a:hover,
.with-nav-tabs.panel-tab-block .nav-tabs>li.dropdown .dropdown-menu>.active>a:focus {
    background-color: #4a9fe9;
}

.list-group-item {
    color: #000000;
    background-color: #e4e4e4;
    padding: 0.5em;
    overflow: auto;
    border: 1px solid #1d3c5c;
}

.list-group-item-title {
    background-color: #fff;
}

.list-group label {
    margin-bottom: 0px;
}

.spacer-sml {
    margin: 0;
    padding: 0;
    height: 2em;
}

<script src="https://code.jquery.com/jquery-3.3.1.min.js"></script>
<script src="https://cdnjs.cloudflare.com/ajax/libs/jqueryui/1.12.1/jquery-ui.min.js"></script>
<script src="https://cdnjs.cloudflare.com/ajax/libs/jquery-validate/1.17.0/jquery.validate.min.js"></script>
<script src="https://www.gstatic.com/charts/loader.js"></script>
<link href="https://maxcdn.bootstrapcdn.com/bootstrap/3.3.7/css/bootstrap.min.css" rel="stylesheet"/>
<script src="https://maxcdn.bootstrapcdn.com/bootstrap/3.3.7/js/bootstrap.min.js"></script>
<div class="container-fluid portfolio-overview-container">

    <div class="col-sm-2 ">
        <div class="row ">

            <ul class="list-group">
                <li class="list-group-item list-group-item-title text-center ">
                    <label class="portfolio-details">Side Details...</label>
                </li>
                <li class="list-group-item list-group-item-title text-center ">
                    <label class="portfolio-details"></label>
                </li>
                <li class="list-group-item list-group-item-title text-center ">
                    <label class="portfolio-details"></label>
                </li>
                <li class="list-group-item list-group-item-title text-center ">
                    <label class="portfolio-details"></label>
                </li>
                <li class="list-group-item list-group-item-title text-center ">
                    <label class="portfolio-details"></label>
                </li>

            </ul>
        </div>
    </div>
    <div class="col-sm-10">
        <div class="panel with-nav-tabs panel-tab-block">
            <div class="panel-heading ">
                <ul class="nav nav-tabs">
                    <li class="active"><a data-toggle="tab" role="tab" class="" href="#portfolio-projects-tab">Projects</a></li>

                    <li><a data-toggle="tab" role="tab" class="" href="#portfolio-time-management-tab">Timeline Chart</a></li>
                </ul>
            </div>
            <div class="panel-body">
                <div class="tab-content">
                    <div id="portfolio-projects-tab" class="tab-pane fade in active">
                        <div class="tab-block-content ">
                            <div class="row ">
                                <div class="col-sm-12 ">
                                    <div class="spacer-sml"></div>
                                </div>
                                <div class="col-sm-12">
                                    <h1>
                                        Project tab that is loaded by default but issue is with Timeline Chart tab chart being hidden
                                    </h1>
                                </div>
                            </div>
                        </div>
                    </div>
                    <div id="portfolio-time-management-tab" class="tab-pane fade">
                        <div class="row col-xs-12">
                            <div class="spacer-sml"></div>
                        </div>
                        <div class="col-xs-11">
                            <div id="portfolio-time-management-chart" style="position:relative;"></div>

                        </div>
                        <div class="row col-xs-12">
                            <div class="spacer-sml"></div>
                        </div>
                        <div class="row ">
                            <div class="spacer-sml"></div>
                        </div>
                    </div>
                </div>
            </div>
        </div>
    </div>
</div>

Does anyone know how I can get the full chart visible?

解决方案

by default, google charts will follow the size of their container.
if the container is hidden when its drawn,
then it cannot determine a proper size for the specific chart elements.

need to wait until the tab is shown,
before drawing for the first time.

      $('a[data-toggle="tab"]').on('shown.bs.tab', function (e) {
          switch ($(e.target).html()) {
            case 'Timeline Chart':
              drawTimelineChart();
              break;
          }
      });

see following working snippet...

var selectedLanguage = 'en';
    if ($("#selected-language") && $("#selected-language").val()) {
        selectedLanguage = $("#selected-language").val();
    }

    google.charts.load('current', {
        'packages': ['timeline'],
        'language': selectedLanguage
    }).then(function () {
      $('a[data-toggle="tab"]').on('shown.bs.tab', function (e) {
          switch ($(e.target).html()) {
            case 'Timeline Chart':
              drawTimelineChart();
              window.addEventListener('resize', drawTimelineChart);
              break;
          }
      });
    });

    function drawTimelineChart() {
        //Do ajax call to get json 
        var json = {
            "timelineCharts": [{
                "rowLabel": "Commissioned",
                "barLabel": "Actual",
                "tooltip": "",
                "start": "2018-07-18T16:25:29",
                "end": "2018-07-20T10:48:42"
            }, {
                "rowLabel": "Pre-Production",
                "barLabel": "Actual",
                "tooltip": "",
                "start": "2018-07-20T10:48:42",
                "end": "2018-07-20T10:48:45"
            }, {
                "rowLabel": "Production",
                "barLabel": "Actual",
                "tooltip": "",
                "start": "2018-07-20T10:48:45",
                "end": "2018-09-28T14:08:03"
            }, {
                "rowLabel": "Pre-Production",
                "barLabel": "Actual",
                "tooltip": "",
                "start": "2018-07-20T10:48:45",
                "end": "2018-09-28T12:22:05"
            }, {
                "rowLabel": "Production",
                "barLabel": "Actual",
                "tooltip": "",
                "start": "2018-09-28T12:22:05",
                "end": "2018-09-28T14:08:03"
            }]
        };
        setTimelineChartData(json);
    }

    function setTimelineChartData(jsonObj) {
        if (jsonObj) {
            var container = document.getElementById('portfolio-time-management-chart');
            var chart = new google.visualization.Timeline(container);
            var dataTable = new google.visualization.DataTable();

            if (jsonObj && jsonObj.timelineCharts) {
                dataTable.addColumn({
                    type: 'string',
                    id: 'Status'
                });
                dataTable.addColumn({
                    type: 'string',
                    id: 'Label'
                });
                dataTable.addColumn({
                    type: 'string',
                    role: 'Tooltip'
                });
                dataTable.addColumn({
                    type: 'date',
                    id: 'Start'
                });
                dataTable.addColumn({
                    type: 'date',
                    id: 'End'
                });

                var hasData = false;
                $.each(jsonObj.timelineCharts, function(index, timelineChart) {
                    if (timelineChart) {
                        var startDate = new Date(timelineChart.start);
                        var endDate = new Date(timelineChart.end);

                        dataTable.addRow(
                            [timelineChart.rowLabel, timelineChart.barLabel, timelineChart.barLabel, startDate, endDate]
                        );
                        hasData = true;
                    }
                });
                var windowHeight = $(window).height() * 0.5;
                var windowWidth = $(window).width() * 0.7;
                var options = {
                    height: windowHeight,
                    width: windowWidth,
                };
                if (hasData) {
                    chart.draw(dataTable, options);
                }
            }

        }
    }

.panel.with-nav-tabs.panel-tab-block {
    box-shadow: none;
    -moz-box-shadow: none;
    -webkit-box-shadow: none;
}

.with-nav-tabs.panel-tab-block .nav-tabs>li>a,
.with-nav-tabs.panel-tab-block .nav-tabs>li>a:hover,
.with-nav-tabs.panel-tab-block .nav-tabs>li>a:focus {
    color: #ffffff;
    background-color: #999999;
}

.with-nav-tabs.panel-tab-block .nav-tabs>.open>a,
.with-nav-tabs.panel-tab-block .nav-tabs>.open>a:hover,
.with-nav-tabs.panel-tab-block .nav-tabs>.open>a:focus,
.with-nav-tabs.panel-tab-block .nav-tabs>li>a:hover,
.with-nav-tabs.panel-tab-block .nav-tabs>li>a:focus {
    color: #fff;
    background-color: #666666;
}

.with-nav-tabs.panel-tab-block .nav-tabs>li.active>a,
.with-nav-tabs.panel-tab-block .nav-tabs>li.active>a:hover,
.with-nav-tabs.panel-tab-block .nav-tabs>li.active>a:focus {
    color: #fff;
    background-color: #2f70b1;
    border-color: #2f70b1;
}

.with-nav-tabs.panel-tab-block .nav-tabs>li.dropdown .dropdown-menu {
    background-color: #428bca;
    border-color: #3071a9;
}

.with-nav-tabs.panel-tab-block .nav-tabs>li.dropdown .dropdown-menu>li>a {
    color: #fff;
}

.with-nav-tabs.panel-tab-block .nav-tabs>li.dropdown .dropdown-menu>li>a:hover,
.with-nav-tabs.panel-tab-block .nav-tabs>li.dropdown .dropdown-menu>li>a:focus {
    background-color: #3071a9;
}

.with-nav-tabs.panel-tab-block .nav-tabs>li.dropdown .dropdown-menu>.active>a,
.with-nav-tabs.panel-tab-block .nav-tabs>li.dropdown .dropdown-menu>.active>a:hover,
.with-nav-tabs.panel-tab-block .nav-tabs>li.dropdown .dropdown-menu>.active>a:focus {
    background-color: #4a9fe9;
}

.list-group-item {
    color: #000000;
    background-color: #e4e4e4;
    padding: 0.5em;
    overflow: auto;
    border: 1px solid #1d3c5c;
}

.list-group-item-title {
    background-color: #fff;
}

.list-group label {
    margin-bottom: 0px;
}

.spacer-sml {
    margin: 0;
    padding: 0;
    height: 2em;
}

<script src="https://code.jquery.com/jquery-3.3.1.min.js"></script>
<script src="https://cdnjs.cloudflare.com/ajax/libs/jqueryui/1.12.1/jquery-ui.min.js"></script>
<script src="https://cdnjs.cloudflare.com/ajax/libs/jquery-validate/1.17.0/jquery.validate.min.js"></script>
<script src="https://www.gstatic.com/charts/loader.js"></script>
<link href="https://maxcdn.bootstrapcdn.com/bootstrap/3.3.7/css/bootstrap.min.css" rel="stylesheet"/>
<script src="https://maxcdn.bootstrapcdn.com/bootstrap/3.3.7/js/bootstrap.min.js"></script>
<div class="container-fluid portfolio-overview-container">

    <div class="col-sm-2 ">
        <div class="row ">

            <ul class="list-group">
                <li class="list-group-item list-group-item-title text-center ">
                    <label class="portfolio-details">Side Details...</label>
                </li>
                <li class="list-group-item list-group-item-title text-center ">
                    <label class="portfolio-details"></label>
                </li>
                <li class="list-group-item list-group-item-title text-center ">
                    <label class="portfolio-details"></label>
                </li>
                <li class="list-group-item list-group-item-title text-center ">
                    <label class="portfolio-details"></label>
                </li>
                <li class="list-group-item list-group-item-title text-center ">
                    <label class="portfolio-details"></label>
                </li>

            </ul>
        </div>
    </div>
    <div class="col-sm-10">
        <div class="panel with-nav-tabs panel-tab-block">
            <div class="panel-heading ">
                <ul class="nav nav-tabs">
                    <li class="active"><a data-toggle="tab" role="tab" class="" href="#portfolio-projects-tab">Projects</a></li>

                    <li><a data-toggle="tab" role="tab" class="" href="#portfolio-time-management-tab">Timeline Chart</a></li>
                </ul>
            </div>
            <div class="panel-body">
                <div class="tab-content">
                    <div id="portfolio-projects-tab" class="tab-pane fade in active">
                        <div class="tab-block-content ">
                            <div class="row ">
                                <div class="col-sm-12 ">
                                    <div class="spacer-sml"></div>
                                </div>
                                <div class="col-sm-12">
                                    <h1>
                                        Project tab that is loaded by default but issue is with Timeline Chart tab chart being hidden
                                    </h1>
                                </div>
                            </div>
                        </div>
                    </div>
                    <div id="portfolio-time-management-tab" class="tab-pane fade">
                        <div class="row col-xs-12">
                            <div class="spacer-sml"></div>
                        </div>
                        <div class="col-xs-11">
                            <div id="portfolio-time-management-chart" style="position:relative;"></div>

                        </div>
                        <div class="row col-xs-12">
                            <div class="spacer-sml"></div>
                        </div>
                        <div class="row ">
                            <div class="spacer-sml"></div>
                        </div>
                    </div>
                </div>
            </div>
        </div>
    </div>
</div>

这篇关于Bootstrap 3 Nav 中的 Google Chart的文章就介绍到这了,希望我们推荐的答案对大家有所帮助,也希望大家多多支持IT屋!

查看全文
相关文章
其他开发最新文章
热门教程
热门工具
登录 关闭
扫码关注1秒登录
发送“验证码”获取 | 15天全站免登陆