ami/src/ami.js/z_eepromv1.js

136 lines
4.6 KiB
JavaScript

#include common.js
#include eeprom.js
#include utility.js
var eepromAppl = 1,
eepromSupportImageEmbed = true,
eepromSupportAudioEmbed = true,
eepromSupportVideoEmbed = true;
var eepromInitialise = function(auth) {
window.eepromHistory = {};
window.eepromClient = new AmiEEPROM(futami.get('eeprom2'), auth.getHttpAuth);
window.eepromUploadsTable = $i('uploadHistory');
$i('uploadSelector').onchange = function() {
for(var i = 0; i < this.files.length; ++i)
eepromFileUpload(this.files[i]);
};
$i('uploadButton').onclick = function() {
$i('uploadSelector').click();
};
ami.chat.inputBox.watch('paste', function(ev) {
if(ev.clipboardData && ev.clipboardData.files.length > 0) {
if('preventDefault' in ev)
ev.preventDefault();
for(var i = 0; i < ev.clipboardData.files.length; ++i)
eepromFileUpload(ev.clipboardData.files[i]);
}
});
if((typeof document.body.ondrop).toLowerCase() !== 'undefined') {
document.body.ondragenter = function(ev) {
ev.preventDefault();
ev.stopPropagation();
};
document.body.ondragover = function(ev) {
ev.preventDefault();
ev.stopPropagation();
};
document.body.ondragleave = function(ev) {
ev.preventDefault();
ev.stopPropagation();
};
document.body.ondrop = function(ev) {
ev.preventDefault();
ev.stopPropagation();
if(ev.dataTransfer && ev.dataTransfer.files.length > 0)
for(var i = 0; i < ev.dataTransfer.files.length; ++i)
eepromFileUpload(ev.dataTransfer.files[i]);
};
}
};
var eepromFileUpload = function(file) {
if(!window.eepromUploadsTable || !window.eepromClient) {
console.error('Upload history or EEPROM client is missing???');
return;
}
var uploadEntryWrap = window.eepromUploadsTable.insertRow(0),
uploadEntry = uploadEntryWrap.insertCell(0);
uploadEntryWrap.className = (window.eepromUploadsTable.rows.length % 2) ? 'rowOdd' : 'rowEven';
var name = document.createElement('a');
name.target = '_blank';
name.style.wordWrap = 'normal';
name.style.wordBreak = 'break-word';
name.style.display = 'block';
name.style.margin = '2px 10px';
name.style.textDecoration = 'none !important';
name.textContent = file.name;
name.title = 'SHIFT+Click to delete file';
uploadEntry.appendChild(name);
var prog = document.createElement('div'),
progBar = document.createElement('div');
prog.style.border = '1px solid #808080';
prog.style.background = '#000';
prog.style.padding = '0';
prog.style.margin = '2px 10px';
progBar.style.background = '#808080';
progBar.style.width = '0%';
progBar.style.height = '12px';
progBar.style.padding = '0';
progBar.style.border = '1px solid #000';
progBar.style.boxSizing = 'border-box';
prog.appendChild(progBar);
uploadEntry.appendChild(prog);
var uploadTask = window.eepromClient.create(file);
uploadTask.onProgress(function(progressInfo) {
progBar.style.width = `${progressInfo.progress * 100}%`;
});
name.onclick = function(ev) {
if(ev.shiftKey) {
ev.preventDefault();
var fileInfo = window.eepromHistory[name.getAttribute('data-eeprom-id') || ''];
if(fileInfo) {
window.eepromClient.delete(
fileInfo,
() => { uploadHistory.deleteRow(uploadEntryWrap.rowIndex); },
window.alert
);
} else uploadTask.abort();
}
};
uploadTask.start(
fileInfo => {
window.eepromHistory[fileInfo.id] = fileInfo;
name.style.textDecoration = null;
name.setAttribute('data-eeprom-id', fileInfo.id);
name.href = fileInfo.url;
uploadEntry.removeChild(prog);
var insertText = location.protocol + fileInfo.url;
if(eepromSupportImageEmbed && fileInfo.isImage())
insertText = '[img]' + fileInfo.url + '[/img]';
else if(eepromSupportAudioEmbed && fileInfo.isAudio())
insertText = '[audio]' + fileInfo.url + '[/audio]';
else if(eepromSupportVideoEmbed && fileInfo.isVideo())
insertText = '[video]' + fileInfo.url + '[/video]';
ami.chat.inputBox.insert(insertText);
},
ex => {
if(ex !== '')
alert(ex);
uploadHistory.deleteRow(uploadEntryWrap.rowIndex);
},
);
};