Skip to content

Commit

Permalink
Fixes #160, refers#166
Browse files Browse the repository at this point in the history
- Fixed configuration for local applications. Application parameters can now be set without exporting/importing the package
- Improved filter presets. Local - imported - exported - RAS filters are available.
- Added search-by-application-name capability
- Added sorting capability for some of the application fields
- Reviewed list styling. TODO - more work need to be done there
  • Loading branch information
otsakir committed Jan 9, 2015
1 parent 45ec11b commit 71883b0
Show file tree
Hide file tree
Showing 7 changed files with 212 additions and 71 deletions.
Original file line number Diff line number Diff line change
Expand Up @@ -317,6 +317,21 @@ public Response getConfig(@PathParam("name") String projectName) {
}
}


@GET
@Path("apps/{name}/config/dev")
public Response getConfigFromPackaging(@PathParam("name") String projectName) {
logger.info("getting configuration options for " + projectName);
try {
Rapp rapp = FsProjectStorage.loadRappFromPackaging(projectName, workspaceStorage);
return buildOkResponse(rapp.getConfig());
} catch (StorageException e) {
logger.error(e.getMessage(), e);
return buildErrorResponse(Status.INTERNAL_SERVER_ERROR, RvdResponse.Status.ERROR, e);
}
}


/**
* Sets bootstrap parameters for the application.
* @param request
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -417,6 +417,10 @@ public Rapp loadRapp(String projectName) throws StorageException {
return storageBase.loadModelFromProjectFile(projectName, "ras", "rapp", Rapp.class);
}

public static Rapp loadRappFromPackaging(String projectName, WorkspaceStorage workspaceStorage) throws StorageException {
return workspaceStorage.loadEntity("rapp", projectName+"/packaging", Rapp.class);
}

/**
* Is this projoct a ras application. Checks for the existence "ras" directory
* @param projectName
Expand Down
59 changes: 39 additions & 20 deletions restcomm/restcomm.ui/src/main/webapp/modules/rappmanager.html
Original file line number Diff line number Diff line change
Expand Up @@ -9,14 +9,26 @@
</div>
</div>
<div class="row">
<div class="col-md-6">
<div class="col-md-3">
<form ng-submit="searchTextClicked(filterText)">
<div class="input-group">
<input ng-model="filterText" type="text" class="form-control" placeholder="My app">
<span class="input-group-btn">
<button type="submit" class="filter btn btn-default" title="Search listed applications"><i class="fa fa-search"></i></button>
</span>
</div>
</form>
</div>
<div class="col-md-5">
<div class="btn-group" role="group">
<button ng-click="setFilter('all')" type="button" class="btn btn-default">All</button>
<button ng-click="setFilter('local')" ype="button" class="btn btn-default">Local</button>
<button ng-click="setFilter('remote')" type="button" class="btn btn-default">Remote</button>
<button ng-click="setFilter('all',filterText)" type="button" ng-class="{'active': filter=='all'}" class="filter btn btn-default" title="Display all applications. Installed or available from RAS">All</button>
<button ng-click="setFilter('local',filterText)" type="button" ng-class="{'active': filter=='local'}" class="filter btn btn-default" title="Display applications created in this instance">Local</button>
<button ng-click="setFilter('imported',filterText)" type="button" ng-class="{'active': filter=='imported'}" class="filter btn btn-default" title="Display applications imported as packages from RAS or other means">Imported</button>
<button ng-click="setFilter('packaged',filterText)" type="button" ng-class="{'active': filter=='packaged'}" class="filter btn btn-default" title="Display packaged applications to be exported">Packaged</button>
<button ng-click="setFilter('ras',filterText)" type="button" ng-class="{'active': filter=='ras'}" class="filter btn btn-default" title="Display applications available from RAS">RAS</button>
</div>
</div>
<div class="col-md-6">
<div class="col-md-4">
<div class="form-group">
<div class='drop-area' ng-file-drop="onFileSelect($files)"
ng-file-drag-over-class="dropping" ng-show="dropSupported">
Expand All @@ -32,32 +44,42 @@
<table class="table">
<thead>
<tr class="text-muted">
<th class="text-center">Title</th>
<th>Status</th>
<th class="text-center clickable" ng-click="sortPredicate = switchOrder('title',sortPredicate)">Title &nbsp;<i ng-show="sortPredicate=='title'" class="fa fa-sort-asc"></i><i ng-show="sortPredicate=='-title'" class="fa fa-sort-desc"></i></th>
<th class="text-center clickable" ng-click="sortPredicate = switchOrder('type',sortPredicate)">Type &nbsp;<i ng-show="sortPredicate=='type'" class="fa fa-sort-asc"></i><i ng-show="sortPredicate=='-type'" class="fa fa-sort-desc"></i></th>
<th class="text-center clickable" ng-click="sortPredicate = switchOrder('status',sortPredicate)">Status &nbsp;<i ng-show="sortPredicate=='status'" class="fa fa-sort-asc"></i><i ng-show="sortPredicate=='-status'" class="fa fa-sort-desc"></i></th>
<th>Categories</th>
<th>Description</th>
<th></th>
</tr>
</thead>
<tbody>
<tr ng-repeat="app in filteredApps" class="rapp-item">
<tr ng-repeat="app in filteredApps | orderBy:sortPredicate" class="rapp-item">
<!-- Title -->
<td ng-show="app.isOnline" class="rapp-title">
<div class="rapp-title-cell">
<a href="{{app.link}}" target="_blank"><img class="img-thumbnail thumbnail" src="{{app.thumbnail}}"></a>
<a href="{{app.link}}" target="_blank"><h4 class="text-center">{{app.title}}</h4></a>
<div class="text-center text-muted" title="application unique id">{{app.appId}}</div>
<div class="text-center app-title-wrap app-ras">
<a href="{{app.link}}" target="_blank" title="{{app.appId}}">{{app.title}}</a>
</div>
<!--<div class="text-center text-muted" title="application unique id">{{app.appId}}</div>-->
</div>
</td>
<td ng-show="!app.isOnline">
<div class="text-center">{{app.title}}</div>
<div class="text-center text-muted">{{app.appId}}</div>
</td>
<td ng-show="!app.isOnline" class="status-col">
<div class="text-center app-title-wrap">
<a href="/restcomm-rvd/#/designer/{{app.projectName}}" target="_blank" title="{{app.appId}}">{{app.title}}</a>
</div>
<!--<div class="text-center text-muted">{{app.appId}}</div>-->
</td>

<td class="status-col text-muted">
{{getTypeForApp(app)}}
</td>


<!-- Status -->
<td class="status-col">
<td class="status-col text-muted">
<div>
status message
{{getStatusForApp(app)}}
</div>
</td>

Expand All @@ -79,11 +101,8 @@
<a ng-show="app.isOnline && !app.isLocal" href="{{app.link}}" target="_blank" type="button" class="btn btn-primary">Get application</a>
<a ng-show="app.isOnline && app.isLocal" href="{{app.link}}" target="_blank">View in AppStore</a>
<div ng-show="app.hasPackaging || app.wasImported">
<a href="#/ras/config/{{app.projectName}}" ng-class="{'ras-bold': (!app.hasBootstrap)}">Configure</a>
<a href="#/ras/config/{{app.projectName}}{{(app.hasPackaging ? '/dev':'')}}" ng-class="{'ras-bold': (!app.hasBootstrap)}">Configure</a>
</div>
<div ng-show="app.isLocal">
<a href="/restcomm-rvd/#/designer/{{app.projectName}}" target="_blank">Design</a>
</div>
</td>
</tr>
</tbody>
Expand Down
21 changes: 19 additions & 2 deletions restcomm/restcomm.ui/src/main/webapp/resources/css/restcomm.css
Original file line number Diff line number Diff line change
Expand Up @@ -215,7 +215,23 @@ ul#rightMenu > li i {
margin-top: 5px;
}

/* Rapp Manager classes ---------------------------------------------------------- */


/* App manager styles ----------------------------- */

/* app list filter buttons */
.btn.btn-default.filter.active:focus {
background-color: #ebebeb;
border-color: #adadad;
}
.btn.btn-default.filter:focus {
background-color: #fff;
border-color: #ccc;
}

.rappmanager .app-title-wrap:not(:first-child) {
margin-top: 10px;
}

.drop-area {
background: none repeat scroll 0% 0% rgb(248, 248, 248);
Expand Down Expand Up @@ -276,6 +292,7 @@ ul#rightMenu > li i {
opacity: 0.6;
}


/* Providers classes -------------------------------------------------------- */

.dl-small {
Expand Down Expand Up @@ -467,4 +484,4 @@ ul#rightMenu > li i {

.password-strength > div > div {
padding-top: 7px;
}
}
Original file line number Diff line number Diff line change
Expand Up @@ -13,9 +13,50 @@ angular.module("rcApp.restcommApps", []).config([ '$routeProvider', function($r
templateUrl: 'modules/rappmanager-config.html',
controller: 'RappManagerConfigCtrl',
resolve: {
rappConfig : rappManagerConfigCtrl.loadRappConfig,
bootstrapObject : rappManagerConfigCtrl.loadBootstapObject
rappConfig : function (rappService, $route) { return rappService.getAppConfig($route.current.params.projectName, $route.current.params.mode); },
bootstrapObject : function (rappService, $route) { return rappService.getBoostrapObject($route.current.params.projectName); }
}
});
}]);

angular.module("rcApp.restcommApps").service("rappService", function ($http, $q) {
var service = {};

service.getAppConfig = function (appName, mode) {
var defer = $q.defer();
$http({url: '/restcomm-rvd/services/ras/apps/' + appName + '/config' + (mode ? ("/"+mode) : "") , method: "GET" })
.success(function (data, status, headers, config) {
if (data.rvdStatus == "OK") {
console.log("succesfull retrieved app config");
defer.resolve(data.payload);
} else {
defer.reject("error getting app config")
}
})
.error(function () {
console.log("error getting app config");
defer.reject("bad response");
});
return defer.promise;
}

service.getBoostrapObject = function (appName) {
var deferred = $q.defer();
$http.get('/restcomm-rvd/services/ras/apps/' + appName + '/bootstrap' )
.success(function (data, status) {
deferred.resolve(data);
})
.error(function (data,status) {
if (status == 404)
deferred.resolve(null);
else
deferred.reject(status);
});

return deferred.promise;
}

return service;
});


Original file line number Diff line number Diff line change
Expand Up @@ -99,6 +99,7 @@ var rappManagerConfigCtrl = angular.module("rcApp.restcommApps").controller('Rap
$scope.initRappConfig($scope.rappConfig);
});

/*
rappManagerConfigCtrl.loadRappConfig = function ($q, $http, $route) {
var defer = $q.defer();
Expand All @@ -118,6 +119,9 @@ rappManagerConfigCtrl.loadRappConfig = function ($q, $http, $route) {
return defer.promise;
};
*/

/*
rappManagerConfigCtrl.loadBootstapObject = function ($q, $http, $route) {
var deferred = $q.defer();
$http.get('/restcomm-rvd/services/ras/apps/' + $route.current.params.projectName + '/bootstrap' )
Expand All @@ -133,3 +137,4 @@ rappManagerConfigCtrl.loadBootstapObject = function ($q, $http, $route) {
return deferred.promise;
}
*/

0 comments on commit 71883b0

Please sign in to comment.