mirror of
https://github.com/transatoshi-mw/grin-web-wallet.git
synced 2025-10-07 00:02:47 +00:00
contents of zip
This commit is contained in:
273
scripts/log_section.js
Executable file
273
scripts/log_section.js
Executable file
@@ -0,0 +1,273 @@
|
||||
// Use strict
|
||||
"use strict";
|
||||
|
||||
|
||||
// Classes
|
||||
|
||||
// Log section class
|
||||
class LogSection extends Section {
|
||||
|
||||
// Public
|
||||
|
||||
// Constructor
|
||||
constructor(display, sections, settings, message, focus, application, unlocked, automaticLock, scroll, wallets, node, wakeLock, transactions, prices, clipboard) {
|
||||
|
||||
// Delegate constructor
|
||||
super(display, sections, settings, message, focus, application, unlocked, automaticLock, scroll, wallets, node, wakeLock, transactions, prices, clipboard);
|
||||
|
||||
// Get message display
|
||||
this.messageDisplay = this.getDisplay().find("div.messages");
|
||||
|
||||
// Set message counter
|
||||
this.messageCounter = 1;
|
||||
|
||||
// Set maximum number of messages to setting's default value
|
||||
this.maximumNumberOfMessages = LogSection.SETTINGS_MAXIMUM_NUMBER_OF_MESSAGES_DEFAULT_VALUE;
|
||||
|
||||
// Set scroll to bottom
|
||||
this.scrollToBottom = true;
|
||||
|
||||
// Set self
|
||||
var self = this;
|
||||
|
||||
// Once database is initialized
|
||||
Database.onceInitialized(function() {
|
||||
|
||||
// Return promise
|
||||
return new Promise(function(resolve, reject) {
|
||||
|
||||
// Return creating settings
|
||||
return Promise.all([
|
||||
|
||||
// Maximum number of messages setting
|
||||
self.getSettings().createValue(LogSection.SETTINGS_MAXIMUM_NUMBER_OF_MESSAGES_NAME, LogSection.SETTINGS_MAXIMUM_NUMBER_OF_MESSAGES_DEFAULT_VALUE)
|
||||
|
||||
]).then(function() {
|
||||
|
||||
// Initialize settings
|
||||
var settings = [
|
||||
|
||||
// Maximum number of messages setting
|
||||
LogSection.SETTINGS_MAXIMUM_NUMBER_OF_MESSAGES_NAME,
|
||||
];
|
||||
|
||||
// Return getting settings' values
|
||||
return Promise.all(settings.map(function(setting) {
|
||||
|
||||
// Return getting setting's value
|
||||
return self.getSettings().getValue(setting);
|
||||
|
||||
})).then(function(settingValues) {
|
||||
|
||||
// Set maximum number of messages to setting's value
|
||||
self.maximumNumberOfMessages = settingValues[settings.indexOf(LogSection.SETTINGS_MAXIMUM_NUMBER_OF_MESSAGES_NAME)];
|
||||
|
||||
// Resolve
|
||||
resolve();
|
||||
|
||||
// Catch errors
|
||||
}).catch(function(error) {
|
||||
|
||||
// Reject
|
||||
reject();
|
||||
});
|
||||
|
||||
// Catch errors
|
||||
}).catch(function(error) {
|
||||
|
||||
// Reject
|
||||
reject();
|
||||
});
|
||||
});
|
||||
});
|
||||
|
||||
// Settings change event
|
||||
$(this.getSettings()).on(Settings.CHANGE_EVENT, function(event, setting) {
|
||||
|
||||
// Check what setting was changes
|
||||
switch(setting[Settings.DATABASE_SETTING_NAME]) {
|
||||
|
||||
// Maximum number of messages setting
|
||||
case LogSection.SETTINGS_MAXIMUM_NUMBER_OF_MESSAGES_NAME:
|
||||
|
||||
// Set maximum number of messages to setting's value
|
||||
self.maximumNumberOfMessages = setting[Settings.DATABASE_VALUE_NAME];
|
||||
|
||||
// Truncate messages
|
||||
self.truncateMessages();
|
||||
|
||||
// Break
|
||||
break;
|
||||
}
|
||||
});
|
||||
|
||||
// Check if get selection is supported
|
||||
if(typeof getSelection !== "undefined") {
|
||||
|
||||
// Main copy event
|
||||
$("main").on("copy", function(event) {
|
||||
|
||||
// Check if shown
|
||||
if(self.isShown() === true) {
|
||||
|
||||
// Prevent default
|
||||
event.preventDefault();
|
||||
|
||||
// Get selection without duplicate newlines
|
||||
var selection = Common.removeDuplicateNewlines(getSelection().toString());
|
||||
|
||||
// Set clipboard data to the new selection
|
||||
event["originalEvent"]["clipboardData"].setData("text/plain", selection);
|
||||
}
|
||||
});
|
||||
}
|
||||
|
||||
// Display scroll event
|
||||
this.getDisplay().on("scroll", function(event) {
|
||||
|
||||
// Check if shown
|
||||
if(self.isShown() === true) {
|
||||
|
||||
// Update scroll to bottom
|
||||
self.scrollToBottom = Math.abs(self.getDisplay().get(0)["scrollHeight"] - self.getDisplay().get(0)["clientHeight"] - self.getDisplay().get(0)["scrollTop"]) <= Scroll.TOLERANCE || self.getDisplay().get(0)["scrollHeight"] - self.getDisplay().get(0)["scrollTop"] <= self.getDisplay().get(0)["clientHeight"];
|
||||
}
|
||||
|
||||
// Display language change event
|
||||
}).on(Language.CHANGE_EVENT, function() {
|
||||
|
||||
// Check if scroll to bottom
|
||||
if(self.scrollToBottom === true) {
|
||||
|
||||
// Scroll display to the bottom
|
||||
self.getDisplay().get(0)["scrollTop"] = self.getDisplay().get(0)["scrollHeight"] - self.getDisplay().get(0)["clientHeight"] + Scroll.TOLERANCE;
|
||||
}
|
||||
});
|
||||
|
||||
// Document log message event
|
||||
$(document).on(Log.MESSAGE_EVENT, function() {
|
||||
|
||||
// Increment message counter
|
||||
++self.messageCounter;
|
||||
|
||||
// Truncate messages
|
||||
self.truncateMessages();
|
||||
});
|
||||
|
||||
// Section shown event
|
||||
$(this).on(Section.SHOWN_EVENT, function() {
|
||||
|
||||
// Check if scroll to bottom
|
||||
if(self.scrollToBottom === true) {
|
||||
|
||||
// Request animation frame
|
||||
requestAnimationFrame(function() {
|
||||
|
||||
// Scroll display to the bottom
|
||||
self.getDisplay().get(0)["scrollTop"] = self.getDisplay().get(0)["scrollHeight"] - self.getDisplay().get(0)["clientHeight"] + Scroll.TOLERANCE;
|
||||
});
|
||||
}
|
||||
});
|
||||
|
||||
// Window resize event
|
||||
$(window).on("resize", function() {
|
||||
|
||||
// Check if scroll to bottom
|
||||
if(self.scrollToBottom === true) {
|
||||
|
||||
// Scroll display to the bottom
|
||||
self.getDisplay().get(0)["scrollTop"] = self.getDisplay().get(0)["scrollHeight"] - self.getDisplay().get(0)["clientHeight"] + Scroll.TOLERANCE;
|
||||
}
|
||||
});
|
||||
}
|
||||
|
||||
// Get name
|
||||
getName() {
|
||||
|
||||
// Return name
|
||||
return LogSection.NAME;
|
||||
}
|
||||
|
||||
// Reset
|
||||
reset() {
|
||||
|
||||
// Reset
|
||||
super.reset();
|
||||
}
|
||||
|
||||
// Name
|
||||
static get NAME() {
|
||||
|
||||
// Return name
|
||||
return "Log";
|
||||
}
|
||||
|
||||
// Private
|
||||
|
||||
// Initialize
|
||||
initialize(state) {
|
||||
|
||||
// Set base class initialize
|
||||
var baseClassInitialize = super.initialize(state);
|
||||
|
||||
// Set self
|
||||
var self = this;
|
||||
|
||||
// Return promise
|
||||
return new Promise(function(resolve, reject) {
|
||||
|
||||
// Return initializing base class
|
||||
return baseClassInitialize.then(function() {
|
||||
|
||||
// Resolve
|
||||
resolve();
|
||||
|
||||
// Reject error
|
||||
}).catch(function(error) {
|
||||
|
||||
// Reject error
|
||||
reject(error);
|
||||
});
|
||||
});
|
||||
}
|
||||
|
||||
// Get initialize error header
|
||||
getInitializeErrorHeader() {
|
||||
|
||||
// Return initialize error header
|
||||
return Language.getDefaultTranslation('Log Error');
|
||||
}
|
||||
|
||||
// Truncate messages
|
||||
truncateMessages() {
|
||||
|
||||
// Check if too many messages exist
|
||||
if(this.messageCounter > this.maximumNumberOfMessages) {
|
||||
|
||||
// Remove earlier messages
|
||||
this.messageDisplay.children("p:lt(" + (this.messageCounter - this.maximumNumberOfMessages).toFixed() + ")").remove();
|
||||
|
||||
// Update message counter
|
||||
this.messageCounter = this.maximumNumberOfMessages;
|
||||
}
|
||||
}
|
||||
|
||||
// Settings maximum number of messages name
|
||||
static get SETTINGS_MAXIMUM_NUMBER_OF_MESSAGES_NAME() {
|
||||
|
||||
// Return settings maximum number of messages name
|
||||
return "Maximum Number Of Messages";
|
||||
}
|
||||
|
||||
// Settings maximum number of messages default value
|
||||
static get SETTINGS_MAXIMUM_NUMBER_OF_MESSAGES_DEFAULT_VALUE() {
|
||||
|
||||
// Return settings maximum number of messages default value
|
||||
return 1000;
|
||||
}
|
||||
}
|
||||
|
||||
|
||||
// Main function
|
||||
|
||||
// Set global object's log section
|
||||
globalThis["LogSection"] = LogSection;
|
Reference in New Issue
Block a user