1 |
1e2b2c27
|
Tomáš Šimandl
|
/**
|
2 |
|
|
* Class containing Document Object Model utility functions.
|
3 |
|
|
* @constructor
|
4 |
|
|
*/
|
5 |
|
|
function DOM() {
|
6 |
|
|
var htmlTags = JSON.parse(document.getElementById('htmlTags').textContent);
|
7 |
|
|
var svgTags = JSON.parse(document.getElementById('svgTags').textContent);
|
8 |
|
|
|
9 |
|
|
/**
|
10 |
|
|
* Creates a new HTML DOM element from HTML string. Since only the first HTML element in the set is returned, the input
|
11 |
|
|
* string should contain a wrapping element that would hold all inner elements.
|
12 |
|
|
*
|
13 |
|
|
* @param {string} html HTML string.
|
14 |
|
|
* @returns {Element} HTML element.
|
15 |
|
|
*/
|
16 |
|
|
this.htmlStringToElement = function(html) {
|
17 |
|
|
var template = document.createElement('template');
|
18 |
|
|
template.innerHTML = html;
|
19 |
|
|
|
20 |
|
|
return template.content.firstChild;
|
21 |
|
|
};
|
22 |
|
|
|
23 |
|
|
/**
|
24 |
|
|
* Creates a new HTML DOM element. If the tagName passed as a parameter is not a valid HTML tag, exception is thrown.
|
25 |
|
|
*
|
26 |
|
|
* @param {string} tagName Type of the newly created element (div, span, ...).
|
27 |
|
|
* @param {object} attributes Attributes of the element.
|
28 |
|
|
* @returns {Element} HTML DOM element.
|
29 |
|
|
* @throws {InvalidArgumentException} Thrown when tagName is not a valid HTML tag.
|
30 |
|
|
*/
|
31 |
|
|
this.createHtmlElement = function(tagName, attributes) {
|
32 |
|
|
if (htmlTags.indexOf(tagName) === -1) {
|
33 |
|
|
throw new InvalidArgumentException(tagName, 'is not a valid HTML element');
|
34 |
|
|
}
|
35 |
|
|
|
36 |
|
|
var element = document.createElement(tagName);
|
37 |
|
|
for (let key in attributes) {
|
38 |
|
|
element.setAttribute(key, attributes[key]);
|
39 |
|
|
}
|
40 |
|
|
|
41 |
|
|
return element;
|
42 |
|
|
};
|
43 |
|
|
|
44 |
|
|
/**
|
45 |
|
|
* Creates a new SVG DOM element. If the tagName passed as a parameter is not a valid SVG tag, exception is thrown.
|
46 |
|
|
*
|
47 |
|
|
* @param {string} tagName Type of the element (circle, rect, ...).
|
48 |
|
|
* @param {object} attributes Attributes of the element.
|
49 |
|
|
* @returns {Element} SVG DOM element.
|
50 |
|
|
* @throws {InvalidArgumentException} Thrown when tagName is not a valid SVG tag.
|
51 |
|
|
*/
|
52 |
|
|
this.createSvgElement = function(tagName, attributes) {
|
53 |
|
|
if (svgTags.indexOf(tagName) === -1) {
|
54 |
|
|
throw new InvalidArgumentException(tagName, 'is not a valid SVG element');
|
55 |
|
|
}
|
56 |
|
|
|
57 |
|
|
var element = document.createElementNS('http://www.w3.org/2000/svg', tagName);
|
58 |
|
|
for (let key in attributes) {
|
59 |
|
|
element.setAttribute(key, attributes[key]);
|
60 |
|
|
}
|
61 |
|
|
|
62 |
|
|
return element;
|
63 |
|
|
};
|
64 |
|
|
|
65 |
|
|
/**
|
66 |
|
|
* Creates a new DOM node containing the text.
|
67 |
|
|
*
|
68 |
|
|
* @param {string} text Text to create the element for.
|
69 |
|
|
*/
|
70 |
|
|
this.createTextElement = function(text) {
|
71 |
|
|
return document.createTextNode(text);
|
72 |
|
|
};
|
73 |
|
|
}
|