Разработка сайта по составлению комплектации компьютера
Создание удобного сайта, где можно заказать все нужные устройства для сборки компьютера. Реализация методики тестирования программного продукта. Отладка программы. Модификация кода программы с целью улучшения ее эффективности. Руководство пользователя.
Рубрика | Программирование, компьютеры и кибернетика |
Вид | курсовая работа |
Язык | русский |
Дата добавления | 18.03.2022 |
Размер файла | 3,5 M |
Отправить свою хорошую работу в базу знаний просто. Используйте форму, расположенную ниже
Студенты, аспиранты, молодые ученые, использующие базу знаний в своей учебе и работе, будут вам очень благодарны.
remix: function(arg){
return this.each(function(){
var config = this.config,
$t = $(this);
config.origOrder = [];
$t.find(config.targetSelector).each(function(){
var $th = $(this);
$th.addClass('mix_all');
config.origOrder.push($th);
});
if(!config.mixing && typeof arg !== 'undefined'){
$(config.filterSelector).removeClass('active');
$(config.filterSelector+'[data-filter="'+arg+'"]').addClass('active');
goMix(arg, null, null, $t, config);
};
});
}
};
// DECLARE PLUGIN
$.fn.mixitup = function(method, arg){
if (methods[method]) {
return methods[method].apply( this, Array.prototype.slice.call(arguments,1));
} else if (typeof method === 'object' || ! method){
return methods.init.apply( this, arguments );
};
};
/* ==== THE MAGIC ==== */
function goMix(filter, sortby, order, $cont, config){
// WE ARE NOW MIXING
clearInterval(config.failsafe);
config.mixing = true;
// APPLY ARGS TO CONFIG
config.filter = filter;
// FIRE "ONMIXSTART" CALLBACK
if(typeof config.onMixStart == 'function') {
var output = config.onMixStart.call(this, config);
// UPDATE CONFIG IF DATA RETURNED
config = output ? output : config;
};
// SHORT LOCAL VARS
var speed = config.transitionSpeed;
// REBUILD TRANSITION AND PERSPECTIVE OBJECTS
for(var i = 0; i<2; i++){
var a = i==0 ? a = config.prefix : '';
config.transition[a+'transition'] = 'all '+speed+'ms linear';
config.transition[a+'transform'] = a+'translate3d(0,0,0)';
config.perspective[a+'perspective'] = config.perspectiveDistance+'px';
config.perspective[a+'perspective-origin'] = config.perspectiveOrigin;
};
// CACHE TARGET ELEMENTS FOR QUICK ACCESS
var mixSelector = config.targetSelector,
$targets = $cont.find(mixSelector);
// ADD DATA OBJECT TO EACH TARGET
$targets.each(function(){
this.data = {};
});
// RE-DEFINE CONTAINER INCASE NOT IMMEDIATE PARENT OF TARGET ELEMENTS
var $par = $targets.parent();
// ADD PERSPECTIVE TO CONTAINER
$par.css(config.perspective);
// SETUP EASING
config.easingFallback = 'ease-in-out';
if(config.easing == 'smooth')config.easing = 'cubic-bezier(0.25, 0.46, 0.45, 0.94)';
if(config.easing == 'snap')config.easing = 'cubic-bezier(0.77, 0, 0.175, 1)';
if(config.easing == 'windback'){
config.easing = 'cubic-bezier(0.175, 0.885, 0.320, 1.275)',
config.easingFallback = 'cubic-bezier(0.175, 0.885, 0.320, 1)'; // Fall-back for old webkit, with no values > 1 or < 1
};
if(config.easing == 'windup'){
config.easing = 'cubic-bezier(0.6, -0.28, 0.735, 0.045)',
config.easingFallback = 'cubic-bezier(0.6, 0.28, 0.735, 0.045)';
};
// USE LIST SPECIFIC EFFECTS IF DECLARED
var effectsOut = config.layoutMode == 'list' && config.listEffects != null ? config.listEffects : config.effects;
// BUILD EFFECTS STRINGS & SKIP IF IE8
if (Array.prototype.indexOf){
config.fade = effectsOut.indexOf('fade') > -1 ? '0' : '';
config.scale = effectsOut.indexOf('scale') > -1 ? 'scale(.01)' : '';
config.rotateZ = effectsOut.indexOf('rotateZ') > -1 ? 'rotate(180deg)' : '';
config.rotateY = effectsOut.indexOf('rotateY') > -1 ? 'rotateY(90deg)' : '';
config.rotateX = effectsOut.indexOf('rotateX') > -1 ? 'rotateX(90deg)' : '';
config.blur = effectsOut.indexOf('blur') > -1 ? 'blur(8px)' : '';
config.grayscale = effectsOut.indexOf('grayscale') > -1 ? 'grayscale(100%)' : '';
};
// DECLARE NEW JQUERY OBJECTS FOR GROUPING
var $show = $(),
$hide = $(),
filterArray = [],
multiDimensional = false;
// BUILD FILTER ARRAY(S)
if(typeof filter === 'string'){
// SINGLE DIMENSIONAL FILTERING
filterArray = buildFilterArray(filter);
} else {
// MULTI DIMENSIONAL FILTERING
multiDimensional = true;
$.each(filter,function(i){
filterArray[i] = buildFilterArray(this);
});
};
// "OR" LOGIC (DEFAULT)
if(config.filterLogic == 'or'){
if(filterArray[0] == '') filterArray.shift(); // IF FIRST ITEM IN ARRAY IS AN EMPTY SPACE, DELETE
// IF NO ELEMENTS ARE DESIRED THEN HIDE ALL VISIBLE ELEMENTS
if(filterArray.length < 1){
$hide = $hide.add($cont.find(mixSelector+':visible'));
} else {
// ELSE CHECK EACH TARGET ELEMENT FOR ANY FILTER CATEGORY:
$targets.each(function(){
var $t = $(this);
if(!multiDimensional){
// IF HAS ANY FILTER, ADD TO "SHOW" OBJECT
if($t.is('.'+filterArray.join(', .'))){
$show = $show.add($t);
// ELSE IF HAS NO FILTERS, ADD TO "HIDE" OBJECT
} else {
$hide = $hide.add($t);
};
} else {
var pass = 0;
// FOR EACH DIMENSION
$.each(filterArray,function(i){
if(this.length){
if($t.is('.'+this.join(', .'))){
pass++
};
} else if(pass > 0){
pass++;
};
});
// IF PASSES ALL DIMENSIONS, SHOW
if(pass == filterArray.length){
$show = $show.add($t);
// ELSE HIDE
} else {
$hide = $hide.add($t);
};
};
});
};
} else {
// "AND" LOGIC
// ADD "MIX_SHOW" CLASS TO ELEMENTS THAT HAVE ALL FILTERS
$show = $show.add($par.find(mixSelector+'.'+filterArray.join('.')));
// ADD "MIX_HIDE" CLASS TO EVERYTHING ELSE
$hide = $hide.add($par.find(mixSelector+':not(.'+filterArray.join('.')+'):visible'));
};
// GET TOTAL NUMBER OF ELEMENTS TO SHOW
var total = $show.length;
// DECLARE NEW JQUERY OBJECTS
var $tohide = $(),
$toshow = $(),
$pre = $();
// FOR ELEMENTS TO BE HIDDEN, IF NOT ALREADY HIDDEN THEN ADD TO OBJECTS "TOHIDE" AND "PRE"
// TO INDICATE PRE-EXISTING ELEMENTS TO BE HIDDEN
$hide.each(function(){
var $t = $(this);
if($t.css('display') != 'none'){
$tohide = $tohide.add($t);
$pre = $pre.add($t);
};
});
// IF ALL ELEMENTS ARE ALREADY SHOWN AND THERE IS NOTHING TO HIDE, AND NOT PERFORMING A LAYOUT CHANGE OR SORT:
if($show.filter(':visible').length == total && !$tohide.length && !sortby){
if(config.origLayout == config.layoutMode){
// THEN CLEAN UP AND GO HOME
resetFilter();
return false;
} else {
// IF ONLY ONE ITEM AND CHANGING FORM GRID TO LIST, MOST LIKELY POSITION WILL NOT CHANGE SO WE'RE DONE
if($show.length == 1){
if(config.layoutMode == 'list'){
$cont.addClass(config.listClass);
$cont.removeClass(config.gridClass);
$pre.css('display',config.targetDisplayList);
} else {
$cont.addClass(config.gridClass);
$cont.removeClass(config.listClass);
$pre.css('display',config.targetDisplayGrid);
};
// THEN CLEAN UP AND GO HOME
resetFilter();
return false;
}
};
};
// GET CONTAINER'S STARTING HEIGHT
config.origHeight = $par.height();
// IF THERE IS SOMETHING TO BE SHOWN:
if($show.length){
// REMOVE "FAIL CLASS" FROM CONTAINER IF EXISTS
$cont.removeClass(config.failClass);
// FOR ELEMENTS TO BE SHOWN, IF NOT ALREADY SHOWN THEN ADD TO OBJECTS "TOSHOW" ELSE ADD CLASS "MIX_PRE"
// TO INDICATE PRE-EXISTING ELEMENT
$show.each(function(){
var $t = $(this);
if($t.css('display') == 'none'){
$toshow = $toshow.add($t)
} else {
$pre = $pre.add($t);
};
});
// IF NON-ANIMATED LAYOUT MODE TRANSITION:
if((config.origLayout != config.layoutMode) && config.animateGridList == false){
// ADD NEW DISPLAY TYPES, CLEAN UP AND GO HOME
if(config.layoutMode == 'list'){
$cont.addClass(config.listClass);
$cont.removeClass(config.gridClass);
$pre.css('display',config.targetDisplayList);
} else {
$cont.addClass(config.gridClass);
$cont.removeClass(config.listClass);
$pre.css('display',config.targetDisplayGrid);
};
resetFilter();
return false;
};
// IF IE, FUCK OFF, AND THEN CLEAN UP AND GO HOME
if(!window.atob){
resetFilter();
return false;
};
// OVERRIDE ANY EXISTING TRANSITION TIMING FOR CALCULATIONS
$targets.css(config.clean);
// FOR EACH PRE-EXISTING ELEMENT, ADD STARTING POSITION TO 'ORIGPOS' ARRAY
$pre.each(function(){
this.data.origPos = $(this).offset();
});
// TEMPORARILY SHOW ALL ELEMENTS TO SHOW (THAT ARE NOT ALREADY SHOWN), WITHOUT HIDING ELEMENTS TO HIDE
// AND ADD/REMOVE GRID AND LIST CLASSES FROM CONTAINER
if(config.layoutMode == 'list'){
$cont.addClass(config.listClass);
$cont.removeClass(config.gridClass);
$toshow.css('display',config.targetDisplayList);
} else {
$cont.addClass(config.gridClass);
$cont.removeClass(config.listClass);
$toshow.css('display',config.targetDisplayGrid);
};
// FOR EACH ELEMENT NOW SHOWN, ADD ITS INTERMEDIATE POSITION TO 'SHOWINTERPOS' ARRAY
$toshow.each(function(){
this.data.showInterPos = $(this).offset();
});
// FOR EACH ELEMENT TO BE HIDDEN, BUT NOT YET HIDDEN, AND NOW MOVED DUE TO SHOWN ELEMENTS,
// ADD ITS INTERMEDIATE POSITION TO 'HIDEINTERPOS' ARRAY
$tohide.each(function(){
this.data.hideInterPos = $(this).offset();
});
// FOR EACH PRE-EXISTING ELEMENT, NOW MOVED DUE TO SHOWN ELEMENTS, ADD ITS POSITION TO 'PREINTERPOS' ARRAY
$pre.each(function(){
this.data.preInterPos = $(this).offset();
});
// SET DISPLAY PROPERTY OF PRE-EXISTING ELEMENTS INCASE WE ARE CHANGING LAYOUT MODE
if(config.layoutMode == 'list'){
$pre.css('display',config.targetDisplayList);
} else {
$pre.css('display',config.targetDisplayGrid);
};
// IF A SORT ARGUMENT HAS BEEN SENT, RUN SORT FUNCTION SO OBJECTS WILL MOVE TO THEIR FINAL ORDER
if(sortby){
sort(sortby, order, $cont, config);
};
// IF VISIBLE SORT ORDER IS THE SAME (WHICH WOULD NOT TRIGGER A TRANSITION EVENT)
if(sortby && compareArr(config.origSort, config.checkSort)){
// THEN CLEAN UP AND GO HOME
resetFilter();
return false;
};
// TEMPORARILY HIDE ALL SHOWN ELEMENTS TO HIDE
$tohide.hide();
// FOR EACH ELEMENT TO SHOW, AND NOW MOVED DUE TO HIDDEN ELEMENTS BEING REMOVED,
// ADD ITS POSITION TO 'FINALPOS' ARRAY
$toshow.each(function(i){
this.data.finalPos = $(this).offset();
});
// FOR EACH PRE-EXISTING ELEMENT NOW MOVED DUE TO HIDDEN ELEMENTS BEING REMOVED,
// ADD ITS POSITION TO 'FINALPREPOS' ARRAY
$pre.each(function(){
this.data.finalPrePos = $(this).offset();
});
// SINCE WE ARE IN OUT FINAL STATE, GET NEW HEIGHT OF CONTAINER
config.newHeight = $par.height();
// IF A SORT ARGUMENT AS BEEN SENT, RUN SORT FUNCTION 'RESET' TO MOVE ELEMENTS BACK TO THEIR STARTING ORDER
if(sortby){
sort('reset', null, $cont, config);
};
// RE-HIDE ALL ELEMENTS TEMPORARILY SHOWN
$toshow.hide();
// SET DISPLAY PROPERTY OF PRE-EXISTING ELEMENTS BACK TO THEIR
// ORIGINAL PROPERTY, INCASE WE ARE CHANGING LAYOUT MODE
$pre.css('display',config.origDisplay);
// ADD/REMOVE GRID AND LIST CLASSES FROM CONTAINER
if(config.origDisplay == 'block'){
$cont.addClass(config.listClass);
$toshow.css('display', config.targetDisplayList);
} else {
$cont.removeClass(config.listClass);
$toshow.css('display', config.targetDisplayGrid);
};
// IF WE ARE ANIMATING CONTAINER, RESET IT TO ITS STARTING HEIGHT
if(config.resizeContainer)$par.css('height', config.origHeight+'px');
// ADD TRANSFORMS TO ALL ELEMENTS TO SHOW
var toShowCSS = {};
for(var i = 0; i<2; i++){
var a = i==0 ? a = config.prefix : '';
toShowCSS[a+'transform'] = config.scale+' '+config.rotateX+' '+config.rotateY+' '+config.rotateZ;
toShowCSS[a+'filter'] = config.blur+' '+config.grayscale;
};
$toshow.css(toShowCSS);
// FOR EACH PRE-EXISTING ELEMENT, SUBTRACT ITS INTERMEDIATE POSITION FROM ITS ORIGINAL POSITION
// TO GET ITS STARTING OFFSET
$pre.each(function(){
var data = this.data,
$t = $(this);
if ($t.hasClass('mix_tohide')){
data.preTX = data.origPos.left - data.hideInterPos.left;
data.preTY = data.origPos.top - data.hideInterPos.top;
} else {
data.preTX = data.origPos.left - data.preInterPos.left;
data.preTY = data.origPos.top - data.preInterPos.top;
};
var preCSS = {};
for(var i = 0; i<2; i++){
var a = i==0 ? a = config.prefix : '';
preCSS[a+'transform'] = 'translate('+data.preTX+'px,'+data.preTY+'px)';
};
$t.css(preCSS);
});
// ADD/REMOVE GRID AND LIST CLASSES FROM CONTAINER
if(config.layoutMode == 'list'){
$cont.addClass(config.listClass);
$cont.removeClass(config.gridClass);
} else {
$cont.addClass(config.gridClass);
$cont.removeClass(config.listClass);
};
// WRAP ANIMATION FUNCTIONS IN 10ms TIMEOUT TO PREVENT RACE CONDITION
var delay = setTimeout(function(){
// APPLY TRANSITION TIMING TO CONTAINER, AND BEGIN ANIMATION TO NEW HEIGHT
if(config.resizeContainer){
var containerCSS = {};
for(var i = 0; i<2; i++){
var a = i==0 ? a = config.prefix : '';
containerCSS[a+'transition'] = 'all '+speed+'ms ease-in-out';
containerCSS['height'] = config.newHeight+'px';
};
$par.css(containerCSS);
};
// BEGIN FADING IN/OUT OF ALL ELEMENTS TO SHOW/HIDE
$tohide.css('opacity',config.fade);
$toshow.css('opacity',1);
// FOR EACH ELEMENT BEING SHOWN, CALCULATE ITS TRAJECTORY BY SUBTRACTING
// ITS INTERMEDIATE POSITION FROM ITS FINAL POSITION.
// ALSO ADD SPEED AND EASING
$toshow.each(function(){
var data = this.data;
data.tX = data.finalPos.left - data.showInterPos.left;
data.tY = data.finalPos.top - data.showInterPos.top;
var toShowCSS = {};
for(var i = 0; i<2; i++){
var a = i==0 ? a = config.prefix : '';
toShowCSS[a+'transition-property'] = a+'transform, '+a+'filter, opacity';
toShowCSS[a+'transition-timing-function'] = config.easing+', linear, linear';
toShowCSS[a+'transition-duration'] = speed+'ms';
toShowCSS[a+'transition-delay'] = '0';
toShowCSS[a+'transform'] = 'translate('+data.tX+'px,'+data.tY+'px)';
toShowCSS[a+'filter'] = 'none';
};
$(this).css('-webkit-transition', 'all '+speed+'ms '+config.easingFallback).css(toShowCSS);
});
// FOR EACH PRE-EXISTING ELEMENT, IF IT HAS A FINAL POSITION, CALCULATE
// ITS TRAJETORY BY SUBTRACTING ITS INTERMEDIATE POSITION FROM ITS FINAL POSITION.
// ALSO ADD SPEED AND EASING
$pre.each(function(){
var data = this.data
data.tX = data.finalPrePos.left != 0 ? data.finalPrePos.left - data.preInterPos.left : 0;
data.tY = data.finalPrePos.left != 0 ? data.finalPrePos.top - data.preInterPos.top : 0;
var preCSS = {};
for(var i = 0; i<2; i++){
var a = i==0 ? a = config.prefix : '';
preCSS[a+'transition'] = 'all '+speed+'ms '+config.easing;
preCSS[a+'transform'] = 'translate('+data.tX+'px,'+data.tY+'px)';
};
$(this).css('-webkit-transition', 'all '+speed+'ms '+config.easingFallback).css(preCSS);
});
// BEGIN TRANSFORMS ON ALL ELEMENTS TO BE HIDDEN
var toHideCSS = {};
for(var i = 0; i<2; i++){
var a = i==0 ? a = config.prefix : '';
toHideCSS[a+'transition'] = 'all '+speed+'ms '+config.easing+', '+a+'filter '+speed+'ms linear, opacity '+speed+'ms linear';
toHideCSS[a+'transform'] = config.scale+' '+config.rotateX+' '+config.rotateY+' '+config.rotateZ;
toHideCSS[a+'filter'] = config.blur+' '+config.grayscale;
toHideCSS['opacity'] = config.fade;
};
$tohide.css(toHideCSS);
// ALL ANIMATIONS HAVE NOW BEEN STARTED, NOW LISTEN FOR TRANSITION END:
$par.bind('webkitTransitionEnd transitionend otransitionend oTransitionEnd',function(e){
if (e.originalEvent.propertyName.indexOf('transform') > -1 || e.originalEvent.propertyName.indexOf('opacity') > -1){
if(mixSelector.indexOf('.') > -1){
// IF MIXSELECTOR IS A CLASS NAME
if($(e.target).hasClass(mixSelector.replace('.',''))){
resetFilter();
};
} else {
// IF MIXSELECTOR IS A TAG
if($(e.target).is(mixSelector)){
resetFilter();
};
};
};
});
},10);
// LAST RESORT EMERGENCY FAILSAFE
config.failsafe = setTimeout(function(){
if(config.mixing){
resetFilter();
};
}, speed + 400);
} else {
// ELSE IF NOTHING TO SHOW, AND EVERYTHING TO BE HIDDEN
// IF WE ARE RESIZING CONTAINER, SET ITS STARTING HEIGHT
if(config.resizeContainer)$par.css('height', config.origHeight+'px');
// IF IE, FUCK OFF, AND THEN GO HOME
if(!window.atob){
resetFilter();
return false;
};
// GROUP ALL ELEMENTS TO HIDE INTO JQUERY OBJECT
$tohide = $hide;
// WRAP ANIMATION FUNCTIONS IN A 10ms DELAY TO PREVENT RACE CONDITION
var delay = setTimeout(function(){
// APPLY PERSPECTIVE TO CONTAINER
$par.css(config.perspective);
// APPLY TRANSITION TIMING TO CONTAINER, AND BEGIN ANIMATION TO NEW HEIGHT
if(config.resizeContainer){
var containerCSS = {};
for(var i = 0; i<2; i++){
var a = i==0 ? a = config.prefix : '';
containerCSS[a+'transition'] = 'height '+speed+'ms ease-in-out';
containerCSS['height'] = config.minHeight+'px';
};
$par.css(containerCSS);
};
// APPLY TRANSITION TIMING TO ALL TARGET ELEMENTS
$targets.css(config.transition);
// GET TOTAL NUMBER OF ELEMENTS TO HIDE
var totalHide = $hide.length;
// IF SOMETHING TO HIDE:
if(totalHide){
// BEGIN TRANSFORMS ON ALL ELEMENTS TO BE HIDDEN
var toHideCSS = {};
for(var i = 0; i<2; i++){
var a = i==0 ? a = config.prefix : '';
toHideCSS[a+'transform'] = config.scale+' '+config.rotateX+' '+config.rotateY+' '+config.rotateZ;
toHideCSS[a+'filter'] = config.blur+' '+config.grayscale;
toHideCSS['opacity'] = config.fade;
};
$tohide.css(toHideCSS);
// ALL ANIMATIONS HAVE NOW BEEN STARTED, NOW LISTEN FOR TRANSITION END:
$par.bind('webkitTransitionEnd transitionend otransitionend oTransitionEnd',function(e){
if (e.originalEvent.propertyName.indexOf('transform') > -1 || e.originalEvent.propertyName.indexOf('opacity') > -1){
$cont.addClass(config.failClass);
resetFilter();
};
});
} else {
// ELSE, WE'RE DONE MIXING
config.mixing = false;
};
}, 10);
};
// CLEAN UP AND RESET FUNCTION
function resetFilter(){
// UNBIND TRANSITION END EVENTS FROM CONTAINER
$par.unbind('webkitTransitionEnd transitionend otransitionend oTransitionEnd');
// IF A SORT ARGUMENT HAS BEEN SENT, SORT ELEMENTS TO THEIR FINAL ORDER
if(sortby){
sort(sortby, order, $cont, config);
};
// EMPTY SORTING ARRAYS
config.startOrder = [], config.newOrder = [], config.origSort = [], config.checkSort = [];
// REMOVE INLINE STYLES FROM ALL TARGET ELEMENTS AND SLAM THE BRAKES ON
$targets.removeStyle(
config.prefix+'filter, filter, '+config.prefix+'transform, transform, opacity, display'
).css(config.clean).removeAttr('data-checksum');
// BECAUSE IE SUCKS
if(!window.atob){
$targets.css({
display: 'none',
opacity: '0'
});
};
// REMOVE HEIGHT FROM CONTAINER ONLY IF RESIZING
var remH = config.resizeContainer ? 'height' : '';
// REMOVE INLINE STYLES FROM CONTAINER
$par.removeStyle(
config.prefix+'transition, transition, '+config.prefix+'perspective, perspective, '+config.prefix+'perspective-origin, perspective-origin, '+remH
);
// ADD FINAL DISPLAY PROPERTIES AND OPACITY TO ALL SHOWN ELEMENTS
// CACHE CURRENT LAYOUT MODE & SORT FOR NEXT MIX
if(config.layoutMode == 'list'){
$show.css({display:config.targetDisplayList, opacity:'1'});
config.origDisplay = config.targetDisplayList;
} else {
$show.css({display:config.targetDisplayGrid, opacity:'1'});
config.origDisplay = config.targetDisplayGrid;
};
config.origLayout = config.layoutMode;
var wait = setTimeout(function(){
// LET GO OF THE BRAKES
$targets.removeStyle(config.prefix+'transition, transition');
// WE'RE DONE MIXING
config.mixing = false;
// FIRE "ONMIXEND" CALLBACK
if(typeof config.onMixEnd == 'function') {
var output = config.onMixEnd.call(this, config);
// UPDATE CONFIG IF DATA RETURNED
config = output ? output : config;
};
});
};
};
// SORT FUNCTION
function sort(sortby, order, $cont, config){
// COMPARE BY ATTRIBUTE
function compare(a,b) {
var sortAttrA = isNaN(a.attr(sortby) * 1) ? a.attr(sortby).toLowerCase() : a.attr(sortby) * 1,
sortAttrB = isNaN(b.attr(sortby) * 1) ? b.attr(sortby).toLowerCase() : b.attr(sortby) * 1;
if (sortAttrA < sortAttrB)
return -1;
if (sortAttrA > sortAttrB)
return 1;
return 0;
};
// REBUILD DOM
function rebuild(element){
if(order == 'asc'){
$sortWrapper.prepend(element).prepend(' ');
} else {
$sortWrapper.append(element).append(' ');
};
};
// RANDOMIZE ARRAY
function arrayShuffle(oldArray){
var newArray = oldArray.slice();
var len = newArray.length;
var i = len;
while (i--){
var p = parseInt(Math.random()*len);
var t = newArray[i];
newArray[i] = newArray[p];
newArray[p] = t;
};
return newArray;
};
// SORT
$cont.find(config.targetSelector).wrapAll('<div class="mix_sorter"/>');
var $sortWrapper = $cont.find('.mix_sorter');
if(!config.origSort.length){
$sortWrapper.find(config.targetSelector+':visible').each(function(){
$(this).wrap('<s/>');
config.origSort.push($(this).parent().html().replace(/\s+/g, ''));
$(this).unwrap();
});
};
$sortWrapper.empty();
if(sortby == 'reset'){
$.each(config.startOrder,function(){
$sortWrapper.append(this).append(' ');
});
} else if(sortby == 'default'){
$.each(config.origOrder,function(){
rebuild(this);
});
} else if(sortby == 'random'){
if(!config.newOrder.length){
config.newOrder = arrayShuffle(config.startOrder);
};
$.each(config.newOrder,function(){
$sortWrapper.append(this).append(' ');
});
} else if(sortby == 'custom'){
$.each(order, function(){
rebuild(this);
});
} else {
// SORT BY ATTRIBUTE
if(typeof config.origOrder[0].attr(sortby) === 'undefined'){
console.log('No such attribute found. Terminating');
return false;
};
if(!config.newOrder.length){
$.each(config.origOrder,function(){
config.newOrder.push($(this));
});
config.newOrder.sort(compare);
};
$.each(config.newOrder,function(){
rebuild(this);
});
};
config.checkSort = [];
$sortWrapper.find(config.targetSelector+':visible').each(function(i){
var $t = $(this);
if(i == 0){
// PREVENT COMPARE RETURNING FALSE POSITIVES ON ELEMENTS WITH NO CLASS/ATTRIBUTES
$t.attr('data-checksum','1');
};
$t.wrap('<s/>');
config.checkSort.push($t.parent().html().replace(/\s+/g, ''));
$t.unwrap();
});
$cont.find(config.targetSelector).unwrap();
};
// FIND VENDOR PREFIX
function prefix(el) {
var prefixes = ["Webkit", "Moz", "O", "ms"];
for (var i = 0; i < prefixes.length; i++){
if (prefixes[i] + "Transition" in el.style){
return prefixes[i];
};
};
return "transition" in el.style ? "" : false;
};
// REMOVE SPECIFIC STYLES
$.fn.removeStyle = function(style){
return this.each(function(){
var obj = $(this);
style = style.replace(/\s+/g, '');
var styles = style.split(',');
$.each(styles,function(){
var search = new RegExp(this.toString() + '[^;]+;?', 'g');
obj.attr('style', function(i, style){
if(style) return style.replace(search, '');
});
});
});
};
// COMPARE ARRAYS
function compareArr(a,b){
if (a.length != b.length) return false;
for (var i = 0; i < b.length; i++){
if (a[i].compare) {
if (!a[i].compare(b[i])) return false;
};
if (a[i] !== b[i]) return false;
};
return true;
};
// BUILD FILTER ARRAY(S)
function buildFilterArray(str){
// CLEAN FILTER STRING
str = str.replace(/\s{2,}/g, ' ');
// FOR EACH PEROID SEPERATED CLASS NAME, ADD STRING TO FILTER ARRAY
var arr = str.split(' ');
// IF ALL, REPLACE WITH MIX_ALL
$.each(arr,function(i){
if(this == 'all')arr[i] = 'mix_all';
});
if(arr[0] == "")arr.shift();
return arr;
};
})(jQuery);
if (typeof Object.create !== "function") {
Object.create = function (obj) {
function F() {}
F.prototype = obj;
return new F();
};
}
(function ($, window, document) {
var Carousel = {
init : function (options, el) {
var base = this;
base.$elem = $(el);
base.options = $.extend({}, $.fn.owlCarousel.options, base.$elem.data(), options);
base.userOptions = options;
base.loadContent();
},
loadContent : function () {
var base = this, url;
function getData(data) {
var i, content = "";
if (typeof base.options.jsonSuccess === "function") {
base.options.jsonSuccess.apply(this, [data]);
} else {
for (i in data.owl) {
if (data.owl.hasOwnProperty(i)) {
content += data.owl[i].item;
}
}
base.$elem.html(content);
}
base.logIn();
}
if (typeof base.options.beforeInit === "function") {
base.options.beforeInit.apply(this, [base.$elem]);
}
if (typeof base.options.jsonPath === "string") {
url = base.options.jsonPath;
$.getJSON(url, getData);
} else {
base.logIn();
}
},
logIn : function () {
var base = this;
base.$elem.data("owl-originalStyles", base.$elem.attr("style"));
base.$elem.data("owl-originalClasses", base.$elem.attr("class"));
base.$elem.css({opacity: 0});
base.orignalItems = base.options.items;
base.checkBrowser();
base.wrapperWidth = 0;
base.checkVisible = null;
base.setVars();
},
setVars : function () {
var base = this;
if (base.$elem.children().length === 0) {return false; }
base.baseClass();
base.eventTypes();
base.$userItems = base.$elem.children();
base.itemsAmount = base.$userItems.length;
base.wrapItems();
base.$owlItems = base.$elem.find(".owl-item");
base.$owlWrapper = base.$elem.find(".owl-wrapper");
base.playDirection = "next";
base.prevItem = 0;
base.prevArr = [0];
base.currentItem = 0;
base.customEvents();
base.onStartup();
},
onStartup : function () {
var base = this;
base.updateItems();
base.calculateAll();
base.buildControls();
base.updateControls();
base.response();
base.moveEvents();
base.stopOnHover();
base.owlStatus();
if (base.options.transitionStyle !== false) {
base.transitionTypes(base.options.transitionStyle);
}
if (base.options.autoPlay === true) {
base.options.autoPlay = 5000;
}
base.play();
base.$elem.find(".owl-wrapper").css("display", "block");
if (!base.$elem.is(":visible")) {
base.watchVisibility();
} else {
base.$elem.css("opacity", 1);
}
base.onstartup = false;
base.eachMoveUpdate();
if (typeof base.options.afterInit === "function") {
base.options.afterInit.apply(this, [base.$elem]);
}
},
eachMoveUpdate : function () {
var base = this;
if (base.options.lazyLoad === true) {
base.lazyLoad();
}
if (base.options.autoHeight === true) {
base.autoHeight();
}
base.onVisibleItems();
if (typeof base.options.afterAction === "function") {
base.options.afterAction.apply(this, [base.$elem]);
}
},
updateVars : function () {
var base = this;
if (typeof base.options.beforeUpdate === "function") {
base.options.beforeUpdate.apply(this, [base.$elem]);
}
base.watchVisibility();
base.updateItems();
base.calculateAll();
base.updatePosition();
base.updateControls();
base.eachMoveUpdate();
if (typeof base.options.afterUpdate === "function") {
base.options.afterUpdate.apply(this, [base.$elem]);
}
},
reload : function () {
var base = this;
window.setTimeout(function () {
base.updateVars();
}, 0);
},
watchVisibility : function () {
var base = this;
if (base.$elem.is(":visible") === false) {
base.$elem.css({opacity: 0});
window.clearInterval(base.autoPlayInterval);
window.clearInterval(base.checkVisible);
} else {
return false;
}
base.checkVisible = window.setInterval(function () {
if (base.$elem.is(":visible")) {
base.reload();
base.$elem.animate({opacity: 1}, 200);
window.clearInterval(base.checkVisible);
}
}, 500);
},
wrapItems : function () {
var base = this;
base.$userItems.wrapAll("<div class=\"owl-wrapper\">").wrap("<div class=\"owl-item\"></div>");
base.$elem.find(".owl-wrapper").wrap("<div class=\"owl-wrapper-outer\">");
base.wrapperOuter = base.$elem.find(".owl-wrapper-outer");
base.$elem.css("display", "block");
},
baseClass : function () {
var base = this,
hasBaseClass = base.$elem.hasClass(base.options.baseClass),
hasThemeClass = base.$elem.hasClass(base.options.theme);
if (!hasBaseClass) {
base.$elem.addClass(base.options.baseClass);
}
if (!hasThemeClass) {
base.$elem.addClass(base.options.theme);
}
},
updateItems : function () {
var base = this, width, i;
if (base.options.responsive === false) {
return false;
}
if (base.options.singleItem === true) {
base.options.items = base.orignalItems = 1;
base.options.itemsCustom = false;
base.options.itemsDesktop = false;
base.options.itemsDesktopSmall = false;
base.options.itemsTablet = false;
base.options.itemsTabletSmall = false;
base.options.itemsMobile = false;
return false;
}
width = $(base.options.responsiveBaseWidth).width();
if (width > (base.options.itemsDesktop[0] || base.orignalItems)) {
base.options.items = base.orignalItems;
}
if (base.options.itemsCustom !== false) {
//Reorder array by screen size
base.options.itemsCustom.sort(function (a, b) {return a[0] - b[0]; });
for (i = 0; i < base.options.itemsCustom.length; i += 1) {
if (base.options.itemsCustom[i][0] <= width) {
base.options.items = base.options.itemsCustom[i][1];
}
}
} else {
if (width <= base.options.itemsDesktop[0] && base.options.itemsDesktop !== false) {
base.options.items = base.options.itemsDesktop[1];
}
if (width <= base.options.itemsDesktopSmall[0] && base.options.itemsDesktopSmall !== false) {
base.options.items = base.options.itemsDesktopSmall[1];
}
if (width <= base.options.itemsTablet[0] && base.options.itemsTablet !== false) {
base.options.items = base.options.itemsTablet[1];
}
if (width <= base.options.itemsTabletSmall[0] && base.options.itemsTabletSmall !== false) {
base.options.items = base.options.itemsTabletSmall[1];
}
if (width <= base.options.itemsMobile[0] && base.options.itemsMobile !== false) {
base.options.items = base.options.itemsMobile[1];
}
}
//if number of items is less than declared
if (base.options.items > base.itemsAmount && base.options.itemsScaleUp === true) {
base.options.items = base.itemsAmount;
}
},
response : function () {
var base = this,
smallDelay,
lastWindowWidth;
if (base.options.responsive !== true) {
return false;
}
lastWindowWidth = $(window).width();
base.resizer = function () {
if ($(window).width() !== lastWindowWidth) {
if (base.options.autoPlay !== false) {
window.clearInterval(base.autoPlayInterval);
}
window.clearTimeout(smallDelay);
smallDelay = window.setTimeout(function () {
lastWindowWidth = $(window).width();
base.updateVars();
}, base.options.responsiveRefreshRate);
}
};
$(window).resize(base.resizer);
},
updatePosition : function () {
var base = this;
base.jumpTo(base.currentItem);
if (base.options.autoPlay !== false) {
base.checkAp();
}
},
appendItemsSizes : function () {
var base = this,
roundPages = 0,
lastItem = base.itemsAmount - base.options.items;
base.$owlItems.each(function (index) {
var $this = $(this);
$this
.css({"width": base.itemWidth})
.data("owl-item", Number(index));
if (index % base.options.items === 0 || index === lastItem) {
if (!(index > lastItem)) {
roundPages += 1;
}
}
$this.data("owl-roundPages", roundPages);
});
},
appendWrapperSizes : function () {
var base = this,
width = base.$owlItems.length * base.itemWidth;
base.$owlWrapper.css({
"width": width * 2,
"left": 0
});
base.appendItemsSizes();
},
calculateAll : function () {
var base = this;
base.calculateWidth();
base.appendWrapperSizes();
base.loops();
base.max();
},
calculateWidth : function () {
var base = this;
base.itemWidth = Math.round(base.$elem.width() / base.options.items);
},
max : function () {
var base = this,
maximum = ((base.itemsAmount * base.itemWidth) - base.options.items * base.itemWidth) * -1;
if (base.options.items > base.itemsAmount) {
base.maximumItem = 0;
maximum = 0;
base.maximumPixels = 0;
} else {
base.maximumItem = base.itemsAmount - base.options.items;
base.maximumPixels = maximum;
}
return maximum;
},
min : function () {
return 0;
},
loops : function () {
var base = this,
prev = 0,
elWidth = 0,
i,
item,
roundPageNum;
base.positionsInArray = [0];
base.pagesInArray = [];
for (i = 0; i < base.itemsAmount; i += 1) {
elWidth += base.itemWidth;
base.positionsInArray.push(-elWidth);
if (base.options.scrollPerPage === true) {
item = $(base.$owlItems[i]);
roundPageNum = item.data("owl-roundPages");
if (roundPageNum !== prev) {
base.pagesInArray[prev] = base.positionsInArray[i];
prev = roundPageNum;
}
}
}
},
buildControls : function () {
var base = this;
if (base.options.navigation === true || base.options.pagination === true) {
base.owlControls = $("<div class=\"owl-controls\"/>").toggleClass("clickable", !base.browser.isTouch).appendTo(base.$elem);
}
if (base.options.pagination === true) {
base.buildPagination();
}
if (base.options.navigation === true) {
base.buildButtons();
}
},
buildButtons : function () {
var base = this,
buttonsWrapper = $("<div class=\"owl-buttons\"/>");
base.owlControls.append(buttonsWrapper);
base.buttonPrev = $("<div/>", {
"class" : "owl-prev",
"html" : base.options.navigationText[0] || ""
});
base.buttonNext = $("<div/>", {
"class" : "owl-next",
"html" : base.options.navigationText[1] || ""
});
buttonsWrapper
.append(base.buttonPrev)
.append(base.buttonNext);
buttonsWrapper.on("touchstart.owlControls mousedown.owlControls", "div[class^=\"owl\"]", function (event) {
event.preventDefault();
});
buttonsWrapper.on("touchend.owlControls mouseup.owlControls", "div[class^=\"owl\"]", function (event) {
event.preventDefault();
if ($(this).hasClass("owl-next")) {
base.next();
} else {
base.prev();
}
});
},
buildPagination : function () {
var base = this;
base.paginationWrapper = $("<div class=\"owl-pagination\"/>");
base.owlControls.append(base.paginationWrapper);
base.paginationWrapper.on("touchend.owlControls mouseup.owlControls", ".owl-page", function (event) {
event.preventDefault();
if (Number($(this).data("owl-page")) !== base.currentItem) {
base.goTo(Number($(this).data("owl-page")), true);
}
});
},
updatePagination : function () {
var base = this,
counter,
lastPage,
lastItem,
i,
paginationButton,
paginationButtonInner;
if (base.options.pagination === false) {
return false;
}
base.paginationWrapper.html("");
counter = 0;
lastPage = base.itemsAmount - base.itemsAmount % base.options.items;
for (i = 0; i < base.itemsAmount; i += 1) {
if (i % base.options.items === 0) {
counter += 1;
if (lastPage === i) {
lastItem = base.itemsAmount - base.options.items;
}
paginationButton = $("<div/>", {
"class" : "owl-page"
});
paginationButtonInner = $("<span></span>", {
"text": base.options.paginationNumbers === true ? counter : "",
"class": base.options.paginationNumbers === true ? "owl-numbers" : ""
});
paginationButton.append(paginationButtonInner);
paginationButton.data("owl-page", lastPage === i ? lastItem : i);
paginationButton.data("owl-roundPages", counter);
base.paginationWrapper.append(paginationButton);
}
}
base.checkPagination();
},
checkPagination : function () {
var base = this;
if (base.options.pagination === false) {
return false;
}
base.paginationWrapper.find(".owl-page").each(function () {
if ($(this).data("owl-roundPages") === $(base.$owlItems[base.currentItem]).data("owl-roundPages")) {
base.paginationWrapper
.find(".owl-page")
.removeClass("active");
$(this).addClass("active");
}
});
},
checkNavigation : function () {
var base = this;
if (base.options.navigation === false) {
return false;
}
if (base.options.rewindNav === false) {
if (base.currentItem === 0 && base.maximumItem === 0) {
base.buttonPrev.addClass("disabled");
base.buttonNext.addClass("disabled");
} else if (base.currentItem === 0 && base.maximumItem !== 0) {
base.buttonPrev.addClass("disabled");
base.buttonNext.removeClass("disabled");
} else if (base.currentItem === base.maximumItem) {
base.buttonPrev.removeClass("disabled");
base.buttonNext.addClass("disabled");
} else if (base.currentItem !== 0 && base.currentItem !== base.maximumItem) {
base.buttonPrev.removeClass("disabled");
base.buttonNext.removeClass("disabled");
}
}
},
updateControls : function () {
var base = this;
base.updatePagination();
base.checkNavigation();
if (base.owlControls) {
if (base.options.items >= base.itemsAmount) {
base.owlControls.hide();
} else {
base.owlControls.show();
}
}
},
destroyControls : function () {
var base = this;
if (base.owlControls) {
base.owlControls.remove();
}
},
next : function (speed) {
...
Подобные документы
Выбор инструментальных и программных средств для создания сайта. Структура программного продукта. Создание сайта при помощи программы WordPress. Тестирование разработанной программы. Разработка структуры и дизайна сайта. Наполнение сайта контентом.
курсовая работа [1,0 M], добавлен 09.01.2014Исследование классификации, средств реализации и разработки сайтов. Сравнительная характеристика конструкторов сайтов. Руководство пользователя. Заполнение материалом и отладка работы страниц. Травмирующие и вредные факторы для пользователя компьютера.
дипломная работа [2,6 M], добавлен 22.01.2015Разработка структуры базы данных сайта. Установка и настройка требуемого программного обеспечения. Анализ интерфейса программы. Создание формы обратной связи. Формирование дизайна, соответствующего требованиям заказчика. Выбор методики тестирования.
дипломная работа [2,0 M], добавлен 22.03.2018Основные требования к составу и параметрам технических средства. Верификация программного продукта. Расширение функционала программы и его реализация. Отладка и тестирование программного продукта. Тестирование программы в граничных и реальных условиях.
курсовая работа [1,3 M], добавлен 29.12.2014Понятие web-сайта и его типы. Обзор программ для создание web-сайта. Описание конструктора Jimdo. Алгоритм создания сайта для ОАО "Каменск-Уральский литейный завод" с целью уведомления посетителей о выпускаемой продукции. Руководство пользователя.
курсовая работа [3,8 M], добавлен 05.06.2015Характеристика структуры, программного обеспечения и основных бизнес–процессов ЗАГСа. Разработка базы данных и структуры сайта для молодоженов. Управление аккаунтом пользователя, описание страниц сайта. Расчёт экономических затрат на создание сайта.
дипломная работа [448,5 K], добавлен 14.01.2013Возможности среды программирования delphi при разработке приложения с визуальным интерфейсом. Разработка спецификации программного обеспечения и на ее основе кода программного продукта. Отладка программы "трассировкой", ее тестирование и оптимизация.
курсовая работа [501,4 K], добавлен 07.12.2016Создание Web-сайта "Расчет коммунальных услуг ЖКХ", факторы, определяющие принятое решение. Математический алгоритм программного продукта, техническое обеспечение. Результаты тестирования сайта gkh-tariff.ru для учета затрат ЖКХ, внедрение в Интернет.
курсовая работа [147,6 K], добавлен 01.03.2013Проектирование информационной системы для удобного ведения учета товара. Функциональная модель предметной области. Обоснование выбора языка программирования. Описание программы, руководство пользователя. Протокол тестирования программного продукта.
курсовая работа [537,6 K], добавлен 18.09.2014Особенности алгоритмов, критерии качества. Создание и применение программного продукта на языке Delphi. Тип операционной системы. Внутренняя структура программного продукта. Руководство пользователя и программиста, расчет себестоимости и цены программы.
дипломная работа [1,5 M], добавлен 12.06.2009Разработка и программная реализация сайта и базы данных, наполнение базы данных тестовой информацией о товарах. Инструментальные средства создания сайта. Организация тестирования сайта, модуль визуализации интерфейса. Создание запросов в базе данных SQL.
курсовая работа [1,4 M], добавлен 24.12.2012Общее описание разрабатываемого веб-сайта. Создание модуля учета средств для разработки программного продукта. Разработка дизайна. Редактирование веб-сайта в CMS Worspress. Разработка методических указаний для продукта. Система управления базами данных.
дипломная работа [1,8 M], добавлен 10.07.2017Понятие web-сайта и их типы. Программы для создания web-сайта. Описание структуры проекта. Алгоритм создания сайта. Описание конструктора Jimdo. Языки программирования серверного выполнения. Создание полнофункционального веб-сайта для ОАО "КУЛЗ".
курсовая работа [3,5 M], добавлен 05.06.2015Теоретические основы разработки web-сайта. Сбор и анализ данных для качественной реализации программного продукта. Разработка модели сайта магазина детских игрушек. Графическое оформление страниц. Выбор средств и технологий, тестирование и отладка.
курсовая работа [349,2 K], добавлен 09.04.2015Формулировка требований к разработке и оформлению информационного сайта предприятия. Описание архитектуры сайта, меню навигации и алгоритма работы, листинг программного кода. Выбор серверной части и процесс отладки. Методы продвижения сайта в Интернете.
курсовая работа [4,6 M], добавлен 18.01.2014Выбор средства реализации программного продукта. Разработка программного комплекса (ПК). Руководство администратору и пользователю к нему. CMS Joomla - программа, включающая в себя различные инструменты для изготовления веб-сайта. Обработка ошибок в ПК.
курсовая работа [695,6 K], добавлен 19.06.2010Проектирование модульной структуры программы сетевого мессенджера, назначение модуля "frmMsg". Разработка главной формы и интерфейса пользователя программы. Проектирование модуля формы "About". Разработка методики тестирования и отладка программы.
курсовая работа [606,7 K], добавлен 19.01.2012Структура и внутреннее содержание разрабатываемого сайта, основные требования к нему, потребители и целевая аудитория, дизайн и стилистика. Создание прототипа сайта консалтинговой компании "Финанс-консалт" с помощью программного продукта Axure RP PRo.
контрольная работа [1,1 M], добавлен 10.01.2016Сравнение языка Php с другими языками программирования web-приложений. Язык разметки гипертекстовых страниц Html. Технология Macromedia Flash, её преимущества и недостатки. Этапы создания флеш-сайта, руководство пользователя и листинг программы.
дипломная работа [2,3 M], добавлен 04.10.2013Определение целевой аудитории и схема логической связи между страницами, анализ персонального сайта Джима Керри. Создание собственного сайта с целью самопрезентации, его дизайн и план тестирования. Выбор программных средств для реализации проекта.
дипломная работа [6,5 M], добавлен 15.06.2013