Add JSDoc inline comments to JS files.

Change-Id: Iea6dd40a3c1c676d62bbf6a15eaa931c824856f3
This commit is contained in:
Paul Van Eck 2015-06-08 22:31:40 -07:00
parent 6fffbca938
commit 960e7c3e65
8 changed files with 159 additions and 22 deletions

View File

@ -1,10 +1,10 @@
/* App Module */
/** Main app module where application dependencies are listed. */
var refstackApp = angular.module('refstackApp', [
'ui.router', 'ui.bootstrap', 'cgBusy']);
/*
* Handle application routing.
/**
* Handle application routing. Specific templates and controllers will be
* used based on the URL route.
*/
refstackApp.config([
'$stateProvider', '$urlRouterProvider',
@ -39,8 +39,8 @@ refstackApp.config([
}
]);
/*
* Load Config and start up the angular application.
/**
* Load config and start up the angular application.
*/
angular.element(document).ready(function () {
'use strict';

View File

@ -1,15 +1,29 @@
/* Refstack Capabilities Controller */
var refstackApp = angular.module('refstackApp');
/**
* Refstack Capabilities Controller
* This controller is for the '/capabilities' page where a user can browse
* through tests belonging to DefCore-defined capabilities.
*/
refstackApp.controller('capabilitiesController',
['$scope', '$http', 'refstackApiUrl',
function ($scope, $http, refstackApiUrl) {
'use strict';
/** Whether to hide/collapse the achievements for each capability. */
$scope.hideAchievements = true;
/** Whether to hide/collapse the tests for each capability. */
$scope.hideTests = true;
/** The target OpenStack marketing program to show capabilities for. */
$scope.target = 'platform';
/**
* The various possible capability statuses. The true value for each
* status is the name of the key, so by default only required
* capabilities will be shown.
*/
$scope.status = {
required: 'required',
advisory: '',
@ -17,6 +31,14 @@ refstackApp.controller('capabilitiesController',
removed: ''
};
/**
* Retrieve an array of available capability files from the Refstack
* API server, sort this array reverse-alphabetically, and store it in
* a scoped variable. The scope's selected version is initialized to
* the latest (i.e. first) version here as well. After a successful API
* call, the function to update the capabilities is called.
* Sample API return array: ["2015.03.json", "2015.04.json"]
*/
$scope.getVersionList = function () {
var content_url = refstackApiUrl + '/capabilities';
$scope.versionsRequest =
@ -31,6 +53,11 @@ refstackApp.controller('capabilitiesController',
});
};
/**
* This will contact the Refstack API server to retrieve the JSON
* content of the capability file corresponding to the selected
* version.
*/
$scope.update = function () {
var content_url = refstackApiUrl + '/capabilities/' +
$scope.version;
@ -47,10 +74,21 @@ refstackApp.controller('capabilitiesController',
$scope.getVersionList();
/**
* This is a filter that will check if a specific capability belongs
* to the selected OpenStack marketing program (programs typically
* correspond to 'components' in the DefCore schema). This filter
* is meant to be used with the ng-repeat directive.
* @param {Object} A capability object from the capabilities JSON
* @returns {Boolean} True if capability belongs to program
*/
$scope.filterProgram = function (capability) {
var components = $scope.capabilities.components;
var cap_array = [];
// The 'platform' target is comprised of multiple components, so
// we need to get the capabilities belonging to each of its
// components.
if ($scope.target === 'platform') {
var platform_components =
$scope.capabilities.platform.required;
@ -72,6 +110,13 @@ refstackApp.controller('capabilitiesController',
return (cap_array.indexOf(capability.id) > -1);
};
/**
* This filter will check if a capability's status corresponds
* to a status that is checked/selected in the UI. This filter
* is meant to be used with the ng-repeat directive.
* @param {Object} capability
* @returns {Boolean} True if capability's status is selected
*/
$scope.filterStatus = function (capability) {
return capability.status === $scope.status.required ||
capability.status === $scope.status.advisory ||

View File

@ -1,23 +1,42 @@
/* Refstack Results Report Controller */
var refstackApp = angular.module('refstackApp');
/**
* Refstack Results Report Controller
* This controller is for the '/results/<test run ID>' page where a user can
* view details for a specific test run.
*/
refstackApp.controller('resultsReportController',
['$scope', '$http', '$stateParams', 'refstackApiUrl',
function ($scope, $http, $stateParams, refstackApiUrl) {
'use strict';
/** The testID extracted from the URL route. */
$scope.testId = $stateParams.testID;
/** Whether to hide tests on start.*/
$scope.hideTests = true;
/** The target OpenStack marketing program to compare against. */
$scope.target = 'platform';
/** Whether the required capabilities accordian should be open. */
$scope.requiredOpen = true;
/** Mappings of DefCore components to marketing program names. */
$scope.targetMappings = {
'platform': 'Openstack Powered Platform',
'compute': 'OpenStack Powered Compute',
'object': 'OpenStack Powered Object Storage'
};
/**
* Retrieve an array of available capability files from the Refstack
* API server, sort this array reverse-alphabetically, and store it in
* a scoped variable. The scope's selected version is initialized to
* the latest (i.e. first) version here as well. After a successful API
* call, the function to update the capabilities is called.
* Sample API return array: ["2015.03.json", "2015.04.json"]
*/
var getVersionList = function () {
var content_url = refstackApiUrl + '/capabilities';
$scope.versionsRequest =
@ -33,6 +52,12 @@ refstackApp.controller('resultsReportController',
});
};
/**
* Retrieve results from the Refstack API server based on the test
* run id in the URL. This function is the first function that will
* be called from the controller. Upon successful retrieval of results,
* the function that gets the version list will be called.
*/
var getResults = function () {
var content_url = refstackApiUrl + '/results/' + $scope.testId;
$scope.resultsRequest =
@ -48,6 +73,12 @@ refstackApp.controller('resultsReportController',
});
};
/**
* This will contact the Refstack API server to retrieve the JSON
* content of the capability file corresponding to the selected
* version. A function to construct an object from the capability
* date will be called upon successful retrieval.
*/
$scope.updateCapabilities = function () {
$scope.showError = false;
var content_url = refstackApiUrl + '/capabilities/' +
@ -64,8 +95,17 @@ refstackApp.controller('resultsReportController',
});
};
/**
* This will build an object based on the capability data retrieved
* from the Refstack API server. This object will contain the
* information needed to form a report in the HTML template.
*/
$scope.buildCapabilityObject = function () {
var capabilities = $scope.capabilityData.capabilities;
// This is the object template where 'count' is the number of
// total tests that fall under the given status, and 'passedCount'
// is the number of tests passed. The 'caps' array will contain
// objects with details regarding each capability.
var caps = {
'required': {'caps': [], 'count': 0, 'passedCount': 0},
'advisory': {'caps': [], 'count': 0, 'passedCount': 0},
@ -94,7 +134,9 @@ refstackApp.controller('resultsReportController',
});
}
// Loop through each capability.
angular.forEach(capabilities, function (value, key) {
// If the capability is target-relevant.
if (cap_array.indexOf(key) > -1) {
var cap = {
'id': key,
@ -102,7 +144,10 @@ refstackApp.controller('resultsReportController',
'notPassedTests': []
};
caps[value.status].count += value.tests.length;
// Loop through each test belonging to the capability.
angular.forEach(value.tests, function (test_id) {
// If the test ID is in the results' test list, add
// it to the passedTests array.
if ($scope.resultsData.results.indexOf(test_id) > -1) {
cap.passedTests.push(test_id);
}

View File

@ -1,19 +1,45 @@
/* Refstack Results Controller */
var refstackApp = angular.module('refstackApp');
/**
* Refstack Results Controller
* This controller is for the '/results' page where a user can browse
* a listing of community uploaded results.
*/
refstackApp.controller('resultsController',
['$scope', '$http', '$filter', 'refstackApiUrl',
function ($scope, $http, $filter, refstackApiUrl) {
'use strict';
/** Initial page to be on. */
$scope.currentPage = 1;
/**
* How many results should display on each page. Since pagination
* is server-side implemented, this value should match the
* 'results_per_page' configuration of the Refstack server which
* defaults to 20.
*/
$scope.itemsPerPage = 20;
/**
* How many page buttons should be displayed at max before adding
* the '...' button.
*/
$scope.maxSize = 5;
/** The upload date lower limit to be used in filtering results. */
$scope.startDate = '';
/** The upload date upper limit to be used in filtering results. */
$scope.endDate = '';
/**
* This will contact the Refstack API to get a listing of test run
* results.
*/
$scope.update = function () {
$scope.showError = false;
// Construct the API URL based on user-specified filters.
var content_url = refstackApiUrl + '/results?page=' +
$scope.currentPage;
var start = $filter('date')($scope.startDate, 'yyyy-MM-dd');
@ -44,13 +70,23 @@ refstackApp.controller('resultsController',
$scope.update();
// This is called when a date filter calendar is opened.
/**
* This is called when the date filter calendar is opened. It
* does some event handling, and sets a scope variable so the UI
* knows which calendar was opened.
* @param {Object} $event - The Event object
* @param {String} openVar - Tells which calendar was opened
*/
$scope.open = function ($event, openVar) {
$event.preventDefault();
$event.stopPropagation();
$scope[openVar] = true;
};
/**
* This function will clear all filters and update the results
* listing.
*/
$scope.clearFilters = function () {
$scope.startDate = null;
$scope.endDate = null;

View File

@ -1,9 +1,11 @@
/* Refstack Filters */
var refstackApp = angular.module('refstackApp');
// Convert an object of objects to an array of objects to use with ng-repeat
// filters.
/** Refstack AngularJS Filters */
/**
* Convert an object of objects to an array of objects to use with ng-repeat
* filters.
*/
refstackApp.filter('arrayConverter', function () {
'use strict';

View File

@ -1,11 +1,21 @@
/* Refstack Header Controller */
var refstackApp = angular.module('refstackApp');
/**
* Refstack Header Controller
* This controller is for the header template which contains the site
* navigation.
*/
refstackApp.controller('headerController',
['$scope', '$location', function ($scope, $location) {
'use strict';
/** Whether the Navbar is collapsed for small displays. */
$scope.navbarCollapsed = true;
/**
* This determines whether a button should be in the active state based
* on the URL.
*/
$scope.isActive = function (viewLocation) {
var path = $location.path().substr(0, viewLocation.length);
if (path === viewLocation) {

View File

@ -1,4 +1,4 @@
/* Jasmine specs for Refstack controllers */
/** Jasmine specs for Refstack controllers */
describe('Refstack controllers', function () {
'use strict';

View File

@ -1,5 +1,4 @@
/* Jasmine specs for Refstack filters */
/** Jasmine specs for Refstack filters */
describe('Refstack filters', function () {
'use strict';