Чтение онлайн

на главную - закладки

Жанры

JavaScript. Подробное руководство, 6-е издание
Шрифт:

* Определить визуальное оформление диаграмм средствами CSS можно так:

* .sparkline { background-color: #ddd; color: red; }

*

* - Цвет кривой графика определяется CSS-свойством color вычисленного стиля.

* - Сами диаграммы являются прозрачными, поэтому сквозь них просвечивает фон страницы.

* -
Высота диаграммы определяется атрибутом data-height, если он указан,

* или свойством font-size вычисленного стиля в противном случае.

* - Ширина диаграммы определяется атрибутом data-width, если он указан,

* или числом точек данных, умноженным на значение атрибута data-dx, если он

* указан, или числом точек данных, умноженным на высоту, деленную на 6

* - Минимальное и максимальное значение по оси у извлекаются из атрибутов

* data-ymin и data-ymax, если они указаны, иначе отыскиваются минимальное

* и максимальное значение в данных.

*/

onLoad(function { // Когда документ будет загружен

//Отыскать все элементы с классом "sparkline"

var elts = document.getElementsByClassName("sparkline");

main: for(var e = 0; e < elts.length: e++) { // Для каждого элемента

var elt = elts[e];

// Получить содержимое элемента и преобразовать его в массив чисел.

// Если преобразование не удалось, пропустить этот элемент.

var content = elt.textContent || elt.innerText; // Содержимое

var content = content.replace(/~\s+|\s+$/g, // Удалить пробелы

var text = content.replace(/#.*$/gm, // Удалить комментарии

text = text.replace(/[\n\r\t\v\f]/g, " ");// Преобр. \n и др. в пробел

var data = text.split(/\s+|\s*,\s*/); // По пробелам и запятым

for(var і = 0; і < data.length; і++) { // Каждый фрагмент

data[i] = Number(data[і]); // Преобразовать в число

if (isNaN(data[і])) continue main; // Прервать при неудаче

}

//
Определить цвет, ширину, высоту и границы по оси у для диаграммы

// из данных, из атрибутов data- элемента и из вычисленного стиля,

var style = getComputedStyle(elt, null);

var color = style.color:

var height = parselnt(elt.getAttributefdata-height")) ||

parseInt(style.fontSize) || 20;

var width = parseInt(elt.getAttribute("data-width")) ||

data.length * (parseInt(elt.getAttribute("data-dx")) || height/6);

var ymin = parselnt(elt.getAttribute("data-ymin")) ||

Math.min.apply(Math, data);

var ymax = parseInt(elt.getAttribute("data-ymax")) || Math.max.apply(Math, data);

if (ymin >= ymax) ymax = ymin + 1;

// Создать элемент <canvas>.

var canvas = document.createElement("canvas”);

canvas.width = width; // Установить размеры холста

canvas.height = height;

canvas.title = content; // Содержимое использовать как подсказку

elt.innerHTML = "" ;// Стереть содержимое элемента

elt.appendChild(canvas); // Вставить холст в элемент

// Нарисовать график по точкам (і,data[і]), преобразовав в координаты холста,

var context = canvas.getContext('2d');

for(var і = 0; і < data.length; i++) { // Для каждой точки на графике

var х = width*i/data.length; // Масштабировать і

var у = (ymax-data[i])*height/(ymax-ymin); // и data[i]

context.1іnеТо(х,у); // Первый вызов lineТо выполнит moveTo

}

context.strokeStyle = color; // Указать цвет кривой на диаграмме

Поделиться:
Популярные книги

Стихи и песни

Визбор Юрий Иосифович
Проза:
русская классическая проза
5.00
рейтинг книги
Стихи и песни

АН (цикл 11 книг)

Тарс Элиан
Аномальный наследник
Фантастика:
фэнтези
героическая фантастика
попаданцы
аниме
5.60
рейтинг книги
АН (цикл 11 книг)

Adobe InDesign CS3

Завгородний Владимир
Видеосамоучитель
Компьютеры и Интернет:
программное обеспечение
5.00
рейтинг книги
Adobe InDesign CS3

Первый среди равных. Книга X

Бор Жорж
10. Первый среди Равных
Фантастика:
попаданцы
аниме
фэнтези
фантастика: прочее
5.00
рейтинг книги
Первый среди равных. Книга X

Воины

Хобб Робин
Фантастика:
фэнтези
7.00
рейтинг книги
Воины

Егерь. Звери и люди

Скиба Николай
11. Зверолов
Фантастика:
рпг
фэнтези
фантастика: прочее
попаданцы
5.00
рейтинг книги
Егерь. Звери и люди

Дневники

Эфрон Георгий
5.00
рейтинг книги
Дневники

Нью-Йорк

Резерфорд Эдвард
The Big Book
Проза:
историческая проза
6.00
рейтинг книги
Нью-Йорк

Я все еще не царь. Книга XXVI

Дрейк Сириус
26. Дорогой барон!
Фантастика:
попаданцы
аниме
5.00
рейтинг книги
Я все еще не царь. Книга XXVI

Отморозок 4

Поповский Андрей Владимирович
4. Отморозок
Фантастика:
попаданцы
фантастика: прочее
5.00
рейтинг книги
Отморозок 4

Дитя прибоя

Трофимов Ерофей
Дитя прибоя
Фантастика:
боевая фантастика
попаданцы
фэнтези
5.25
рейтинг книги
Дитя прибоя

Рассказы старых переплетов

Белоусов Роман Сергеевич
Документальная литература:
биографии и мемуары
прочая документальная литература
5.00
рейтинг книги
Рассказы старых переплетов

История великих путешествий. Том 1. Открытие Земли

Верн Жюль Габриэль
Приключения:
путешествия и география
5.00
рейтинг книги
История великих путешествий. Том 1. Открытие Земли

Дружба - Этико-психологический очерк

Кон Игорь Семенович
Научно-образовательная:
психология
5.00
рейтинг книги
Дружба - Этико-психологический очерк