Skip to content

Commit

Permalink
Merge pull request #402 from strangeman/367-limit-activity-list
Browse files Browse the repository at this point in the history
Limit activity and tasks lists in dashboards
  • Loading branch information
matejkramny committed Aug 19, 2017
2 parents 163bfc0 + 2bededa commit f48c7fa
Show file tree
Hide file tree
Showing 8 changed files with 109 additions and 18 deletions.
35 changes: 35 additions & 0 deletions api-docs.yml
Original file line number Diff line number Diff line change
Expand Up @@ -433,6 +433,16 @@ paths:
type: array
items:
$ref: '#/definitions/Event'
/events/last:
get:
summary: Get last 200 Events related to Semaphore and projects you are part of
responses:
200:
description: Array of events in chronological order
schema:
type: array
items:
$ref: '#/definitions/Event'

/project/{project_id}:
parameters:
Expand Down Expand Up @@ -897,6 +907,17 @@ paths:
/project/{project_id}/tasks:
parameters:
- $ref: "#/parameters/project_id"
get:
tags:
- project
summary: Get Tasks related to current project
responses:
200:
description: Array of tasks in chronological order
schema:
type: array
items:
$ref: '#/definitions/Task'
post:
tags:
- project
Expand All @@ -923,6 +944,20 @@ paths:
description: Task queued
schema:
$ref: "#/definitions/Task"
/project/{project_id}/tasks/last:
parameters:
- $ref: "#/parameters/project_id"
get:
tags:
- project
summary: Get last 200 Tasks related to current project
responses:
200:
description: Array of tasks in chronological order
schema:
type: array
items:
$ref: '#/definitions/Task'
/project/{project_id}/tasks/{task_id}:
parameters:
- $ref: "#/parameters/project_id"
Expand Down
14 changes: 13 additions & 1 deletion api/events.go
Original file line number Diff line number Diff line change
Expand Up @@ -9,14 +9,18 @@ import (
"github.com/masterminds/squirrel"
)

func getEvents(w http.ResponseWriter, r *http.Request) {
func getEvents(w http.ResponseWriter, r *http.Request, limit uint64) {
user := context.Get(r, "user").(*db.User)

q := squirrel.Select("event.*, p.name as project_name").
From("event").
LeftJoin("project as p on event.project_id=p.id").
OrderBy("created desc")

if limit > 0 {
q = q.Limit(limit)
}

projectObj, exists := context.GetOk(r, "project")
if exists == true {
// limit query to project
Expand Down Expand Up @@ -64,3 +68,11 @@ func getEvents(w http.ResponseWriter, r *http.Request) {

mulekick.WriteJSON(w, http.StatusOK, events)
}

func getLastEvents(w http.ResponseWriter, r *http.Request) {
getEvents(w, r, 200)
}

func getAllEvents(w http.ResponseWriter, r *http.Request) {
getEvents(w, r, 0)
}
9 changes: 6 additions & 3 deletions api/router.go
Original file line number Diff line number Diff line change
Expand Up @@ -47,7 +47,8 @@ func Route() mulekick.Router {

api.Get("/projects", projects.GetProjects)
api.Post("/projects", projects.AddProject)
api.Get("/events", getEvents)
api.Get("/events", getAllEvents)
api.Get("/events/last", getLastEvents)

api.Get("/users", getUsers)
api.Post("/users", addUser)
Expand All @@ -63,7 +64,8 @@ func Route() mulekick.Router {
api.Put("", projects.MustBeAdmin, projects.UpdateProject)
api.Delete("", projects.MustBeAdmin, projects.DeleteProject)

api.Get("/events", getEvents)
api.Get("/events", getAllEvents)
api.Get("/events/last", getLastEvents)

api.Get("/users", projects.GetUsers)
api.Post("/users", projects.MustBeAdmin, projects.AddUser)
Expand Down Expand Up @@ -96,7 +98,8 @@ func Route() mulekick.Router {
api.Put("/templates/{template_id}", projects.TemplatesMiddleware, projects.UpdateTemplate)
api.Delete("/templates/{template_id}", projects.TemplatesMiddleware, projects.RemoveTemplate)

api.Get("/tasks", tasks.GetAll)
api.Get("/tasks", tasks.GetAllTasks)
api.Get("/tasks/last", tasks.GetLastTasks)
api.Post("/tasks", tasks.AddTask)
api.Get("/tasks/{task_id}/output", tasks.GetTaskMiddleware, tasks.GetTaskOutput)
api.Get("/tasks/{task_id}", tasks.GetTaskMiddleware, tasks.GetTask)
Expand Down
21 changes: 17 additions & 4 deletions api/tasks/http.go
Original file line number Diff line number Diff line change
Expand Up @@ -48,16 +48,21 @@ func AddTask(w http.ResponseWriter, r *http.Request) {
mulekick.WriteJSON(w, http.StatusCreated, taskObj)
}

func GetAll(w http.ResponseWriter, r *http.Request) {
func GetTasksList(w http.ResponseWriter, r *http.Request, limit uint64) {
project := context.Get(r, "project").(db.Project)

query, args, _ := squirrel.Select("task.*, tpl.playbook as tpl_playbook, user.name as user_name, tpl.alias as tpl_alias").
q := squirrel.Select("task.*, tpl.playbook as tpl_playbook, user.name as user_name, tpl.alias as tpl_alias").
From("task").
Join("project__template as tpl on task.template_id=tpl.id").
LeftJoin("user on task.user_id=user.id").
Where("tpl.project_id=?", project.ID).
OrderBy("task.created desc").
ToSql()
OrderBy("task.created desc")

if limit > 0 {
q = q.Limit(limit)
}

query, args, _ := q.ToSql()

var tasks []struct {
db.Task
Expand All @@ -73,6 +78,14 @@ func GetAll(w http.ResponseWriter, r *http.Request) {
mulekick.WriteJSON(w, http.StatusOK, tasks)
}

func GetAllTasks(w http.ResponseWriter, r *http.Request) {
GetTasksList(w, r, 0)
}

func GetLastTasks(w http.ResponseWriter, r *http.Request) {
GetTasksList(w, r, 200)
}

func GetTask(w http.ResponseWriter, r *http.Request) {
task := context.Get(r, "task").(db.Task)
mulekick.WriteJSON(w, http.StatusOK, task)
Expand Down
1 change: 1 addition & 0 deletions public/html/dashboard.pug
Original file line number Diff line number Diff line change
Expand Up @@ -10,6 +10,7 @@
span(ng-if="event.project_id != null")  
span(ng-bind="event.object_name")
span - {{ event.description }}
button.btn.btn-default.btn-s(ng-click="refresh($lastEvents=false)") Show all events
.col-md-4
.panel.panel-default
.panel-heading Projects
Expand Down
2 changes: 2 additions & 0 deletions public/html/projects/dashboard.pug
Original file line number Diff line number Diff line change
Expand Up @@ -8,6 +8,7 @@
span(ng-bind="event.object_name")
span(ng-if="event.object_name.length > 0") - 
span {{ event.description }}
button.btn.btn-default.btn-s(ng-click="refreshEvents($lastEvents=false)") Show all events

.col-sm-5(style="border-left: 1px solid #EEE;")
h4.no-top-margin Task history
Expand All @@ -27,3 +28,4 @@
br
span  
span.pull-right(ng-if="task.user_name") by {{ task.user_name }}
button.btn.btn-default.btn-s(ng-click="reload($lastTasks=false)") Show all tasks
10 changes: 8 additions & 2 deletions public/js/controllers/dashboard.js
Original file line number Diff line number Diff line change
Expand Up @@ -2,12 +2,18 @@ define(['controllers/projects/edit'], function () {
app.registerController('DashboardCtrl', ['$scope', '$http', '$uibModal', function ($scope, $http, $modal) {
$scope.projects = [];

$scope.refresh = function () {
$scope.refresh = function ($lastEvents=true) {
$http.get('/projects').success(function (projects) {
$scope.projects = projects;
});

$http.get('/events').success(function (events) {
if ($lastEvents == true) {
$eventsURL = '/events/last'
} else {
$eventsURL = '/events'
}

$http.get($eventsURL).success(function (events) {
$scope.events = events;
});
}
Expand Down
35 changes: 27 additions & 8 deletions public/js/controllers/projects/dashboard.js
Original file line number Diff line number Diff line change
@@ -1,15 +1,33 @@
define(['controllers/projects/taskRunner'], function() {
app.registerController('ProjectDashboardCtrl', ['$scope', '$http', 'Project', '$uibModal', '$rootScope', function($scope, $http, Project, $modal, $rootScope) {
$http.get(Project.getURL() + '/events').success(function(events) {
$scope.events = events;

$scope.refreshEvents = function($lastEvents=true) {

events.forEach(function(evt) {
evt.createdFormatted = moment(evt.created).format('DD/M/YY HH:mm')
})
});
if ($lastEvents == true) {
$eventsURL = '/events/last'
} else {
$eventsURL = '/events'
}

$http.get(Project.getURL() + $eventsURL).success(function(events) {
$scope.events = events;

$scope.reload = function() {
$http.get(Project.getURL() + '/tasks').success(function(tasks) {
events.forEach(function(evt) {
evt.createdFormatted = moment(evt.created).format('DD/M/YY HH:mm')
})
});

}

$scope.reload = function($lastEvents=true) {

if ($lastEvents == true) {
$tasksURL = '/tasks/last'
} else {
$tasksURL = '/tasks'
}

$http.get(Project.getURL() + $tasksURL).success(function(tasks) {
$scope.tasks = tasks;

$scope.tasks.forEach(function(t) {
Expand All @@ -31,6 +49,7 @@ define(['controllers/projects/taskRunner'], function() {
});
});
}
$scope.refreshEvents();
$scope.reload();

$scope.openTask = function(task) {
Expand Down

0 comments on commit f48c7fa

Please sign in to comment.