diff options
Diffstat (limited to 'javascript/videojs/docs/legacy-docs/api/js/api-index.js')
| -rw-r--r-- | javascript/videojs/docs/legacy-docs/api/js/api-index.js | 281 |
1 files changed, 281 insertions, 0 deletions
diff --git a/javascript/videojs/docs/legacy-docs/api/js/api-index.js b/javascript/videojs/docs/legacy-docs/api/js/api-index.js new file mode 100644 index 0000000..c55bcb6 --- /dev/null +++ b/javascript/videojs/docs/legacy-docs/api/js/api-index.js @@ -0,0 +1,281 @@ +var BCLSVJS = (function (window, document, docData) { + 'use strict'; + var title = document.getElementsByTagName('title')[0], + // data structures + classes = [], + // elements + main, + doc_body = document.getElementsByTagName('body')[0], + // functions + isDefined, + findObjectsInArray, + getSubArray, + sortArray, + createEl, + bclslog, + addHeaderContent, + addIndex, + init; + /** + * Logging function - safe for IE + * @param {string} context - description of the data + * @param {*} message - the data to be logged by the console + * @return {} + */ + bclslog = function (context, message) { + if (window['console'] && console['log']) { + console.log(context, message); + } + return; + }; + /** + * tests for all the ways a variable might be undefined or not have a value + * @param {*} x the variable to test + * @return {Boolean} true if variable is defined and has a value + */ + isDefined = function (x) { + if (x !== '' && x !== null && x !== undefined && x !== NaN) { + return true; + } + return false; + }; + /** + * find indexes of a set of object in array of objects + * based on some property value + * generally useful for finding several objects + * + * @param {array} targetArray - array to search + * @param {string} objProperty - object property to search + * @param {string|number} value - value of the property to search for + * @return {array} array of indexes for matching objects + */ + findObjectsInArray = function (targetArray, objProperty, value) { + var i, totalItems = targetArray.length, newArr = []; + for (i = 0; i < totalItems; i++) { + if (targetArray[i][objProperty] === value) { + newArr.push(i); + } + } + return newArr; + }; + /** + * get a subset of objects in array of objects + * based on some property value + * + * @param {array} targetArray - array to search + * @param {string} objProperty - object property to search + * @param {string|number} value - value of the property to search for + * @return {array} array of objects with matching property value + */ + getSubArray = function (targetArray, objProperty, value) { + var i, totalItems = targetArray.length, idxArr = []; + for (i = 0; i < totalItems; i++) { + if (targetArray[i][objProperty] === value) { + idxArr.push(targetArray[i]); + } + } + return idxArr; + }; + /** + * sort an array of objects based on an object property + * @param {array} targetArray - array to sort + * @param {string} objProperty - property whose value to sort on + * @return {array} the sorted array + */ + sortArray = function (targetArray, objProperty) { + targetArray.sort(function (a, b) { + var propA = a[objProperty].toLowerCase(), propB = b[objProperty].toLowerCase(); + // sort ascending; reverse propA and propB to sort descending + if (propA < propB) { + return -1; + } else if (propA > propB) { + return 1; + } + return 0; + }); + return targetArray; + }; + /** + * create an element + * @param {string} type - the element type + * @param {object} attributes - attributes to add to the element + * @return {object} the HTML element + */ + createEl = function (type, attributes) { + var el; + if (isDefined(type)) { + el = document.createElement(type); + if (isDefined(attributes)) { + var attr; + for (attr in attributes) { + el.setAttribute(attr, attributes[attr]); + } + } + return el; + } + }; + /** + * add the class header content + */ + addHeaderContent = function () { + var doc_body = document.getElementsByTagName('body')[0], + mainContent = createEl('div', {id: 'main'}), + topSection = createEl('section', {id: 'top', class: 'section'}), + mainLink = createEl('a', {href: '//docs.videojs.com/', style: 'float:right;font-weight:bold;margin-top:-3em;background-color:#ECEEF1;padding:2px 4px;'}), + header = createEl('h1'), + text = document.createTextNode('video.js API Documentation Index'), + topP, + topPtext, + topLink, + topLinkStrong; + // add elements + mainLink.appendChild(document.createTextNode('Documentation Home')); + topSection.appendChild(mainLink); + header.appendChild(text); + topSection.appendChild(header); + // add paragraph for videojs function + topP = createEl('p'); + topPtext = document.createTextNode('If you are new to video.js, look first at '); + topP.appendChild(topPtext); + topLink = createEl('a', {href: 'video.html'}); + topP.appendChild(topLink); + topPtext = document.createTextNode('videojs'); + topLinkStrong = createEl('strong'); + topLink.appendChild(topLinkStrong); + topLinkStrong.appendChild(topPtext); + topPtext = document.createTextNode(', which Doubles as the main function for users to create a player instance and also the main library object.'); + topP.appendChild(topPtext); + topSection.appendChild(topP); + // add paragraph for the player class + topP = createEl('p'); + topPtext = document.createTextNode('Next, look at the '); + topP.appendChild(topPtext); + topLink = createEl('a', {href: 'player.html'}); + topP.appendChild(topLink); + topPtext = document.createTextNode('player'); + topLinkStrong = createEl('strong'); + topLink.appendChild(topLinkStrong); + topLinkStrong.appendChild(topPtext); + topPtext = document.createTextNode(' class. An instance of the Player class is created when any of the Video.js setup methods are used to initialize a video. The methods and events of the player object are the most commonly used for managing the player and playback.'); + topP.appendChild(topPtext); + topSection.appendChild(topP); + // add the top section to the document + mainContent.appendChild(topSection); + doc_body.appendChild(mainContent); + main = document.getElementById('main'); + }; + /** + * add the side nav + */ + addIndex = function () { + var section = createEl('section', {id: 'index', class: 'section'}), + sectionHeader = createEl('h2'), + classlists = {}, + alphaArr = ['a', 'b', 'c', 'd', 'e', 'f', 'g', 'h', 'i', 'j', 'k', 'l', 'm', 'n', 'o', 'p', 'q', 'r', 's', 't', 'u', 'v', 'w', 'x', 'y', 'z'], + firstLetter, + numberAlphaItems = 0, + itemsPerColumn, + columnDiv, + item, + indexEls = [], + indexListHolder, + indexList, + indexListHeader, + listItem, + listLink, + listText, + text, + i, + iMax, + j, + jMax, + counter = 0; + text = document.createTextNode('Index of classes'); + sectionHeader.appendChild(text); + // create alpha arrays + iMax = classes.length; + for (i = 0; i < iMax; i++) { + item = classes[i]; + firstLetter = item.name.charAt(0).toLowerCase(); + // create alpha array if non-existent, push item + if (isDefined(classlists[firstLetter]) === false) { + classlists[firstLetter] = []; + numberAlphaItems++; + } + classlists[firstLetter].push({name: item.name, filename: item.meta.filename}); + } + itemsPerColumn = Math.ceil(numberAlphaItems / 3); + bclslog('classlists', classlists); + iMax = alphaArr.length; + for (i = 0; i < iMax; i++) { + if (isDefined(classlists[alphaArr[i]])) { + indexListHolder = createEl('div'); + indexListHeader = createEl('h4', {class: 'indexHeader'}); + text = document.createTextNode('~' + alphaArr[i].toUpperCase() + '~'); + indexListHeader.appendChild(text); + indexListHolder.appendChild(indexListHeader); + indexList = createEl('ul'); + indexListHolder.appendChild(indexList); + jMax = classlists[alphaArr[i]].length; + bclslog('jMax', jMax); + for (j = 0; j < jMax; j++) { + bclslog('classlists[alphaArr[i]', classlists[alphaArr[i]]); + listItem = createEl('li'); + indexList.appendChild(listItem); + listLink = createEl('a', {href: classlists[alphaArr[i]][j].filename.replace('.js', '.html')}); + listItem.appendChild(listLink); + listText = document.createTextNode(classlists[alphaArr[i]][j].name); + listLink.appendChild(listText); + } + indexEls.push(indexListHolder); + } + } + section.appendChild(sectionHeader); + iMax = indexEls.length; + for (i = 0; i < iMax; i++) { + if (counter > itemsPerColumn) { + counter = 0; + } + if (counter === 0) { + columnDiv = createEl('div', {class: 'indexColumn'}); + section.appendChild(columnDiv); + } + columnDiv.appendChild(indexEls[i]); + } + main.appendChild(section); + }; + /** + * init gets things going + */ + init = function () { + var privateItems = [], + videojs = {name: 'videojs', meta: {filename: 'video.js'}}, + j; + // get the data objects for all classes + classes = getSubArray(docData, 'kind', 'class'); + // videojs is a special case + classes.push(videojs); + bclslog('classes', classes); + // set the doc title + title.innerHTML = 'API Documentation Index'; + // remove any private items + privateItems = findObjectsInArray(classes, 'access', 'private'); + bclslog('privateItems', privateItems); + j = privateItems.length; + bclslog('j', j); + while (j > 0) { + j--; + classes.splice(privateItems[j], 1); + } + // sort the array + classes = sortArray(classes, 'name'); + bclslog('classes', classes); + // now we're ready to roll + addHeaderContent(); + addIndex(); + }; + init(); + return { + + }; +})(window, document, docData);
\ No newline at end of file |
