JavaScript » History » Version 1
Tomek Dziemidowicz, 2019-07-04 08:52 PM
1 | 1 | Tomek Dziemidowicz | h1. JavaScript |
---|---|---|---|
2 | |||
3 | <pre><code class="javascript"> |
||
4 | //get changes for table (complete method) |
||
5 | $.ajax({ |
||
6 | url: sqlitesync_SyncServerURL + "Sync/1/users", //Url of the Service |
||
7 | method: 'GET', |
||
8 | cache : false, |
||
9 | scope:this, |
||
10 | timeout: 5 * 60 * 1000,//10min |
||
11 | success: function (response, status) { //Success Callback |
||
12 | if(response.trim().length != 0) |
||
13 | { |
||
14 | var responseReturn = JSON.parse(response); |
||
15 | var tableNameSync = ''; |
||
16 | var syncId = null; |
||
17 | sqlitesync_DB.transaction(function (tx) { |
||
18 | |||
19 | var queryInsert = null; |
||
20 | var queryUpdate = null; |
||
21 | var queryDelete = null; |
||
22 | |||
23 | if (responseReturn[0].SyncId > 0) { |
||
24 | tableNameSync = responseReturn[0].TableName; |
||
25 | sqlitesync_AddLog('<p>Preparing changes for table <b>' + responseReturn[0].TableName + '</b></p>'); |
||
26 | syncId = responseReturn[0].SyncId; |
||
27 | |||
28 | if (window.DOMParser) { |
||
29 | parser = new DOMParser(); |
||
30 | xmlDoc = parser.parseFromString(responseReturn[0].Records, "text/xml"); |
||
31 | } |
||
32 | else // Internet Explorer |
||
33 | { |
||
34 | xmlDoc = new ActiveXObject("Microsoft.XMLDOM"); |
||
35 | xmlDoc.async = "false"; |
||
36 | xmlDoc.loadXML(responseReturn[0].Records); |
||
37 | } |
||
38 | |||
39 | queryInsert = responseReturn[0].QueryInsert; |
||
40 | queryUpdate = responseReturn[0].QueryUpdate; |
||
41 | queryDelete = responseReturn[0].QueryDelete; |
||
42 | |||
43 | /****************************/ |
||
44 | tx.executeSql(responseReturn[0].TriggerInsertDrop, null, null, |
||
45 | function (transaction, error) { |
||
46 | }); |
||
47 | tx.executeSql(responseReturn[0].TriggerUpdateDrop, null, null, |
||
48 | function (transaction, error) { |
||
49 | }); |
||
50 | tx.executeSql(responseReturn[0].TriggerDeleteDrop, null, null, |
||
51 | function (transaction, error) { |
||
52 | }); |
||
53 | /****************************/ |
||
54 | |||
55 | for (var i = 0; i < xmlDoc.childNodes[0].childElementCount; i++) { |
||
56 | |||
57 | var rowValues = new Array(); |
||
58 | var query = null; |
||
59 | var colCount = 0; |
||
60 | |||
61 | for (var ii = 0; ii < xmlDoc.childNodes[0].childNodes[i].childElementCount; ii++) { |
||
62 | rowValues[ii] = xmlDoc.childNodes[0].childNodes[i].childNodes[ii].textContent; |
||
63 | colCount++; |
||
64 | } |
||
65 | |||
66 | var rowId = rowValues[colCount - 1]; |
||
67 | var identityCol = rowValues[0]; |
||
68 | |||
69 | switch (xmlDoc.childNodes[0].childNodes[i].getAttribute("a")) { |
||
70 | case "1": |
||
71 | tx.executeSql(queryInsert, |
||
72 | rowValues, |
||
73 | function (transaction, result) { |
||
74 | |||
75 | }, |
||
76 | function (transaction, error) { |
||
77 | console.log(error); |
||
78 | }); |
||
79 | break; |
||
80 | case "2": |
||
81 | tx.executeSql(queryUpdate, |
||
82 | rowValues, |
||
83 | function (transaction, result) { |
||
84 | |||
85 | }, |
||
86 | function (transaction, error) { |
||
87 | console.log(error); |
||
88 | }); |
||
89 | break; |
||
90 | case "3": |
||
91 | tx.executeSql(queryDelete + "'" + rowId + "'", |
||
92 | null, |
||
93 | null, |
||
94 | function (transaction, error) { |
||
95 | console.log(error); |
||
96 | }); |
||
97 | break; |
||
98 | } |
||
99 | } |
||
100 | |||
101 | /****************************/ |
||
102 | tx.executeSql(responseReturn[0].TriggerInsert, null, null, |
||
103 | function (transaction, error) { |
||
104 | }); |
||
105 | tx.executeSql(responseReturn[0].TriggerUpdate, null, null, |
||
106 | function (transaction, error) { |
||
107 | }); |
||
108 | tx.executeSql(responseReturn[0].TriggerDelete, null, null, |
||
109 | function (transaction, error) { |
||
110 | }); |
||
111 | /****************************/ |
||
112 | |||
113 | } |
||
114 | |||
115 | }, function(error){//error |
||
116 | sqlitesync_AddLog('<p>Error while syncing with the server ' + error + '</p>'); |
||
117 | sqlitesync_SyncTableCurrentIndex++ |
||
118 | if(sqlitesync_SyncTableCurrentIndex < sqlitesync_SyncTableList.length) |
||
119 | sqlitesync_SyncTables(); |
||
120 | else |
||
121 | sqlitesync_SyncEnd(); |
||
122 | |||
123 | }, function(){//success |
||
124 | if(syncId > 0){ |
||
125 | $.ajax({ |
||
126 | url: sqlitesync_SyncServerURL + "CommitSync/"+syncId, |
||
127 | method: 'GET', |
||
128 | scope:this, |
||
129 | cache : false, |
||
130 | timeout: 5 * 60 * 1000,//10min |
||
131 | success: function(){ |
||
132 | sqlitesync_AddLog('<p style=\"font-weight:bold; color:blue;\">Received the table '+tableNameSync+'.</p>'); |
||
133 | sqlitesync_SyncTableCurrentIndex++; |
||
134 | |||
135 | if(sqlitesync_SyncTableCurrentIndex < sqlitesync_SyncTableList.length) |
||
136 | sqlitesync_SyncTables(); |
||
137 | else |
||
138 | sqlitesync_SyncEnd(); |
||
139 | }, |
||
140 | failure: function (result, request) { |
||
141 | var statusCode = result.status; |
||
142 | var responseText = result.responseText; |
||
143 | sqlitesync_AddLog('<p>Error while syncing with the server ' + error + '</p>'); |
||
144 | sqlitesync_SyncTableCurrentIndex++ |
||
145 | |||
146 | if(sqlitesync_SyncTableCurrentIndex < sqlitesync_SyncTableList.length) |
||
147 | sqlitesync_SyncTables(); |
||
148 | else |
||
149 | sqlitesync_SyncEnd(); |
||
150 | } |
||
151 | }); |
||
152 | } else{ |
||
153 | sqlitesync_SyncTableCurrentIndex++; |
||
154 | |||
155 | if(sqlitesync_SyncTableCurrentIndex < sqlitesync_SyncTableList.length) |
||
156 | sqlitesync_SyncTables(); |
||
157 | else |
||
158 | sqlitesync_SyncEnd(); |
||
159 | } |
||
160 | }); |
||
161 | } else { |
||
162 | sqlitesync_SyncTableCurrentIndex++ |
||
163 | if(sqlitesync_SyncTableCurrentIndex < sqlitesync_SyncTableList.length) |
||
164 | sqlitesync_SyncTables(); |
||
165 | else |
||
166 | sqlitesync_SyncEnd(); |
||
167 | } |
||
168 | }, |
||
169 | failure: function (result, request) { |
||
170 | var statusCode = result.status; |
||
171 | var responseText = result.responseText; |
||
172 | sqlitesync_AddLog('<p>Error while syncing with the server ' + responseText + '</p>'); |
||
173 | } |
||
174 | }); |
||
175 | } |
||
176 | </code></pre> |