jsketcher/web/app/3d/ui/utils.js
2016-10-14 01:19:07 -07:00

86 lines
No EOL
2 KiB
JavaScript

export function DefaultMouseEvent() {
var viewer = $('#viewer-container');
var off = viewer.offset();
const r = Math.round;
this.type = 'click';
this.canBubble = true;
this.cancelable = true;
this.detail = 1;
this.screenX = r(off.left + viewer.width() / 2);
this.screenY = r(off.top + viewer.height() / 2);
this.clientX = this.screenX;
this.clientY = this.screenY;
this.pageX = this.screenX;
this.pageY = this.screenY;
this.ctrlKey = false;
this.altKey = false;
this.shiftKey = false;
this.metaKey = false;
this.button = 0;
this.relatedTarget = null;
}
export const EventData = {
get: function(event, key) {
if (event.data) {
return event.data[key];
} else {
return undefined;
}
},
set: function(event, key, value) {
if (!event.data) {
event.data = {};
}
event.data[key] = value;
}
};
export function fit(el, relativeEl) {
const span = 5;
var relOff = relativeEl.offset();
var off = el.offset();
var needToSet = false;
if (off.left < relOff.left ) {
off.left = relOff.left + span;
needToSet = true;
}
const right = relOff.left + relativeEl.width() - span;
var outerWidth = el.outerWidth();
if (off.left + outerWidth >= right) {
off.left = right - outerWidth;
needToSet = true;
}
if (off.top < relOff.top + span) {
off.top = relOff.top + span;
needToSet = true;
}
var bottom = relOff.top + relativeEl.height() - span;
var outerHeight = el.outerHeight();
if (off.top + outerHeight >= bottom) {
off.top = bottom - outerHeight;
needToSet = true;
}
if (needToSet) {
el.css({
left: off.left + 'px',
top: off.top + 'px'
});
}
}
export function capitalize(str) {
if (!str) return;
return str.charAt(0).toUpperCase() + str.slice(1);
}
export function cssIconsToClasses(cssIcons) {
return cssIcons.map((i)=> 'fa-'+i).join(' ')
}
export function LoadTemplate(name) {
return require('./tmpl/' + name + '.html');
}