Skip to content

Commit fceaa09

Browse files
author
arutyunyan
committed
Первый переделанный вариант suql.js
1 parent a3c930b commit fceaa09

File tree

1 file changed

+28
-48
lines changed

1 file changed

+28
-48
lines changed

src/js/suql.js

+28-48
Original file line numberDiff line numberDiff line change
@@ -6,66 +6,46 @@ function getElementsByQuery(query, add = false) {
66
}
77
var className = queryParts[1]
88
var elements = document.getElementById(id).getElementsByClassName(className)
9-
if (elements.length === 0 && add) {
10-
var element = document.createElement('div')
11-
element.classList = className
12-
elements = [document.getElementById(id).appendChild(element)]
13-
}
149
return elements
1510
}
1611

17-
function assign(a, b)
18-
{
12+
function assign(a, b) {
1913
a.value = typeof b === "function" ? b(a.value) : b
20-
var elements = getElementsByQuery(a.path)
2114

22-
if (elements.length === 0) {
23-
return
24-
}
25-
26-
if (typeof a.value === "object") {
27-
var content = "";
28-
for(var i = 0, n = a.value.length; i < n; i++) {
29-
var template = a.template;
30-
for (variable in a.value[i]) {
31-
template = template.replace("[[" + variable + "]]", a.value[i][variable])
32-
}
33-
content += template
34-
}
15+
for (var path in a.paths) {
16+
var elements = getElementsByQuery(path)
3517

36-
for (var i = 0, n = elements.length; i < n; i++) {
37-
elements[i].innerHTML = content
18+
if (elements.length === 0) {
19+
return
3820
}
39-
}
40-
else {
41-
for (var i = 0, n = elements.length; i < n; i++) {
42-
elements[i].textContent = a.value
43-
}
44-
}
4521

46-
// TODO: обновить все связи по template functions которые используют данную переменную
47-
}
48-
49-
function append(a, b)
50-
{
51-
var elements = getElementsByQuery(a.path, true);
52-
53-
if (typeof a.value === "object") {
54-
a.value.push(b)
55-
var template = a.template
56-
for (variable in b) {
57-
template = template.replace("[[" + variable + "]]", b[variable])
58-
}
22+
var config = a.paths[path]
5923

6024
for (var i = 0, n = elements.length; i < n; i++) {
61-
elements[i].innerHTML += template;
25+
switch (config.format) {
26+
case "raw":
27+
elements[i].textContent = a.value
28+
break
29+
case "value":
30+
elements[i].value = a.value
31+
break
32+
case "html":
33+
var content = "";
34+
for (var i = 0, n = a.value.length; i < n; i++) {
35+
var template = config.template;
36+
for (variable in a.value[i]) {
37+
template = template.replace("[[" + variable + "]]", a.value[i][variable])
38+
}
39+
content += template
40+
}
41+
42+
for (var i = 0, n = elements.length; i < n; i++) {
43+
elements[i].innerHTML = content
44+
}
45+
break
46+
}
6247
}
6348
}
6449

6550
// TODO: обновить все связи по template functions которые используют данную переменную
66-
}
67-
68-
function get(a)
69-
{
70-
return a.value
7151
}

0 commit comments

Comments
 (0)