forked from platypush/platypush
Removed old application.js
This commit is contained in:
parent
4bfd6baab2
commit
46836374b0
1 changed files with 0 additions and 372 deletions
|
@ -1,372 +0,0 @@
|
||||||
$(document).ready(function() {
|
|
||||||
var websocket,
|
|
||||||
pendingConnection = false,
|
|
||||||
openedWebsocket,
|
|
||||||
dateTimeInterval,
|
|
||||||
websocketTimeoutId,
|
|
||||||
modalFadingInTimeoutId,
|
|
||||||
websocketReconnectMsecs = 30000,
|
|
||||||
eventListeners = [];
|
|
||||||
|
|
||||||
var initWebsocket = function() {
|
|
||||||
try {
|
|
||||||
url_prefix = window.has_ssl ? 'wss://' : 'ws://';
|
|
||||||
websocket = new WebSocket(url_prefix + window.location.hostname + ':' + window.websocket_port);
|
|
||||||
} catch (err) {
|
|
||||||
websocket = undefined;
|
|
||||||
return;
|
|
||||||
}
|
|
||||||
|
|
||||||
pendingConnection = true;
|
|
||||||
|
|
||||||
var onWebsocketTimeout = function(self) {
|
|
||||||
return function() {
|
|
||||||
console.log('Websocket reconnection timed out, retrying');
|
|
||||||
pendingConnection = false;
|
|
||||||
self.close();
|
|
||||||
self.onclose();
|
|
||||||
};
|
|
||||||
};
|
|
||||||
|
|
||||||
websocketTimeoutId = setTimeout(
|
|
||||||
onWebsocketTimeout(websocket), websocketReconnectMsecs);
|
|
||||||
|
|
||||||
websocket.onmessage = function(event) {
|
|
||||||
console.debug(event);
|
|
||||||
for (var listener of eventListeners) {
|
|
||||||
data = event.data;
|
|
||||||
if (typeof event.data === 'string') {
|
|
||||||
data = JSON.parse(data);
|
|
||||||
}
|
|
||||||
|
|
||||||
listener(data);
|
|
||||||
}
|
|
||||||
};
|
|
||||||
|
|
||||||
websocket.onopen = function(event) {
|
|
||||||
if (openedWebsocket) {
|
|
||||||
console.log("There's already an opened websocket connection, closing the newly opened one");
|
|
||||||
this.onclose = function() {};
|
|
||||||
this.close();
|
|
||||||
}
|
|
||||||
|
|
||||||
console.log('Websocket connection successful');
|
|
||||||
openedWebsocket = this;
|
|
||||||
|
|
||||||
if (pendingConnection) {
|
|
||||||
pendingConnection = false;
|
|
||||||
}
|
|
||||||
|
|
||||||
if (websocketTimeoutId) {
|
|
||||||
clearInterval(websocketTimeoutId);
|
|
||||||
websocketTimeoutId = undefined;
|
|
||||||
}
|
|
||||||
};
|
|
||||||
|
|
||||||
websocket.onerror = function(event) {
|
|
||||||
console.error(event);
|
|
||||||
};
|
|
||||||
|
|
||||||
websocket.onclose = function(event) {
|
|
||||||
if (event) {
|
|
||||||
console.log('Websocket closed - code: ' + event.code + ' - reason: ' + event.reason);
|
|
||||||
}
|
|
||||||
|
|
||||||
openedWebsocket = undefined;
|
|
||||||
|
|
||||||
if (!pendingConnection) {
|
|
||||||
pendingConnection = true;
|
|
||||||
initWebsocket();
|
|
||||||
}
|
|
||||||
};
|
|
||||||
};
|
|
||||||
|
|
||||||
var initDateTime = function() {
|
|
||||||
var getDateString = function(t) {
|
|
||||||
var s = '';
|
|
||||||
switch (t.getDay()) {
|
|
||||||
case 1: s += 'Mon '; break; case 2: s += 'Tue '; break; case 3: s += 'Wed '; break;
|
|
||||||
case 4: s += 'Thu '; break; case 5: s += 'Fri '; break; case 6: s += 'Sat '; break;
|
|
||||||
case 7: s += 'Sun '; break;
|
|
||||||
}
|
|
||||||
|
|
||||||
s += (t.getDate() < 10 ? '0' : '') + t.getDate() + ' ';
|
|
||||||
switch (t.getMonth()) {
|
|
||||||
case 0: s += 'Jan '; break; case 1: s += 'Feb '; break; case 2: s += 'Mar '; break;
|
|
||||||
case 3: s += 'Apr '; break; case 4: s += 'May '; break; case 5: s += 'Jun '; break;
|
|
||||||
case 6: s += 'Jul '; break; case 7: s += 'Ago '; break; case 8: s += 'Sep '; break;
|
|
||||||
case 9: s += 'Oct '; break; case 10: s += 'Nov '; break; case 11: s += 'Dec '; break;
|
|
||||||
}
|
|
||||||
|
|
||||||
s += t.getFullYear();
|
|
||||||
return s;
|
|
||||||
};
|
|
||||||
|
|
||||||
var setDateTime = function() {
|
|
||||||
var $dateTime = $('#date-time');
|
|
||||||
var $date = $dateTime.find('.date');
|
|
||||||
var $time = $dateTime.find('.time');
|
|
||||||
var now = new Date();
|
|
||||||
|
|
||||||
$date.text(getDateString(now));
|
|
||||||
$time.text((now.getHours() < 10 ? '0' : '') + now.getHours() + ':' +
|
|
||||||
(now.getMinutes() < 10 ? '0' : '') + now.getMinutes());
|
|
||||||
};
|
|
||||||
|
|
||||||
if (dateTimeInterval) {
|
|
||||||
clearInterval(dateTimeInterval);
|
|
||||||
}
|
|
||||||
|
|
||||||
setDateTime();
|
|
||||||
dateTimeInterval = setInterval(setDateTime, 1000);
|
|
||||||
};
|
|
||||||
|
|
||||||
var registerEventListener = function(listener) {
|
|
||||||
eventListeners.push(listener);
|
|
||||||
};
|
|
||||||
|
|
||||||
var initElements = function() {
|
|
||||||
var $tabItems = $('main').find('.plugin-tab-item');
|
|
||||||
var $tabContents = $('main').find('.plugin-tab-content');
|
|
||||||
|
|
||||||
// Set the active tag on the first plugin tab
|
|
||||||
$tabContents.removeClass('active');
|
|
||||||
$tabContents.first().addClass('active');
|
|
||||||
|
|
||||||
$tabItems.removeClass('active');
|
|
||||||
$tabItems.first().addClass('active');
|
|
||||||
|
|
||||||
$tabItems.on('click', function() {
|
|
||||||
var pluginId = $(this).attr('href').substr(1);
|
|
||||||
|
|
||||||
$tabContents.removeClass('active');
|
|
||||||
$tabContents.filter(function(i, content) {
|
|
||||||
return $(content).attr('id') === pluginId
|
|
||||||
}).addClass('active');
|
|
||||||
|
|
||||||
});
|
|
||||||
};
|
|
||||||
|
|
||||||
var initModalOpenBindings = function() {
|
|
||||||
$('body').on('mouseup touchend', '[data-modal]', function(event) {
|
|
||||||
var $source = $(this);
|
|
||||||
var $modal = $($source.data('modal'));
|
|
||||||
$modal.height($(document).height() + 2);
|
|
||||||
|
|
||||||
var $container = $modal.find('.modal-container');
|
|
||||||
var top = 40 + $(window).scrollTop();
|
|
||||||
$container.css('margin-top', top + 'px');
|
|
||||||
|
|
||||||
modalFadingInTimeoutId = setTimeout(function() {
|
|
||||||
modalFadingInTimeoutId = undefined;
|
|
||||||
}, 100);
|
|
||||||
|
|
||||||
$modal.fadeIn();
|
|
||||||
});
|
|
||||||
};
|
|
||||||
|
|
||||||
var initModalCloseBindings = function() {
|
|
||||||
$('body').on('mouseup touchend', '[data-dismiss-modal]', function(event) {
|
|
||||||
var $source = $(this);
|
|
||||||
var $modal = $($source.data('dismiss-modal'));
|
|
||||||
$modal.fadeOut();
|
|
||||||
});
|
|
||||||
|
|
||||||
$('body').on('mouseup touchend', function(event) {
|
|
||||||
var $source = $(event.target);
|
|
||||||
if (!$source.parents('.modal').length
|
|
||||||
&& !$source.data('modal')
|
|
||||||
&& !$source.data('dismiss-modal')) {
|
|
||||||
if (!modalFadingInTimeoutId) {
|
|
||||||
$('.modal').filter(':visible').fadeOut();
|
|
||||||
}
|
|
||||||
}
|
|
||||||
});
|
|
||||||
};
|
|
||||||
|
|
||||||
var initPanelOpenBindings = function() {
|
|
||||||
$('body').on('mouseup touchend', '[data-panel]', function(event) {
|
|
||||||
var $source = $(this);
|
|
||||||
var $panel = $($source.data('panel'));
|
|
||||||
setTimeout(() => {
|
|
||||||
$panel.show();
|
|
||||||
}, 200);
|
|
||||||
});
|
|
||||||
};
|
|
||||||
|
|
||||||
var initPanelCloseBindings = function() {
|
|
||||||
$('body').on('mouseup touchend', function(event) {
|
|
||||||
var $source = $(event.target);
|
|
||||||
if ($source.data('panel') || $source.parents('[data-panel]').length) {
|
|
||||||
var $panel = $source.data('panel') ? $($source.data('panel')) :
|
|
||||||
$($source.parents('[data-panel]').data('panel'));
|
|
||||||
$panel.toggle();
|
|
||||||
return;
|
|
||||||
}
|
|
||||||
|
|
||||||
if (!$source.parents('.panel').length
|
|
||||||
&& !$source.data('panel')) {
|
|
||||||
$('.panel').filter(':visible').hide();
|
|
||||||
}
|
|
||||||
});
|
|
||||||
};
|
|
||||||
|
|
||||||
var initModals = function() {
|
|
||||||
initModalOpenBindings();
|
|
||||||
initModalCloseBindings();
|
|
||||||
};
|
|
||||||
|
|
||||||
var initPanels = function() {
|
|
||||||
initPanelOpenBindings();
|
|
||||||
initPanelCloseBindings();
|
|
||||||
};
|
|
||||||
|
|
||||||
var init = function() {
|
|
||||||
initWebsocket();
|
|
||||||
initElements();
|
|
||||||
initDateTime();
|
|
||||||
initModals();
|
|
||||||
initPanels();
|
|
||||||
};
|
|
||||||
|
|
||||||
window.registerEventListener = registerEventListener;
|
|
||||||
init();
|
|
||||||
});
|
|
||||||
|
|
||||||
function execute(request, onSuccess, onError, onComplete) {
|
|
||||||
request['target'] = 'localhost';
|
|
||||||
return $.ajax({
|
|
||||||
type: 'POST',
|
|
||||||
url: '/execute',
|
|
||||||
contentType: 'application/json',
|
|
||||||
dataType: 'json',
|
|
||||||
data: JSON.stringify(request),
|
|
||||||
complete: function() {
|
|
||||||
if (onComplete) {
|
|
||||||
onComplete();
|
|
||||||
}
|
|
||||||
},
|
|
||||||
error: function(xhr, status, error) {
|
|
||||||
if (onError) {
|
|
||||||
onError(xhr, status, error);
|
|
||||||
}
|
|
||||||
},
|
|
||||||
success: function(response, status, xhr) {
|
|
||||||
if ('errors' in response && response.errors.length) {
|
|
||||||
if (onError) {
|
|
||||||
onError(xhr, '500', response.errors);
|
|
||||||
}
|
|
||||||
}
|
|
||||||
|
|
||||||
if (onSuccess) {
|
|
||||||
onSuccess(response, status, xhr);
|
|
||||||
}
|
|
||||||
},
|
|
||||||
beforeSend: function(xhr) {
|
|
||||||
if (window.token) {
|
|
||||||
xhr.setRequestHeader('X-Token', window.token);
|
|
||||||
}
|
|
||||||
},
|
|
||||||
});
|
|
||||||
}
|
|
||||||
|
|
||||||
function run(request) {
|
|
||||||
request['type'] = 'request';
|
|
||||||
return new Promise((resolve, reject) => {
|
|
||||||
execute(request,
|
|
||||||
onSuccess = (response) => {
|
|
||||||
resolve(response);
|
|
||||||
},
|
|
||||||
|
|
||||||
onError = (xhr, status, error) => {
|
|
||||||
reject(xhr, status, error);
|
|
||||||
}
|
|
||||||
);
|
|
||||||
});
|
|
||||||
}
|
|
||||||
|
|
||||||
function createNotification(options) {
|
|
||||||
var $notificationContainer = $('#notification-container');
|
|
||||||
var $notification = $('<div></div>').addClass('notification');
|
|
||||||
var $title = $('<div></div>').addClass('notification-title');
|
|
||||||
var timeout = 'timeout' in options ? options.timeout : 10000;
|
|
||||||
|
|
||||||
if ('title' in options) {
|
|
||||||
$title.text(options.title);
|
|
||||||
}
|
|
||||||
|
|
||||||
var $body = $('<div></div>').addClass('notification-body');
|
|
||||||
var $imgDiv = $('<div></div>').addClass('notification-image').addClass('three columns');
|
|
||||||
var $img = $('<i></i>').addClass('fa fa-bell').addClass('three columns').addClass('notification-image-item');
|
|
||||||
var $text = $('<div></div>').addClass('notification-text').addClass('nine columns')
|
|
||||||
|
|
||||||
if ('image' in options) {
|
|
||||||
$img = $('<img></img>').attr('src', options.image);
|
|
||||||
} else if ('icon' in options) {
|
|
||||||
$img.removeClass('fa-bell').addClass('fa-' + options.icon);
|
|
||||||
}
|
|
||||||
|
|
||||||
if ('text' in options) {
|
|
||||||
$text.text(options.text);
|
|
||||||
} else if ('html' in options) {
|
|
||||||
$text.html(options.html);
|
|
||||||
}
|
|
||||||
|
|
||||||
$img.appendTo($imgDiv);
|
|
||||||
$imgDiv.appendTo($body);
|
|
||||||
$text.appendTo($body);
|
|
||||||
|
|
||||||
var clickHandler;
|
|
||||||
var removeTimeoutId;
|
|
||||||
|
|
||||||
var removeNotification = function() {
|
|
||||||
$notification.fadeOut(300, function() {
|
|
||||||
$notification.remove();
|
|
||||||
});
|
|
||||||
};
|
|
||||||
|
|
||||||
var setRemoveTimeout = function() {
|
|
||||||
if (timeout) {
|
|
||||||
removeTimeoutId = setTimeout(removeNotification, timeout);
|
|
||||||
}
|
|
||||||
};
|
|
||||||
|
|
||||||
setRemoveTimeout();
|
|
||||||
|
|
||||||
if ('onclick' in options) {
|
|
||||||
clickHandler = options.onclick;
|
|
||||||
} else {
|
|
||||||
clickHandler = removeNotification;
|
|
||||||
}
|
|
||||||
|
|
||||||
$notification.on('click', clickHandler);
|
|
||||||
$notification.hover(
|
|
||||||
// on hover start
|
|
||||||
function() {
|
|
||||||
if (removeTimeoutId) {
|
|
||||||
clearTimeout(removeTimeoutId);
|
|
||||||
removeTimeoutId = undefined;
|
|
||||||
}
|
|
||||||
},
|
|
||||||
|
|
||||||
// on hover end
|
|
||||||
function() {
|
|
||||||
if (timeout) {
|
|
||||||
setRemoveTimeout();
|
|
||||||
}
|
|
||||||
}
|
|
||||||
);
|
|
||||||
|
|
||||||
$title.appendTo($notification);
|
|
||||||
$body.appendTo($notification);
|
|
||||||
$notification.prependTo($notificationContainer);
|
|
||||||
$notification.fadeIn();
|
|
||||||
}
|
|
||||||
|
|
||||||
function showError(errorMessage) {
|
|
||||||
createNotification({
|
|
||||||
'icon': 'exclamation',
|
|
||||||
'text': errorMessage,
|
|
||||||
});
|
|
||||||
}
|
|
||||||
|
|
Loading…
Reference in a new issue