From cfdd30a636ffd8ea6488313ca40283c0ab811de9 Mon Sep 17 00:00:00 2001 From: Jack Lukic Date: Wed, 31 Jul 2013 19:20:14 -0400 Subject: [PATCH] Rewrote a ton of shit in a ton of modules. --- src/modules/accordion.js | 82 ++++--- src/modules/behavior/api.js | 9 +- src/modules/behavior/form.js | 49 +++-- src/modules/behavior/state.js | 276 ++++++++++++----------- src/modules/chat.js | 38 ++-- src/modules/checkbox.js | 3 +- src/modules/dropdown.js | 38 ++-- src/modules/modal.js | 3 +- src/modules/nag.js | 28 ++- src/modules/popup.js | 3 +- src/modules/search.js | 40 ++-- src/modules/shape.js | 218 +++++++++--------- src/modules/star.js | 402 ++++++++++++++++++++++------------ src/modules/tab.js | 20 +- src/modules/transition.js | 17 +- src/modules/video.js | 40 ++-- 16 files changed, 722 insertions(+), 544 deletions(-) diff --git a/src/modules/accordion.js b/src/modules/accordion.js index 075231861..6988f4083 100755 --- a/src/modules/accordion.js +++ b/src/modules/accordion.js @@ -16,13 +16,18 @@ $.fn.accordion = function(parameters) { ? $.extend(true, {}, $.fn.accordion.settings, parameters) : $.fn.accordion.settings, - eventNamespace = '.' + settings.namespace, - moduleNamespace = 'module-' + settings.namespace, + className = settings.className, + namespace = settings.namespace, + selector = settings.selector, + error = settings.errors, + + eventNamespace = '.' + namespace, + moduleNamespace = 'module-' + namespace, moduleSelector = $allModules.selector || '', - + time = new Date().getTime(), performance = [], - + query = arguments[0], methodInvoked = (typeof query == 'string'), queryArguments = [].slice.call(arguments, 1), @@ -31,18 +36,13 @@ $.fn.accordion = function(parameters) { $allModules .each(function() { var - $module = $(this), - $title = $module.find(settings.selector.title), - $icon = $module.find(settings.selector.icon), - $content = $module.find(settings.selector.content), - - element = this, - instance = $module.data(moduleNamespace), - - className = settings.className, - namespace = settings.namespace, + $module = $(this), + $title = $module.find(selector.title), + $icon = $module.find(selector.icon), + $content = $module.find(selector.content), - errors = settings.errors, + element = this, + instance = $module.data(moduleNamespace), module ; @@ -54,6 +54,10 @@ $.fn.accordion = function(parameters) { $title .on('click' + eventNamespace, module.event.click) ; + module.instantiate(); + }, + + instantiate: function() { $module .data(moduleNamespace, module) ; @@ -68,35 +72,41 @@ $.fn.accordion = function(parameters) { }, event: { - click: function() { + module.verbose('Title clicked', this); var - $activeTitle = $(this), - activeIndex = $title.index($activeTitle), - contentIsOpen = $activeTitle.hasClass(className.active) + $activeTitle = $(this), + index = $title.index($activeTitle) ; - module.verbose('Accordion title clicked', $activeTitle); - if(contentIsOpen) { - if(settings.collapsible) { - module.close(activeIndex); - } - else { - module.debug('Cannot close accordion content collapsing is disabled'); - } - } - else { - module.open(activeIndex); - } + module.toggle(index); }, - resetStyle: function() { + module.verbose('Resetting styles on element', this); $(this) .removeAttr('style') .children() .removeAttr('style') ; } + }, + toggle: function(index) { + module.debug('Toggling content content at index', index); + var + $activeTitle = $title.eq(index), + contentIsOpen = $activeTitle.hasClass(className.active) + ; + if(contentIsOpen) { + if(settings.collapsible) { + module.close(index); + } + else { + module.debug('Cannot close accordion content collapsing is disabled'); + } + } + else { + module.open(index); + } }, open: function(index) { @@ -256,7 +266,8 @@ $.fn.accordion = function(parameters) { title = settings.moduleName + ':', totalTime = 0 ; - time = false; + time = false; + clearTimeout(module.performance.timer); $.each(performance, function(index, data) { totalTime += data['Execution Time']; }); @@ -298,7 +309,7 @@ $.fn.accordion = function(parameters) { found = instance[value]; return true; } - module.error(errors.method); + module.error(error.method); return false; }); } @@ -322,6 +333,7 @@ $.fn.accordion = function(parameters) { } }) ; + module.performance.display(); return (invokedResponse) ? invokedResponse : this @@ -342,7 +354,7 @@ $.fn.accordion.settings = { onClose : function(){}, onChange : function(){}, - errors: { + error: { method : 'The method you called is not defined' }, diff --git a/src/modules/behavior/api.js b/src/modules/behavior/api.js index 05b1c0365..aefee0bf0 100755 --- a/src/modules/behavior/api.js +++ b/src/modules/behavior/api.js @@ -61,8 +61,8 @@ element = this, time = new Date().getTime(), performance = [], + moduleSelector = $module.selector || '', - moduleNamespace = settings.namespace + '-module', className = settings.className, @@ -456,7 +456,8 @@ title = settings.moduleName + ':', totalTime = 0 ; - time = false; + clearTimeout(module.performance.timer); + time = false; $.each(performance, function(index, data) { totalTime += data['Execution Time']; }); @@ -521,8 +522,8 @@ } module.initialize(); } - - return (invokedResponse !== undefined) + module.performance.display(); + return (invokedResponse) ? invokedResponse : this ; diff --git a/src/modules/behavior/form.js b/src/modules/behavior/form.js index 962de5236..2cdcafe96 100755 --- a/src/modules/behavior/form.js +++ b/src/modules/behavior/form.js @@ -18,12 +18,21 @@ $.fn.form = function(fields, parameters) { settings = $.extend(true, {}, $.fn.form.settings, parameters), validation = $.extend({}, $.fn.form.settings.defaults, fields), - + + namespace = settings.namespace, + metadata = settings.metadata, + selector = settings.selector, + className = settings.className, + error = settings.error, + + eventNamespace = '.' + namespace, + moduleNamespace = 'module-' + namespace, + moduleSelector = $allModules.selector || '', - + time = new Date().getTime(), performance = [], - + query = arguments[0], methodInvoked = (typeof query == 'string'), queryArguments = [].slice.call(arguments, 1), @@ -33,24 +42,16 @@ $.fn.form = function(fields, parameters) { .each(function() { var $module = $(this), - $field = $(this).find(settings.selector.field), - $group = $(this).find(settings.selector.group), - $message = $(this).find(settings.selector.message), - $prompt = $(this).find(settings.selector.prompt), - $submit = $(this).find(settings.selector.submit), + $field = $(this).find(selector.field), + $group = $(this).find(selector.group), + $message = $(this).find(selector.message), + $prompt = $(this).find(selector.prompt), + $submit = $(this).find(selector.submit), formErrors = [], element = this, - instance = $module.data('module-' + settings.namespace), - - eventNamespace = '.' + settings.namespace, - moduleNamespace = 'module-' + settings.namespace, - - namespace = settings.namespace, - metadata = settings.metadata, - className = settings.className, - error = settings.error, + instance = $module.data(moduleNamespace), module ; @@ -93,7 +94,7 @@ $.fn.form = function(fields, parameters) { refresh: function() { module.verbose('Refreshing selector cache'); - $field = $module.find(settings.selector.field); + $field = $module.find(selector.field); }, submit: function() { @@ -120,7 +121,7 @@ $.fn.form = function(fields, parameters) { .blur() ; } - if( key == keyCode.enter && $field.is(settings.selector.input) ) { + if( key == keyCode.enter && $field.is(selector.input) ) { module.debug('Enter key pressed, submitting form'); $submit .addClass(className.down) @@ -204,7 +205,7 @@ $.fn.form = function(fields, parameters) { var $field = module.get.field(field.identifier), $fieldGroup = $field.closest($group), - $prompt = $fieldGroup.find(settings.selector.prompt), + $prompt = $fieldGroup.find(selector.prompt), promptExists = ($prompt.size() !== 0) ; module.verbose('Adding inline validation prompt'); @@ -242,7 +243,7 @@ $.fn.form = function(fields, parameters) { var $field = module.get.field(field.identifier), $fieldGroup = $field.closest($group), - $prompt = $fieldGroup.find(settings.selector.prompt) + $prompt = $fieldGroup.find(selector.prompt) ; $fieldGroup .removeClass(className.error) @@ -421,7 +422,8 @@ $.fn.form = function(fields, parameters) { title = settings.moduleName + ':', totalTime = 0 ; - time = false; + time = false; + clearTimeout(module.performance.timer); $.each(performance, function(index, data) { totalTime += data['Execution Time']; }); @@ -463,7 +465,7 @@ $.fn.form = function(fields, parameters) { found = instance[value]; return true; } - module.error(errors.method); + module.error(error.method); return false; }); } @@ -488,6 +490,7 @@ $.fn.form = function(fields, parameters) { }) ; + module.performance.display(); return (invokedResponse) ? invokedResponse : this diff --git a/src/modules/behavior/state.js b/src/modules/behavior/state.js index fa743e4b4..ef6eb9e85 100755 --- a/src/modules/behavior/state.js +++ b/src/modules/behavior/state.js @@ -2,7 +2,7 @@ Module State Change text based on state context - Hover/Pressed/Active/Inactive + Hover/down/Active/Inactive Author: Jack Lukic Last revision: May 2012 @@ -52,16 +52,18 @@ $.fn.state = function(parameters) { methodInvoked = (typeof query == 'string'), queryArguments = [].slice.call(arguments, 1), - eventNamespace = '.' + settings.namespace, - moduleNamespace = settings.namespace + '-module', - // shortcuts errors = settings.errors, metadata = settings.metadata, className = settings.className, + namespace = settings.namespace, states = settings.states, text = settings.text, + eventNamespace = '.' + namespace, + moduleNamespace = namespace + '-module', + + invokedResponse ; $allModules @@ -88,52 +90,51 @@ $.fn.state = function(parameters) { if(settings.context && moduleSelector !== '') { if( module.allows('hover') ) { $(element, settings.context) - .on(moduleSelector, 'mouseenter' + eventNamespace, module.hover.enable) - .on(moduleSelector, 'mouseleave' + eventNamespace, module.hover.disable) + .on(moduleSelector, 'mouseenter' + eventNamespace, module.enable.hover) + .on(moduleSelector, 'mouseleave' + eventNamespace, module.disable.hover) ; } - if( module.allows('pressed') ) { + if( module.allows('down') ) { $(element, settings.context) - .on(moduleSelector, 'mousedown' + eventNamespace, module.pressed.enable) - .on(moduleSelector, 'mouseup' + eventNamespace, module.pressed.disable) + .on(moduleSelector, 'mousedown' + eventNamespace, module.enable.down) + .on(moduleSelector, 'mouseup' + eventNamespace, module.disable.down) ; } if( module.allows('focus') ) { $(element, settings.context) - .on(moduleSelector, 'focus' + eventNamespace, module.focus.enable) - .on(moduleSelector, 'blur' + eventNamespace, module.focus.disable) + .on(moduleSelector, 'focus' + eventNamespace, module.enable.focus) + .on(moduleSelector, 'blur' + eventNamespace, module.disable.focus) ; } $(settings.context) - .on(moduleSelector, 'mouseenter' + eventNamespace, module.text.change) - .on(moduleSelector, 'mouseleave' + eventNamespace, module.text.reset) - .on(moduleSelector, 'click' + eventNamespace, module.toggle) + .on(moduleSelector, 'mouseenter' + eventNamespace, module.change.text) + .on(moduleSelector, 'mouseleave' + eventNamespace, module.reset.text) + .on(moduleSelector, 'click' + eventNamespace, module.toggle.state) ; - } else { if( module.allows('hover') ) { $module - .on('mouseenter' + eventNamespace, module.hover.enable) - .on('mouseleave' + eventNamespace, module.hover.disable) + .on('mouseenter' + eventNamespace, module.enable.hover) + .on('mouseleave' + eventNamespace, module.disable.hover) ; } - if( module.allows('pressed') ) { + if( module.allows('down') ) { $module - .on('mousedown' + eventNamespace, module.pressed.enable) - .on('mouseup' + eventNamespace, module.pressed.disable) + .on('mousedown' + eventNamespace, module.enable.down) + .on('mouseup' + eventNamespace, module.disable.down) ; } if( module.allows('focus') ) { $module - .on('focus' + eventNamespace, module.focus.enable) - .on('blur' + eventNamespace, module.focus.disable) + .on('focus' + eventNamespace, module.enable.focus) + .on('blur' + eventNamespace, module.disable.focus) ; } $module - .on('mouseenter' + eventNamespace, module.text.change) - .on('mouseleave' + eventNamespace, module.text.reset) - .on('click' + eventNamespace, module.toggle) + .on('mouseenter' + eventNamespace, module.change.text) + .on('mouseleave' + eventNamespace, module.reset.text) + .on('click' + eventNamespace, module.toggle.state) ; } module.instantiate(); @@ -220,71 +221,69 @@ $.fn.state = function(parameters) { return states[state] || false; }, - enable: function(state) { - if(module.allows(state)) { - $module.addClass( className[state] ); - } - }, - disable: function(state) { - if(module.allows(state)) { - $module.removeClass( className[state] ); - } - }, - textFor: function(state) { - return text[state] || false; - }, - - focus : { - enable: function() { + enable: { + state: function(state) { + if(module.allows(state)) { + $module.addClass( className[state] ); + } + }, + // convenience + focus: function() { $module.addClass(className.focus); }, - disable: function() { - $module.removeClass(className.focus); - } + hover: function() { + $module.addClass(className.hover); + }, + down: function() { + $module.addClass(className.down); + }, }, - hover : { - enable: function() { - $module.addClass(className.hover); + disable: { + state: function(state) { + if(module.allows(state)) { + $module.removeClass( className[state] ); + } + }, + // convenience + focus: function() { + $module.removeClass(className.focus); }, - disable: function() { + hover: function() { $module.removeClass(className.hover); - } + }, + down: function() { + $module.removeClass(className.down); + }, }, - pressed : { - enable: function() { - $module - .addClass(className.pressed) - .one('mouseleave', module.pressed.disable) + toggle: { + state: function() { + var + apiRequest = $module.data(metadata.promise) ; - }, - disable: function() { - $module.removeClass(className.pressed); + if( module.allows('active') && module.is.enabled() ) { + module.refresh(); + if(apiRequest !== undefined) { + module.listenTo(apiRequest); + } + else { + module.change.state(); + } + } } }, - // determines method for state activation - toggle: function() { - var - apiRequest = $module.data(metadata.promise) - ; - if( module.allows('active') && module.is.enabled() ) { - module.refresh(); - if(apiRequest !== undefined) { - module.listenTo(apiRequest); - } - else { - module.change(); - } - } + textFor: function(state) { + return text[state] || false; }, + listenTo: function(apiRequest) { module.debug('API request detected, waiting for state signal', apiRequest); if(apiRequest) { if(text.loading) { - module.text.update(text.loading); + module.update.text(text.loading); } $.when(apiRequest) .then(function() { @@ -298,7 +297,7 @@ $.fn.state = function(parameters) { settings.activateTest = function(){ return false; }; settings.deactivateTest = function(){ return false; }; } - module.change(); + module.change.state(); }) ; } @@ -310,19 +309,48 @@ $.fn.state = function(parameters) { }, // checks whether active/inactive state can be given - change: function() { - module.debug('Determining state change direction'); - // inactive to active change - if( module.is.inactive() ) { - module.activate(); - } - else { - module.deactivate(); - } - if(settings.sync) { - module.sync(); + change: { + + state: function() { + module.debug('Determining state change direction'); + // inactive to active change + if( module.is.inactive() ) { + module.activate(); + } + else { + module.deactivate(); + } + if(settings.sync) { + module.sync(); + } + $.proxy(settings.onChange, element)(); + }, + + text: function() { + if( module.is.textEnabled() ) { + if( module.is.active() ) { + if(text.hover) { + module.verbose('Changing text to hover text', text.hover); + module.update.text(text.hover); + } + else if(text.disable) { + module.verbose('Changing text to disable text', text.disable); + module.update.text(text.disable); + } + } + else { + if(text.hover) { + module.verbose('Changing text to hover text', text.disable); + module.update.text(text.hover); + } + else if(text.enable){ + module.verbose('Changing text to enable text', text.enable); + module.update.text(text.enable); + } + } + } } - $.proxy(settings.onChange, element)(); + }, activate: function() { @@ -331,7 +359,7 @@ $.fn.state = function(parameters) { $module .addClass(className.active) ; - module.text.update(text.active); + module.update.text(text.active); } $.proxy(settings.onActivate, element)(); }, @@ -342,7 +370,7 @@ $.fn.state = function(parameters) { $module .removeClass(className.active) ; - module.text.update(text.inactive); + module.update.text(text.inactive); } $.proxy(settings.onDeactivate, element)(); }, @@ -362,56 +390,33 @@ $.fn.state = function(parameters) { } }, - text: { - - // finds text node to update - get: function() { + get: { + text: function() { return (settings.selector.text) ? $module.find(settings.selector.text).text() : $module.html() ; - }, + } + }, - flash: function(text, duration) { + flash: { + text: function(text, duration) { var - previousText = module.text.get() + previousText = module.get.text() ; module.debug('Flashing text message', text, duration); text = text || settings.text.flash; duration = duration || settings.flashDuration; - module.text.update(text); + module.update.text(text); setTimeout(function(){ - module.text.update(previousText); + module.update.text(previousText); }, duration); - }, - - change: function() { - if( module.is.textEnabled() ) { - if( module.is.active() ) { - if(text.hover) { - module.verbose('Changing text to hover text', text.hover); - module.text.update(text.hover); - } - else if(text.disable) { - module.verbose('Changing text to disable text', text.disable); - module.text.update(text.disable); - } - } - else { - if(text.hover) { - module.verbose('Changing text to hover text', text.disable); - module.text.update(text.hover); - } - else if(text.enable){ - module.verbose('Changing text to enable text', text.enable); - module.text.update(text.enable); - } - } - } - }, + } + }, + reset: { // on mouseout sets text to previous value - reset : function() { + text: function() { var activeText = text.active || $module.data(metadata.storedText), inactiveText = text.inactive || $module.data(metadata.storedText) @@ -419,18 +424,20 @@ $.fn.state = function(parameters) { if( module.is.textEnabled() ) { if( module.is.active() && activeText) { module.verbose('Resetting active text', activeText); - module.text.update(activeText); + module.update.text(activeText); } else if(inactiveText) { module.verbose('Resetting inactive text', activeText); - module.text.update(inactiveText); + module.update.text(inactiveText); } } - }, + } + }, - update: function(text) { + update: { + text: function(text) { var - currentText = module.text.get() + currentText = module.get.text() ; if(text && text !== currentText) { module.debug('Updating text', text); @@ -453,6 +460,7 @@ $.fn.state = function(parameters) { } } }, + setting: function(name, value) { module.debug('Changing setting', name, value); if(value !== undefined) { @@ -531,7 +539,8 @@ $.fn.state = function(parameters) { title = settings.moduleName + ':', totalTime = 0 ; - time = false; + time = false; + clearTimeout(module.performance.timer); $.each(performance, function(index, data) { totalTime += data['Execution Time']; }); @@ -598,6 +607,7 @@ $.fn.state = function(parameters) { }) ; + module.performance.display(); return (invokedResponse) ? invokedResponse : this @@ -662,7 +672,7 @@ $.fn.state.settings = { className: { focus : 'focus', hover : 'hover', - pressed : 'down', + down : 'down', active : 'active', loading : 'loading' }, @@ -676,14 +686,14 @@ $.fn.state.settings = { input: { hover : true, focus : true, - pressed : true, + down : true, loading : false, active : false }, button: { hover : true, focus : false, - pressed : true, + down : true, active : false, loading : true } @@ -692,7 +702,7 @@ $.fn.state.settings = { states : { hover : true, focus : true, - pressed : true, + down : true, loading : false, active : false }, diff --git a/src/modules/chat.js b/src/modules/chat.js index 3693b865b..454fb4b64 100755 --- a/src/modules/chat.js +++ b/src/modules/chat.js @@ -18,8 +18,10 @@ .each(function() { var $module = $(this), + $expandButton = $module.find(settings.selector.expandButton), $userListButton = $module.find(settings.selector.userListButton), + $userList = $module.find(settings.selector.userList), $room = $module.find(settings.selector.room), $userCount = $module.find(settings.selector.userCount), @@ -37,6 +39,8 @@ html = '', users = {}, + + channel, loggedInUser, message, @@ -50,7 +54,6 @@ module = { - channel: false, width: { log : $log.width(), userList : $userList.outerWidth() @@ -75,33 +78,18 @@ pusher = new Pusher(key); Pusher.channel_auth_endpoint = settings.endpoint.authentication; - module.channel = pusher.subscribe(channelName); + channel = pusher.subscribe(channelName); - module.channel.bind('pusher:subscription_succeeded', module.user.list.create); - module.channel.bind('pusher:subscription_error', module.error); - module.channel.bind('pusher:member_added', module.user.joined); - module.channel.bind('pusher:member_removed', module.user.left); - module.channel.bind('update_messages', module.message.receive); + channel.bind('pusher:subscription_succeeded', module.user.list.create); + channel.bind('pusher:subscription_error', module.error); + channel.bind('pusher:member_added', module.user.joined); + channel.bind('pusher:member_removed', module.user.left); + channel.bind('update_messages', module.message.receive); $.each(settings.customEvents, function(label, value) { - module.channel.bind(label, value); + channel.bind(label, value); }); - - // expandable with states - if( $.fn.hoverClass !== undefined && $.fn.downClass !== undefined ) { - $expandButton - .hoverClass() - .downClass() - ; - $userListButton - .hoverClass() - .downClass() - ; - $messageButton - .hoverClass() - .downClass() - ; - } + // bind module events $userListButton .on('click.' + namespace, module.event.toggleUserList) @@ -153,7 +141,7 @@ if(settings.userCount) { users = $module.data('users'); count = 0; - $.each(users, function(index) { + $.each(users, function() { count++; }); $userCount diff --git a/src/modules/checkbox.js b/src/modules/checkbox.js index d15b3fab6..1feb06442 100755 --- a/src/modules/checkbox.js +++ b/src/modules/checkbox.js @@ -211,7 +211,8 @@ $.fn.checkbox = function(parameters) { title = settings.moduleName + ':', totalTime = 0 ; - time = false; + time = false; + clearTimeout(module.performance.timer); $.each(performance, function(index, data) { totalTime += data['Execution Time']; }); diff --git a/src/modules/dropdown.js b/src/modules/dropdown.js index 853923228..da89df39e 100755 --- a/src/modules/dropdown.js +++ b/src/modules/dropdown.js @@ -17,14 +17,21 @@ $.fn.dropdown = function(parameters) { settings = ( $.isPlainObject(parameters) ) ? $.extend(true, {}, $.fn.dropdown.settings, parameters) : $.fn.dropdown.settings, - - eventNamespace = '.' + settings.namespace, - moduleNamespace = 'module-' + settings.namespace, + + className = settings.className, + metadata = settings.metadata, + namespace = settings.namespace, + animation = settings.animation, + selector = settings.selector, + errors = settings.errors, + + eventNamespace = '.' + namespace, + moduleNamespace = 'module-' + namespace, moduleSelector = $allModules.selector || '', - + time = new Date().getTime(), performance = [], - + query = arguments[0], methodInvoked = (typeof query == 'string'), queryArguments = [].slice.call(arguments, 1), @@ -35,22 +42,15 @@ $.fn.dropdown = function(parameters) { .each(function() { var $module = $(this), - $menu = $(this).find(settings.selector.menu), - $item = $(this).find(settings.selector.item), - $text = $(this).find(settings.selector.text), - $input = $(this).find(settings.selector.input), + $menu = $(this).find(selector.menu), + $item = $(this).find(selector.item), + $text = $(this).find(selector.text), + $input = $(this).find(selector.input), isTouchDevice = ('ontouchstart' in document.documentElement), element = this, instance = $module.data(moduleNamespace), - - className = settings.className, - metadata = settings.metadata, - namespace = settings.namespace, - animation = settings.animation, - - errors = settings.errors, module ; @@ -404,7 +404,7 @@ $.fn.dropdown = function(parameters) { module.verbose('Finding other dropdowns to hide'); $allModules .not($module) - .has(settings.selector.menu + ':visible') + .has(selector.menu + ':visible') .dropdown('hide') ; }, @@ -495,7 +495,8 @@ $.fn.dropdown = function(parameters) { title = settings.moduleName + ':', totalTime = 0 ; - time = false; + time = false; + clearTimeout(module.performance.timer); $.each(performance, function(index, data) { totalTime += data['Execution Time']; }); @@ -561,6 +562,7 @@ $.fn.dropdown = function(parameters) { } }) ; + module.performance.display(); return (invokedResponse) ? invokedResponse : this diff --git a/src/modules/modal.js b/src/modules/modal.js index 9ddd628a5..75764e9fd 100755 --- a/src/modules/modal.js +++ b/src/modules/modal.js @@ -322,7 +322,8 @@ }) ; // chain or return queried method - return (invokedResponse !== undefined) + module.performance.display(); + return (invokedResponse) ? invokedResponse : this ; diff --git a/src/modules/nag.js b/src/modules/nag.js index 4038e801d..11e4b159c 100755 --- a/src/modules/nag.js +++ b/src/modules/nag.js @@ -13,8 +13,13 @@ $.fn.nag = function(parameters) { $allModules = $(this), settings = $.extend(true, {}, $.fn.nag.settings, parameters), - eventNamespace = '.' + settings.namespace, - moduleNamespace = settings.namespace + '-module', + className = settings.className, + selector = settings.selector, + error = settings.errors, + namespace = settings.namespace, + + eventNamespace = '.' + namespace, + moduleNamespace = namespace + '-module', moduleSelector = $allModules.selector || '', time = new Date().getTime(), @@ -30,16 +35,13 @@ $.fn.nag = function(parameters) { var $module = $(this), - $close = $module.find(settings.selector.close), + $close = $module.find(selector.close), $context = $(settings.context), element = this, instance = $module.data(moduleNamespace), - className = settings.className, - errors = settings.errors, - moduleOffset, moduleHeight, @@ -258,7 +260,7 @@ $.fn.nag = function(parameters) { $.cookie(key, value); } else { - module.error(errors.noStorage); + module.error(error.noStorage); } }, get: function(key) { @@ -271,7 +273,7 @@ $.fn.nag = function(parameters) { return $.cookie(key); } else { - module.error(errors.noStorage); + module.error(error.noStorage); } } @@ -370,7 +372,8 @@ $.fn.nag = function(parameters) { title = settings.moduleName + ':', totalTime = 0 ; - time = false; + time = false; + clearTimeout(module.performance.timer); $.each(performance, function(index, data) { totalTime += data['Execution Time']; }); @@ -412,7 +415,7 @@ $.fn.nag = function(parameters) { found = instance[value]; return true; } - module.error(errors.method); + module.error(error.method); return false; }); } @@ -484,8 +487,9 @@ $.fn.nag.settings = { // context for scroll event context : window, - errors: { - noStorage : 'Neither $.cookie or store is defined. A storage solution is required for storing state' + error: { + noStorage : 'Neither $.cookie or store is defined. A storage solution is required for storing state', + method : 'The method you called is not defined.' }, className : { diff --git a/src/modules/popup.js b/src/modules/popup.js index b3105c2b6..7a78f1372 100755 --- a/src/modules/popup.js +++ b/src/modules/popup.js @@ -545,7 +545,8 @@ $.fn.popup = function(parameters) { title = settings.moduleName + ':', totalTime = 0 ; - time = false; + time = false; + clearTimeout(module.performance.timer); $.each(performance, function(index, data) { totalTime += data['Execution Time']; }); diff --git a/src/modules/search.js b/src/modules/search.js index be2ef559f..fdb466dd1 100755 --- a/src/modules/search.js +++ b/src/modules/search.js @@ -14,8 +14,14 @@ $.fn.search = function(source, parameters) { $allModules = $(this), settings = $.extend(true, {}, $.fn.search.settings, parameters), - eventNamespace = '.' + settings.namespace, - moduleNamespace = settings.namespace + '-module', + + className = settings.className, + selector = settings.selector, + errors = settings.errors, + namespace = settings.namespace, + + eventNamespace = '.' + namespace, + moduleNamespace = namespace + '-module', moduleSelector = $allModules.selector || '', time = new Date().getTime(), @@ -30,17 +36,15 @@ $.fn.search = function(source, parameters) { .each(function() { var $module = $(this), - $prompt = $module.find(settings.selector.prompt), - $searchButton = $module.find(settings.selector.searchButton), - $results = $module.find(settings.selector.results), - $result = $module.find(settings.selector.result), - $category = $module.find(settings.selector.category), + $prompt = $module.find(selector.prompt), + $searchButton = $module.find(selector.searchButton), + $results = $module.find(selector.results), + $result = $module.find(selector.result), + $category = $module.find(selector.category), element = this, instance = $module.data(moduleNamespace), - - className = settings.className, - errors = settings.errors, + module ; module = { @@ -70,12 +74,13 @@ $.fn.search = function(source, parameters) { .on('click' + eventNamespace, module.search.query) ; $results - .on('click' + eventNamespace, settings.selector.result, module.results.select) + .on('click' + eventNamespace, selector.result, module.results.select) ; module.instantiate(); }, instantiate: function() { module.verbose('Storing instance of module', module); + instance = module; $module .data(moduleNamespace, module) ; @@ -104,8 +109,8 @@ $.fn.search = function(source, parameters) { handleKeyboard: function(event) { var // force latest jq dom - $result = $module.find(settings.selector.result), - $category = $module.find(settings.selector.category), + $result = $module.find(selector.result), + $category = $module.find(selector.category), keyCode = event.which, keys = { backspace : 8, @@ -121,6 +126,7 @@ $.fn.search = function(source, parameters) { ; // search shortcuts if(keyCode == keys.escape) { + module.verbose('Escape key pressed, blurring search field'); $prompt .trigger('blur') ; @@ -128,6 +134,7 @@ $.fn.search = function(source, parameters) { // result shortcuts if($results.filter(':visible').size() > 0) { if(keyCode == keys.enter) { + module.verbose('Enter key pressed, selecting active result'); if( $result.filter('.' + activeClass).exists() ) { $.proxy(module.results.select, $result.filter('.' + activeClass) )(); event.preventDefault(); @@ -135,6 +142,7 @@ $.fn.search = function(source, parameters) { } } else if(keyCode == keys.upArrow) { + module.verbose('Up key pressed, changing active result'); newIndex = (currentIndex - 1 < 0) ? currentIndex : currentIndex - 1 @@ -152,6 +160,7 @@ $.fn.search = function(source, parameters) { event.preventDefault(); } else if(keyCode == keys.downArrow) { + module.verbose('Down key pressed, changing active result'); newIndex = (currentIndex + 1 >= resultSize) ? currentIndex : currentIndex + 1 @@ -172,6 +181,7 @@ $.fn.search = function(source, parameters) { else { // query shortcuts if(keyCode == keys.enter) { + module.verbose('Enter key pressed, executing query'); module.search.query(); $searchButton .addClass(className.down) @@ -470,7 +480,8 @@ $.fn.search = function(source, parameters) { title = settings.moduleName + ':', totalTime = 0 ; - time = false; + time = false; + clearTimeout(module.performance.timer); $.each(performance, function(index, data) { totalTime += data['Execution Time']; }); @@ -537,6 +548,7 @@ $.fn.search = function(source, parameters) { }) ; + module.performance.display(); return (invokedResponse) ? invokedResponse : this diff --git a/src/modules/shape.js b/src/modules/shape.js index 07d765f78..62a63faf6 100755 --- a/src/modules/shape.js +++ b/src/modules/shape.js @@ -13,12 +13,18 @@ $.fn.shape = function(parameters) { var $allModules = $(this), + moduleSelector = $allModules.selector || '', settings = $.extend(true, {}, $.fn.shape.settings, parameters), + // internal aliases + namespace = settings.namespace, + selector = settings.selector, + error = settings.error, + className = settings.className, + // define namespaces for modules - eventNamespace = '.' + settings.namespace, - moduleNamespace = 'module-' + settings.namespace, - moduleSelector = $allModules.selector || '', + eventNamespace = '.' + namespace, + moduleNamespace = 'module-' + namespace, time = new Date().getTime(), performance = [], @@ -34,8 +40,8 @@ $.fn.shape = function(parameters) { var // selector cache $module = $(this), - $sides = $module.find(settings.selector.sides), - $side = $module.find(settings.selector.side), + $sides = $module.find(selector.sides), + $side = $module.find(selector.side), // private variables $activeSide, @@ -44,12 +50,6 @@ $.fn.shape = function(parameters) { // standard module element = this, instance = $module.data(moduleNamespace), - - // internal aliases - namespace = settings.namespace, - error = settings.error, - className = settings.className, - module ; @@ -58,6 +58,10 @@ $.fn.shape = function(parameters) { initialize: function() { module.verbose('Initializing module for', element); module.set.defaultSide(); + }, + + instantiate: function() { + module.verbose('Storing instance of module', module); instance = module; $module .data(moduleNamespace, instance) @@ -75,8 +79,8 @@ $.fn.shape = function(parameters) { refresh: function() { module.verbose('Refreshing selector cache for', element); $module = $(element); - $sides = $(this).find(settings.selector.shape); - $side = $(this).find(settings.selector.side); + $sides = $(this).find(selector.shape); + $side = $(this).find(selector.side); }, repaint: function() { @@ -178,15 +182,85 @@ $.fn.shape = function(parameters) { }, is: { - animating: function() { return $module.hasClass(className.animating); } - }, get: { + transform: { + up: function() { + var + translate = { + y: -(($activeSide.outerHeight() - $nextSide.outerHeight()) / 2), + z: -($activeSide.outerHeight() / 2) + } + ; + return { + transform: 'translateY(' + translate.y + 'px) translateZ('+ translate.z + 'px) rotateX(-90deg)' + }; + }, + + down: function() { + var + translate = { + y: -(($activeSide.outerHeight() - $nextSide.outerHeight()) / 2), + z: -($activeSide.outerHeight() / 2) + } + ; + return { + transform: 'translateY(' + translate.y + 'px) translateZ('+ translate.z + 'px) rotateX(90deg)' + }; + }, + + left: function() { + var + translate = { + x : -(($activeSide.outerWidth() - $nextSide.outerWidth()) / 2), + z : -($activeSide.outerWidth() / 2) + } + ; + return { + transform: 'translateX(' + translate.x + 'px) translateZ(' + translate.z + 'px) rotateY(90deg)' + }; + }, + + right: function() { + var + translate = { + x : -(($activeSide.outerWidth() - $nextSide.outerWidth()) / 2), + z : -($activeSide.outerWidth() / 2) + } + ; + return { + transform: 'translateX(' + translate.x + 'px) translateZ(' + translate.z + 'px) rotateY(-90deg)' + }; + }, + + over: function() { + var + translate = { + x : -(($activeSide.outerWidth() - $nextSide.outerWidth()) / 2) + } + ; + return { + transform: 'translateX(' + translate.x + 'px) rotateY(180deg)' + }; + }, + + back: function() { + var + translate = { + x : -(($activeSide.outerWidth() - $nextSide.outerWidth()) / 2) + } + ; + return { + transform: 'translateX(' + translate.x + 'px) rotateY(-180deg)' + }; + } + }, + transitionEvent: function() { var element = document.createElement('element'), @@ -206,9 +280,9 @@ $.fn.shape = function(parameters) { }, nextSide: function() { - return ( $activeSide.next(settings.selector.side).size() > 0 ) - ? $activeSide.next(settings.selector.side) - : $module.find(settings.selector.side).first() + return ( $activeSide.next(selector.side).size() > 0 ) + ? $activeSide.next(selector.side) + : $module.find(selector.side).first() ; } @@ -218,9 +292,9 @@ $.fn.shape = function(parameters) { defaultSide: function() { $activeSide = $module.find('.' + settings.className.active); - $nextSide = ( $activeSide.next(settings.selector.side).size() > 0 ) - ? $activeSide.next(settings.selector.side) - : $module.find(settings.selector.side).first() + $nextSide = ( $activeSide.next(selector.side).size() > 0 ) + ? $activeSide.next(selector.side) + : $module.find(selector.side).first() ; module.verbose('Active side set to', $activeSide); module.verbose('Next side set to', $nextSide); @@ -269,10 +343,10 @@ $.fn.shape = function(parameters) { module.debug('Flipping up', $nextSide); if( !module.is.animating() ) { module.stage.above(); - module.animate( module.getTransform.up() ); + module.animate( module.get.transform.up() ); } else { - module.queue('flip.up'); + module.queue('flip up'); } }, @@ -280,10 +354,10 @@ $.fn.shape = function(parameters) { module.debug('Flipping down', $nextSide); if( !module.is.animating() ) { module.stage.below(); - module.animate( module.getTransform.down() ); + module.animate( module.get.transform.down() ); } else { - module.queue('flip.down'); + module.queue('flip down'); } }, @@ -291,10 +365,10 @@ $.fn.shape = function(parameters) { module.debug('Flipping left', $nextSide); if( !module.is.animating() ) { module.stage.left(); - module.animate(module.getTransform.left() ); + module.animate(module.get.transform.left() ); } else { - module.queue('flip.left'); + module.queue('flip left'); } }, @@ -302,10 +376,10 @@ $.fn.shape = function(parameters) { module.debug('Flipping right', $nextSide); if( !module.is.animating() ) { module.stage.right(); - module.animate(module.getTransform.right() ); + module.animate(module.get.transform.right() ); } else { - module.queue('flip.right'); + module.queue('flip right'); } }, @@ -313,10 +387,10 @@ $.fn.shape = function(parameters) { module.debug('Flipping over', $nextSide); if( !module.is.animating() ) { module.stage.behind(); - module.animate(module.getTransform.over() ); + module.animate(module.get.transform.over() ); } else { - module.queue('flip.over'); + module.queue('flip over'); } }, @@ -324,89 +398,15 @@ $.fn.shape = function(parameters) { module.debug('Flipping back', $nextSide); if( !module.is.animating() ) { module.stage.behind(); - module.animate(module.getTransform.back() ); + module.animate(module.get.transform.back() ); } else { - module.queue('flip.back'); + module.queue('flip back'); } } }, - getTransform: { - - up: function() { - var - translate = { - y: -(($activeSide.outerHeight() - $nextSide.outerHeight()) / 2), - z: -($activeSide.outerHeight() / 2) - } - ; - return { - transform: 'translateY(' + translate.y + 'px) translateZ('+ translate.z + 'px) rotateX(-90deg)' - }; - }, - - down: function() { - var - translate = { - y: -(($activeSide.outerHeight() - $nextSide.outerHeight()) / 2), - z: -($activeSide.outerHeight() / 2) - } - ; - return { - transform: 'translateY(' + translate.y + 'px) translateZ('+ translate.z + 'px) rotateX(90deg)' - }; - }, - - left: function() { - var - translate = { - x : -(($activeSide.outerWidth() - $nextSide.outerWidth()) / 2), - z : -($activeSide.outerWidth() / 2) - } - ; - return { - transform: 'translateX(' + translate.x + 'px) translateZ(' + translate.z + 'px) rotateY(90deg)' - }; - }, - - right: function() { - var - translate = { - x : -(($activeSide.outerWidth() - $nextSide.outerWidth()) / 2), - z : -($activeSide.outerWidth() / 2) - } - ; - return { - transform: 'translateX(' + translate.x + 'px) translateZ(' + translate.z + 'px) rotateY(-90deg)' - }; - }, - - over: function() { - var - translate = { - x : -(($activeSide.outerWidth() - $nextSide.outerWidth()) / 2) - } - ; - return { - transform: 'translateX(' + translate.x + 'px) rotateY(180deg)' - }; - }, - - back: function() { - var - translate = { - x : -(($activeSide.outerWidth() - $nextSide.outerWidth()) / 2) - } - ; - return { - transform: 'translateX(' + translate.x + 'px) rotateY(-180deg)' - }; - } - - }, - stage: { above: function() { @@ -615,7 +615,8 @@ $.fn.shape = function(parameters) { title = settings.moduleName + ':', totalTime = 0 ; - time = false; + time = false; + clearTimeout(module.performance.timer); $.each(performance, function(index, data) { totalTime += data['Execution Time']; }); @@ -683,6 +684,7 @@ $.fn.shape = function(parameters) { } }) ; + module.performance.display(); return (invokedResponse) ? invokedResponse : this diff --git a/src/modules/star.js b/src/modules/star.js index 7c600e663..35c605fb4 100755 --- a/src/modules/star.js +++ b/src/modules/star.js @@ -8,173 +8,299 @@ ;(function ($, window, document, undefined) { - $.fn.starReview = function(parameters) { - var - settings = $.extend(true, {}, $.fn.starReview.settings, parameters), - // hoist arguments - moduleArguments = arguments || false - ; - $(this) - .each(function() { - var - $module = $(this), - $star = $module.find(settings.selector.star), - - className = settings.className, - namespace = settings.namespace, - instance = $module.data('module'), - module - ; - - module = { +$.fn.starReview = function(parameters) { + var + $allModules = $(this), + moduleSelector = $allModules.selector || '', + + settings = $.extend(true, {}, $.fn.starReview.settings, parameters), + + namespace = settings.namespace, + className = settings.className, + selector = settings.selector, + error = settings.error, + + eventNamespace = '.' + namespace, + moduleNamespace = 'module-' + namespace, + + time = new Date().getTime(), + performance = [], + + query = arguments[0], + methodInvoked = (typeof query == 'string'), + queryArguments = [].slice.call(arguments, 1), + invokedResponse + ; + $allModules + .each(function() { + var + $module = $(this), + $star = $module.find(selector.star), + + element = this, + instance = $module.data(moduleNamespace), + module + ; - settings: settings, + module = { - initialize: function() { - if(settings.rateable) { - // expandable with states - if($.fn.state !== undefined) { - $module - .state() - ; - $star - .state() - ; - } + initialize: function() { + if(settings.rateable) { + // expandable with states + if($.fn.state !== undefined) { + $module + .state() + ; $star - .bind('mouseenter.' + namespace, module.event.mouseenter) - .bind('mouseleave.' + namespace, module.event.mouseleave) - .bind('click.' + namespace, module.event.click) + .state() ; } - $module - .addClass(className.initialize) - .data('module', module) + $star + .bind('mouseenter' + eventNamespace, module.event.mouseenter) + .bind('mouseleave' + eventNamespace, module.event.mouseleave) + .bind('click' + eventNamespace, module.event.click) ; - }, + } + $module + .addClass(className.initialize) + ; + module.instantiate(); + }, + + instantiate: function() { + $module + .data(moduleNamespace, module) + ; + }, + + setRating: function(rating) { + var + $activeStar = $star.eq(rating - 1) + ; + $module + .removeClass(className.hover) + ; + $star + .removeClass(className.hover) + ; + $activeStar + .nextAll() + .removeClass(className.active) + ; + $activeStar + .addClass(className.active) + .prevAll() + .addClass(className.active) + ; + $.proxy(settings.onRate, $module)(); + }, - setRating: function(rating) { + event: { + mouseenter: function() { var - $activeStar = $star.eq(rating - 1) - ; - $module - .removeClass(className.hover) - ; - $star - .removeClass(className.hover) + $activeStar = $(this) ; $activeStar .nextAll() - .removeClass(className.active) + .removeClass(className.hover) + ; + $module + .addClass(className.hover) ; $activeStar - .addClass(className.active) + .addClass(className.hover) .prevAll() - .addClass(className.active) - ; - $.proxy(settings.onRate, $module)(); - }, - - event: { - mouseenter: function() { - var - $activeStar = $(this) - ; - $activeStar - .nextAll() - .removeClass(className.hover) - ; - $module .addClass(className.hover) - ; - $activeStar - .addClass(className.hover) - .prevAll() - .addClass(className.hover) - ; - }, - mouseleave: function() { - $star - .removeClass(className.hover) - ; - }, - click: function() { - var - $activeStar = $(this) - ; - module.setRating( $star.index($activeStar) + 1); - } + ; }, - - // handle error logging - error: function(errorMessage) { - console.warn(settings.moduleName + ': ' + errorMessage); + mouseleave: function() { + $star + .removeClass(className.hover) + ; }, - - // allows for dot notation method calls - invoke: function(methodName, context, methodArguments) { + click: function() { + var + $activeStar = $(this) + ; + module.setRating( $star.index($activeStar) + 1); + } + }, + setting: function(name, value) { + if(value !== undefined) { + if( $.isPlainObject(name) ) { + $.extend(true, settings, name); + } + else { + settings[name] = value; + } + } + else { + return settings[name]; + } + }, + internal: function(name, value) { + if(value !== undefined) { + if( $.isPlainObject(name) ) { + $.extend(true, module, name); + } + else { + module[name] = value; + } + } + else { + return module[name]; + } + }, + debug: function() { + if(settings.debug) { + if(settings.performance) { + module.performance.log(arguments); + } + else { + module.debug = Function.prototype.bind.call(console.info, console, settings.moduleName + ':'); + } + } + }, + verbose: function() { + if(settings.verbose && settings.debug) { + if(settings.performance) { + module.performance.log(arguments); + } + else { + module.verbose = Function.prototype.bind.call(console.info, console, settings.moduleName + ':'); + } + } + }, + error: function() { + module.error = Function.prototype.bind.call(console.error, console, settings.moduleName + ':'); + }, + performance: { + log: function(message) { var - method + currentTime, + executionTime, + previousTime ; - methodArguments = methodArguments || Array.prototype.slice.call( arguments, 2 ); - if(typeof methodName == 'string' && instance !== undefined) { - methodName = methodName.split('.'); - $.each(methodName, function(index, name) { - if( $.isPlainObject( instance[name] ) ) { - instance = instance[name]; - return true; - } - else if( $.isFunction( instance[name] ) ) { - method = instance[name]; - return true; - } - module.error(settings.errors.method); - return false; + if(settings.performance) { + currentTime = new Date().getTime(); + previousTime = time || currentTime; + executionTime = currentTime - previousTime; + time = currentTime; + performance.push({ + 'Element' : element, + 'Name' : message[0], + 'Arguments' : [].slice.call(message, 1) || '', + 'Execution Time' : executionTime }); } - return ( $.isFunction( method ) ) - ? method.apply(context, methodArguments) - : false + clearTimeout(module.performance.timer); + module.performance.timer = setTimeout(module.performance.display, 100); + }, + display: function() { + var + title = settings.moduleName + ':', + totalTime = 0 ; + time = false; + clearTimeout(module.performance.timer); + $.each(performance, function(index, data) { + totalTime += data['Execution Time']; + }); + title += ' ' + totalTime + 'ms'; + if(moduleSelector) { + title += ' \'' + moduleSelector + '\''; + } + if( (console.group !== undefined || console.table !== undefined) && performance.length > 0) { + console.groupCollapsed(title); + if(console.table) { + console.table(performance); + } + else { + $.each(performance, function(index, data) { + console.log(data['Name'] + ': ' + data['Execution Time']+'ms'); + }); + } + console.groupEnd(); + } + performance = []; } - - }; - - if(instance !== undefined && moduleArguments) { - // simpler than invoke realizing to invoke itself (and losing scope due prototype.call() - if(moduleArguments[0] == 'invoke') { - moduleArguments = Array.prototype.slice.call( moduleArguments, 1 ); + }, + invoke: function(query, passedArguments, context) { + var + searchInstance = instance, + maxDepth, + found + ; + passedArguments = passedArguments || queryArguments; + context = element || context; + if(typeof query == 'string' && searchInstance !== undefined) { + query = query.split(/[\. ]/); + maxDepth = query.length - 1; + $.each(query, function(depth, value) { + if( $.isPlainObject( searchInstance[value] ) && (depth != maxDepth) ) { + searchInstance = searchInstance[value]; + return true; + } + else if( searchInstance[value] !== undefined ) { + found = searchInstance[value]; + return true; + } + module.error(error.method); + return false; + }); } - return module.invoke(moduleArguments[0], this, Array.prototype.slice.call( moduleArguments, 1 ) ); + if ( $.isFunction( found ) ) { + return found.apply(context, passedArguments); + } + return found || false; + } + }; + + if(methodInvoked) { + if(instance === undefined) { + module.initialize(); + } + invokedResponse = module.invoke(query); + } + else { + if(instance !== undefined) { + module.destroy(); } - // initializing module.initialize(); - }) - ; + } + }) + ; + module.performance.display(); + return (invokedResponse) + ? invokedResponse + : this + ; +}; - return this; - }; +$.fn.starReview.settings = { + + moduleName : 'Star', + namespace : 'star', + + rateable : true, + onRate : function(){}, - $.fn.starReview.settings = { - - moduleName : 'Star', - namespace : 'star', - - rateable : true, - onRate : function(){}, - - className : { - initialize : 'initialize', - loading : 'loading', - active : 'active', - hover : 'hover', - down : 'down' - }, + error: { + method : 'The method you called is not defined' + }, + + className : { + initialize : 'initialize', + loading : 'loading', + active : 'active', + hover : 'hover', + down : 'down' + }, - selector : { - star : 'i' - } + selector : { + star : 'i' + } - }; +}; })( jQuery, window , document ); diff --git a/src/modules/tab.js b/src/modules/tab.js index a97a9f20a..e034aa86e 100755 --- a/src/modules/tab.js +++ b/src/modules/tab.js @@ -15,6 +15,8 @@ $module = $(this), $tabs = $(settings.context).find(settings.selector.tabs), + + moduleSelector = $module.selector || '', cache = {}, firstLoad = true, @@ -27,14 +29,13 @@ element = this, time = new Date().getTime(), performance = [], - moduleSelector = $module.selector || '', - eventNamespace = '.' + settings.namespace, - moduleNamespace = settings.namespace + '-module', - className = settings.className, metadata = settings.metadata, errors = settings.errors, + + eventNamespace = '.' + settings.namespace, + moduleNamespace = settings.namespace + '-module', instance = $module.data(moduleNamespace), @@ -80,6 +81,11 @@ .on('click' + eventNamespace, module.event.click) ; } + module.instantiate(); + }, + + instantiate: function () { + module.verbose('Storing instance of module', module); $module .data(moduleNamespace, module) ; @@ -495,7 +501,8 @@ title = settings.moduleName + ':', totalTime = 0 ; - time = false; + time = false; + clearTimeout(module.performance.timer); $.each(performance, function(index, data) { totalTime += data['Execution Time']; }); @@ -561,7 +568,8 @@ module.initialize(); } - return (invokedResponse !== undefined) + module.performance.display(); + return (invokedResponse) ? invokedResponse : this ; diff --git a/src/modules/transition.js b/src/modules/transition.js index ebed81d13..20d055028 100755 --- a/src/modules/transition.js +++ b/src/modules/transition.js @@ -12,20 +12,24 @@ $.fn.transition = function(parameters) { var $allModules = $(this), + moduleSelector = $allModules.selector || '', settings = $.extend(true, {}, $.fn.transition.settings, parameters), - // define namespaces for modules - eventNamespace = '.' + settings.namespace, - moduleNamespace = 'module-' + settings.namespace, - moduleSelector = $allModules.selector || '', - time = new Date().getTime(), performance = [], query = arguments[0], methodInvoked = (typeof query == 'string'), queryArguments = [].slice.call(arguments, 1), + + error = settings.error, + namespace = settings.namespace, + + // define namespaces for modules + eventNamespace = '.' + namespace, + moduleNamespace = 'module-' + namespace, + invokedResponse ; @@ -236,7 +240,8 @@ $.fn.transition = function(parameters) { title = settings.moduleName + ':', totalTime = 0 ; - time = false; + time = false; + clearTimeout(module.performance.timer); $.each(performance, function(index, data) { totalTime += data['Execution Time']; }); diff --git a/src/modules/video.js b/src/modules/video.js index 3cbf11357..dc0fa0fcf 100755 --- a/src/modules/video.js +++ b/src/modules/video.js @@ -21,33 +21,33 @@ $.fn.video = function(parameters) { : $.fn.video.settings, moduleSelector = $allModules.selector || '', - + time = new Date().getTime(), performance = [], - + query = arguments[0], methodInvoked = (typeof query == 'string'), queryArguments = [].slice.call(arguments, 1), - + + selector = settings.selector, + className = settings.className, + error = settings.error, + metadata = settings.metadata, + namespace = settings.namespace, + + eventNamespace = '.' + namespace, + moduleNamespace = namespace + '-module', + invokedResponse ; - $(this) + $allModules .each(function() { var - $module = $(this), - $placeholder = $module.find(settings.selector.placeholder), - $playButton = $module.find(settings.selector.playButton), - $embed = $module.find(settings.selector.embed), - - eventNamespace = '.' + settings.namespace, - moduleNamespace = settings.namespace + '-module', - - selector = settings.selector, - className = settings.className, - error = settings.error, - metadata = settings.metadata, - namespace = settings.namespace, + $module = $(this), + $placeholder = $module.find(selector.placeholder), + $playButton = $module.find(selector.playButton), + $embed = $module.find(selector.embed), element = this, instance = $module.data(moduleNamespace), @@ -68,6 +68,7 @@ $.fn.video = function(parameters) { }, instantiate: function() { + module.verbose('Storing instance of module', module); instance = module; $module .data(moduleNamespace, module) @@ -300,7 +301,8 @@ $.fn.video = function(parameters) { title = settings.moduleName + ':', totalTime = 0 ; - time = false; + time = false; + clearTimeout(module.performance.timer); $.each(performance, function(index, data) { totalTime += data['Execution Time']; }); @@ -366,7 +368,7 @@ $.fn.video = function(parameters) { } }) ; - + module.performance.display(); return (invokedResponse) ? invokedResponse : this