diff --git a/res/app/control-panes/dashboard/upload/activities/activities-controller.js b/res/app/control-panes/dashboard/upload/activities/activities-controller.js index 5724bfec..f38fbb5f 100644 --- a/res/app/control-panes/dashboard/upload/activities/activities-controller.js +++ b/res/app/control-panes/dashboard/upload/activities/activities-controller.js @@ -1,3 +1,96 @@ -module.exports = function ActivitiesCtrl($scope) { - +var _ = require('lodash') + +module.exports = function ActivitiesCtrl($scope, $rootScope) { + $scope.activityActions = [] + $scope.activityCategories = [] + $scope.activityData = [] + $scope.packageNames = [] + $scope.activityNames = [] + + $scope.selectedAction = '' + $scope.selectedCategory = '' + $scope.selectedData = '' + $scope.selectedPackageName = '' + $scope.selectedActivityName = '' + + $scope.$watch('installation.manifest.application', function (newValue) { + if (newValue.activities) { + var activityActions = [] + var activityCategories = [] + var activityData = [] + var activityNames = [] + + _.forEach(newValue.activities, function (activity) { + if (activity.name) { + activityNames.push(activity.name) + } + + _.forEach(activity.intentFilters, function (intentFilter) { + + _.forEach(intentFilter.actions, function (action) { + if (action.name) { + activityActions.push(action.name) + } + }) + + _.forEach(intentFilter.categories, function (category) { + if (category.name) { + activityCategories.push(category.name) + } + }) + + _.forEach(intentFilter.data, function (data) { + if (data.scheme) { + var uri = data.scheme + '://' + if (data.host) { + uri += data.host + } + if (data.port) { + uri += data.port + } + if (data.path) { + uri += '/' + data.path + } else if (data.pathPrefix) { + uri += '/' + data.pathPrefix + } else if (data.pathPattern) { + uri += '/' + data.pathPattern + } + activityData.push(uri) + } + if (data.mimeType) { + activityData.push(data.mimeType) + } + }) + }) + }) + $scope.activityActions = _.uniq(activityActions) + $scope.activityCategories = _.uniq(activityCategories) + $scope.activityData = _.uniq(activityData) + $scope.activityNames = _.uniq(activityNames) + $scope.packageNames.push(newValue.name) + + $scope.selectedPackageName = newValue.name + } + }) + + $scope.runActivity = function () { + var command = 'am start' + if ($scope.selectedAction) { + command += ' -a ' + $scope.selectedAction + } + if ($scope.selectedCategory) { + command += ' -c ' + $scope.selectedCategory + } + if ($scope.selectedData) { + command += ' -d ' + $scope.selectedData + } + if ($scope.selectedPackageName && $scope.selectedActivityName) { + command += ' -n ' + $scope.selectedPackageName + '/' + $scope.selectedActivityName + } + + var cmd = $rootScope.control.shell(command) + return cmd.promise.then(function (result) { + console.log(result) + }) + } } diff --git a/res/app/control-panes/dashboard/upload/activities/activities.jade b/res/app/control-panes/dashboard/upload/activities/activities.jade index 51042e26..2468ce27 100644 --- a/res/app/control-panes/dashboard/upload/activities/activities.jade +++ b/res/app/control-panes/dashboard/upload/activities/activities.jade @@ -1,2 +1,27 @@ div(ng-controller='ActivitiesCtrl') -h3 Activities + form + fieldset + .form-group + label(for='selectedActivityName') Package Name + input.form-control(type='text', placeholder='', ng-model='selectedPackageName', + typeahead='packageName for packageName in packageNames', id='selectedPackageName') + .form-group + label(for='selectedActivityName') Activity Name + input.form-control(type='text', placeholder='', ng-model='selectedActivityName', + typeahead='activityName for activityName in activityNames', id='selectedActivityName') + .form-group + label(for='selectedActivityName') Action + input.form-control(type='text', placeholder='', ng-model='selectedAction', + typeahead='action for action in activityActions', id='selectedAction') + .form-group + label(for='selectedActivityName') Category + input.form-control(type='text', placeholder='', ng-model='selectedCategory', + typeahead='category for category in activityCategories', id='selectedCategory') + .form-group + label(for='selectedActivityName') Data + input.form-control(type='text', placeholder='', ng-model='selectedData', + typeahead='data for data in activityData', id='selectedData') + + button.btn.btn-sm.btn-primary-outline(ng-click='runActivity()') + i.fa.fa-play + span(translate) Launch Activity diff --git a/res/app/control-panes/dashboard/upload/activities/index.js b/res/app/control-panes/dashboard/upload/activities/index.js index b556c033..15ad7829 100644 --- a/res/app/control-panes/dashboard/upload/activities/index.js +++ b/res/app/control-panes/dashboard/upload/activities/index.js @@ -1,7 +1,7 @@ require('./activities.css') module.exports = angular.module('stf.activities', [ - + require('stf/common-ui').name ]) .run(["$templateCache", function ($templateCache) { $templateCache.put(