citationSheetParse.js 4.78 KB
Newer Older
Joe TS Dell's avatar
update  
Joe TS Dell committed
1
2
3
4
5
//
// begining of xlsx to json coversion
//

var jsonContent = [];
6
7
8
var bibAuthors = "";
var bit1stAuthorLN ="";

Joe TS Dell's avatar
update  
Joe TS Dell committed
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

/* set up XMLHttpRequest */
var url = "./content/CitationSheet.xlsx";
var xmlHttpRequest = new XMLHttpRequest();
xmlHttpRequest.open("GET", url, true);
xmlHttpRequest.responseType = "arraybuffer";
xmlHttpRequest.onload = function (e) {
    var arraybuffer = xmlHttpRequest.response;

    // convert data to binary string //
    var data = new Uint8Array(arraybuffer);
    var arr = new Array();
    for (var i = 0; i != data.length; ++i) arr[i] = String.fromCharCode(data[i]);
    var bstr = arr.join("");

    // Call XLSX //
    var workbook = XLSX.read(bstr, {
        type: "binary"
    });

    // DO SOMETHING WITH workbook HERE //
    var first_sheet_name = workbook.SheetNames[0];
    // Get worksheet //
    var worksheet = workbook.Sheets[first_sheet_name];

    var jsonOutput = XLSX.utils.sheet_to_json(worksheet);

    for (i = 0; i < jsonOutput.length; i++) {
37
38
        var authors = jsonOutput[i].Authors.replace("and ", "").trim().split(",");
        var bibAuthors;
Joe TS Dell's avatar
update  
Joe TS Dell committed
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
        var item = {
            "item": {
                "title": "",
                "project": "",
                "authors": [],
                "imageLink": "",
                "keywords": "",
                "journal": {
                    "name": "journal",
                    "volume": "",
                    "year": "",
                    "pages": ""
                },
                "DOI": ""
            },
            "links": {
                "pdf": "",
                "url": "",
                "demo": ""
58
59
            },
            "bibtex" : ""
Joe TS Dell's avatar
update  
Joe TS Dell committed
60
61
        }

62
63
64
        
        bibAuthors = "";
        bit1stAuthorLN ="";
Joe TS Dell's avatar
update  
Joe TS Dell committed
65
66
67
68
69
70
71
72
73
        for (j = 0; j < authors.length; j++) {
            var author = {
                "firstName": "",
                "lastName": ""
            }
            if (authors[j].trim().split(" ").length == 1) {
                author["firstName"] = authors[j].trim().split(".")[0];
                author["lastName"] = authors[j].trim().split(".")[1];
                item["item"].authors.push(author);
74
                bibAuthors+=authors[j].trim().split(".")[1] + ", "+ authors[j].trim().split(".")[0]+ " and ";
Joe TS Dell's avatar
update  
Joe TS Dell committed
75
76
77
78
            } else if (authors[j].trim().split(" ").length == 2) {
                author["firstName"] = authors[j].trim().split(" ")[0];
                author["lastName"] = authors[j].trim().split(" ")[1];
                item["item"].authors.push(author);
79
                bibAuthors+=authors[j].trim().split(" ")[1] + ", "+ authors[j].trim().split(" ")[0]+ " and ";
Joe TS Dell's avatar
update  
Joe TS Dell committed
80
81
82
83
            } else if (authors[j].trim().split(" ").length == 3) {
                author["firstName"] = authors[j].trim().split(" ")[0];
                author["lastName"] = authors[j].trim().split(" ")[2];
                item["item"].authors.push(author);
84
                bibAuthors+=authors[j].trim().split(" ")[2] + ", "+ authors[j].trim().split(" ")[0]+ " and ";
Joe TS Dell's avatar
update  
Joe TS Dell committed
85
86
87
            }

        }
88
       
Joe TS Dell's avatar
update  
Joe TS Dell committed
89
90
91
92
93
        if (jsonOutput[i].Keywords != undefined) {
            item["item"].keywords = jsonOutput[i].Keywords.split(",");
        } else {
            item["item"].keywords = jsonOutput[i].Keywords;
        }
94
95
96
97
98
99
100
101
102
103
104
105

        if (authors[0].split(" ").length == 3 ){
            bit1stAuthorLN = authors[0].split(" ")[2];
        } else if (authors[0].split(" ").length == 2 ){
            bit1stAuthorLN = authors[0].split(" ")[1];
        } else if (authors[0].split(" ").length == 1 ){
            bit1stAuthorLN = authors[0].split(" ")[0];
        }

        item["item"].title = jsonOutput[i].Titel;
        item["item"].project = jsonOutput[i].Project;
        item["item"].imageLink = jsonOutput[i]["Path to demo image"]
Joe TS Dell's avatar
update  
Joe TS Dell committed
106
107
108
109
110
111
112
113
114
        item["item"].journal.name = jsonOutput[i].Journal;
        item["item"].journal.volume = jsonOutput[i].Volume;
        item["item"].journal.year = jsonOutput[i].Year;
        item["item"].journal.pages = jsonOutput[i].Pages;
        item["item"].DOI = jsonOutput[i].DOI;
        item["links"].pdf = jsonOutput[i].URL;
        item["links"].url = jsonOutput[i].URL;
        item["links"].demo = jsonOutput[i].URL;

115
116
117
118
119
120
121
122
123
124
125
126
127
        //// BibTex /////////////////////
        item["bibtex"] = "@article{"+ bit1stAuthorLN + jsonOutput[i].Year +","+
        "title={"+ jsonOutput[i].Titel + 
        "},author={"+ bibAuthors.trim().substring(0, bibAuthors.trim().lastIndexOf(" ")) +
        "},journal={"+ jsonOutput[i].Journal +
        "},volume={"+ jsonOutput[i].Volume +
        // "},number={"+ number
        "},pages={"+ jsonOutput[i].Pages +
        "},year={"+ jsonOutput[i].Year +
        "},DOI ={"+ jsonOutput[i].DOI+
        "},url ={"+ jsonOutput[i].URL+
        "}}"

Joe TS Dell's avatar
update  
Joe TS Dell committed
128
129
130
        jsonContent.push(item);

    }
131
    console.log(jsonContent);
Joe TS Dell's avatar
update  
Joe TS Dell committed
132
133
134
135

}
xmlHttpRequest.send();

136
137
138
139

// str = str.substring(0, lastIndex);


Joe TS Dell's avatar
update  
Joe TS Dell committed
140
141
142
//
// ending of xlsx to json coversion
//