Skip to content
Snippets Groups Projects
Commit c805f70f authored by Kevin Abel's avatar Kevin Abel
Browse files

Convert JS into AMD for loading through requirejs

parent bb2313dd
No related branches found
No related tags found
No related merge requests found
(function(window) { define(['jquery', 'analytics'], function ($, analytics) {
"use strict"; "use strict";
var
initCallback = 'searchInit',
// Service server (defaults to //directory.unl.edu) // Service server (defaults to //directory.unl.edu)
directoryServer = null, var directoryServer = null;
unlContext = '015236299699564929946:nk1siew10ie',
transitionDelay = 400,
inputSel = '#search_q',
formSel = '#searchform form',
resultSel = '.search-results',
googleSel = '.google-results',
evtStateChange = 'statechange', var unlContext = '015236299699564929946:nk1siew10ie';
wrapperMain = '#search_wrapper',
wrapperWeb = '#search_results',
wrapperDir = '#directory_results',
dirResults = 'ppl_results', var transitionDelay = 400;
unlResults = 'unl_results',
localResults = 'local_results';
window[initCallback] = function() { var inputSel = '#search_q';
window[initCallback] = null; var formSel = '#searchform form';
var resultSel = '.search-results';
require(['jquery', 'analytics'], function($, analytics) { var googleSel = '.google-results';
// Caching Class
var Cache = function() {
this.storage = {};
};
Cache.prototype.get = function(key) {
return this.storage[key] || undefined;
};
Cache.prototype.save = function(key, value) {
this.storage[key] = value;
return this;
};
// Directory Controller Class var evtStateChange = 'statechange';
var Directory = function(server, containerId) { var wrapperMain = '#search_wrapper';
var cntSel = '#' + containerId; var wrapperWeb = '#search_results';
var wrapperDir = '#directory_results';
this._server = server || '//directory.unl.edu';
this._cache = new Cache();
this._searchCanceled = false;
this._viewState = 0;
this._renderTo = cntSel;
$(function() {
$(cntSel).on('click', '.fn a', function() {
if (this.target !== '_blank') {
this.target = '_blank';
}
});
});
};
Directory.prototype._render = function(data) {
if (this._searchCanceled) {
return;
}
$(this._renderTo) var dirResults = 'ppl_results';
.html(data) var unlResults = 'unl_results';
.addClass('active'); var localResults = 'local_results';
this._renderState(0); window.pf_getUID = function() {
}; return true;
Directory.prototype._renderState = function(duration) { };
var $innerRes = $('.results', $(this._renderTo)),
$showRes, failState,
depFilter = '.departments';
if (!$innerRes.length) {
return;
}
$innerRes.slideUp(duration); // Caching Class
if (this._viewState === 0) { var Cache = function() {
$showRes = $innerRes.not(depFilter); this.storage = {};
failState = 1; };
} else { Cache.prototype.get = function(key) {
$showRes = $innerRes.filter(depFilter); return this.storage[key] || undefined;
failState = 0; };
} Cache.prototype.save = function(key, value) {
this.storage[key] = value;
return this;
};
if (!$showRes.length && typeof duration !== "undefined") { // Directory Controller Class
this.changeViewState(failState); var Directory = function(server, containerId) {
return; var cntSel = '#' + containerId;
}
$showRes.slideDown(); this._server = server || '//directory.unl.edu';
}; this._cache = new Cache();
Directory.prototype.cancelSearch = function() { this._searchCanceled = false;
this._searchCanceled = true; this._viewState = 0;
if (this._xhr) { this._renderTo = cntSel;
this._xhr.abort();
}
};
Directory.prototype.execute = function(q) {
var cacheData = this._cache.get(q),
self = this;
this._searchCanceled = false; $(function() {
if (this._xhr) { $(cntSel).on('click', '.fn a', function() {
this._xhr.abort(); if (this.target !== '_blank') {
this.target = '_blank';
} }
});
});
};
Directory.prototype._render = function(data) {
if (this._searchCanceled) {
return;
}
if (cacheData) { $(this._renderTo)
this._render(cacheData); .html(data)
} else { .addClass('active');
this._xhr = $.get(this._server + '/service.php?q=' + encodeURIComponent(q), function(data) {
self._cache.save(q, data);
self._render(data);
});
}
};
Directory.prototype.changeViewState = function(state) {
if (this._viewState == state) {
return;
}
var prevState = this._viewState; this._renderState(0);
};
Directory.prototype._renderState = function(duration) {
var $innerRes = $('.results', $(this._renderTo)),
$showRes, failState,
depFilter = '.departments';
if (!$innerRes.length) {
return;
}
$innerRes.slideUp(duration);
if (this._viewState === 0) {
$showRes = $innerRes.not(depFilter);
failState = 1;
} else {
$showRes = $innerRes.filter(depFilter);
failState = 0;
}
if (!$showRes.length && typeof duration !== "undefined") {
this.changeViewState(failState);
return;
}
$showRes.slideDown();
};
Directory.prototype.cancelSearch = function() {
this._searchCanceled = true;
if (this._xhr) {
this._xhr.abort();
}
};
Directory.prototype.execute = function(q) {
var cacheData = this._cache.get(q),
self = this;
this._searchCanceled = false;
if (this._xhr) {
this._xhr.abort();
}
if (cacheData) {
this._render(cacheData);
} else {
this._xhr = $.get(this._server + '/service.php?q=' + encodeURIComponent(q), function(data) {
self._cache.save(q, data);
self._render(data);
});
}
};
Directory.prototype.changeViewState = function(state) {
if (this._viewState == state) {
return;
}
this._viewState = state; var prevState = this._viewState;
this._renderState();
$(this._renderTo).trigger(evtStateChange, [state, prevState]); this._viewState = state;
}; this._renderState();
Directory.prototype.clearAllResults = function() {
$(this._renderTo).empty();
};
var $(this._renderTo).trigger(evtStateChange, [state, prevState]);
// query related };
query = '', Directory.prototype.clearAllResults = function() {
firstQ = window['INITIAL_QUERY'], $(this._renderTo).empty();
};
actCls = 'active', return {
initialize: function(firstQ, localContext) {
// query related
var query = '';
var actCls = 'active';
// CustomSearchControl instances and config // CustomSearchControl instances and config
unlSearch, var unlSearch;
localSearch, var localSearch;
activeSearch, var activeSearch;
directorySearch, var directorySearch;
localContext = window['LOCAL_SEARCH_CONTEXT'], var drawOp = new google.search.DrawOptions();
drawOp = new google.search.DrawOptions(), var searchToggleLock = false;
searchToggleLock = false,
var trackQuery = function(q) {
trackQuery = function(q) {
var loc = window.location, var loc = window.location,
qs = loc.search.replace(/(?:(\?)|&)q=[^&]*(?:&|$)/, '$1'), qs = loc.search.replace(/(?:(\?)|&)q=[^&]*(?:&|$)/, '$1'),
page = [ page = [
...@@ -167,8 +162,9 @@ ...@@ -167,8 +162,9 @@
if (window.history.pushState) { if (window.history.pushState) {
window.history.pushState({query: q}, '', page); window.history.pushState({query: q}, '', page);
} }
}, };
queryComplete = function(control) {
var queryComplete = function(control) {
var $root = $(control.root); var $root = $(control.root);
// a11y patching // a11y patching
...@@ -188,21 +184,22 @@ ...@@ -188,21 +184,22 @@
$root.closest(googleSel).slideDown(); $root.closest(googleSel).slideDown();
searchToggleLock = false; searchToggleLock = false;
}, };
fullQuery = function(q, track) {
var fullQuery = function(q, track) {
if (track !== false) { if (track !== false) {
trackQuery(q); trackQuery(q);
} }
try { try {
activeSearch.execute(q, undefined, {}); activeSearch.execute(q, undefined, {});
} catch (e) { } catch (e) {
console && console.log(e);
queryComplete(activeSearch); queryComplete(activeSearch);
} }
directorySearch.execute(q); directorySearch.execute(q);
$(wrapperMain).fadeIn(); $(wrapperMain).fadeIn();
}, };
fullStop = function() {
var fullStop = function() {
activeSearch.cancelSearch(); activeSearch.cancelSearch();
directorySearch.cancelSearch(); directorySearch.cancelSearch();
$(resultSel).removeClass(actCls); $(resultSel).removeClass(actCls);
...@@ -211,14 +208,15 @@ ...@@ -211,14 +208,15 @@
activeSearch.clearAllResults(); activeSearch.clearAllResults();
directorySearch.clearAllResults(); directorySearch.clearAllResults();
}, transitionDelay); }, transitionDelay);
}, };
queryStart = function(control, searcher, q) {
var queryStart = function(control, searcher, q) {
$(control.root).closest(googleSel).slideUp(0); $(control.root).closest(googleSel).slideUp(0);
if (q !== query) { if (q !== query) {
trackQuery(q); trackQuery(q);
directorySearch.execute(q); directorySearch.execute(q);
} }
}; };
drawOp.enableSearchResultsOnly(); drawOp.enableSearchResultsOnly();
...@@ -361,7 +359,7 @@ ...@@ -361,7 +359,7 @@
passiveQuery(q, false); passiveQuery(q, false);
}); });
if (window.parent != undefined) { if (window.parent) {
$(document).on('keydown', function(e) { $(document).on('keydown', function(e) {
if (e.keyCode === 27) { if (e.keyCode === 27) {
window.parent.postMessage('wdn.search.close', "*"); window.parent.postMessage('wdn.search.close', "*");
...@@ -369,11 +367,6 @@ ...@@ -369,11 +367,6 @@
}); });
} }
}); });
}
});
};
window['pf_getUID'] = function() {
return true;
}; };
}(window)); });
0% Loading or .
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment