1
0
Fork 0
mirror of https://github.com/openstf/stf synced 2025-10-05 02:29:26 +02:00

Add filter-branched files back.

This commit is contained in:
Simo Kinnunen 2015-07-01 20:57:33 +09:00
parent 45d6653674
commit cf73b4c95b
4 changed files with 420 additions and 0 deletions

3
.bowerrc Normal file
View file

@ -0,0 +1,3 @@
{
"directory": "res/bower_components"
}

132
package.json Normal file
View file

@ -0,0 +1,132 @@
{
"name": "stf",
"description": "Smartphone Test Farm",
"keywords": [
"adb",
"android",
"stf",
"test",
"remote"
],
"version": "0.9.0",
"license": "Apache-2.0",
"repository": {
"type": "git",
"url": "https://github.com/openstf/stf.git"
},
"bin": {
"stf": "./bin/stf"
},
"scripts": {
"test": "gulp test"
},
"dependencies": {
"adbkit": "^2.2.1",
"adbkit-apkreader": "^1.0.0",
"adbkit-monkey": "^1.0.1",
"bluebird": "^2.9.14",
"body-parser": "^1.12.2",
"chalk": "^1.0.0",
"commander": "^2.7.1",
"compression": "^1.4.3",
"cookie-session": "^1.1.0",
"csurf": "^1.7.0",
"eventemitter3": "^0.1.6",
"express": "^4.12.3",
"express-validator": "^2.8.0",
"formidable": "^1.0.17",
"gm": "^1.17.0",
"hipchatter": "^0.2.0",
"http-proxy": "^1.9.0",
"jade": "^1.9.2",
"jws": "^3.0.0",
"ldapjs": "git+https://github.com/mcavage/node-ldapjs.git#acc1ca8f4314fd9d67561feabc8ce4c235076a5e",
"lodash": "^3.5.0",
"markdown-serve": "^0.3.2",
"mime": "^1.3.4",
"minimatch": "^2.0.4",
"my-local-ip": "^1.0.0",
"node-uuid": "^1.4.3",
"passport": "^0.2.1",
"passport-oauth2": "^1.1.2",
"protobufjs": "^3.8.2",
"proxy-addr": "^1.0.7",
"request": "^2.53.0",
"request-progress": "^0.3.1",
"rethinkdb": "^1.15.0",
"semver": "^4.3.1",
"serve-favicon": "^2.2.0",
"serve-static": "^1.9.2",
"socket.io": "1.3.5",
"split": "^0.3.3",
"stf-appstore-db": "^1.0.0",
"stf-browser-db": "^1.0.0",
"stf-device-db": "^1.0.0",
"stf-syrup": "^1.0.0",
"stf-wiki": "^1.0.0",
"temp": "^0.8.1",
"ws": "^0.7.2",
"zmq": "^2.10.0"
},
"devDependencies": {
"async": "^1.2.1",
"bower": "^1.3.12",
"chai": "^2.1.2",
"css-loader": "^0.15.1",
"del": "^1.2.0",
"event-stream": "^3.3.0",
"exports-loader": "^0.6.2",
"extract-text-webpack-plugin": "^0.8.2",
"file-loader": "^0.8.1",
"gulp": "^3.8.11",
"gulp-angular-gettext": "^2.1.0",
"gulp-jade": "^1.0.0",
"gulp-jscs": "^1.4.0",
"gulp-jshint": "^1.9.4",
"gulp-jsonlint": "^1.0.2",
"gulp-protractor": "^0.0.12",
"gulp-util": "^3.0.4",
"html-loader": "^0.3.0",
"imports-loader": "^0.6.3",
"jasmine-core": "^2.3.4",
"jasmine-reporters": "^2.0.5",
"jshint": "^2.6.3",
"jshint-loader": "^0.8.3",
"jshint-stylish": "^2.0.0",
"json-loader": "^0.5.1",
"karma": "^0.12.32",
"karma-chrome-launcher": "^0.2.0",
"karma-firefox-launcher": "^0.1.4",
"karma-ie-launcher": "^0.2.0",
"karma-jasmine": "^0.3.5",
"karma-junit-reporter": "^0.2.2",
"karma-opera-launcher": "^0.1.0",
"karma-phantomjs-launcher": "^0.2.0",
"karma-safari-launcher": "^0.1.1",
"karma-webpack": "^1.5.0",
"less": "^2.4.0",
"less-loader": "^2.1.0",
"ng-annotate-webpack-plugin": "^0.1.2",
"node-libs-browser": "^0.5.2",
"node-sass": "^3.2.0",
"phantomjs": "^1.9.17",
"protractor": "^2.0.0",
"protractor-html-screenshot-reporter": "0.0.19",
"raw-loader": "^0.5.1",
"run-sequence": "^1.0.2",
"sass-loader": "^1.0.2",
"script-loader": "^0.6.1",
"sinon": "^1.14.1",
"sinon-chai": "^2.7.0",
"socket.io-client": "1.3.5",
"style-loader": "^0.12.3",
"template-html-loader": "^0.0.3",
"url-loader": "^0.5.5",
"webpack": "^1.10.0",
"webpack-dev-server": "^1.7.0"
},
"engines": {
"node": ">= 0.10"
},
"preferGlobal": true
}

View file

@ -0,0 +1,93 @@
module.exports = function EnhanceDeviceServiceFactory($filter, AppState) {
var service = {}
function setState(data) {
// For convenience, formulate an aggregate state property that covers
// every possible state.
data.state = 'absent'
if (data.present) {
data.state = 'present'
switch (data.status) {
case 1:
data.state = 'offline'
break
case 2:
data.state = 'unauthorized'
break
case 3:
data.state = 'preparing'
if (data.ready) {
data.state = 'ready'
if (data.using) {
data.state = 'using'
}
else {
if (data.owner) {
data.state = 'busy'
}
else {
data.state = 'available'
}
}
}
break
}
}
}
function enhanceDevice(device) {
device.enhancedName = device.name || device.model || device.serial || 'Unknown'
device.enhancedModel = device.model || 'Unknown'
device.enhancedImage120 = '/static/app/devices/icon/x120/' + (device.image || '_default.jpg')
device.enhancedImage24 = '/static/app/devices/icon/x24/' + (device.image || '_default.jpg')
device.enhancedStateAction = $filter('statusNameAction')(device.state)
device.enhancedStatePassive = $filter('statusNamePassive')(device.state)
}
function enhanceDeviceDetails(device) {
if (device.battery) {
device.enhancedBatteryPercentage = (device.battery.level / device.battery.scale * 100) + '%'
device.enhancedBatteryHealth = $filter('batteryHealth')(device.battery.health)
device.enhancedBatterySource = $filter('batterySource')(device.battery.source)
device.enhancedBatteryStatus = $filter('batteryStatus')(device.battery.status)
device.enhancedBatteryTemp = device.battery.temp + '°C'
}
if (device.owner) {
device.enhancedUserProfileUrl = enhanceUserProfileUrl(device.owner.email)
device.enhancedUserName = device.owner.name || "No name"
}
}
function enhanceUserProfileUrl(email) {
var url
var userProfileUrl = (function () {
if (AppState && AppState.config && AppState.config.userProfileUrl) {
return AppState.config.userProfileUrl
}
return null
})()
if (userProfileUrl) {
// Using RFC 6570 URI Template specification
if (userProfileUrl && email) {
url = userProfileUrl.indexOf('{user}') !== -1 ?
userProfileUrl.replace('{user}', email) :
userProfileUrl + email;
}
} else if (email.indexOf('@') !== -1) {
url = 'mailto:' + email
} else {
url = '/!#/user/' + email
}
return url
}
service.enhance = function (device) {
setState(device)
enhanceDevice(device)
enhanceDeviceDetails(device)
}
return service
}

View file

@ -0,0 +1,192 @@
var QueryParser = require('./util/query-parser')
module.exports = function DeviceListCtrl(
$scope
, DeviceService
, DeviceColumnService
, GroupService
, ControlService
, SettingsService
, $location
) {
$scope.tracker = DeviceService.trackAll($scope)
$scope.control = ControlService.create($scope.tracker.devices, '*ALL')
$scope.columnDefinitions = DeviceColumnService
var defaultColumns = [
{
name: 'state'
, selected: true
}
, {
name: 'model'
, selected: true
}
, {
name: 'name'
, selected: true
}
, {
name: 'serial'
, selected: false
}
, {
name: 'operator'
, selected: true
}
, {
name: 'releasedAt'
, selected: true
}
, {
name: 'version'
, selected: true
}
, {
name: 'network'
, selected: false
}
, {
name: 'display'
, selected: false
}
, {
name: 'manufacturer'
, selected: false
}
, {
name: 'sdk'
, selected: false
}
, {
name: 'abi'
, selected: false
}
, {
name: 'browser'
, selected: false
}
, {
name: 'phone'
, selected: false
}
, {
name: 'imei'
, selected: false
}
, {
name: 'iccid'
, selected: false
}
, {
name: 'batteryHealth'
, selected: false
}
, {
name: 'batterySource'
, selected: false
}
, {
name: 'batteryStatus'
, selected: false
}
, {
name: 'batteryLevel'
, selected: false
}
, {
name: 'batteryTemp'
, selected: false
}
, {
name: 'provider'
, selected: true
}
, {
name: 'notes'
, selected: true
}
, {
name: 'owner'
, selected: true
}
]
$scope.columns = defaultColumns
SettingsService.bind($scope, {
target: 'columns'
, source: 'deviceListColumns'
})
var defaultSort = {
fixed: [
{
name: 'state'
, order: 'asc'
}
]
, user: [
{
name: 'name'
, order: 'asc'
}
]
}
$scope.sort = defaultSort
SettingsService.bind($scope, {
target: 'sort'
, source: 'deviceListSort'
})
$scope.filter = []
$scope.activeTabs = {
icons: true
, details: false
}
SettingsService.bind($scope, {
target: 'activeTabs'
, source: 'deviceListActiveTabs'
})
$scope.toggle = function (device) {
if (device.using) {
$scope.kick(device)
} else {
$location.path('/control/' + device.serial)
}
}
$scope.invite = function (device) {
return GroupService.invite(device).then(function () {
$scope.$digest()
})
}
$scope.applyFilter = function(query) {
$scope.filter = QueryParser.parse(query)
}
$scope.search = {
deviceFilter: '',
focusElement: false
}
$scope.focusSearch = function () {
if (!$scope.basicMode) {
$scope.search.focusElement = true
}
}
$scope.reset = function () {
$scope.search.deviceFilter = ''
$scope.filter = []
$scope.sort = defaultSort
$scope.columns = defaultColumns
}
}