Mercurial > google_bookmarks_incsearch
comparison chrome/content/loader.js @ 0:c47ec96326ad
initial import
author | Yoshiki Yazawa <yaz@honeyplanet.jp> |
---|---|
date | Fri, 15 Aug 2008 01:57:59 +0900 |
parents | |
children | 8f7e53bfe0e8 |
comparison
equal
deleted
inserted
replaced
-1:000000000000 | 0:c47ec96326ad |
---|---|
1 var LoaderBase = function(){}; | |
2 LoaderBase.prototype = { | |
3 init: function(loadingBox, loadingMessage, database, callback) { | |
4 this.loadingBox = loadingBox; | |
5 this.loadingMessage = loadingMessage; | |
6 this.database = database; | |
7 this.callback = callback || function() {}; | |
8 | |
9 try { | |
10 this.insertHandler = new UpdateHandler(this.database, this.insertSql); | |
11 } catch(e) { | |
12 this.error(e.message || e); | |
13 throw e; | |
14 } | |
15 this.load(); | |
16 }, | |
17 insertSql: "INSERT INTO bookmark VALUES(:id, :url, :title, :info, :tags, :time, UPPER(:title||' '||:info||' '||:tags))", | |
18 truncateSql: 'DELETE FROM bookmark', | |
19 | |
20 load: function() { | |
21 this.dispStart(); | |
22 | |
23 this.bookmarks = []; | |
24 this.total = null; | |
25 | |
26 this._load(); | |
27 }, | |
28 dispStart: function() { | |
29 Glayer.showBox(this.loadingBox); | |
30 this.loadingMessage.innerHTML = 'Bookmarks Loading...'; | |
31 }, | |
32 dispLoading: function(count) { | |
33 this.loadingMessage.innerHTML = 'Bookmarks Loading... ' + count + '/' + this.total; | |
34 }, | |
35 dispEnd: function(count) { | |
36 this.loadingBox.style.display = 'none'; | |
37 Glayer.showAlert('Finish!! loaded ' + count + ' bookmarks', {callback: function(){ incsearch.input.focus(); Glayer.hideAlert(); }}); | |
38 document.getElementById(Glayer.defaultAlert.okId).focus(); | |
39 | |
40 incsearch.reset(); | |
41 }, | |
42 error: function(errMsg) { | |
43 this.loadingBox.style.display = 'none'; | |
44 | |
45 var self = this; | |
46 Glayer.showConfirm( | |
47 errMsg, | |
48 function(result){ | |
49 Glayer.hideConfirm(); | |
50 if (result) { | |
51 self.dispStart(); | |
52 self._load(); | |
53 } else { | |
54 incsearch.input.focus(); | |
55 } | |
56 }, | |
57 {okLabel: 'Retry', cancelLabel: 'cancel'} | |
58 ); | |
59 document.getElementById(Glayer.defaultConfirm.cancelId).focus(); | |
60 | |
61 throw errMsg; | |
62 }, | |
63 | |
64 truncate: function() { | |
65 this.database.execute(this.truncateSql); | |
66 }, | |
67 insert: function(bookmark) { | |
68 this.insertHandler.execute(bookmark); | |
69 }, | |
70 | |
71 update: function(bookmarks) { | |
72 | |
73 var self = this; | |
74 | |
75 var conn = this.database.connection; | |
76 try { | |
77 conn.beginTransaction(); | |
78 this.truncate(); | |
79 | |
80 for (var i = 0, len = bookmarks.length; i < len; i++) { | |
81 if (i % 100 == 0) yield i; | |
82 this.insert(bookmarks[i]); | |
83 } | |
84 | |
85 conn.commitTransaction(); | |
86 } catch(e) { | |
87 conn.rollbackTransaction(); | |
88 | |
89 this.error(e.message || e); | |
90 throw e; | |
91 } | |
92 } | |
93 } | |
94 | |
95 | |
96 var Executer = function(generator, interval, func, callback) { | |
97 this.generator = generator; | |
98 this.func = func || function(){}; | |
99 this.interval = interval; | |
100 this.callback = callback; | |
101 | |
102 var self = this; | |
103 this.run = function() { | |
104 try{ | |
105 self.func(self.generator.next()); | |
106 setTimeout(function(){self.run()}, self.interval); | |
107 } catch (e) { | |
108 if (e instanceof StopIteration) { | |
109 self.callback(); | |
110 } else { | |
111 throw e; | |
112 } | |
113 } | |
114 } | |
115 }; | |
116 |