<img id = "exit-img" src = "../../extensions/app_timer/images/exit.jpg"></img> \
</div>\
</div>';
-//"
const TIME_HTML = '\
<div id="time-container"> \
<center><div id="time-contents"> \
-<span id="hours-digit">00</span> \
-<span class="colon">:</span> \
-<span id="minutes-digit">00</span> \
-<span class="colon">:</span> \
-<span id="seconds-digit">00</span> \
+<span id="hours-timedigit">00</span> \
+<span class="timecolon">:</span> \
+<span id="minutes-timedigit">00</span> \
+<span class="timecolon">:</span> \
+<span id="seconds-timedigit">00</span> \
</div></center> \
</div>';
+const SET_HTML = '\
+<div id="set-container"> \
+<center><div id="set-contents"> \
+<div id = "set-title"><h1> App Timer</h1></div> \
+<div class = "setline"> </div> \
+<div class = "action"> \
+<div class="timer-group"> \
+<span id="hours-setdigit" class="digit seteditable" >00</span> \
+<span class="setcolon">:</span> \
+<span id="minutes-setdigit" class="digit seteditable">00</span> \
+<span class="setcolon">:</span> \
+<span id="seconds-setdigit" class="digit seteditable">10</span> \
+<div class = "time_range_options"> \
+<input id = "work_time_range_input" type = "range" min = "0" max = "3600" value = "10" step = "10" /> \
+</div> \
+</div> \
+<div class = "setline"> </div> \
+<div class="btn-group"> \
+<button id="start-button" class="setbutton">start</button> \
+<button id="reset-button" class="setbutton">reset</button> \
+</div> \
+</div> \
+</div></center> \
+</div>';
+
+var tmpTime = {
+ displayTime: {
+ hours: '00',
+ minutes: '00',
+ seconds: '10',
+ },
+ defaultDisplayTime: {
+ hours: '00',
+ minutes: '00',
+ seconds: '10',
+ }
+};
+
+var f1Key = false;
+const path = require('path');
var jsonfile = require('jsonfile');
-var jsonobj = {timerStart: false, time:{hours: 0, minutes: 0, seconds: 0}};
-var filepath = window.location.pathname.substring(0, window.location.pathname.lastIndexOf('apps_repo'))+'apps_repo/AppManager/data/timer.json';
+var jsonobj = {timerStart: false, time:{hours: 0, minutes: 0, seconds: 10}};
+var filepath = window.location.pathname.substring(0, window.location.pathname.lastIndexOf('apps_repo'))+'extensions/app_timer/data/timer.json';
var app_id = location.href.split('/');
-
var port = chrome.runtime.connect({name: "contentscript"});
+
port.onMessage.addListener(function(msg) {
console.log('from background : ' + msg.background);
+
+ if (msg.page_action === 'execute') {
+ if (f1Key) {
+ hideModal();
+ f1Key = false;
+ } else {
+ showModal();
+ f1Key = true;
+ }
+ }
+
if (msg.background == "timer-init") {
setTime(msg.value);
}
jsonfile.writeFile(filepath, jsonobj, function (err) {
console.error(err);
});
- document.getElementById('hours-digit').innerHTML = jsonobj.time.hours;
- document.getElementById('minutes-digit').innerHTML = jsonobj.time.minutes;
- document.getElementById('seconds-digit').innerHTML = jsonobj.time.seconds;
+ document.getElementById('hours-setdigit').innerHTML = jsonobj.time.hours;
+ document.getElementById('minutes-setdigit').innerHTML = jsonobj.time.minutes;
+ document.getElementById('seconds-setdigit').innerHTML = jsonobj.time.seconds;
+ document.getElementById('hours-timedigit').innerHTML = jsonobj.time.hours;
+ document.getElementById('minutes-timedigit').innerHTML = jsonobj.time.minutes;
+ document.getElementById('seconds-timedigit').innerHTML = jsonobj.time.seconds;
}
else if (msg.background == "timer-finish") {
+ port.postMessage({contentscript: "timer-stop"});
+ jsonfile.writeFile(filepath, jsonobj, function (err) {
+ console.error(err);
+ });
exitPopup();
}
});
+document.body.insertAdjacentHTML('beforeend', EXIT_HTML);
+document.body.insertAdjacentHTML('afterbegin', TIME_HTML);
+document.body.insertAdjacentHTML('beforeend', SET_HTML);
+
jsonfile.readFile(filepath, function(err, obj) {
- if (app_id[app_id.length - 2] == 'installer'
- || app_id[app_id.length - 2] == 'launcher'
- || app_id[app_id.length - 2] == 'extensions_settings'
- || app_id[app_id.length - 2] == 'AppManager') {
+ if (app_id[app_id.length - 2] === 'installer'
+ || app_id[app_id.length - 2] === 'launcher'
+ || app_id[app_id.length - 2] === 'extensions_settings'
+ || app_id[app_id.length - 2] === 'AppManager') {
console.log('Except for '+app_id[app_id.length - 2]);
return;
}
- if (obj.timerStart==true) {
- console.log('exitPopup: '+window.location.pathname.substring(0, window.location.pathname.lastIndexOf('/')));
+ if ( err )
+ console.log('err; '+err);
+ else
jsonobj = obj;
- if (obj.time.hours + obj.time.minutes + obj.time.seconds > 0) {
- initialize();
- }
- else {
- exitPopup();
- }
+ runningMode();
+
+ tmpTime.displayTime=_getDisplayableTime(jsonobj.time);
+ setTime(tmpTime);
+ bindAll();
+
+ console.log('exitPopup: '+window.location.pathname.substring(0, window.location.pathname.lastIndexOf('/')));
+ if (jsonobj.time.hours + jsonobj.time.minutes + jsonobj.time.seconds > 0) {
+ initialize();
+ }
+ else {
+ exitPopup();
}
});
console.log('Except for '+app_id[app_id.length - 2]);
return;
}
- stop();
-}
-
-window.onkeydown = function(event) {
- if (app_id[app_id.length - 2] == 'installer'
- || app_id[app_id.length - 2] == 'launcher'
- || app_id[app_id.length - 2] == 'extensions_settings'
- || app_id[app_id.length - 2] == 'AppManager') {
- console.log('Except for '+app_id[app_id.length - 2]);
- return;
- }
- if (event.keyCode === 10009){ //esc
- stop();
- }
+ pauseMode();
+ port.postMessage({contentscript: "timer-stop"});
}
function exitPopup() {
- document.body.insertAdjacentHTML('beforeend', EXIT_HTML);
- stop();
+ document.getElementById('exit-container').style.display = 'block';
document.getElementById('exit-img').onclick= function(event) {
console.log('exitPopup: ');
+ document.getElementById('exit-container').style.display = 'none';
var launcher = require('electron').remote.getCurrentWindow();
launcher.close();
};
}
+function _getDisplayableTime(time) {
+ var dh = (time.hours < 10 ? '0' : '') + String(time.hours),
+ dm = (time.minutes < 10 ? '0' : '') + String(time.minutes),
+ ds = (time.seconds < 10 ? '0' : '') + String(time.seconds)
+ return {hours: dh, minutes: dm, seconds: ds};
+}
+
function initialize() {
port.postMessage({contentscript: "timer-init"});
start();
+ document.getElementById('time-container').style.display = 'block';
+}
+
+function showModal() {
+ console.log('showModal()');
+ document.getElementById('exit-container').style.display = 'none';
+ document.getElementById('time-container').style.display = 'none';
+ document.getElementById('set-container').style.display = 'block';
+}
+
+function hideModal() {
+ console.log('hideModal()');
+ if (jsonobj.timerStart === true && jsonobj.time.hours + jsonobj.time.minutes + jsonobj.time.seconds === 0) {
+ document.getElementById('exit-container').style.display = 'block';
+ }
+ if (jsonobj.timerStart === true && jsonobj.time.hours + jsonobj.time.minutes + jsonobj.time.seconds > 0) {
+ document.getElementById('time-container').style.display = 'block';
+ }
+ document.getElementById('set-container').style.display = 'none';
+}
+
+function bindAll() {
+ document.getElementById('work_time_range_input').addEventListener("input", function(event){
+ tmpTime.displayTime.hours = (Math.floor(event.srcElement.value / 3600)).toString();
+ tmpTime.displayTime.minutes = (Math.floor(Math.floor(event.srcElement.value % 3600) / 60)).toString();
+ tmpTime.displayTime.seconds = (event.srcElement.value % 60).toString();
+ if(tmpTime.displayTime.hours .length < 2){
+ tmpTime.displayTime.hours = "0" + tmpTime.displayTime.hours ;
+ };
+ if(tmpTime.displayTime.minutes.length < 2){
+ tmpTime.displayTime.minutes = "0" + tmpTime.displayTime.minutes;
+ };
+ if(tmpTime.displayTime.seconds.length < 2){
+ tmpTime.displayTime.seconds = "0" + tmpTime.displayTime.seconds;
+ };
+ setTime(tmpTime);
+ });
+ document.getElementById('start-button').onclick= function(event) {
+ if (jsonobj.timerStart === false) {
+ start();
+ } else {
+ stop();
+ }
+ };
+ document.getElementById('reset-button').onclick= function(event) {
+ if (jsonobj.timerStart === false) {
+ reset();
+ }
+ };
}
function start() {
- console.log('start, '+jsonobj.time.hours+' : '+jsonobj.time.minutes+' : '+jsonobj.time.seconds);
- document.body.insertAdjacentHTML('afterbegin', TIME_HTML);
- port.postMessage({contentscript: "timer-setTime", value:jsonobj.time});
- port.postMessage({contentscript: "timer-start"});
+ jsonobj.timerStart = true;
+ jsonobj.time.hours = Number(document.getElementById('hours-setdigit').innerHTML);
+ jsonobj.time.minutes = Number(document.getElementById('minutes-setdigit').innerHTML);
+ jsonobj.time.seconds = Number(document.getElementById('seconds-setdigit').innerHTML);
+
+ if (jsonobj.time.hours + jsonobj.time.minutes + jsonobj.time.seconds > 0) {
+ runningMode();
+ port.postMessage({contentscript: "timer-setTime", value:jsonobj.time});
+ port.postMessage({contentscript: "timer-start"});
+ }
}
function reset() {
+ jsonobj.timerStart = false;
+ jsonobj.time.hours = 0;
+ jsonobj.time.minutes = 0;
+ jsonobj.time.seconds = 10;
+ tmpTime.displayTime=_getDisplayableTime(jsonobj.time);
+ setTime(tmpTime);
port.postMessage({contentscript: "timer-reset"});
}
function stop() {
+ jsonobj.timerStart = false;
+ pauseMode();
port.postMessage({contentscript: "timer-stop"});
+}
+
+function setTime(time) {
+ console.log('setTime, '+time.displayTime.hours+' : '+time.displayTime.minutes+' : '+time.displayTime.seconds);
+ document.getElementById('hours-setdigit').innerHTML = time.displayTime.hours;
+ document.getElementById('minutes-setdigit').innerHTML = time.displayTime.minutes;
+ document.getElementById('seconds-setdigit').innerHTML = time.displayTime.seconds;
+ document.getElementById('hours-timedigit').innerHTML = time.displayTime.hours;
+ document.getElementById('minutes-timedigit').innerHTML = time.displayTime.minutes;
+ document.getElementById('seconds-timedigit').innerHTML = time.displayTime.seconds;
+}
+
+function runningMode() {
+ document.getElementById('start-button').innerHTML = 'stop';
+ document.getElementById('work_time_range_input').disabled = true;
jsonfile.writeFile(filepath, jsonobj, function (err) {
console.error(err);
});
}
-function setTime(time) {
- console.log('setTime, '+time.defaultTime.hours+' : '+time.defaultTime.minutes+' : '+time.defaultTime.seconds);
- jsonobj.time.hours = time.defaultTime.hours;
- jsonobj.time.minutes = time.defaultTime.minutes;
- jsonobj.time.seconds = time.defaultTime.seconds;
+function pauseMode() {
+ document.getElementById('start-button').innerHTML = 'start';
+ document.getElementById('work_time_range_input').disabled = false;
+ jsonfile.writeFile(filepath, jsonobj, function (err) {
+ console.error(err);
+ });
}