add QuotaExceedError handling code to saving task part
[samples/web/TemporaryStorage.git] / js / main.js
1 var local = localStorage;\r
2 var session = sessionStorage;\r
3 var array = new Array();\r
4 \r
5 $(document).ready(function() {\r
6 \r
7     // Get information storage\r
8     getStorage();\r
9 \r
10     // Task Save\r
11     $("#register").on("click", function() {\r
12         var filter=/\d{4}-\d{2}-\d{2}/;\r
13         if ($("#txtTask").val() == "") {\r
14             alert("Please enter the task.");\r
15         } else if (filter.test($("#datePiker").val())==false) {\r
16             alert("Please use the Date Picker.")\r
17         } else {\r
18             if (confirm("Are you sure you want to store the task?")) {\r
19                 var key = getKeyToDate($("#datePiker").val());\r
20                 var taskText = $("#txtTask").val();\r
21                 var plainStr = htmlTagToPlain(taskText);\r
22 \r
23                 try {\r
24                     // Store localStorage data\r
25                     local.setItem(key, plainStr);\r
26                 } catch (e) {\r
27                     if (e.code === 22) {\r
28                         alert("Not enough memory.");\r
29                     }\r
30                 }\r
31                 location.reload();\r
32             }\r
33         }\r
34     });\r
35 \r
36     // Task Delete\r
37     $("#delete").on("click", function() {\r
38         $(":checkbox[name='storageCheck']:checked").each(function(i, v) {\r
39             // The completed Task is deleted from localStorage.\r
40             local.removeItem(v.value);\r
41             session.removeItem(v.value);\r
42             getStorage();\r
43         });\r
44     });\r
45 \r
46     // disable keyboard for date input field\r
47     $("#datePiker").on("keypress", function(e)  {\r
48         e.preventDefault();\r
49     });\r
50 \r
51     //add eventListener for tizenhwkey\r
52     window.addEventListener('tizenhwkey', function(e) {\r
53         if(e.keyName == "back")\r
54             window.setTimeout(exitCurrentApplication, 1000)\r
55     });\r
56 });\r
57 \r
58 /**\r
59  * Exit current application\r
60  */\r
61 function exitCurrentApplication() {\r
62     tizen.application.getCurrentApplication().exit();\r
63 }\r
64 \r
65 /**\r
66  * Change htmlTag to plaintext\r
67  */\r
68 function htmlTagToPlain(str){\r
69     var plainFilter1 = /[&]/gi;\r
70     var plainFilter2 = /[<]/gi;\r
71     var plainFilter3 = /[>]/gi;\r
72     \r
73     var tempStr1 = str.replace(plainFilter1, "&amp;");\r
74     var tempStr2 = tempStr1.replace(plainFilter2, "&lt;");\r
75     return tempStr2.replace(plainFilter3, "&gt;");\r
76 }\r
77 \r
78 /**\r
79  * Call Task data stored in Storage\r
80  */\r
81 function getHtmlToStorage(index) {\r
82     return "<li id='"\r
83             + "list_"\r
84             + array[index]\r
85             + "'>"\r
86             + local.getItem(array[index])\r
87             + "<input type='checkbox' id='"\r
88             + array[index]\r
89             + "' value='"\r
90             + array[index]\r
91             + "' name='storageCheck' onclick='taskComplete(this.value)' /></li>";\r
92 }\r
93 \r
94 /**\r
95  * Get information storage\r
96  */\r
97 function getStorage() {\r
98 \r
99     var $todayHtml = $("#todayList");\r
100     var $beforeHtml = $("#beforeList");\r
101     var $afterHtml = $("#afterList");\r
102     var $datePiker = $("#datePiker");\r
103     var $pDate = $("#pDate");\r
104     var taskDate;\r
105     var today = new Date();\r
106     var year = today.getFullYear();\r
107     var month = (today.getMonth() + 1) > 9 ? "" + (today.getMonth() + 1) : "0"\r
108             + (today.getMonth() + 1);\r
109     var date = today.getDate() > 9 ? "" + today.getDate() : "0"\r
110             + today.getDate();\r
111     var currentDate = year + month + date;\r
112 \r
113     array = new Array();\r
114 \r
115     $datePiker.val(year + "-" + month + "-" + date);\r
116     $pDate[0].innerHTML = "";\r
117     $todayHtml[0].innerHTML = "";\r
118     $beforeHtml[0].innerHTML = "";\r
119     $afterHtml[0].innerHTML = "";\r
120     $pDate.append("Today (" + year + "." + month + "." + date + ")");\r
121 \r
122 \r
123     for (var i = 0; i < local.length; i++) {\r
124         var taskTime = local.key(i);\r
125         array.push(taskTime);\r
126     }\r
127     array.sort(function(a, b) { return b - a; });\r
128 \r
129     // Call Task data stored in localStorage\r
130     for ( var i = 0; i < array.length; i++) {\r
131         \r
132         // Import localStorage key to compared with the current date\r
133         taskDate = array[i].substring(0, 8);\r
134 \r
135         // Today Task\r
136         if (currentDate == taskDate) {\r
137             $todayHtml.append(getHtmlToStorage(i));\r
138             // Previous Task\r
139         } else if (currentDate > taskDate) {\r
140             $beforeHtml.append(getHtmlToStorage(i));\r
141             // After Task\r
142         } else {\r
143             $afterHtml.append(getHtmlToStorage(i));\r
144         }\r
145 \r
146         for ( var j = 0; j < session.length; j++) {\r
147             if (array[i] == session.key(j)) {\r
148                 // Shows Task Completed data until the browser (App) is re-executed\r
149                 $("#list_" + session.key(j)).addClass("del");\r
150                 $("#" + session.key(j)).attr("checked", true);\r
151             }\r
152         }\r
153     }\r
154 \r
155     $todayHtml[0].innerHTML == "" ? $("#divToday").hide() : "";\r
156     $beforeHtml[0].innerHTML == "" ? $("#divPrevious").hide() : "";\r
157     $afterHtml[0].innerHTML == "" ? $("#divAfter").hide() : "";\r
158 \r
159     if (local.length == 0 && session.length == 0)\r
160         $("#divList").hide();\r
161 }\r
162 \r
163 /**\r
164  * task complete stored in sessionStorage\r
165  */\r
166 function taskComplete(key) {\r
167 \r
168     if ($("#" + key).is(":checked")) {\r
169 \r
170         // For completed Task, Strikeout is indicated\r
171         $("#list_" + key).addClass("del");\r
172 \r
173         // task Complete stored in sessionStorage\r
174         session.setItem(key, local.getItem(key));\r
175     } else {\r
176         $("#list_" + key).removeClass("del");\r
177         session.removeItem(key);\r
178     }\r
179 }\r
180 \r
181 /**\r
182  * Create key by using the storage date\r
183  */\r
184 function getKeyToDate(date) {\r
185     if (date) {\r
186         var time = new Date();\r
187         var hourFormat;\r
188         var minuteFormat;\r
189         var secondFormat;\r
190         if (time.getHours() < 10)\r
191             hourFormat = "0" + time.getHours();\r
192         else\r
193             hourFormat = time.getHours();\r
194         if (time.getMinutes() < 10)\r
195             minuteFormat = "0" + time.getMinutes();\r
196         else\r
197             minuteFormat = time.getMinutes();\r
198         if (time.getSeconds() < 10)\r
199             secondFormat = "0" + time.getSeconds();\r
200         else\r
201             secondFormat = time.getSeconds();\r
202         return (date.replace(/\-/g, "") + hourFormat + minuteFormat + secondFormat).replace(/\./g, "");\r
203     }\r
204 }\r