From ce49a126cf156d6886e664f80417a2b65ff118ba Mon Sep 17 00:00:00 2001 From: Alex Yatskov Date: Wed, 14 Sep 2016 21:08:51 -0700 Subject: [PATCH] Progress bar --- ext/bg/import.html | 25 +++++++++++++++++++++++++ ext/bg/js/import.js | 23 +++++++++++++++++++++++ ext/bg/js/yomichan.js | 13 ++++++++++++- 3 files changed, 60 insertions(+), 1 deletion(-) create mode 100644 ext/bg/import.html create mode 100644 ext/bg/js/import.js diff --git a/ext/bg/import.html b/ext/bg/import.html new file mode 100644 index 00000000..47483c25 --- /dev/null +++ b/ext/bg/import.html @@ -0,0 +1,25 @@ + + + + + Yomichan Dictionary Import + + + + +
+ + +

Importing dictionary data, this can take a while...

+ +
+
+
+
+ + + + + diff --git a/ext/bg/js/import.js b/ext/bg/js/import.js new file mode 100644 index 00000000..905b4580 --- /dev/null +++ b/ext/bg/js/import.js @@ -0,0 +1,23 @@ +/* + * Copyright (C) 2016 Alex Yatskov + * Author: Alex Yatskov + * + * This program is free software: you can redistribute it and/or modify + * it under the terms of the GNU General Public License as published by + * the Free Software Foundation, either version 3 of the License, or + * (at your option) any later version. + * + * This program is distributed in the hope that it will be useful, + * but WITHOUT ANY WARRANTY; without even the implied warranty of + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the + * GNU General Public License for more details. + * + * You should have received a copy of the GNU General Public License + * along with this program. If not, see . + */ + + +chrome.runtime.onMessage.addListener(({state, progress}, sender, callback) => { + $('.progress-bar').css('width', progress + '%'); + callback(); +}); diff --git a/ext/bg/js/yomichan.js b/ext/bg/js/yomichan.js index c9f53253..bec34691 100644 --- a/ext/bg/js/yomichan.js +++ b/ext/bg/js/yomichan.js @@ -23,6 +23,7 @@ class Yomichan { Handlebars.registerHelper('kanjiLinks', kanjiLinks); this.translator = new Translator(); + this.importTabId = null; this.asyncPools = {}; this.ankiConnectVer = 0; this.setState('disabled'); @@ -48,7 +49,17 @@ class Yomichan { } onImport({state, progress}) { - console.log(`${state}: ${progress}`); + if (state === 'begin') { + chrome.tabs.create({url: chrome.extension.getURL('bg/import.html')}, tab => this.importTabId = tab.id); + } + + if (this.importTabId !== null) { + chrome.tabs.sendMessage(this.importTabId, {state, progress}, () => null); + } + + if (state === 'end') { + this.importTabId = null; + } } onMessage(request, sender, callback) {