2015-10-26 10:08:01 +01:00
|
|
|
var __constants__ = {
|
|
|
|
baseUrl : 'http://localhost:5000'
|
|
|
|
};
|
|
|
|
|
|
|
|
var __process__ = {};
|
|
|
|
|
|
|
|
var ipc = require('ipc');
|
|
|
|
ipc.on('files', function(files) {
|
|
|
|
__process__.files = files;
|
|
|
|
});
|
|
|
|
ipc.on('preview', function(files) {
|
|
|
|
handlers.renderPreview(files)
|
|
|
|
});
|
|
|
|
ipc.on('update-photos-success', function(args) {
|
2015-10-28 09:38:45 +01:00
|
|
|
var response = JSON.parse(args['stdout'])
|
2015-10-26 10:08:01 +01:00
|
|
|
handlers.setSuccessTitle()
|
|
|
|
handlers.removeProgressIcons()
|
2015-10-28 09:38:45 +01:00
|
|
|
handlers.updateStatus(response)
|
2015-10-26 10:08:01 +01:00
|
|
|
});
|
|
|
|
|
|
|
|
function Broadcast() {
|
|
|
|
this.send = function(name, message) {
|
|
|
|
ipc.send(name, message);
|
|
|
|
};
|
|
|
|
}
|
|
|
|
|
|
|
|
function Handlers() {
|
|
|
|
var self = this;
|
|
|
|
var broadcast = new Broadcast();
|
2015-10-28 09:38:45 +01:00
|
|
|
this.updatePhotos = function(ev) {
|
|
|
|
var el = ev.target,
|
|
|
|
cls = el.className,
|
|
|
|
params;
|
2015-10-26 10:08:01 +01:00
|
|
|
|
2015-10-28 09:38:45 +01:00
|
|
|
el.getElementsByTagName('i')[0].className = 'icon-spin animate-spin';
|
2015-10-26 10:08:01 +01:00
|
|
|
|
2015-10-28 09:38:45 +01:00
|
|
|
params = {};
|
|
|
|
if(cls.search('add-location') !== -1) {
|
|
|
|
params['location'] = document.querySelector('input[id="location-field"]').value;
|
|
|
|
} else if(cls.search('add-datetime') !== -1) {
|
|
|
|
params['datetime'] = document.querySelector('input[id="datetime-field"]').value;
|
|
|
|
} else if(cls.search('add-album') !== -1) {
|
|
|
|
params['album'] = document.querySelector('input[id="album-field"]').value;
|
|
|
|
} else if(cls.search('add-title') !== -1) {
|
|
|
|
params['title'] = document.querySelector('input[id="title-field"]').value;
|
|
|
|
} else {
|
2015-10-26 10:08:01 +01:00
|
|
|
return;
|
|
|
|
}
|
|
|
|
|
2015-10-28 09:38:45 +01:00
|
|
|
params['files'] = __process__.files;
|
|
|
|
broadcast.send('update-photos', params);
|
2015-10-26 10:08:01 +01:00
|
|
|
};
|
|
|
|
|
|
|
|
this.dispatch = function(ev) {
|
|
|
|
var classes = ev.target.className.split(' ');
|
|
|
|
for(i=0; i<classes.length; i++) {
|
|
|
|
if(typeof(self[classes[i]]) !== 'undefined') {
|
|
|
|
self[classes[i]](ev);
|
|
|
|
}
|
|
|
|
}
|
|
|
|
};
|
|
|
|
|
|
|
|
this.removeProgressIcons = function() {
|
|
|
|
var els = document.querySelectorAll('i.icon-spin');
|
|
|
|
for(el in els) {
|
|
|
|
els[el].className = ''
|
|
|
|
}
|
|
|
|
};
|
|
|
|
|
|
|
|
this.renderPreview = function(files) {
|
|
|
|
html = '<label>You selected ' + (files.length > 1 ? 'these photos' : 'this photo') + '</label>'
|
2015-10-28 09:38:45 +01:00
|
|
|
for(var i=0; i<files.length && i<16; i++) {
|
|
|
|
if(files[i].match(/(mov|mp4|3gp|avi)/i) === null) {
|
|
|
|
html += '<div class="center-cropped" style="background-image:url(\'file://'+files[i]+'\');" title="'+files[i]+'"></div>'
|
|
|
|
} else {
|
|
|
|
html += '<div class="center-cropped video"></div>'
|
|
|
|
}
|
|
|
|
}
|
|
|
|
if(files.length >= 16) {
|
|
|
|
html += '<br>...and ' + (files.length -16) + ' more.'
|
2015-10-26 10:08:01 +01:00
|
|
|
}
|
|
|
|
document.querySelector('.preview').innerHTML = html
|
|
|
|
};
|
|
|
|
|
|
|
|
this.setSuccessTitle = function() {
|
|
|
|
var el = document.querySelector('.titlebar i').className = 'icon-happy'
|
|
|
|
};
|
2015-10-28 09:38:45 +01:00
|
|
|
|
|
|
|
this.updateStatus = function(response) {
|
|
|
|
var el = document.querySelector('.status'),
|
|
|
|
source, destination, html;
|
|
|
|
|
|
|
|
console.log('update status')
|
|
|
|
console.log(response);
|
|
|
|
|
|
|
|
if(response.length > 0) {
|
|
|
|
html = '<label>Status</label><ul>';
|
|
|
|
for(i=0; i<response.length; i++) {
|
|
|
|
source = response[i]['source'] || null;
|
|
|
|
destination = response[i]['destination'] || null;
|
|
|
|
sourceFileName = source.substr(source.lastIndexOf('/')+1);
|
|
|
|
if(destination === null) {
|
|
|
|
html += '<li><i class="icon-unhappy"></i> ' + sourceFileName + '</li>';
|
|
|
|
} else {
|
|
|
|
html += '<li><i class="icon-happy"></i> ' + sourceFileName + '<div class="destination" title="'+destination+'">'+destination+'</div></li>';
|
|
|
|
}
|
|
|
|
}
|
|
|
|
html += '</ul>';
|
|
|
|
el.innerHTML = html;
|
|
|
|
el.style.display = 'block';
|
|
|
|
}
|
|
|
|
};
|
2015-10-26 10:08:01 +01:00
|
|
|
}
|
|
|
|
var handlers = new Handlers();
|
|
|
|
document.addEventListener('click', handlers.dispatch);
|