president/public/js/manager/ide.js

261 lines
6.4 KiB
JavaScript
Executable File

var ide = {};
var ideSearchTimeout;
$(document).on('click', '#ide_toggle', function() {
ideFolderSelector();
});
$(document).on('click', '#ide_hamburger', function() {
var il = $('#ide_list');
var imw = $('#ide_main_window');
if (il.is(':visible')) {
il.hide();
imw.show();
}
else {
il.show();
imw.hide();
}
});
$(document).on('click', '.ide_file', function(e) {
console.log(e.target);
if (!$(e.target).hasClass('ide_file_delete')) {
console.log('allowed');
var sel = $(this);
var file = sel.attr('file');
var status = sel.attr('status');
var location = sel.attr('location');
if (sel.attr('type') == 'folder') {
if (status == 'closed') {
console.log('opening');
$('.ide_file[location="' + sel.attr('file') + '"]').show();
sel.attr('status','open');
idecwd = ideocwd + '/' + file;
}
else {
console.log('closing');
$('.ide_file[location="' + sel.attr('file') + '"]').hide();
sel.attr('status','closed');
idecwd = ideocwd;
}
}
else {
$('.ide_sidebar[status="active"]').attr('status', 'closed');
$.ajax({
url: '/manager/ide/file_open',
type: 'GET',
data: { location: location, timestamp: timestamp, file: file },
success: function(response) {
if (response['open_app']) {
if (response['files'] && response['open_app'] == 'gallery') {
imageViewer({ 'files': response['files'] });
}
}
else {
$('.ide_tab.active').removeClass('active');
if ($('.ide_tab[file="' + file + '"]').length >= 1) {
$('.ide_tab[file="' + file + '"]').addClass('active');
}
else {
$('#ide_navbar').append(response['tab']);
}
$('#ide_main_window');
$('#ide_content').val(response.content);
$('#ide_content').attr('file', response['file']);
sel.attr('status', 'active');
ide[response['file']] = response;
settingSetter({ 'app': 'ide', 'setting': 'active_tab', 'value': file });
}
}
});
}
}
});
$(document).on('change', '#ide_folder_selector', function() {
var folder = $(this).val();
ideFolderSelector(folder);
});
function ideFolderSelector(folder,search) {
var timestamp = Date.now();
$.ajax({
url: '/manager/ide/folder_selector',
type: 'POST',
data: { folder: folder, timestamp: timestamp, search: search },
success: function(response) {
windowMaker(response.html);
ideTabPopulator(response);
}
});
}
function ideTabPopulator(response) {
console.log(response);
$.each(response.tabs, function(i,v) {
if (response.settings.active_tab == i) {
$('.ide_tab[file="' + v.file + '"]').trigger('click');
}
});
}
$(document).on('keyup', '#ide_search', function() {
var search = $(this).val();
var folder = $('#ide_folder_selector').val();
var timestamp = Date.now();
clearInterval(ideSearchTimeout);
ideSearchTimeout = setTimeout(function() {
ideFolderSelector(folder,search);
$('#ide_search').focus();
},500);
});
$(document).on('click', '.ide_file_delete', function() {
var b = $(this);
var armed = b.attr('armed');
var file = b.attr('file');
var type = b.attr('type');
if (armed == 'yes') {
$.ajax({
url: '/manager/ide/file_delete',
type: 'POST',
data: { file: file, type: type },
success: function(response) {
if (response.file) {
$('.ide_close_tab[file="' + file + '"]').trigger('click');
$('.ide_file[file="' + file + '"]').remove();
}
}
});
}
else {
b.attr('armed', 'yes');
var bgcolor = b.css('background-color');
b.css({'background-color': 'red' });
setTimeout(function() {
b.css({'background-color': bgcolor });
b.attr('armed', 'no');
},2000);
}
});
$(document).on('keyup', '#ide_content', function() {
var t = $(this).val();
var file = $(this).attr('file');
ide[file]["content"] = t;
});
$(document).on('click', '#ide_new', function() {
$('#alert').html('<h1>Gonna make a new file!</h1><h4>Folder: ' + idecwd + '</h4><input id="ide_new_file_namer"><button id="ide_new_file_create" class="hover">Create</button><button id="alert_cancel" class="hover">Cancel</button>').show();
});
$(document).on('click', '#ide_new_file_create', function() {
var file = $('#ide_new_file_namer').val();
var filename = idecwd + '/' + file;
var timestamp = Date.now();
$.ajax({
url: '/manager/ide/file_create',
type: 'POST',
data: { filename: filename, timestamp: timestamp },
success: function(response) {
$('#alert').hide();
ideFolderSelector(idecwd);
var opener = setInterval(function() {
var f = $('.ide_file[location="' + idecwd + '"][file="' + filename + '"]');
if (f.length > 0) {
$('.ide_file[location="' + idecwd + '"][file="' + filename + '"]').trigger('click');
clearInterval(opener);
}
},500);
}
});
});
$(document).on('click', '#ide_save', function() {
var save = $(this);
var c = $('#ide_content');
var f = c.attr('file');
var t = c.val();
var timestamp = Date.now();
$.ajax({
url: '/manager/ide/save',
type: 'POST',
data: { timestamp, timestamp, file: f, content: t },
success: function(response) {
var cbg = save.css('background-color');
if (response.status == 'success') {
save.css({ 'background-color': 'green' });
}
setTimeout(function() {
save.css({ 'background-color': cbg });
},500);
}
});
});
$(document).on('click', '.ide_tab', function(e) {
var file = $(this).attr('file');
if ($(e.target).hasClass('ide_close_tab')) {
return;
}
if (typeof ide[file] != "undefined") {
$('#ide_content').val(ide[file]["content"])
$('#ide_content').attr('file', ide[file]['file']);
}
else {
$('.ide_file[file="' + file + '"]').trigger('click');
}
$('.ide_tab.active').removeClass('active');
$(this).addClass('active');
settingSetter({ 'app': 'ide', 'setting': 'active_tab', 'value': file });
});
$(document).on('click', '.ide_close_tab', function(e) {
var timestamp = Date.now();
var b = $(this);
var t = b.closest('.ide_tab');
var closing_file = t.attr('file');
if (t.hasClass('active')) {
t.removeClass('active');
var p = t.prev();
if (!p.hasClass('ide_tab')) {
p = t.next();
}
if (p.length >= 1) {
p.addClass('active');
$('#ide_content').val(ide[p.attr('file')]["content"]);
$('#ide_content').attr('file', ide[p.attr('file')]['file']);
}
else {
$('#ide_content').val('').attr('file', '');
}
}
t.remove();
delete ide[b.attr('file')];
$.ajax({
url: '/manager/ide/file_close',
type: 'POST',
data: { timestamp: timestamp, file: closing_file },
success: function(response) {}
});
});