Skip to content

Commit

Permalink
Merge pull request #101 from e-ucm/3in1
Browse files Browse the repository at this point in the history
3in1
  • Loading branch information
Dan Cristian, Rotaru committed Oct 31, 2018
2 parents 85c84f9 + bdd24bb commit e5c9e2d
Show file tree
Hide file tree
Showing 25 changed files with 3,450 additions and 335 deletions.
3 changes: 2 additions & 1 deletion .bowerrc
Original file line number Diff line number Diff line change
@@ -1,4 +1,5 @@
{
"directory": "app/public/bower",
"interactive": false
"interactive": false,
"registry": "https://registry.bower.io"
}
56 changes: 56 additions & 0 deletions app/public/css/app.css
Original file line number Diff line number Diff line change
Expand Up @@ -4,6 +4,21 @@ html, body {
height:100vh;
}

.modal-dialog-full {
width: 98%;
height: 92%;
padding: 0;
}

.modal-content-full {
margin-bottom: 10px;
}

.btn-space {
margin-right: 10px;
margin-left: 10px;
}

.left-menu {
padding-left: 0px;
padding-right: 0px;
Expand Down Expand Up @@ -106,3 +121,44 @@ html, body {
.warning-alert-table tr td:nth-child(3){
background-color: #ffef8f; text-align: center; cursor: pointer;
}

.checkbox label:after {
content: '';
display: table;
clear: both;
}

.checkbox .cr {
position: relative;
display: inline-block;
border: 1px solid #a9a9a9;
border-radius: .25em;
width: 1.3em;
height: 1.3em;
float: left;
margin-right: .5em;
}

.checkbox .cr .cr-icon {
position: absolute;
font-size: .8em;
line-height: 0;
top: 50%;
left: 15%;
}

.checkbox label input[type="checkbox"] {
display: none;
}

.checkbox label input[type="checkbox"]+.cr>.cr-icon {
opacity: 0;
}

.checkbox label input[type="checkbox"]:checked+.cr>.cr-icon {
opacity: 1;
}

.checkbox label input[type="checkbox"]:disabled+.cr {
opacity: .5;
}
130 changes: 42 additions & 88 deletions app/public/js/controllers/activity-list.js
Original file line number Diff line number Diff line change
Expand Up @@ -19,8 +19,10 @@
'use strict';

angular.module('activitiesApp', ['ngStorage', 'services'])
.controller('ActivityListCtrl', ['$rootScope', '$scope', '$attrs', '$interpolate', '$http', 'Activities', 'Games', 'Versions', 'Classes', 'CONSTANTS',
function ($rootScope, $scope, $attrs, $interpolate, $http, Activities, Games, Versions, Classes, CONSTANTS) {
.controller('ActivityListCtrl', ['$rootScope', '$scope', '$attrs', '$interpolate', '$http', 'Activities',
'Games', 'Versions', 'Classes', 'blockUI', 'CONSTANTS',
function ($rootScope, $scope, $attrs, $interpolate, $http, Activities, Games, Versions, Classes,
blockUI, CONSTANTS) {

$scope.activityOpenedError = '';
$scope.activityCreatedError = '';
Expand Down Expand Up @@ -49,41 +51,49 @@ angular.module('activitiesApp', ['ngStorage', 'services'])
loadAll();
}

$attrs.$observe('classid', function() {
$attrs.$observe('classid', function () {
if ($attrs.classid) {
loadByClass($attrs.classid);
}
});

$attrs.$observe('gameid', function() {
$attrs.$observe('gameid', function () {
if ($attrs.gameid && $attrs.versionid) {
loadByGameAndVersion($attrs.gameid, $attrs.versionid);
}
});

$attrs.$observe('versionid', function() {
$attrs.$observe('versionid', function () {
if ($attrs.gameid && $attrs.versionid) {
loadByGameAndVersion($attrs.gameid, $attrs.versionid);
}
});

$scope.$on('refreshClasses', function () {
Classes.my().$promise
.then(function(classes) { $scope.classes = classes; })
.then(function() {
Activities.my().$promise.then(function(activities) {
.then(function (classes) {
$scope.classes = classes;
})
.then(function () {
Activities.my().$promise.then(function (activities) {
$scope.activities = activities;
});
});
});

$scope.$on('refreshGames', function () {
Games.public().$promise.then(function(games) { $scope.games = games; });
Activities.my().$promise.then(function(activities) { $scope.activities = activities; });
Games.public().$promise.then(function (games) {
$scope.games = games;
});
Activities.my().$promise.then(function (activities) {
$scope.activities = activities;
});
});

$scope.$on('refreshActivities', function () {
Activities.my().$promise.then(function(activities) { $scope.activities = activities; });
Activities.my().$promise.then(function (activities) {
$scope.activities = activities;
});
});


Expand All @@ -107,7 +117,7 @@ angular.module('activitiesApp', ['ngStorage', 'services'])
}

if (!versionId) {
Versions.forGame({gameId: gameId}).$promise.then(function(versions) {
Versions.forGame({gameId: gameId}).$promise.then(function (versions) {
if (versions && versions.length > 0 && versions[0]._id) {
doCreateActivity(activityName, gameId, versions[0]._id, classId);
} else {
Expand All @@ -120,96 +130,40 @@ angular.module('activitiesApp', ['ngStorage', 'services'])

};

var doCreateActivity = function(activityName, gameId, versionId, classId) {
$scope.type = {
offline: false
};
var doCreateActivity = function (activityName, gameId, versionId, classId) {
var activity = new Activities();
activity.name = activityName;
activity.gameId = gameId;
activity.versionId = versionId;
activity.classId = classId;
activity.$save().then(function() {
$http.get(CONSTANTS.PROXY + '/kibana/visualization/list/tch/' + gameId)
.success(function (data) {
var panels = [];
var uiStates = {};

// Add index
$http.post(CONSTANTS.PROXY + '/kibana/index/' + gameId + '/' + activity._id, {})
.success(function (data) {

}).error(function (data, status) {
console.error('Error on post /kibana/index/' + gameId + '/' + activity._id + ' ' +
JSON.stringify(data) + ', status: ' + status);
});

// Add dashboard
var numPan = 1;
if (data.length > 0) {
data.forEach(function (visualizationId) {
$http.post(CONSTANTS.PROXY + '/kibana/visualization/activity/' + gameId +
'/' + visualizationId + '/' + activity._id, {}).success(function (result) {
panels.push('{\"id\":\"' + visualizationId + '_' + activity._id +
'\",\"type\":\"visualization\",\"panelIndex\":' + numPan + ',' +
'\"size_x\":6,\"size_y\":4,\"col\":' + (1 + (numPan - 1 % 2)) + ',\"row\":' +
(numPan + 1 / 2) + '}');
uiStates['P-' + numPan] = {vis: {legendOpen: false}};
numPan++;

if (numPan > data.length) {
var dashboard = {
title: 'dashboard_' + activity._id,
hits: 0,
description: '',
panelsJSON: '[' + panels.toString() + ']',
optionsJSON: '{"darkTheme":false}',
uiStateJSON: JSON.stringify(uiStates),
version: 1,
timeRestore: true,
timeTo: 'now',
timeFrom: 'now-1h',
refreshInterval: {
display: '5 seconds',
pause: false,
section: 1,
value: 5000
},
kibanaSavedObjectMeta: {
searchSourceJSON: '{"filter":[{"query":{"query_string":{"query":"*","analyze_wildcard":true}}}]}'
}
};
$http.post(CONSTANTS.PROXY + '/kibana/dashboard/activity/' + activity._id, dashboard)
.success(function (data) {
$scope.goToActivity(activity);
$rootScope.$broadcast('refreshActivities');
}).error(function (data, status) {
console.error('Error on post /kibana/dashboard/activity/' + activity._id + ' ' +
JSON.stringify(data) + ', status: ' + status);
});
}
}).error(function (data, status) {
console.error('Error on post /kibana/visualization/activity/' + visualizationId + '/' + activity._id + ' ' +
JSON.stringify(data) + ', status: ' + status);
});
});
} else {
$scope.goToActivity(activity);
$rootScope.$broadcast('refreshActivities');
}
}).error(function (data, status) {
console.error('Error on post /kibana/visualization/list/' + gameId + ' ' +
JSON.stringify(data) + ', status: ' + status);
});

if ($scope.type.offline) {
activity.offline = true;
activity.allowAnonymous = true;
} else {
activity.offline = false;
activity.allowAnonymous = false;
}
blockUI.start();
activity.$save().then(function () {
$scope.goToActivity(activity);
$rootScope.$broadcast('refreshActivities');
blockUI.stop();
});
};

$scope.deleteActivity = function (activityObj) {
if (activityObj) {
activityObj.$remove().then(function() {
activityObj.$remove().then(function () {
$rootScope.$broadcast('refreshActivities');
});
}
};

$scope.getClassById = function(_id) {
$scope.getClassById = function (_id) {
var r = null;
if ($scope.classes) {
$scope.classes.forEach(function (c) {
Expand All @@ -221,7 +175,7 @@ angular.module('activitiesApp', ['ngStorage', 'services'])
return r;
};

$scope.getGameById = function(_id) {
$scope.getGameById = function (_id) {
var r = null;
if ($scope.games) {
$scope.games.forEach(function (g) {
Expand Down

0 comments on commit e5c9e2d

Please sign in to comment.