windows pos & size in prefs
This commit is contained in:
@@ -96,14 +96,14 @@ class EICDomContent extends View {
|
||||
let mouseX, mouseY, offsetX = 0, offsetY = 0;
|
||||
|
||||
// mouse button down over the element
|
||||
element.querySelector('header h1').addEventListener('mousedown', onMouseDown);
|
||||
element.querySelector('header h1').addEventListener('mousedown', onMouseDown.bind(this));
|
||||
|
||||
/**
|
||||
* Listens to `mousedown` event.
|
||||
*
|
||||
* @param {Object} event - The event.
|
||||
*/
|
||||
function onMouseDown(event) {
|
||||
function onMouseDown(event) {
|
||||
event.stopPropagation();
|
||||
event.preventDefault();
|
||||
|
||||
@@ -113,9 +113,9 @@ class EICDomContent extends View {
|
||||
offsetY = element.getBoundingClientRect().y;
|
||||
|
||||
document.addEventListener('mousemove', onMouseMove);
|
||||
element.addEventListener('mouseup', onMouseUp.bind(this));
|
||||
}
|
||||
|
||||
element.addEventListener('mouseup', onMouseUp);
|
||||
|
||||
/**
|
||||
* Listens to `mouseup` event.
|
||||
@@ -126,6 +126,14 @@ class EICDomContent extends View {
|
||||
offsetX = parseInt(element.style.left) || 0;
|
||||
offsetY = parseInt(element.style.top) || 0;
|
||||
document.removeEventListener('mousemove', onMouseMove);
|
||||
element.removeEventListener('mouseup', onMouseUp);
|
||||
if(this.windowPrefsId){
|
||||
const box = element.getBoundingClientRect()
|
||||
app.User.setPreference(`windows.${this.windowPrefsId}`, {
|
||||
x: box.x,
|
||||
y: box.y,
|
||||
});
|
||||
}
|
||||
}
|
||||
|
||||
/**
|
||||
@@ -149,7 +157,7 @@ class EICDomContent extends View {
|
||||
resizable(element, onResize) {
|
||||
let mouseX, mouseY, offset = 0, offsetY = 0, grab = '';
|
||||
|
||||
element.querySelectorAll(':scope > .handle').forEach(handle => handle.addEventListener('mousedown', onMouseDown))
|
||||
element.querySelectorAll(':scope > .handle').forEach(handle => handle.addEventListener('mousedown', onMouseDown.bind(this)))
|
||||
|
||||
element.querySelector('section').addEventListener('mousedown', onBlockMouseDown);
|
||||
|
||||
@@ -159,7 +167,7 @@ class EICDomContent extends View {
|
||||
*
|
||||
* @param {Object} event - mouse event.
|
||||
*/
|
||||
function onMouseDown(event) {
|
||||
function onMouseDown(event) {
|
||||
event.stopPropagation();
|
||||
event.preventDefault();
|
||||
|
||||
@@ -175,16 +183,26 @@ class EICDomContent extends View {
|
||||
offset = element.getBoundingClientRect();
|
||||
|
||||
document.addEventListener('mousemove', onMouseMove);
|
||||
element.addEventListener('mouseup', onMouseUp.bind(this));
|
||||
}
|
||||
|
||||
element.addEventListener('mouseup', onMouseUp);
|
||||
|
||||
/**
|
||||
* mouseup event listener
|
||||
*
|
||||
* @param {Object} event - The event.
|
||||
*/
|
||||
function onMouseUp(event) { document.removeEventListener('mousemove', onMouseMove); }
|
||||
function onMouseUp(event) {
|
||||
document.removeEventListener('mousemove', onMouseMove);
|
||||
element.removeEventListener('mouseup', onMouseUp);
|
||||
if(this.windowPrefsId){
|
||||
const box = element.getBoundingClientRect()
|
||||
app.User.setPreference(`windows.${this.windowPrefsId}`, {
|
||||
w: box.width,
|
||||
h: box.height,
|
||||
});
|
||||
}
|
||||
}
|
||||
|
||||
/**
|
||||
* Listens to `mousemove` event.
|
||||
@@ -237,6 +255,7 @@ class EICDomContent extends View {
|
||||
let device = limits.find(item => item.min < bounds.width);
|
||||
this.el.setAttribute('device', device ? device.name: limits[0].name);
|
||||
}
|
||||
|
||||
}
|
||||
|
||||
app.registerClass('EICDomContent', EICDomContent);
|
||||
+30
-30
@@ -190,7 +190,6 @@ class myUser extends app.LoadedClasses.User {
|
||||
}
|
||||
|
||||
loadPreferences() {
|
||||
console.log('Loading prefs...')
|
||||
this.model.getPreferences().then(settings => {
|
||||
console.log("Prefs received from bus:", settings)
|
||||
this.preferences = settings.value || {}
|
||||
@@ -198,7 +197,6 @@ class myUser extends app.LoadedClasses.User {
|
||||
}
|
||||
|
||||
savePreferences() {
|
||||
console.log('Saving prefs...')
|
||||
this.model.setPreferences({
|
||||
key: `${this.identity.uuid}:userPrefs`,
|
||||
value: this.preferences
|
||||
@@ -207,47 +205,49 @@ class myUser extends app.LoadedClasses.User {
|
||||
|
||||
getPreference(path) {
|
||||
let value = null;
|
||||
|
||||
if(app.MessageBus) {
|
||||
let segments = path.split('.');
|
||||
let pointer = this.preferences;
|
||||
if(pointer) {
|
||||
for(let segment of segments) {
|
||||
if(pointer[segment]) {
|
||||
if(typeof pointer[segment] == 'object') {
|
||||
pointer = pointer[segment];
|
||||
} else {
|
||||
value = pointer[segment];
|
||||
}
|
||||
let segments = path.split('.');
|
||||
let pointer = this.preferences;
|
||||
if(pointer) {
|
||||
for(let segment of segments) {
|
||||
if(pointer[segment]) {
|
||||
if(typeof pointer[segment] == 'object') {
|
||||
pointer = pointer[segment];
|
||||
} else {
|
||||
break;
|
||||
value = pointer[segment];
|
||||
}
|
||||
} else {
|
||||
break;
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
return value;
|
||||
}
|
||||
|
||||
|
||||
setPreference(path, value) {
|
||||
if(app.MessageBus) {
|
||||
let segments = path.split('.');
|
||||
let pointer = this.preferences;
|
||||
|
||||
for(let i = 0; i < segments.length - 1; i++) {
|
||||
let segment = segments[i];
|
||||
if(!pointer[segment]) {
|
||||
pointer[segment] = {};
|
||||
}
|
||||
pointer = pointer[segment];
|
||||
const segments = path.split('.')
|
||||
let pointer = this.preferences
|
||||
|
||||
for (let i = 0; i < segments.length - 1; i++) {
|
||||
const segment = segments[i]
|
||||
if (!pointer[segment] || typeof pointer[segment] !== 'object') {
|
||||
pointer[segment] = {}
|
||||
}
|
||||
|
||||
pointer[segments[segments.length - 1]] = value;
|
||||
pointer = pointer[segment]
|
||||
}
|
||||
|
||||
this.savePreferences();
|
||||
|
||||
const lastKey = segments.at(-1)
|
||||
const existing = pointer[lastKey]
|
||||
if ((typeof(value) == 'object') && (value !== null) && (typeof(existing) == 'object') && (existing !== null)) { // merge instead of overwrite
|
||||
Object.assign(existing, value)
|
||||
} else {
|
||||
pointer[lastKey] = value
|
||||
}
|
||||
|
||||
this.savePreferences()
|
||||
}
|
||||
|
||||
|
||||
}
|
||||
|
||||
app.registerClass('User', myUser, true); // for Sparc to use
|
||||
|
||||
Reference in New Issue
Block a user