mirror of
https://github.com/dataarts/dat.gui.git
synced 2024-12-12 04:08:27 +00:00
merged szimeks formatting with current branch
This commit is contained in:
commit
5d43707a21
@ -33,7 +33,7 @@ GUI.BooleanController = function() {
|
||||
} catch (e) {}
|
||||
}
|
||||
return GUI.Controller.prototype.setValue.call(this, val);
|
||||
}
|
||||
};
|
||||
|
||||
};
|
||||
GUI.extendController(GUI.BooleanController);
|
@ -20,11 +20,10 @@ GUI.FunctionController = function() {
|
||||
}
|
||||
|
||||
this.fire = function() {
|
||||
_this.object[_this.propertyName].call(_this.object);
|
||||
if (fireFunction != null) {
|
||||
fireFunction.call(this);
|
||||
}
|
||||
_this.object[_this.propertyName].call(_this.object);
|
||||
};
|
||||
|
||||
};
|
||||
GUI.extendController(GUI.FunctionController);
|
||||
|
@ -34,12 +34,12 @@ GUI.Controller.prototype.reset = function() {
|
||||
GUI.Controller.prototype.listen = function() {
|
||||
this.parent.listenTo(this);
|
||||
return this;
|
||||
}
|
||||
};
|
||||
|
||||
GUI.Controller.prototype.unlisten = function() {
|
||||
this.parent.unlistenTo(this); // <--- hasn't been tested yet
|
||||
return this;
|
||||
}
|
||||
};
|
||||
|
||||
GUI.Controller.prototype.setValue = function(n) {
|
||||
this.object[this.propertyName] = n;
|
||||
@ -48,22 +48,23 @@ GUI.Controller.prototype.setValue = function(n) {
|
||||
}
|
||||
this.updateDisplay();
|
||||
return this;
|
||||
}
|
||||
};
|
||||
|
||||
GUI.Controller.prototype.getValue = function() {
|
||||
return this.object[this.propertyName];
|
||||
}
|
||||
};
|
||||
|
||||
GUI.Controller.prototype.updateDisplay = function() {}
|
||||
GUI.Controller.prototype.updateDisplay = function() {};
|
||||
|
||||
GUI.Controller.prototype.onChange = function(fnc) {
|
||||
this.changeFunction = fnc;
|
||||
return this;
|
||||
}
|
||||
};
|
||||
|
||||
GUI.Controller.prototype.onFinishChange = function(fnc) {
|
||||
this.finishChangeFunction = fnc;
|
||||
return this;
|
||||
}
|
||||
};
|
||||
|
||||
GUI.Controller.prototype.options = function() {
|
||||
var _this = this;
|
||||
@ -90,7 +91,7 @@ GUI.Controller.prototype.options = function() {
|
||||
if (_this.finishChangeFunction != null) {
|
||||
_this.finishChangeFunction.call(this, _this.getValue());
|
||||
}
|
||||
});
|
||||
}, false);
|
||||
_this.domElement.appendChild(select);
|
||||
return this;
|
||||
}
|
||||
};
|
||||
|
@ -12,7 +12,7 @@ GUI.NumberController = function() {
|
||||
|
||||
var clickedNumberField = false;
|
||||
|
||||
var y = py = 0;
|
||||
var y = 0, py = 0;
|
||||
|
||||
var min = arguments[3];
|
||||
var max = arguments[4];
|
||||
@ -44,7 +44,6 @@ GUI.NumberController = function() {
|
||||
|
||||
numberField.addEventListener('blur', function(e) {
|
||||
var val = parseFloat(this.value);
|
||||
console.log(val);
|
||||
if (!isNaN(val)) {
|
||||
_this.setValue(val);
|
||||
}
|
||||
@ -65,13 +64,14 @@ GUI.NumberController = function() {
|
||||
|
||||
// Handle up arrow and down arrow
|
||||
numberField.addEventListener('keydown', function(e) {
|
||||
var newVal;
|
||||
switch(e.keyCode) {
|
||||
case 38: // up
|
||||
var newVal = _this.getValue() + step;
|
||||
newVal = _this.getValue() + step;
|
||||
_this.setValue(newVal);
|
||||
break;
|
||||
case 40: // down
|
||||
var newVal = _this.getValue() - step;
|
||||
newVal = _this.getValue() - step;
|
||||
_this.setValue(newVal);
|
||||
break;
|
||||
}
|
||||
@ -92,11 +92,10 @@ GUI.NumberController = function() {
|
||||
_this.finishChangeFunction.call(this, _this.getValue());
|
||||
}
|
||||
document.removeEventListener('mouseup', mouseup, false);
|
||||
}
|
||||
|
||||
|
||||
};
|
||||
|
||||
var dragNumberField = function(e) {
|
||||
|
||||
draggedNumberField = true;
|
||||
e.preventDefault();
|
||||
|
||||
@ -115,7 +114,7 @@ GUI.NumberController = function() {
|
||||
var newVal = _this.getValue() + dy*step;
|
||||
_this.setValue(newVal);
|
||||
return false;
|
||||
}
|
||||
};
|
||||
|
||||
this.options = function() {
|
||||
_this.noSlider();
|
||||
@ -142,12 +141,12 @@ GUI.NumberController = function() {
|
||||
|
||||
return GUI.Controller.prototype.setValue.call(this, val);
|
||||
|
||||
}
|
||||
};
|
||||
|
||||
this.updateDisplay = function() {
|
||||
numberField.value = GUI.roundToDecimal(_this.getValue(), 4);
|
||||
if (slider) slider.value = _this.getValue();
|
||||
}
|
||||
};
|
||||
};
|
||||
|
||||
GUI.extendController(GUI.NumberController);
|
||||
|
@ -33,7 +33,7 @@ GUI.StringController = function() {
|
||||
|
||||
this.updateDisplay = function() {
|
||||
input.value = _this.getValue();
|
||||
}
|
||||
};
|
||||
|
||||
this.options = function() {
|
||||
_this.domElement.removeChild(input);
|
||||
|
@ -1,12 +1,37 @@
|
||||
GUI.Slider = function(numberController, min, max, step, initValue) {
|
||||
|
||||
var min = min;
|
||||
var max = max;
|
||||
var step = step;
|
||||
|
||||
var clicked = false;
|
||||
var _this = this;
|
||||
|
||||
var onDrag = function(e) {
|
||||
if (!clicked) return;
|
||||
var pos = findPos(_this.domElement);
|
||||
var val = GUI.map(e.pageX, pos[0], pos[0] + _this.domElement.offsetWidth, min, max);
|
||||
val = Math.round(val/step)*step;
|
||||
numberController.setValue(val);
|
||||
};
|
||||
|
||||
this.domElement.addEventListener('mousedown', function(e) {
|
||||
clicked = true;
|
||||
x = px = e.pageX;
|
||||
_this.domElement.className += ' active';
|
||||
_this.fg.className += ' active';
|
||||
numberController.domElement.className += ' active';
|
||||
onDrag(e);
|
||||
document.addEventListener('mouseup', mouseup, false);
|
||||
}, false);
|
||||
|
||||
var mouseup = function(e) {
|
||||
_this.domElement.className = _this.domElement.className.replace(' active', '');
|
||||
_this.fg.className = _this.fg.className.replace(' active', '');
|
||||
numberController.domElement.className = numberController.domElement.className.replace(' active', '');
|
||||
clicked = false;
|
||||
if (numberController.finishChangeFunction != null) {
|
||||
numberController.finishChangeFunction.call(this, numberController.getValue());
|
||||
}
|
||||
document.removeEventListener('mouseup', mouseup, false);
|
||||
};
|
||||
|
||||
var x, px;
|
||||
|
||||
this.domElement = document.createElement('div');
|
||||
@ -18,15 +43,15 @@ GUI.Slider = function(numberController, min, max, step, initValue) {
|
||||
this.domElement.appendChild(this.fg);
|
||||
|
||||
var findPos = function(obj) {
|
||||
var curleft = curtop = 0;
|
||||
var curleft = 0, curtop = 0;
|
||||
if (obj.offsetParent) {
|
||||
do {
|
||||
curleft += obj.offsetLeft;
|
||||
curtop += obj.offsetTop;
|
||||
} while (obj = obj.offsetParent);
|
||||
} while ((obj = obj.offsetParent));
|
||||
return [curleft,curtop];
|
||||
}
|
||||
}
|
||||
};
|
||||
|
||||
this.__defineSetter__('value', function(e) {
|
||||
var pct = GUI.map(e, min, max, 0, 100);
|
||||
@ -39,23 +64,20 @@ GUI.Slider = function(numberController, min, max, step, initValue) {
|
||||
var val = GUI.map(e.pageX, pos[0], pos[0] + _this.domElement.offsetWidth, min, max);
|
||||
val = Math.round(val/step)*step;
|
||||
numberController.setValue(val);
|
||||
}
|
||||
};
|
||||
|
||||
this.domElement.addEventListener('mousedown', function(e) {
|
||||
clicked = true;
|
||||
x = px = e.pageX;
|
||||
_this.domElement.setAttribute('class', 'guidat-slider-bg active');
|
||||
_this.fg.setAttribute('class', 'guidat-slider-fg active');
|
||||
numberController.domElement.className += ' active';
|
||||
onDrag(e);
|
||||
document.addEventListener('mouseup', mouseup, false);
|
||||
}, false);
|
||||
|
||||
|
||||
var mouseup = function(e) {
|
||||
_this.domElement.setAttribute('class', 'guidat-slider-bg');
|
||||
_this.fg.setAttribute('class', 'guidat-slider-fg');
|
||||
numberController.domElement.className = numberController.domElement.className.replace(' active', '');
|
||||
clicked = false;
|
||||
if (numberController.finishChangeFunction != null) {
|
||||
numberController.finishChangeFunction.call(this, numberController.getValue());
|
||||
@ -63,9 +85,8 @@ GUI.Slider = function(numberController, min, max, step, initValue) {
|
||||
document.removeEventListener('mouseup', mouseup, false);
|
||||
};
|
||||
|
||||
|
||||
document.addEventListener('mousemove', onDrag, false);
|
||||
|
||||
this.value = initValue;
|
||||
|
||||
}
|
||||
};
|
||||
|
5
gui.css
5
gui.css
@ -27,11 +27,6 @@
|
||||
overflow-y: auto;
|
||||
overflow-x: hidden;
|
||||
background-color: rgba(0,0,0,0.1);
|
||||
/*
|
||||
-moz-transition: height .2s ease-out;
|
||||
-webkit-transition: height .2s ease-out;
|
||||
transition: height .2s ease-out;
|
||||
*/
|
||||
}
|
||||
|
||||
a.guidat-toggle {
|
||||
|
52
gui.js
52
gui.js
@ -125,28 +125,21 @@ var GUI = function() {
|
||||
|
||||
}, false);
|
||||
|
||||
|
||||
toggleButton.addEventListener('click', function(e) {
|
||||
e.preventDefault();
|
||||
return false;
|
||||
}, false);
|
||||
|
||||
|
||||
document.addEventListener('mouseup', function(e) {
|
||||
|
||||
if (togglePressed && !toggleDragged) {
|
||||
|
||||
_this.toggle();
|
||||
|
||||
|
||||
}
|
||||
|
||||
if (togglePressed && toggleDragged) {
|
||||
|
||||
if (dragDisplacementX == 0) {
|
||||
|
||||
adaptToScrollbar()
|
||||
|
||||
adaptToScrollbar();
|
||||
}
|
||||
|
||||
if (openHeight > controllerHeight) {
|
||||
@ -169,10 +162,7 @@ var GUI = function() {
|
||||
beginResize();
|
||||
}
|
||||
}
|
||||
|
||||
|
||||
|
||||
}
|
||||
};
|
||||
|
||||
|
||||
document.removeEventListener('mousemove', resize, false);
|
||||
@ -203,7 +193,7 @@ var GUI = function() {
|
||||
listenInterval = setInterval(function() {
|
||||
_this.listen();
|
||||
}, this.autoListenIntervalTime);
|
||||
}
|
||||
};
|
||||
|
||||
this.__defineSetter__("autoListen", function(v) {
|
||||
autoListen = v;
|
||||
@ -344,7 +334,7 @@ var GUI = function() {
|
||||
} else {
|
||||
controllerContainer.style.overflowY = "hidden";
|
||||
}
|
||||
}
|
||||
};
|
||||
|
||||
var handlerTypes = {
|
||||
"number": GUI.NumberController,
|
||||
@ -364,6 +354,7 @@ var GUI = function() {
|
||||
};
|
||||
|
||||
var construct = function(constructor, args) {
|
||||
|
||||
function F() {
|
||||
return constructor.apply(this, args);
|
||||
}
|
||||
@ -470,8 +461,7 @@ GUI.allControllers = [];
|
||||
GUI.allGuis = [];
|
||||
|
||||
GUI.saveURL = function() {
|
||||
title = window.location;
|
||||
url = GUI.replaceGetVar("saveString", GUI.getSaveString());
|
||||
var url = GUI.replaceGetVar("saveString", GUI.getSaveString());
|
||||
window.location = url;
|
||||
};
|
||||
|
||||
@ -497,20 +487,21 @@ GUI.savedAppearanceVars = [];
|
||||
|
||||
GUI.getSaveString = function() {
|
||||
|
||||
var vals = [];
|
||||
var vals = [],
|
||||
i;
|
||||
|
||||
vals.push(GUI.allGuis.length);
|
||||
vals.push(document.body.scrollTop);
|
||||
|
||||
|
||||
for (var i in GUI.allGuis) {
|
||||
for (i in GUI.allGuis) {
|
||||
var av = GUI.allGuis[i].appearanceVars();
|
||||
for (var j = 0; j < av.length; j++) {
|
||||
vals.push(av[j]);
|
||||
}
|
||||
}
|
||||
|
||||
for (var i in GUI.allControllers) {
|
||||
for (i in GUI.allControllers) {
|
||||
|
||||
// We don't save values for functions.
|
||||
if (GUI.allControllers[i].type == "function") {
|
||||
@ -530,7 +521,7 @@ GUI.getSaveString = function() {
|
||||
|
||||
return vals.join(',');
|
||||
|
||||
}
|
||||
};
|
||||
|
||||
GUI.getVarFromURL = function(v) {
|
||||
|
||||
@ -538,7 +529,7 @@ GUI.getVarFromURL = function(v) {
|
||||
var hashes = window.location.href.slice(window.location.href.indexOf('?') + 1).split('&');
|
||||
|
||||
for (var i = 0; i < hashes.length; i++) {
|
||||
hash = hashes[i].split("=")
|
||||
hash = hashes[i].split("=");
|
||||
if (hash == undefined) continue;
|
||||
if (hash[0] == v) {
|
||||
return hash[1];
|
||||
@ -556,7 +547,7 @@ GUI.replaceGetVar = function(varName, val) {
|
||||
var hashes = window.location.href.slice(window.location.href.indexOf('?') + 1).split('&');
|
||||
|
||||
for (var i = 0; i < hashes.length; i++) {
|
||||
hash = hashes[i].split("=")
|
||||
hash = hashes[i].split("=");
|
||||
if (hash == undefined) continue;
|
||||
if (hash[0] == varName) {
|
||||
return loc.replace(hash[1], val);
|
||||
@ -576,7 +567,7 @@ GUI.guiIndex = 0;
|
||||
|
||||
GUI.showSaveString = function() {
|
||||
alert(GUI.getSaveString());
|
||||
}
|
||||
};
|
||||
|
||||
// Util functions
|
||||
|
||||
@ -585,25 +576,24 @@ GUI.makeUnselectable = function(elem) {
|
||||
elem.style.MozUserSelect = "none";
|
||||
elem.style.KhtmlUserSelect = "none";
|
||||
elem.unselectable = "on";
|
||||
}
|
||||
};
|
||||
|
||||
GUI.makeSelectable = function(elem) {
|
||||
elem.onselectstart = function() { };
|
||||
elem.style.MozUserSelect = "auto";
|
||||
elem.style.KhtmlUserSelect = "auto";
|
||||
elem.unselectable = "off";
|
||||
}
|
||||
};
|
||||
|
||||
GUI.map = function(v, i1, i2, o1, o2) {
|
||||
var v = o1 + (o2 - o1) * ((v - i1) / (i2 - i1));
|
||||
return v;
|
||||
}
|
||||
return o1 + (o2 - o1) * ((v - i1) / (i2 - i1));
|
||||
};
|
||||
|
||||
GUI.constrain = function (v, o1, o2) {
|
||||
if (v < o1) v = o1;
|
||||
else if (v > o2) v = o2;
|
||||
return v;
|
||||
}
|
||||
};
|
||||
|
||||
GUI.error = function(str) {
|
||||
if (typeof console.error == 'function') {
|
||||
@ -614,11 +604,11 @@ GUI.error = function(str) {
|
||||
GUI.roundToDecimal = function(n, decimals) {
|
||||
var t = Math.pow(10, decimals);
|
||||
return Math.round(n*t)/t;
|
||||
}
|
||||
};
|
||||
|
||||
GUI.extendController = function(clazz) {
|
||||
clazz.prototype = new GUI.Controller();
|
||||
clazz.prototype.constructor = clazz;
|
||||
}
|
||||
};
|
||||
|
||||
if (GUI.getVarFromURL('saveString') != null) GUI.load(GUI.getVarFromURL('saveString'));
|
33
index.html
33
index.html
@ -1,29 +1,22 @@
|
||||
<!doctype html>
|
||||
<head>
|
||||
<title>gui-dat</title>
|
||||
|
||||
<link rel="icon" type="image/png" href="demo/assets/favicon.png" />
|
||||
<link href="demo/demo.css" media="screen" rel="stylesheet" type="text/css" />
|
||||
<link href="gui.css" media="screen" rel="stylesheet" type="text/css" />
|
||||
<script type="text/javascript" src="gui.js">
|
||||
</script>
|
||||
<script type="text/javascript" src="controllers/slider.js">
|
||||
</script>
|
||||
<script type="text/javascript" src="controllers/controller.js">
|
||||
</script>
|
||||
<script type="text/javascript" src="controllers/controller.boolean.js">
|
||||
</script>
|
||||
<script type="text/javascript" src="controllers/controller.function.js">
|
||||
</script>
|
||||
<script type="text/javascript" src="controllers/controller.number.js">
|
||||
</script>
|
||||
<script type="text/javascript" src="controllers/controller.string.js">
|
||||
</script>
|
||||
<script type="text/javascript" src="demo/improvedNoise.js">
|
||||
</script>
|
||||
<script type="text/javascript" src="demo/prettify.js">
|
||||
</script>
|
||||
<script type="text/javascript" src="demo/demo.js">
|
||||
</script>
|
||||
|
||||
<script type="text/javascript" src="gui.js"></script>
|
||||
<script type="text/javascript" src="controllers/slider.js"></script>
|
||||
<script type="text/javascript" src="controllers/controller.js"></script>
|
||||
<script type="text/javascript" src="controllers/controller.boolean.js"></script>
|
||||
<script type="text/javascript" src="controllers/controller.function.js"></script>
|
||||
<script type="text/javascript" src="controllers/controller.number.js"></script>
|
||||
<script type="text/javascript" src="controllers/controller.string.js"></script>
|
||||
<script type="text/javascript" src="demo/improvedNoise.js"></script>
|
||||
<script type="text/javascript" src="demo/prettify.js"></script>
|
||||
<script type="text/javascript" src="demo/demo.js"></script>
|
||||
|
||||
<script type="text/javascript">
|
||||
//<![CDATA[
|
||||
|
||||
|
Loading…
Reference in New Issue
Block a user