-
Notifications
You must be signed in to change notification settings - Fork 0
/
Copy pathToJiraMarkup.js
136 lines (114 loc) · 3.36 KB
/
ToJiraMarkup.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
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
135
136
var getInput = () => $("#_input").val().trim();
var isChecked = id => $("#" + id).is(":checked");
var setOutput = (output) => $("#_output").val(output);
var getHasHeaders = () => isChecked("_hasHeaders");
var getShowPreview = () => isChecked("_showPreview");
var getDelimiter = () => {
var delimiter = $('input[name="_delimitType"]:checked').val();
if (delimiter === "")
delimiter = $("#_delimiter").val().trim();
return delimiter;
};
var parseText = (input, delimiter) => {
var config = {
delimiter: delimiter,
skipEmptyLines: true
};
return Papa.parse(input, config).data;
};
var clearPreview = () => $("#_preview").empty();
var setPreview = (data, hasHeaders) => {
options = {
th: hasHeaders,
thead: hasHeaders,
attrs: { border: "1" }
};
clearPreview();
var htmlTable = arrayToTable(data, options);
$("#_preview").append(htmlTable);
};
var makeMarkup = (table, hasHeaders) => {
if (table.length === 0) return "";
var firstRow;
var i, j;
if (!hasHeaders) {
firstRow = Array(table[0].length);
for (i = 0; i < firstRow.length; i++) {
firstRow[i] = "Column" + i;
}
table.unshift(firstRow);
}
var output = "";
firstRow = table[0];
for (i = 0; i < firstRow.length; i++) {
output += "||" + firstRow[i];
}
output += "||\n";
for (i = 1; i < table.length; i++) {
for (j = 0; j < table[i].length; j++) {
output += "|" + table[i][j];
}
output += "|\n";
}
return output;
};
var saveChoices = () => {
var choices = {
version: 1,
hasHeaders: $("#_hasHeaders").is(":checked"),
delimiter: getDelimiter(),
preview: $("#_showPreview").is(":checked")
};
chrome.storage.sync.set(choices);
};
var restoreChoices = (choices) => {
if (choices.hasHeaders)
$("#_hasHeaders").prop("checked", choices.hasHeaders);
if (choices.preview)
$("#_showPreview").prop("checked", choices.preview);
if (choices.delimiter) {
if (choices.delimiter === ",")
$("#_comma").prop("checked", true);
else if (choices.delimiter === "\t")
$("#_tab").prop("checked", true);
else {
$("#_other").prop("checked", true);
$("#_delimiter").val(choices.delimiter);
}
}
};
var makeTable = () => {
var input = getInput();
if (input.length === 0) {
setOutput("No input");
return;
}
var delimiter = getDelimiter();
if (delimiter === "") {
setOutput("No delimiter");
return;
}
saveChoices();
var table = parseText(input, delimiter);
var hasHeaders = getHasHeaders();
var output = makeMarkup(table, hasHeaders);
setOutput(output);
if (getShowPreview())
setPreview(table, hasHeaders);
else
clearPreview();
};
$(document).ready(() => {
$("#_input").on('input', makeTable);
$("#_hasHeaders").change(makeTable);
$("#_showPreview").change(makeTable);
$("#_tab").change(makeTable);
$("#_comma").change(makeTable);
$("#_other").change(makeTable);
$("#_delimiter").on("input", makeTable);
$("#_copy").click(() => {
document.getElementById('_output').select();
document.execCommand('copy');
});
chrome.storage.sync.get(null, restoreChoices);
});