Initial
This commit is contained in:
68
resources/app/client/apps/av/camera-popout.js
Normal file
68
resources/app/client/apps/av/camera-popout.js
Normal file
@@ -0,0 +1,68 @@
|
||||
/**
|
||||
* Abstraction of the Application interface to be used with the Draggable class as a substitute for the app
|
||||
* This class will represent one popout feed window and handle its positioning and draggability
|
||||
* @param {CameraViews} view The CameraViews application that this popout belongs to
|
||||
* @param {string} userId ID of the user this popout belongs to
|
||||
* @param {jQuery} element The div element of this specific popout window
|
||||
*/
|
||||
class CameraPopoutAppWrapper {
|
||||
constructor(view, userId, element) {
|
||||
this.view = view;
|
||||
this.element = element;
|
||||
this.userId = userId;
|
||||
|
||||
// "Fake" some application attributes
|
||||
this.popOut = true;
|
||||
this.options = {};
|
||||
|
||||
// Get the saved position
|
||||
let setting = game.webrtc.settings.getUser(userId);
|
||||
this.setPosition(setting);
|
||||
new Draggable(this, element.find(".camera-view"), element.find(".video-container")[0], true);
|
||||
}
|
||||
|
||||
/* -------------------------------------------- */
|
||||
|
||||
/**
|
||||
* Get the current position of this popout window
|
||||
*/
|
||||
get position() {
|
||||
return foundry.utils.mergeObject(this.element.position(), {
|
||||
width: this.element.outerWidth(),
|
||||
height: this.element.outerHeight(),
|
||||
scale: 1
|
||||
});
|
||||
}
|
||||
|
||||
/* -------------------------------------------- */
|
||||
|
||||
/** @override */
|
||||
setPosition(options={}) {
|
||||
const position = Application.prototype.setPosition.call(this, options);
|
||||
// Let the HTML renderer figure out the height based on width.
|
||||
this.element[0].style.height = "";
|
||||
if ( !foundry.utils.isEmpty(position) ) {
|
||||
const current = game.webrtc.settings.client.users[this.userId] || {};
|
||||
const update = foundry.utils.mergeObject(current, position);
|
||||
game.webrtc.settings.set("client", `users.${this.userId}`, update);
|
||||
}
|
||||
return position;
|
||||
}
|
||||
|
||||
/* -------------------------------------------- */
|
||||
|
||||
_onResize(event) {}
|
||||
|
||||
/* -------------------------------------------- */
|
||||
|
||||
/** @override */
|
||||
bringToTop() {
|
||||
let parent = this.element.parent();
|
||||
let children = parent.children();
|
||||
let lastElement = children[children.length - 1];
|
||||
if (lastElement !== this.element[0]) {
|
||||
game.webrtc.settings.set("client", `users.${this.userId}.z`, ++this.view.maxZ);
|
||||
parent.append(this.element);
|
||||
}
|
||||
}
|
||||
}
|
||||
Reference in New Issue
Block a user