fb983b651d
Signed-off-by: Nico Schottelius <nico@nico-notebook.schottelius.org>
277 lines
9.3 KiB
JavaScript
277 lines
9.3 KiB
JavaScript
// also declared in datacenterlight/js/main.js
|
|
function _initNavUrl() {
|
|
// $('.url').click(function(event) {
|
|
// event.preventDefault();
|
|
// var href = $(this).attr('href');
|
|
// $('.navbar-collapse').removeClass('in');
|
|
// $('.navbar-collapse').addClass('collapsing');
|
|
// if ($(href).length) {
|
|
// $('html, body').animate({
|
|
// scrollTop: $(href).offset().top
|
|
// }, 1000);
|
|
// } else {
|
|
// window.location.href = '/datacenterlight' + href;
|
|
// }
|
|
// });
|
|
$('.url-init').each(function(idx, el) {
|
|
var $this = $(el);
|
|
var currentPath = window.location.pathname;
|
|
var thisPaths = $this.attr('href').split('#')
|
|
if ($this.hasClass('dropdown-toggle') && window.matchMedia("(max-width: 767px)").matches) {
|
|
$this.removeClass('url-init');
|
|
$this.attr('href', '');
|
|
} else if ($('#'+thisPaths[1]).length) {
|
|
$this.removeClass('url-init').addClass('url');
|
|
$this.attr('href', '#' + thisPaths[1]);
|
|
} else {
|
|
$this.removeClass('url-init');
|
|
}
|
|
});
|
|
$('.url').click(function(event) {
|
|
event.preventDefault();
|
|
var href = $(this).attr('href');
|
|
$('.navbar-collapse').removeClass('in');
|
|
$('.navbar-collapse').addClass('collapsing');
|
|
if ($(href).length) {
|
|
$('html, body').animate({
|
|
scrollTop: $(href).offset().top
|
|
}, 1000);
|
|
}
|
|
});
|
|
}
|
|
|
|
/* ---------------------------------------------
|
|
Nav panel classic
|
|
--------------------------------------------- */
|
|
if (window.matchMedia("(min-width: 767px)").matches) {
|
|
$('ul.nav li.dropdown').hover(function() {
|
|
$(this).find('.dropdown-menu').stop(true, true).fadeIn(500);
|
|
}, function() {
|
|
$(this).find('.dropdown-menu').stop(true, true).fadeOut(500);
|
|
});
|
|
} else {
|
|
/* the viewport is less than 400 pixels wide */
|
|
}
|
|
|
|
$( document ).ready(function() {
|
|
|
|
$('[data-toggle="tooltip"]').tooltip();
|
|
|
|
_initNavUrl();
|
|
|
|
/*
|
|
* Replace all SVG images with inline SVG
|
|
*/
|
|
$('.svg-img').each(function() {
|
|
var $img = $(this);
|
|
var imgID = $img.attr('id');
|
|
var imgClass = $img.attr('class');
|
|
var imgURL = $img.attr('src');
|
|
|
|
jQuery.get(imgURL, function(data) {
|
|
// Get the SVG tag, ignore the rest
|
|
var $svg = jQuery(data).find('svg');
|
|
|
|
// Add replaced image's ID to the new SVG
|
|
if(typeof imgID !== 'undefined') {
|
|
$svg = $svg.attr('id', imgID);
|
|
}
|
|
// Add replaced image's classes to the new SVG
|
|
if(typeof imgClass !== 'undefined') {
|
|
$svg = $svg.attr('class', imgClass+' replaced-svg');
|
|
}
|
|
|
|
// Remove any invalid XML tags as per http://validator.w3.org
|
|
$svg = $svg.removeAttr('xmlns:a');
|
|
|
|
// Check if the viewport is set, if the viewport is not set the SVG wont't scale.
|
|
if(!$svg.attr('viewBox') && $svg.attr('height') && $svg.attr('width')) {
|
|
$svg.attr('viewBox', '0 0 ' + $svg.attr('height') + ' ' + $svg.attr('width'))
|
|
}
|
|
|
|
// Replace image with new SVG
|
|
$img.replaceWith($svg);
|
|
|
|
}, 'xml');
|
|
});
|
|
|
|
$('.alt-text').on('mouseenter mouseleave', function(e){
|
|
var $this = $(this);
|
|
var txt = $this.text();
|
|
var alt = $this.attr('data-alt');
|
|
$this.text(alt);
|
|
$this.attr('data-alt', txt);
|
|
});
|
|
|
|
});
|
|
|
|
function getScrollbarWidth() {
|
|
var outer = document.createElement("div");
|
|
outer.style.visibility = "hidden";
|
|
outer.style.width = "100px";
|
|
outer.style.msOverflowStyle = "scrollbar"; // needed for WinJS apps
|
|
|
|
document.body.appendChild(outer);
|
|
|
|
var widthNoScroll = outer.offsetWidth;
|
|
// force scrollbars
|
|
outer.style.overflow = "scroll";
|
|
|
|
// add innerdiv
|
|
var inner = document.createElement("div");
|
|
inner.style.width = "100%";
|
|
outer.appendChild(inner);
|
|
|
|
var widthWithScroll = inner.offsetWidth;
|
|
|
|
// remove divs
|
|
outer.parentNode.removeChild(outer);
|
|
|
|
return widthNoScroll - widthWithScroll;
|
|
}
|
|
|
|
// globally stores the width of scrollbar
|
|
var scrollbarWidth = getScrollbarWidth();
|
|
var paddingAdjusted = false;
|
|
|
|
$( document ).ready(function() {
|
|
// add proper padding to fixed topnav on modal show
|
|
$('body').on('click', '[data-toggle=modal]', function(){
|
|
var $body = $('body');
|
|
if ($body[0].scrollHeight > $body.height()) {
|
|
scrollbarWidth = getScrollbarWidth();
|
|
var topnavPadding = parseInt($('.navbar-fixed-top.topnav').css('padding-right'));
|
|
$('.navbar-fixed-top.topnav').css('padding-right', topnavPadding+scrollbarWidth);
|
|
paddingAdjusted = true;
|
|
}
|
|
});
|
|
|
|
// remove added padding on modal hide
|
|
$('body').on('hidden.bs.modal', function(){
|
|
if (paddingAdjusted) {
|
|
var topnavPadding = parseInt($('.navbar-fixed-top.topnav').css('padding-right'));
|
|
$('.navbar-fixed-top.topnav').css('padding-right', topnavPadding-scrollbarWidth);
|
|
}
|
|
});
|
|
|
|
/* ---------------------------------------------
|
|
Scripts initialization
|
|
--------------------------------------------- */
|
|
var minRam = 1;
|
|
if(window.minRam){
|
|
minRam = window.minRam;
|
|
}
|
|
var cardPricing = {
|
|
'cpu': {
|
|
'id': 'coreValue',
|
|
'value': 1,
|
|
'min': 1,
|
|
'max': 48,
|
|
'interval': 1
|
|
},
|
|
'ram': {
|
|
'id': 'ramValue',
|
|
'value': 2,
|
|
'min': minRam,
|
|
'max': 200,
|
|
'interval': 1
|
|
},
|
|
'storage': {
|
|
'id': 'storageValue',
|
|
'value': 10,
|
|
'min': 10,
|
|
'max': 2000,
|
|
'interval': 10
|
|
}
|
|
};
|
|
|
|
function _initPricing() {
|
|
_fetchPricing();
|
|
|
|
$('.fa-minus-circle.left').click(function(event) {
|
|
var data = $(this).data('minus');
|
|
|
|
if (cardPricing[data].value > cardPricing[data].min) {
|
|
if(data === 'ram' && String(cardPricing[data].value) === "1" && minRam === 0.5){
|
|
cardPricing[data].value = 0.5;
|
|
$('#ramValue').val('0.5');
|
|
$("#ramValue").attr('step', 0.5);
|
|
} else {
|
|
cardPricing[data].value = Number(cardPricing[data].value) - cardPricing[data].interval;
|
|
}
|
|
}
|
|
_fetchPricing();
|
|
$('#ramValue').data('old-value', $('#ramValue').val());
|
|
});
|
|
$('.fa-plus-circle.right').click(function(event) {
|
|
var data = $(this).data('plus');
|
|
if (cardPricing[data].value < cardPricing[data].max) {
|
|
if(data === 'ram' && String(cardPricing[data].value) === "0.5" && minRam === 0.5){
|
|
cardPricing[data].value = 1;
|
|
$('#ramValue').val('1');
|
|
$("#ramValue").attr('step', 1);
|
|
} else {
|
|
cardPricing[data].value = Number(cardPricing[data].value) + cardPricing[data].interval;
|
|
}
|
|
}
|
|
_fetchPricing();
|
|
$('#ramValue').data('old-value', $('#ramValue').val());
|
|
});
|
|
|
|
$('.input-price').change(function() {
|
|
var data = $(this).attr("name");
|
|
var input = $('input[name=' + data + ']');
|
|
var inputValue = input.val();
|
|
|
|
if(data === 'ram') {
|
|
var ramInput = $('#ramValue');
|
|
if ($('#ramValue').data('old-value') < $('#ramValue').val()) {
|
|
if($('#ramValue').val() === '1' && minRam === 0.5) {
|
|
$("#ramValue").attr('step', 1);
|
|
$('#ramValue').val('1');
|
|
}
|
|
} else {
|
|
if($('#ramValue').val() === '0' && minRam === 0.5) {
|
|
$("#ramValue").attr('step', 0.5);
|
|
$('#ramValue').val('0.5');
|
|
}
|
|
}
|
|
inputValue = $('#ramValue').val();
|
|
$('#ramValue').data('old-value', $('#ramValue').val());
|
|
}
|
|
cardPricing[data].value = inputValue;
|
|
_fetchPricing();
|
|
});
|
|
}
|
|
|
|
function _fetchPricing() {
|
|
Object.keys(cardPricing).map(function(element) {
|
|
$('input[name=' + element + ']').val(cardPricing[element].value);
|
|
});
|
|
_calcPricing();
|
|
}
|
|
|
|
function _calcPricing() {
|
|
if(typeof window.coresUnitPrice === 'undefined'){
|
|
window.coresUnitPrice = 5;
|
|
}
|
|
if(typeof window.ramUnitPrice === 'undefined'){
|
|
window.ramUnitPrice = 2;
|
|
}
|
|
if(typeof window.ssdUnitPrice === 'undefined'){
|
|
window.ssdUnitPrice = 0.6;
|
|
}
|
|
if(typeof window.discountAmount === 'undefined'){
|
|
window.discountAmount = 0;
|
|
}
|
|
var total = (cardPricing['cpu'].value * window.coresUnitPrice) +
|
|
(cardPricing['ram'].value * window.ramUnitPrice) +
|
|
(cardPricing['storage'].value * window.ssdUnitPrice) -
|
|
window.discountAmount;
|
|
total = parseFloat(total.toFixed(2));
|
|
$("#total").text(total);
|
|
}
|
|
|
|
_initPricing();
|
|
$('#ramValue').data('old-value', $('#ramValue').val());
|
|
});
|