-
Notifications
You must be signed in to change notification settings - Fork 0
/
Copy pathjson.serialize.js
113 lines (110 loc) · 4.5 KB
/
json.serialize.js
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
/*
Title: Serialize 2 json
Author: Ashok. RD. (ashok19r91d@gmail.com; in.linkedin.com/in/ashok-rd-296a47103)
Date Release: 02 Apr 2018
Date Updated: 02 Apr 2018
Remarks: Serialize HTML table to JSON object notation
https://github.com/ashok19r91d/serialize2json
*/
function SerializeHtmlToJson() {
// HTML Table
$('table.json-table:not(.data-table)').each(function () {
var result = "[";
var table = $(this);
var ignore = $(table).data('ignore');
ignore = "," + ignore + ",";
$(table).find('>tbody>tr').each(function () {
var row = $(this);
if (!$(row).hasClass('hidden')) {
result += " {";
var data = $(row).data();
for (var dataattr in data)
if (!ignore.includes(dataattr))
result += "'" + dataattr + "' : '" + data[dataattr] + "', ";
result += "}, ";
result = result.replace(", }", " }");
}
});
result += "]";
result = result.replace(", ]", "]");
$($(table).data('target')).val(result);
});
// DataTable - HTML5 & JS Plugin
$('table.data-table.json-table:not(.limit-selected)').each(function () {
var result = "[";
var target = $(this).data('target');
var table = $(this).DataTable();
var ignore = $(this).data('ignore');
ignore = "," + ignore + ",";
table.rows().each(function (value, index) {
$.each(value, function (ind, val) {
var row = table.row(val).node();
if (!$(row).hasClass('hidden')) {
result += " {";
var data = $(row).data();
for (var dataattr in data)
if (!ignore.includes(dataattr))
result += "'" + dataattr + "' : '" + data[dataattr] + "', ";
result += "}, ";
result = result.replace(", }", " }");
}
});
});
result += "]";
result = result.replace(", ]", "]");
$($(this).data('target')).val(result);
});
$('table.data-table.json-table.limit-selected').each(function () {
var result = "[";
var selclass = "selected";
var target = $(this).data('target');
var table = $(this).DataTable();
var ignore = $(this).data('ignore');
ignore = "," + ignore + ",";
table.rows().each(function (value, index) {
$.each(value, function (ind, val) {
var row = table.row(val).node();
if ($(row).hasClass(selclass) && !$(row).hasClass('hidden')) {
result += " {";
var data = $(row).data();
for (var dataattr in data)
if (!ignore.includes(dataattr))
result += "'" + dataattr + "' : '" + data[dataattr] + "', ";
result += "}, ";
result = result.replace(", }", " }");
}
});
});
result += "]";
result = result.replace(", ]", "]");
$($(this).data('target')).val(result);
});
// HTML Table
$('table.json-col-table').each(function () {
var result = "[";
var table = $(this);
var ignore = "," + $(table).data('ignore') + ",";
var ignorecols = "," + $(table).data('ignore-cols') + ",";
$(table).find('>tbody>tr').each(function () {
var row = $(this); // Each Row
if (!$(row).hasClass('hidden')) {
$(row).find('>td').each(function () {
var col = $(this); // Each Column
var Index = ',' + ($(row).find('>td').index(col) + 1) + ',';
if (!ignorecols.includes(Index)) {
result += " {"; // Columns Not Ignored
var data = $(col).data();
for (var dataattr in data) // Each Attributes
if (!ignore.includes(dataattr))
result += "'" + dataattr + "' : '" + data[dataattr] + "', ";
result += "}, ";
result = result.replace(", }", " }");
} // Each Column
});
} // Each Row
});
result += "]";
result = result.replace(", ]", "]");
$($(table).data('target')).val(result);
});
}