strider-sauce
Version:
Sauce Labs / Selenium support for Strider
64 lines (58 loc) • 1.72 kB
JavaScript
/* global browsers: true, app: true */
function organize(browsers) {
var oss = {};
for (var i=0; i<browsers.length; i++) {
if (!oss[browsers[i].os]) {
oss[browsers[i].os] = {};
}
if (!oss[browsers[i].os][browsers[i].long_name]) {
oss[browsers[i].os][browsers[i].long_name] = [];
}
oss[browsers[i].os][browsers[i].long_name].push(browsers[i]);
browsers[i].complete_name = completeName(browsers[i]);
}
return oss;
}
function completeName(version) {
return version.os + '-' + version.api_name + '-' + version.short_version;
}
function parseName(name) {
var parts = name.split('-');
return {
platform: parts[0],
browserName: parts[1],
version: parts[2] || ''
};
}
function serializeName(browser) {
return browser.platform + '-' + browser.browserName + '-' + browser.version;
}
app.controller('SauceCtrl', ['$scope', function ($scope) {
$scope.$watch('configs[branch.name].sauce.config', function (value) {
$scope.config = value;
if (!value) return;
$scope.browser_map = {};
if (!value.browsers) {
value.browsers = [];
}
for (var i=0; i<value.browsers.length; i++) {
$scope.browser_map[serializeName(value.browsers[i])] = true;
}
});
$scope.completeName = completeName;
$scope.operatingsystems = organize(browsers || []);
$scope.save = function () {
$scope.config.browsers = [];
for (var name in $scope.browser_map) {
if ($scope.browser_map[name]) {
$scope.config.browsers.push(parseName(name));
}
}
$scope.pluginConfig('sauce', $scope.config, function () {
});
};
$scope.clear = function () {
$scope.browser_map = {};
$scope.$digest();
};
}]);