Feature: Timetracking (#2211)

* Added comment's hashtag to url for mail notifications.
* Added explanation to return statement + documentation.
* Replacing in-line link generation with HTMLURL. (+gofmt)
* Replaced action-based model with nil-based model. (+gofmt)
* Replaced mailIssueActionToParticipants with mailIssueCommentToParticipants.
* Updating comment for mailIssueCommentToParticipants
* Added link to comment in "Dashboard"
* Deleting feed entry if a comment is going to be deleted
* Added migration
* Added improved migration to add a CommentID column to action.
* Added improved links to comments in feed entries.
* Fixes #1956 by filtering for deleted comments that are referenced in actions.
* Introducing "IsDeleted" column to action.
* Adding design draft (not functional)
* Adding database models for stopwatches and trackedtimes
* See go-gitea/gitea#967
* Adding design draft (not functional)
* Adding translations and improving design
* Implementing stopwatch (for timetracking)
* Make UI functional
* Add hints in timeline for time tracking events
* Implementing timetracking feature
* Adding "Add time manual" option
* Improved stopwatch
* Created report of total spent time by user
* Only showing total time spent if theire is something to show.
* Adding license headers.
* Improved error handling for "Add Time Manual"
* Adding @sapks 's changes, refactoring
* Adding API for feature tracking
* Adding unit test
* Adding DISABLE/ENABLE option to Repository settings page
* Improving translations
* Applying @sapk 's changes
* Removing repo_unit and using IssuesSetting for disabling/enabling timetracker
* Adding DEFAULT_ENABLE_TIMETRACKER to config, installation and admin menu
* Improving documentation
* Fixing vendor/ folder
* Changing timtracking routes by adding subgroups /times and /times/stopwatch (Proposed by @lafriks )
* Restricting write access to timetracking based on the repo settings (Proposed by @lafriks )
* Fixed minor permissions bug.
* Adding CanUseTimetracker and IsTimetrackerEnabled in ctx.Repo
* Allow assignees and authors to track there time too.
* Fixed some build-time-errors + logical errors.
* Removing unused Get...ByID functions
* Moving IsTimetrackerEnabled from context.Repository to models.Repository
* Adding a seperate file for issue related repo functions
* Adding license headers
* Fixed GetUserByParams return 404
* Moving /users/:username/times to /repos/:username/:reponame/times/:username for security reasons
* Adding /repos/:username/times to get all tracked times of the repo
* Updating sdk-dependency
* Updating swagger.v1.json
* Adding warning if user has already a running stopwatch (auto-timetracker)
* Replacing GetTrackedTimesBy... with GetTrackedTimes(options FindTrackedTimesOptions)
* Changing code.gitea.io/sdk back to code.gitea.io/sdk
* Correcting spelling mistake
* Updating vendor.json
* Changing GET stopwatch/toggle to POST stopwatch/toggle
* Changing GET stopwatch/cancel to POST stopwatch/cancel
* Added migration for stopwatches/timetracking
* Fixed some access bugs for read-only users
* Added default allow only contributors to track time value to config
* Fixed migration by chaging x.Iterate to x.Find
* Resorted imports
* Moved Add Time Manually form to repo_form.go
* Removed "Seconds" field from Add Time Manually
* Resorted imports
* Improved permission checking
* Fixed some bugs
* Added integration test
* gofmt
* Adding integration test by @lafriks
* Added created_unix to comment fixtures
* Using last event instead of a fixed event
* Adding another integration test by @lafriks
* Fixing bug Timetracker enabled causing error 500 at sidebar.tpl
* Fixed a refactoring bug that resulted in hiding "HasUserStopwatch" warning.
* Returning TrackedTime instead of AddTimeOption at AddTime.
* Updating SDK from go-gitea/go-sdk#69
* Resetting Go-SDK back to default repository
* Fixing test-vendor by changing ini back to original repository
* Adding "tags" to swagger spec
* govendor sync
* Removed duplicate
* Formatting templates
* Adding IsTimetrackingEnabled checks to API
* Improving translations / english texts
* Improving documentation
* Updating swagger spec
* Fixing integration test caused be translation-changes
* Removed encoding issues in local_en-US.ini.
* "Added" copyright line
* Moved unit.IssuesConfig().EnableTimetracker into a != nil check
* Removed some other encoding issues in local_en-US.ini
* Improved javascript by checking if data-context exists
* Replaced manual comment creation with CreateComment
* Removed unnecessary code
* Improved error checking
* Small cosmetic changes
* Replaced int>string>duration parsing with int>duration parsing
* Fixed encoding issues
* Removed unused imports

Signed-off-by: Jonas Franz <info@jonasfranz.software>
This commit is contained in:
Jonas Franz 2017-09-12 08:48:13 +02:00 committed by Lauris BH
parent 69dfe43ffc
commit 5ccecb44ad
42 changed files with 1523 additions and 72 deletions

View file

@ -404,15 +404,19 @@ function initRepository() {
$('.enable-system').change(function () {
if (this.checked) {
$($(this).data('target')).removeClass('disabled');
if (!$(this).data('context')) $($(this).data('context')).addClass('disabled');
} else {
$($(this).data('target')).addClass('disabled');
if (!$(this).data('context')) $($(this).data('context')).removeClass('disabled');
}
});
$('.enable-system-radio').change(function () {
if (this.value == 'false') {
$($(this).data('target')).addClass('disabled');
if (typeof $(this).data('context') !== 'undefined') $($(this).data('context')).removeClass('disabled');
} else if (this.value == 'true') {
$($(this).data('target')).removeClass('disabled');
if (typeof $(this).data('context') !== 'undefined') $($(this).data('context')).addClass('disabled');
}
});
}
@ -1826,3 +1830,20 @@ function initVueApp() {
},
});
}
function timeAddManual() {
$('.mini.modal')
.modal({
duration: 200,
onApprove: function() {
$('#add_time_manual_form').submit();
}
}).modal('show')
;
}
function toggleStopwatch() {
$("#toggle_stopwatch_form").submit();
}
function cancelStopwatch() {
$("#cancel_stopwatch_form").submit();
}

125
public/swagger.v1.json vendored
View file

@ -1372,6 +1372,65 @@
}
}
},
"/repos/{username}/{reponame}/issues/{issue}/times": {
"get": {
"produces": [
"application/json"
],
"tags": [
"repository"
],
"operationId": "issueTrackedTimes",
"responses": {
"200": {
"$ref": "#/responses/TrackedTimes"
},
"404": {
"$ref": "#/responses/error"
},
"500": {
"$ref": "#/responses/error"
}
}
},
"post": {
"produces": [
"application/json"
],
"tags": [
"repository"
],
"operationId": "addTime",
"parameters": [
{
"x-go-name": "Time",
"name": "time",
"in": "body",
"schema": {
"type": "integer",
"format": "int64"
}
}
],
"responses": {
"200": {
"$ref": "#/responses/TrackedTime"
},
"400": {
"$ref": "#/responses/error"
},
"403": {
"$ref": "#/responses/error"
},
"404": {
"$ref": "#/responses/error"
},
"500": {
"$ref": "#/responses/error"
}
}
}
},
"/repos/{username}/{reponame}/mirror-sync": {
"post": {
"produces": [
@ -1435,6 +1494,53 @@
}
}
},
"/repos/{username}/{reponame}/times": {
"get": {
"produces": [
"application/json"
],
"tags": [
"repository"
],
"operationId": "repoTrackedTimes",
"responses": {
"200": {
"$ref": "#/responses/TrackedTimes"
},
"400": {
"$ref": "#/responses/error"
},
"500": {
"$ref": "#/responses/error"
}
}
}
},
"/repos/{username}/{reponame}/times/{timetrackingusername}": {
"get": {
"produces": [
"application/json"
],
"tags": [
"user"
],
"operationId": "userTrackedTimes",
"responses": {
"200": {
"$ref": "#/responses/TrackedTimes"
},
"400": {
"$ref": "#/responses/error"
},
"404": {
"$ref": "#/responses/error"
},
"500": {
"$ref": "#/responses/error"
}
}
}
},
"/repositories/{id}": {
"get": {
"produces": [
@ -1951,6 +2057,25 @@
}
}
},
"/user/times": {
"get": {
"produces": [
"application/json"
],
"tags": [
"user"
],
"operationId": "userTrackedTimes",
"responses": {
"200": {
"$ref": "#/responses/TrackedTimes"
},
"500": {
"$ref": "#/responses/error"
}
}
}
},
"/users/:username/followers": {
"get": {
"produces": [