-
Notifications
You must be signed in to change notification settings - Fork 0
Expand file tree
/
Copy pathscript.js
More file actions
113 lines (101 loc) · 3.29 KB
/
script.js
File metadata and controls
113 lines (101 loc) · 3.29 KB
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
(function(){
angular.module('jsonGenerator', [])
.controller('myController', function(fileService){
var vm = this;
vm.generatedJson = {
title: "Sample title",
rows: []
};
vm.fileName = null;
vm.selectedRowIndex = null;
vm.addKey = addKey;
vm.saveFile = saveFile;
vm.loadFile = loadFile;
vm.checkValue = checkValue;
vm.resetJson = resetJson;
vm.editTitle = editTitle;
vm.deleteRow = deleteRow;
function addKey(key, value) {
vm.generatedJson.rows.push({
key: key,
value: value
});
vm.key=null;
vm.value=null;
}
function checkValue(key) {
if(!!vm.generatedJson) {
var returnedArray = vm.generatedJson.rows.filter(function(element) { return element.key === key; });
if(returnedArray.length) vm.value = returnedArray[0].value;
}
}
function editTitle() {
var title = prompt("Enter title: ", vm.generatedJson.title);
if(!!title) vm.generatedJson.title = title;
}
function loadFile() {
var name = vm.fileName || "file";
name = prompt("Enter name of file: ", name);
if(!!name) {
fileService.loadFile(name)
.then(function(data) {
// if load failed, reset json
if(data === null) resetJson();
else vm.generatedJson = data;
vm.fileName = name;
});
}
}
function resetJson() {
vm.generatedJson = {
title: "Sample title",
rows: []
};
}
function deleteRow(index) {
if(confirm("Do you really want to delete the selected row? The row number is " + (index + 1) + ".")) {
vm.generatedJson.rows.splice(vm.selectedRowIndex, 1);
}
vm.selectedRowIndex = null;
}
function saveFile(name) {
if(!!vm.fileName) name = vm.fileName;
// if user changes name in prompt, save it
var returnedName = fileService.saveFile(name, vm.generatedJson);
// avoid overwriting name with empty/null value
if(!!returnedName) vm.fileName = returnedName;
}
})
.service('fileService', function($http, $filter){
this.loadFile = function(name){
if(name.slice(-5) !== ".json") {
name = name + ".json";
}
return $http.get(name)
.then(function(response) {
// set title of window
document.title = name + " - jsonGenerator";
return response.data;
}, function() {
return null;
});
}
this.saveFile = function(name, input) {
var fileName = name;
fileName = prompt("Enter file name:", fileName);
if(!!fileName) {
if(fileName.slice(-5) !== ".json") {
fileName = fileName + ".json";
}
var file = new File([$filter('json')(input, 4)], fileName, {type: "application/json;charset=utf-8"});
saveAs(file);
// set title of window
document.title = fileName + " - jsonGenerator";
// return full fileName
return fileName;
}
// if fileName is invalid, return nothing
return null;
}
});
})();