Files
waterpipe.js/lib/builder_scripts.js
T
2014-05-12 00:00:51 +01:00

418 lines
9.3 KiB
JavaScript
Executable File

/*----------------------------------------
Example generator
------------------------------------------*/
//Form serialization
$.fn.serializeObject = function()
{
var o = {};
var a = this.serializeArray();
$.each(a, function() {
if (o[this.name] !== undefined) {
if (!o[this.name].push) {
o[this.name] = [o[this.name]];
}
o[this.name].push(this.value || '');
} else {
o[this.name] = this.value || '';
}
});
return o;
};
$( document ).ready(function() {
$(window).resize(function() {
if ($('.sidebar-wrapper').height() > $(window).height()){
var formHeight = $(window).height()-$('.sidebar-wrapper .intro').outerHeight()-$('.sidebar-wrapper .buttons-wrap').outerHeight()-30;
$('.generator-form-wrap').css('height', formHeight+'px');
}
});
$(window).resize();
//Init waterpipe
var smokyBG = $('#wavybg-wrapper').waterpipe();
//Init nicescroll
var niceScroll = $('.generator-form-wrap').niceScroll();
//Params for samples
var sampleParams = [
{
bgColorInner: "#2b2b2b",
bgColorOuter: "#000000",
gradientEnd: "#f5883b",
gradientStart: "#ff5500",
lineWidth: 1,
numCircles: 1,
radiusSize: 100,
smokeOpacity: 5
},
{
bgColorInner: "#ffffff",
bgColorOuter: "#cccccc",
gradientEnd: "#7a7a7a",
gradientStart: "#000000",
lineWidth: 2,
numCircles: 1,
radiusSize: 100,
smokeOpacity: 10
},
{
bgColorInner: "#2b2b2b",
bgColorOuter: "#000000",
gradientEnd: "#6b71e3",
gradientStart: "#fa05fa",
lineWidth: 1.5,
numCircles: 1,
radiusSize: 100,
smokeOpacity: 5
},
{
bgColorInner: "#2b2b2b",
bgColorOuter: "#000000",
gradientEnd: "#7d7d7d",
gradientStart: "#e0e0e0",
lineWidth: 1.2,
numCircles: 1,
radiusSize: 100,
smokeOpacity: 5
},
{
bgColorInner: "#ffffff",
bgColorOuter: "#ffffff",
gradientEnd: "#404040",
gradientStart: "#000000",
lineWidth: 3,
numCircles: 1,
radiusSize: 100,
smokeOpacity: 5
},
{
bgColorInner: "#292929",
bgColorOuter: "#000000",
gradientEnd: "#001eff",
gradientStart: "#51ff00",
lineWidth: 1.5,
numCircles: 1,
radiusSize: 100,
smokeOpacity: 5
},
{
bgColorInner: "#400000",
bgColorOuter: "#000000",
gradientEnd: "#400000",
gradientStart: "#ff0000",
lineWidth: 1.5,
numCircles: 1,
radiusSize: 100,
smokeOpacity: 10
},
{
bgColorInner: "#ffffff",
bgColorOuter: "#000000",
gradientEnd: "#000000",
gradientStart: "#000000",
lineWidth: 2.2,
numCircles: 1,
radiusSize: 100,
smokeOpacity: 10
},
{
bgColorInner: "#ffffff",
bgColorOuter: "#ffffff",
gradientEnd: "#696969",
gradientStart: "#636363",
lineWidth: 1,
numCircles: 1,
radiusSize: 100,
smokeOpacity: 5
},
{
bgColorInner: "#3b003b",
bgColorOuter: "#630063",
gradientEnd: "#cccc00",
gradientStart: "#ffff00",
lineWidth: 1,
numCircles: 1,
radiusSize: 100,
smokeOpacity: 5
},
{
bgColorInner: "#ffffff",
bgColorOuter: "#ebebeb",
gradientEnd: "#012e82",
gradientStart: "#2600ff",
lineWidth: 1.5,
numCircles: 1,
radiusSize: 100,
smokeOpacity: 10
},
{
bgColorInner: "#4d4d4d",
bgColorOuter: "#000000",
gradientEnd: "#00c48d",
gradientStart: "#03ffea",
lineWidth: 1,
numCircles: 1,
radiusSize: 100,
smokeOpacity: 5
}
];
//Set download size
$('#downloadWidth').val($(window).width());
$('#downloadHeight').val($(window).height());
//Go to samples
$('.sidebar-wrapper').on('click', '.btn-samples', function(){
niceScroll.doScrollTop($('.generator-form-wrap').scrollTop() + $('#samples-section').position().top - 89);
console.log($('.generator-form-wrap').scrollTop);
return false;
});
//Generate
$('.sidebar-wrapper').on('click', '.btn-generate', function(){
setNewParams();
smokyBG.data('waterpipe').generate();
return false;
});
//Download
$('.sidebar-wrapper').on('click', '.btn-download', function(){
var width = $('#downloadWidth').val(),
height = $('#downloadHeight').val();
smokyBG.data('waterpipe').download(width, height);
return false;
});
//Generate sample
$('.sidebar-wrapper').on('click', '.sample-smoke', function(){
var sampleID = $(this).attr('data-id');
loadParams(sampleParams[sampleID]);
$('.btn-generate').click();
return false;
});
//Init color pickers
var gradientStartObj = $('#gradientStart').colpick({
layout:'hex',
submit:0,
colorScheme:'dark',
onChange:function(hsb,hex,rgb,el,bySetColor) {
$(el).css('border-color','#'+hex);
$(el).val('#'+hex);
}
}).keyup(function(){
$(this).colpickSetColor(this.value);
});
var gradientEndObj = $('#gradientEnd').colpick({
layout:'hex',
submit:0,
colorScheme:'dark',
onChange:function(hsb,hex,rgb,el,bySetColor) {
$(el).css('border-color','#'+hex);
$(el).val('#'+hex);
}
}).keyup(function(){
$(this).colpickSetColor(this.value);
});
var bgColorOuterObj = $('#bgColorOuter').colpick({
layout:'hex',
submit:0,
colorScheme:'dark',
onChange:function(hsb,hex,rgb,el,bySetColor) {
$(el).css('border-color','#'+hex);
$(el).val('#'+hex);
}
}).keyup(function(){
$(this).colpickSetColor(this.value);
});
var bgColorInnerObj = $('#bgColorInner').colpick({
layout:'hex',
submit:0,
colorScheme:'dark',
onChange:function(hsb,hex,rgb,el,bySetColor) {
$(el).css('border-color','#'+hex);
$(el).val('#'+hex);
}
}).keyup(function(){
$(this).colpickSetColor(this.value);
});
//Smoke Opacity slider
var smokeOpacitySlider = $('.smokeOpacity-slider').noUiSlider({
start: [ 10 ],
range: {
'min': [ 0 ],
'max': [ 100 ]
},
step: 5,
serialization: {
lower: [
$.Link({
target: $('#smokeOpacity')
})
],
format: {
decimals: 0,
mark: '.'
}
}
});
smokeOpacitySlider.on({
slide: function(){
var sliderValue = $(this).val();
$(this).parents('.input-group').find('.value').html(sliderValue+'%');
},
change: function(){
var sliderValue = $(this).val();
$(this).parents('.input-group').find('.value').html(sliderValue+'%');
}
});
//Number of Smokes slider
var numCirclesSlider = $('.numCircles-slider').noUiSlider({
start: [ 1 ],
range: {
'min': [ 1 ],
'max': [ 5 ]
},
step: 1,
serialization: {
lower: [
$.Link({
target: $('#numCircles')
})
],
format: {
decimals: 0,
mark: '.'
}
}
});
numCirclesSlider.on({
slide: function(){
var sliderValue = $(this).val();
$(this).parents('.input-group').find('.value').html(sliderValue);
},
change: function(){
var sliderValue = $(this).val();
$(this).parents('.input-group').find('.value').html(sliderValue);
}
});
//Smoke Size slider
var radiusSizeSlider = $('.radiusSize-slider').noUiSlider({
start: [ 100 ],
range: {
'min': [ 10 ],
'max': [ 300 ]
},
step: 1,
serialization: {
lower: [
$.Link({
target: $('#radiusSize')
})
],
format: {
decimals: 0,
mark: '.'
}
}
});
radiusSizeSlider.on({
slide: function(){
var sliderValue = $(this).val();
$(this).parents('.input-group').find('.value').html(sliderValue+'%');
},
change: function(){
var sliderValue = $(this).val();
$(this).parents('.input-group').find('.value').html(sliderValue+'%');
}
});
//Smoke Size slider
var lineWidthSlider = $('.lineWidth-slider').noUiSlider({
start: [ 2 ],
range: {
'min': [ 0.1 ],
'max': [ 10 ]
},
step: 0.1,
serialization: {
lower: [
$.Link({
target: $('#lineWidth')
})
],
format: {
decimals: 1,
mark: '.'
}
}
});
lineWidthSlider.on({
slide: function(){
var sliderValue = $(this).val();
$(this).parents('.input-group').find('.value').html(sliderValue+'px');
},
change: function(){
var sliderValue = $(this).val();
$(this).parents('.input-group').find('.value').html(sliderValue+'px');
}
});
//Set new params
function setNewParams(){
var params = $('.generator-params').serializeObject();
console.log(params);
//Set new values
smokyBG.data('waterpipe').setOption('gradientStart', params.gradientStart);
smokyBG.data('waterpipe').setOption('gradientEnd', params.gradientEnd);
smokyBG.data('waterpipe').setOption('smokeOpacity', params.smokeOpacity/100);
smokyBG.data('waterpipe').setOption('numCircles', params.numCircles);
var radius = $(window).height()*0.8/2*(params.radiusSize/100);
smokyBG.data('waterpipe').setOption('maxMaxRad', radius);
smokyBG.data('waterpipe').setOption('minMaxRad', radius);
smokyBG.data('waterpipe').setOption('lineWidth', params.lineWidth);
smokyBG.data('waterpipe').setOption('bgColorOuter', params.bgColorOuter);
smokyBG.data('waterpipe').setOption('bgColorInner', params.bgColorInner);
}
//Load params (samples)
function loadParams(params){
gradientStartObj.colpickSetColor(params.gradientStart.replace('#', ''));
gradientEndObj.colpickSetColor(params.gradientEnd.replace('#', ''));
smokeOpacitySlider.val(params.smokeOpacity).change();
numCirclesSlider.val(params.numCircles).change();
radiusSizeSlider.val(params.radiusSize).change();
lineWidthSlider.val(params.lineWidth).change();
bgColorOuterObj.colpickSetColor(params.bgColorOuter.replace('#', ''));
bgColorInnerObj.colpickSetColor(params.bgColorInner.replace('#', ''));
}
});