Javascript.RU

Создать новую тему Ответ
 
Опции темы Искать в теме
  #1 (permalink)  
Старый 18.12.2017, 23:49
Интересующийся
Отправить личное сообщение для unity555 Посмотреть профиль Найти все сообщения от unity555
 
Регистрация: 01.12.2017
Сообщений: 12

Как обновить содержимое div (или какую функцию вызвать)?
Использую библиотеку highstock.js
Есть div который разворачивается на весь экран. Но его содержимое (график) нет.

Удобнее смотреть наверно тут
http://jsfiddle.net/8hhwpo8s/4/

Нажимаем на ссылку справа вверху - div меняет размер, а график нет.
Далее изменяем размер окна и график поменял размер - точно под размер дива.

Как обновить содержимое div (или какую функцию вызвать), для того чтобы график автоматически менял размер при изменении размера дива?
Проще говоря - нажали на ссылку - "На весь экран" и div и график стали на весь экран.

Вот весь код, как требуют правила форума.
body 
{
padding: 0;
margin:0px;
}

.container_resize_div 
{
z-index:1;
position:absolute;
top:10px;
right:10px;
}

.container_resize_link
{
color:#000000;
}


#container 
{
background:red;
box-sizing: border-box;
border: 1px solid black;
}


<script src="https://code.jquery.com/jquery-3.1.1.min.js"></script>
<script src="https://code.highcharts.com/stock/highstock.js"></script>
<script src="https://code.highcharts.com/stock/modules/drag-panes.js"></script>


<div class="container_resize_div">
<a href="#" id="container_resize_link" class="container_resize_link">На весь экран</a>
</div>


<div id="container" style="height: 400px; min-width: 310px"></div>


$(document).ready(function(){
$("#container_resize_link").click(function(){
$("#container").animate({
width: '100vw',height: '100vh'
});

});
});




$.getJSON('https://www.highcharts.com/samples/data/jsonp.php?filename=aapl-ohlcv.json&callback=?', function (data) {

    // split the data set into ohlc and volume
    var ohlc = [],
        volume = [],
        dataLength = data.length,
        // set the allowed units for data grouping
        groupingUnits = [[
            'week',                         // unit name
            [1]                             // allowed multiples
        ], [
            'month',
            [1, 2, 3, 4, 6]
        ]],

        i = 0;

    for (i; i < dataLength; i += 1) {
        ohlc.push([
            data[i][0], // the date
            data[i][1], // open
            data[i][2], // high
            data[i][3], // low
            data[i][4] // close
        ]);

        volume.push([
            data[i][0], // the date
            data[i][5] // the volume
        ]);
    }


    // create the chart
    Highcharts.stockChart('container', {

        rangeSelector: {
            selected: 1
        },

        title: {
            text: 'AAPL Historical'
        },

        yAxis: [{
            labels: {
                align: 'right',
                x: -3
            },
            title: {
                text: 'OHLC'
            },
            height: '60%',
            lineWidth: 2,
            resize: {
                enabled: true
            }
        }, {
            labels: {
                align: 'right',
                x: -3
            },
            title: {
                text: 'Volume'
            },
            top: '65%',
            height: '35%',
            offset: 0,
            lineWidth: 2
        }],

        tooltip: {
            split: true
        },

        series: [{
            type: 'candlestick',
            name: 'AAPL',
            data: ohlc,
            dataGrouping: {
                units: groupingUnits
            }
        }, {
            type: 'column',
            name: 'Volume',
            data: volume,
            yAxis: 1,
            dataGrouping: {
                units: groupingUnits
            }
        }]
    });
});
Ответить с цитированием
  #2 (permalink)  
Старый 19.12.2017, 13:46
Профессор
Отправить личное сообщение для Dilettante_Pro Посмотреть профиль Найти все сообщения от Dilettante_Pro
 
Регистрация: 27.11.2015
Сообщений: 2,899

<head>
<style>
body 
{
padding: 0;
margin:0px;
}

.container_resize_div 
{
z-index:1;
position:absolute;
top:10px;
right:10px;
}

.container_resize_link
{
color:#000000;
}


#container 
{
background:red;
box-sizing: border-box;
border: 1px solid black;
}
</style>
<script src="https://code.jquery.com/jquery-3.1.1.min.js"></script>
<script src="https://code.highcharts.com/stock/highstock.js"></script>
<script src="https://code.highcharts.com/stock/modules/drag-panes.js"></script>
<script>
$(document).ready(function(){

$.getJSON('https://www.highcharts.com/samples/data/jsonp.php?filename=aapl-ohlcv.json&callback=?', function (data) {

    // split the data set into ohlc and volume
    var ohlc = [],
        volume = [],
        dataLength = data.length,
        // set the allowed units for data grouping
        groupingUnits = [[
            'week',                         // unit name
            [1]                             // allowed multiples
        ], [
            'month',
            [1, 2, 3, 4, 6]
        ]],

        i = 0;

    for (i; i < dataLength; i += 1) {
        ohlc.push([
            data[i][0], // the date
            data[i][1], // open
            data[i][2], // high
            data[i][3], // low
            data[i][4] // close
        ]);

        volume.push([
            data[i][0], // the date
            data[i][5] // the volume
        ]);
    }

    // create the chart
   var chrt = new    Highcharts.stockChart('container', {

        rangeSelector: {
            selected: 1
        },

        title: {
            text: 'AAPL Historical'
        },

        yAxis: [{
            labels: {
                align: 'right',
                x: -3
            },
            title: {
                text: 'OHLC'
            },
            height: '60%',
            lineWidth: 2,
            resize: {
                enabled: true
            }
        }, {
            labels: {
                align: 'right',
                x: -3
            },
            title: {
                text: 'Volume'
            },
            top: '65%',
            height: '35%',
            offset: 0,
            lineWidth: 2
        }],

        tooltip: {
            split: true
        },

        series: [{
            type: 'candlestick',
            name: 'AAPL',
            data: ohlc,
            dataGrouping: {
                units: groupingUnits
            }
        }, {
            type: 'column',
            name: 'Volume',
            data: volume,
            yAxis: 1,
            dataGrouping: {
                units: groupingUnits
            }
        }]
      });

      $("#container_resize_link").click(function(){
         $("#container").animate({
             width: '100vw',height: '100vh'
         }, function() {
         chrt.reflow();});
      });
   });
});
</script>
</head>
</body>
<div class="container_resize_div">
<a href="#" id="container_resize_link" class="container_resize_link">На весь экран</a>
</div>


<div id="container" style="height: 400px; min-width: 310px"></div>
</body>

Последний раз редактировалось Dilettante_Pro, 19.12.2017 в 14:00.
Ответить с цитированием
  #3 (permalink)  
Старый 19.12.2017, 14:04
Интересующийся
Отправить личное сообщение для unity555 Посмотреть профиль Найти все сообщения от unity555
 
Регистрация: 01.12.2017
Сообщений: 12

Спасибо, работает.
Правда график заполняет див как то резко (див увеличивается плавно - а потом график резко заполняет див).
Но наверно по другому нельзя т.к. за это отвечает функция reflow, которую писали программисты highcharts.
Но главное работает.
Ответить с цитированием
  #4 (permalink)  
Старый 19.12.2017, 16:38
Профессор
Отправить личное сообщение для Dilettante_Pro Посмотреть профиль Найти все сообщения от Dilettante_Pro
 
Регистрация: 27.11.2015
Сообщений: 2,899

unity555,
Сообщение от unity555
див увеличивается плавно - а потом график резко заполняет див
Функция reflow может сработать только после завершения анимации дива, т.е. когда контейнер получит окончательные размеры.
Ответить с цитированием
Ответ



Опции темы Искать в теме
Искать в теме:

Расширенный поиск


Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
Как вызвать свою функцию из «чужого» кода в Java Script, не переписывая «чужой» код? korobochkin Библиотеки/Тулкиты/Фреймворки 2 19.07.2014 16:17
Как вы относитесь к наркоманам? Maxmaxmaximus7 Оффтопик 7 05.02.2014 13:29
Как правильно вызвать функцию Mateus jQuery 1 16.12.2012 15:43
как вызвать функцию? pumpurumer jQuery 2 27.08.2009 19:39
Как вызвать функцию если менять надо не все параметры? britanik Общие вопросы Javascript 3 07.03.2009 23:13