Compare commits
107 Commits
dev
...
45001-comp
Author | SHA1 | Date |
---|---|---|
bsatarnejad | 7d4896523f | 2 years ago |
Oliver Günther | 262420b440 | 2 years ago |
Oliver Günther | e4ea29abb2 | 2 years ago |
bsatarnejad | d44e928a54 | 2 years ago |
Oliver Günther | 6f1953d140 | 2 years ago |
Oliver Günther | 30190a5a5d | 2 years ago |
Oliver Günther | a95512c55e | 2 years ago |
Oliver Günther | 6318017e22 | 2 years ago |
Benjamin Bädorf | c218f1c26d | 2 years ago |
Benjamin Bädorf | ba52f73307 | 2 years ago |
Benjamin Bädorf | df49549857 | 2 years ago |
Benjamin Bädorf | 581d1b7ea9 | 2 years ago |
Dombi Attila | 2c885576cc | 2 years ago |
Benjamin Bädorf | 532f8b9779 | 2 years ago |
Benjamin Bädorf | 9ec00019e1 | 2 years ago |
Benjamin Bädorf | d2ab657f2c | 2 years ago |
Benjamin Bädorf | bade5147f3 | 2 years ago |
Dombi Attila | df74324938 | 2 years ago |
Benjamin Bädorf | 1ad534b8e9 | 2 years ago |
Oliver Günther | 4b3638a826 | 2 years ago |
Benjamin Bädorf | 8d9cf86115 | 2 years ago |
Benjamin Bädorf | a341f0b798 | 2 years ago |
Benjamin Bädorf | 09af5cf34e | 2 years ago |
Benjamin Bädorf | 3291a882ed | 2 years ago |
Yule | d67d18c8f5 | 2 years ago |
Benjamin Bädorf | 1a32034950 | 2 years ago |
Benjamin Bädorf | eacbc7528d | 2 years ago |
Benjamin Bädorf | dc6417e14a | 2 years ago |
Oliver Günther | 8e928f0d97 | 2 years ago |
Oliver Günther | 46d8b0c6e0 | 2 years ago |
Benjamin Bädorf | 7401f7c749 | 2 years ago |
Benjamin Bädorf | f33e1b8dbd | 2 years ago |
Oliver Günther | 55613c663d | 2 years ago |
Benjamin Bädorf | c3d0522b97 | 2 years ago |
Benjamin Bädorf | 3d9080085b | 2 years ago |
Benjamin Bädorf | 510d389618 | 2 years ago |
Benjamin Bädorf | 7eb7fcaf61 | 2 years ago |
Benjamin Bädorf | d045a8383c | 2 years ago |
Benjamin Bädorf | 290d79aae4 | 2 years ago |
Benjamin Bädorf | e434ef5b0a | 2 years ago |
Benjamin Bädorf | 3c853958d2 | 2 years ago |
Benjamin Bädorf | 9f251db19e | 2 years ago |
Benjamin Bädorf | 0d4e3a1e2c | 2 years ago |
Benjamin Bädorf | 47c6ea330c | 2 years ago |
Benjamin Bädorf | 47eac9bfd6 | 2 years ago |
Benjamin Bädorf | a066f83350 | 2 years ago |
Dombi Attila | eb78edfba1 | 2 years ago |
Benjamin Bädorf | 7c346b2e82 | 2 years ago |
Dombi Attila | 51f052f990 | 2 years ago |
Dombi Attila | 6157248974 | 2 years ago |
Benjamin Bädorf | f0d86c1cc2 | 2 years ago |
bsatarnejad | bdd0c91ca0 | 2 years ago |
bsatarnejad | 2b59d8fd74 | 2 years ago |
Benjamin Bädorf | 6e41289573 | 2 years ago |
Benjamin Bädorf | d2ca6969d2 | 2 years ago |
bsatarnejad | ff8e61090b | 2 years ago |
Dombi Attila | 53941c928b | 2 years ago |
Dombi Attila | 4b5b5a3c13 | 2 years ago |
Benjamin Bädorf | 3cc9c05748 | 2 years ago |
bsatarnejad | 9ab429fa2e | 2 years ago |
bsatarnejad | 8ee8792fa9 | 2 years ago |
Dombi Attila | bcadb62f9d | 2 years ago |
bsatarnejad | 6b28d037dd | 2 years ago |
Dombi Attila | 3c66eca1b9 | 2 years ago |
Dombi Attila | 5df6dfde50 | 2 years ago |
Dombi Attila | d0b104e501 | 2 years ago |
Dombi Attila | 4f5f8ca03b | 2 years ago |
Dombi Attila | 5aa8d0c2a1 | 2 years ago |
Benjamin Bädorf | 050aa94c4d | 2 years ago |
Benjamin Bädorf | 9a923edc36 | 2 years ago |
bsatarnejad | 3fd11042d9 | 2 years ago |
bsatarnejad | 20cdae4003 | 2 years ago |
Benjamin Bädorf | 3fc36bda26 | 2 years ago |
bsatarnejad | a415c9b4fb | 2 years ago |
bsatarnejad | 67f49f38d0 | 2 years ago |
bsatarnejad | 7840a9820d | 2 years ago |
Benjamin Bädorf | eb165e37b7 | 2 years ago |
bsatarnejad | 5980033e8b | 2 years ago |
bsatarnejad | edf5db21c4 | 2 years ago |
bsatarnejad | d4ca32c14a | 2 years ago |
Benjamin Bädorf | 53aac04610 | 2 years ago |
bsatarnejad | bb7b27e1ac | 2 years ago |
bsatarnejad | 53df3054ac | 2 years ago |
bsatarnejad | 3d14c66b00 | 2 years ago |
bsatarnejad | 073e335cdc | 2 years ago |
bsatarnejad | 18b73ae414 | 2 years ago |
bsatarnejad | 88acdec6bb | 2 years ago |
Benjamin Bädorf | 8d5ec86b1c | 2 years ago |
bsatarnejad | e9aec723f3 | 2 years ago |
Benjamin Bädorf | 9b63226795 | 2 years ago |
bsatarnejad | 557b3c4525 | 2 years ago |
bsatarnejad | fd8e3d0cde | 2 years ago |
Benjamin Bädorf | c8bfaf98c1 | 2 years ago |
bsatarnejad | 8aa7ec0250 | 2 years ago |
Benjamin Bädorf | 0cadc6cdad | 2 years ago |
Benjamin Bädorf | 764ffe28b5 | 2 years ago |
bsatarnejad | d5d8ee6802 | 2 years ago |
bsatarnejad | 75aea8a20f | 2 years ago |
Benjamin Bädorf | 2ae17f10fb | 2 years ago |
bsatarnejad | 9d00f7e22f | 2 years ago |
Benjamin Bädorf | 6ef33e6151 | 2 years ago |
Benjamin Bädorf | 0b4bcad061 | 2 years ago |
bsatarnejad | 6a514963ce | 2 years ago |
bsatarnejad | e6e5028481 | 2 years ago |
bsatarnejad | 0e81099a36 | 2 years ago |
bsatarnejad | 6317018f83 | 2 years ago |
bsatarnejad | 71cbc45c92 | 2 years ago |
@ -1,6 +1,18 @@ |
||||
<div class="between-dates"> |
||||
<span><%= t(:label_date_from) %>:</span> |
||||
<%= text_field_tag :from_value, from_value, id: "between-dates-from-value-#{filter.name}", class: 'advanced-filters--text-field -augmented-datepicker -slim', size: '10' %> |
||||
<%= angular_component_tag 'op-single-date-picker', |
||||
inputs: { |
||||
value: from_value, |
||||
id: "between-dates-from-value-#{filter.name}", |
||||
name: "from_value" |
||||
} |
||||
%> |
||||
<span><%= t(:label_date_to) %>:</span> |
||||
<%= text_field_tag :to_value, to_value, id: "between-dates-to-value-#{filter.name}", class: 'advanced-filters--text-field -augmented-datepicker -slim', size: '10' %> |
||||
<%= angular_component_tag 'op-single-date-picker', |
||||
inputs: { |
||||
value: to_value, |
||||
id: "between-dates-to-value-#{filter.name}", |
||||
name: "to_value" |
||||
} |
||||
%> |
||||
</div> |
||||
|
@ -1,7 +1,11 @@ |
||||
<div class="on-date"> |
||||
<div class="form--field-container"> |
||||
<div class="form--text-field-container -slim"> |
||||
<%= text_field_tag :value, value, id: "on-date-value-#{filter.name}", class: 'advanced-filters--text-field -slim -augmented-datepicker', size: '10' %> |
||||
</div> |
||||
<div class="form--field-container -visible-overflow"> |
||||
<%= angular_component_tag 'op-single-date-picker', |
||||
inputs: { |
||||
value: value, |
||||
id: "on-date-value-#{filter.name}", |
||||
name: "value" |
||||
} |
||||
%> |
||||
</div> |
||||
</div> |
||||
|
@ -0,0 +1,64 @@ |
||||
# Schema: FileCollectionModel |
||||
--- |
||||
allOf: |
||||
- $ref: './collection_model.yml' |
||||
- type: object |
||||
required: |
||||
- _links |
||||
- _embedded |
||||
properties: |
||||
_links: |
||||
type: object |
||||
required: |
||||
- self |
||||
properties: |
||||
self: |
||||
allOf: |
||||
- $ref: './link.yml' |
||||
- description: |- |
||||
This file collection |
||||
|
||||
**Resource**: FileCollectionModel |
||||
_embedded: |
||||
type: object |
||||
required: |
||||
- elements |
||||
properties: |
||||
elements: |
||||
type: array |
||||
items: |
||||
$ref: './storage_file_model.yml' |
||||
|
||||
example: |
||||
_type: Collection |
||||
total: 2 |
||||
count: 2 |
||||
_links: |
||||
self: |
||||
href: '/api/v3/storages/42/files' |
||||
_embedded: |
||||
elements: |
||||
- id: 1337 |
||||
location: '/data/logo.png' |
||||
name: logo.png |
||||
mimeType: image/png |
||||
size: 16042 |
||||
createdAt: '2021-12-19T09:42:10.170Z' |
||||
lastModifiedAt: '2021-12-20T14:00:13.987Z' |
||||
createdByName: Luke Skywalker |
||||
lastModifiedByName: Anakin Skywalker |
||||
_links: |
||||
self: |
||||
href: 'urn:openproject-org:api:v3:storages:storage_file:no_link_provided' |
||||
- id: 1338 |
||||
location: '1338' |
||||
name: README.md |
||||
mimeType: text/markdown |
||||
size: 3742 |
||||
createdAt: '2021-12-20T09:42:10.170Z' |
||||
lastModifiedAt: '2021-12-21T14:00:13.987Z' |
||||
createdByName: Leia Organa |
||||
lastModifiedByName: Leia Organa |
||||
_links: |
||||
self: |
||||
href: 'urn:openproject-org:api:v3:storages:storage_file:no_link_provided' |
@ -0,0 +1,22 @@ |
||||
# Schema: StorageFileLocationModel |
||||
--- |
||||
type: object |
||||
required: |
||||
- location |
||||
properties: |
||||
location: |
||||
type: string |
||||
description: Location identification for file in storage |
||||
_links: |
||||
type: object |
||||
required: |
||||
- self |
||||
properties: |
||||
self: |
||||
allOf: |
||||
- "$ref": "./link.yml" |
||||
- description: |- |
||||
Not provided |
||||
|
||||
**Resource**: urn:openproject-org:api:v3:storages:storage_file:no_link_provided |
||||
readOnly: true |
@ -1,34 +0,0 @@ |
||||
# Schema: StorageFileUploadLinkModel |
||||
--- |
||||
type: object |
||||
required: |
||||
- _type |
||||
- _links |
||||
properties: |
||||
_type: |
||||
type: string |
||||
enum: |
||||
- UploadLink |
||||
_links: |
||||
type: object |
||||
required: |
||||
- self |
||||
- destination |
||||
properties: |
||||
self: |
||||
allOf: |
||||
- $ref: './link.yml' |
||||
- description: |- |
||||
The resource link of the upload link resource. |
||||
|
||||
As the upload link is a temporal object, and cannot be retrieved again, the |
||||
self link usually is `urn:openproject-org:api:v3:storages:upload_link:no_link_provided`. |
||||
|
||||
**Resource**: UploadLink |
||||
destination: |
||||
allOf: |
||||
- $ref: './link.yml' |
||||
- description: |- |
||||
The direct upload link. |
||||
|
||||
**Resource**: N/A |
@ -1,20 +0,0 @@ |
||||
# Schema: StorageFileUploadPreparationModel |
||||
--- |
||||
type: object |
||||
required: |
||||
- projectId |
||||
- fileName |
||||
- parent |
||||
properties: |
||||
projectId: |
||||
type: integer |
||||
description: The project identifier, from where a user starts uploading a file. |
||||
minimum: 1 |
||||
fileName: |
||||
type: string |
||||
description: The file name. |
||||
parent: |
||||
type: string |
||||
description: |- |
||||
The directory to which the file is to be uploaded. For root directories, the value `/` must |
||||
be provided. |
@ -1,80 +0,0 @@ |
||||
# Schema: StorageFilesModel |
||||
--- |
||||
type: object |
||||
required: |
||||
- _type |
||||
- files |
||||
- parent |
||||
- _links |
||||
properties: |
||||
_type: |
||||
type: string |
||||
enum: |
||||
- StorageFiles |
||||
files: |
||||
type: array |
||||
items: |
||||
$ref: './storage_file_model.yml' |
||||
description: List of files provided by the selected storage. |
||||
parent: |
||||
allOf: |
||||
- $ref: './storage_file_model.yml' |
||||
- description: File of the currently selected parent directory. |
||||
_links: |
||||
type: object |
||||
required: |
||||
- self |
||||
properties: |
||||
self: |
||||
allOf: |
||||
- $ref: "./link.yml" |
||||
- description: |- |
||||
Not provided |
||||
|
||||
**Resource**: urn:openproject-org:api:v3:storages:storage_file:no_link_provided |
||||
example: |
||||
_type: StorageFiles |
||||
files: |
||||
- id: 42 |
||||
name: readme.md |
||||
_type: StorageFile |
||||
location: '/readme.md' |
||||
mimeType: 'text/markdown' |
||||
size: 4096 |
||||
createdAt: '2021-12-19T09:42:10.170Z' |
||||
lastModifiedAt: '2021-12-20T14:00:13.987Z' |
||||
createdByName: Luke Skywalker |
||||
lastModifiedByName: Anakin Skywalker |
||||
_links: |
||||
self: |
||||
href: 'urn:openproject-org:api:v3:storages:storage_file:no_link_provided' |
||||
- id: 43 |
||||
name: readme.pdf |
||||
_type: StorageFile |
||||
location: '/readme.pdf' |
||||
mimeType: 'application/pdf' |
||||
size: 2048 |
||||
createdAt: '2021-12-19T09:42:10.170Z' |
||||
lastModifiedAt: '2021-12-20T14:00:13.987Z' |
||||
createdByName: Luke Skywalker |
||||
lastModifiedByName: Anakin Skywalker |
||||
_links: |
||||
self: |
||||
href: 'urn:openproject-org:api:v3:storages:storage_file:no_link_provided' |
||||
parent: |
||||
id: 41 |
||||
name: '/' |
||||
location: '/' |
||||
mimeType: 'application/x-op-directory' |
||||
size: 6144 |
||||
createdAt: '2021-12-20T09:42:10.170Z' |
||||
lastModifiedAt: '2021-12-21T14:00:13.987Z' |
||||
createdByName: Luke Skywalker |
||||
lastModifiedByName: Anakin Skywalker |
||||
_links: |
||||
self: |
||||
href: 'urn:openproject-org:api:v3:storages:storage_file:no_link_provided' |
||||
_links: |
||||
self: |
||||
href: 'urn:openproject-org:api:v3:storages:storage_file:no_link_provided' |
||||
|
@ -0,0 +1,2 @@ |
||||
# Schema: Time_entry_create_form |
||||
--- {} |
@ -0,0 +1,2 @@ |
||||
# Schema: Time_entry_update_form |
||||
--- {} |
@ -0,0 +1,2 @@ |
||||
# Schema: Unlock_user |
||||
--- {} |
@ -0,0 +1,2 @@ |
||||
# Schema: Update_group |
||||
--- {} |
@ -0,0 +1,2 @@ |
||||
# Schema: Update_User |
||||
--- {} |
@ -1,71 +0,0 @@ |
||||
# /api/v3/storages/{id}/files/prepare_upload |
||||
--- |
||||
post: |
||||
summary: Preparation of a direct upload of a file to the given storage. |
||||
operationId: prepare_storage_file_upload |
||||
tags: |
||||
- File links |
||||
description: |- |
||||
Executes a request that prepares a link for a direct upload to the storage. |
||||
|
||||
The background here is, that the client needs to make a direct request to the storage instance for file uploading, |
||||
but should not get access to the credentials, which are stored in the backend. The response contains a link object, |
||||
that enables the client to execute a file upload without the real credentials. |
||||
parameters: |
||||
- name: id |
||||
description: Storage id |
||||
in: path |
||||
required: true |
||||
schema: |
||||
type: integer |
||||
example: 1337 |
||||
requestBody: |
||||
content: |
||||
application/json: |
||||
schema: |
||||
$ref: '../components/schemas/storage_file_upload_preparation_model.yml' |
||||
responses: |
||||
'201': |
||||
description: OK |
||||
content: |
||||
application/hal+json: |
||||
schema: |
||||
$ref: '../components/schemas/storage_file_upload_link_model.yml' |
||||
'400': |
||||
description: Returned if the given parent parameter value does not refer to a directory. |
||||
content: |
||||
application/hal+json: |
||||
schema: |
||||
$ref: '../components/schemas/error_response.yml' |
||||
example: |
||||
_type: Error |
||||
errorIdentifier: urn:openproject-org:api:v3:errors:InvalidQuery |
||||
message: The given parent is not a directory. |
||||
'403': |
||||
content: |
||||
application/hal+json: |
||||
schema: |
||||
$ref: '../components/schemas/error_response.yml' |
||||
example: |
||||
_type: Error |
||||
errorIdentifier: urn:openproject-org:api:v3:errors:MissingPermission |
||||
message: You are not authorized to access this resource. |
||||
description: |- |
||||
Returned if the client does not have sufficient permissions. |
||||
|
||||
**Required permission:** manage file links |
||||
'404': |
||||
content: |
||||
application/hal+json: |
||||
schema: |
||||
$ref: '../components/schemas/error_response.yml' |
||||
example: |
||||
_type: Error |
||||
errorIdentifier: urn:openproject-org:api:v3:errors:NotFound |
||||
message: The requested resource could not be found. |
||||
description: |- |
||||
Returned in either of those cases: |
||||
- if the storage does not exist or the client does not have sufficient permissions to see it |
||||
|
||||
**Required permission:** view file links |
||||
- if the document root file identification does not exist on the storage |
@ -1,29 +0,0 @@ |
||||
--- |
||||
title: OpenProject 12.4.3 |
||||
sidebar_navigation: |
||||
title: 12.4.3 |
||||
release_version: 12.4.3 |
||||
release_date: 2023-01-30 |
||||
--- |
||||
|
||||
# OpenProject 12.4.3 |
||||
|
||||
Release date: 2023-01-30 |
||||
|
||||
We released [OpenProject 12.4.3](https://community.openproject.com/versions/1621). |
||||
The release contains several bug fixes and we recommend updating to the newest version. |
||||
|
||||
<!--more--> |
||||
#### Bug fixes and changes |
||||
|
||||
- Fixed: Custom field in cost report show "not found" after custom filed's value \[[#34978](https://community.openproject.com/wp/34978)\] |
||||
- Fixed: Race condition with outdated OAuth access token \[[#45799](https://community.openproject.com/wp/45799)\] |
||||
- Fixed: Notifications API are still showing errors in case of not authorized / other errors \[[#45854](https://community.openproject.com/wp/45854)\] |
||||
- Fixed: Administration: Permissions report page doesn't work in french in 12.4.1 \[[#45892](https://community.openproject.com/wp/45892)\] |
||||
|
||||
#### Contributions |
||||
A big thanks to community members for reporting bugs and helping us identifying and providing fixes. |
||||
|
||||
Special thanks for reporting and finding bugs go to |
||||
|
||||
Paolo De Marco, Simon Rohart |
Before Width: | Height: | Size: 19 KiB |
After Width: | Height: | Size: 14 KiB |
After Width: | Height: | Size: 215 KiB |
Before Width: | Height: | Size: 103 KiB |
After Width: | Height: | Size: 26 KiB |
After Width: | Height: | Size: 26 KiB |
After Width: | Height: | Size: 54 KiB |
Before Width: | Height: | Size: 81 KiB |
After Width: | Height: | Size: 23 KiB |
After Width: | Height: | Size: 12 KiB |
After Width: | Height: | Size: 51 KiB |
After Width: | Height: | Size: 76 KiB |
After Width: | Height: | Size: 11 KiB |
After Width: | Height: | Size: 116 KiB |
After Width: | Height: | Size: 169 KiB |
After Width: | Height: | Size: 12 KiB |
Before Width: | Height: | Size: 30 KiB |
Before Width: | Height: | Size: 44 KiB After Width: | Height: | Size: 22 KiB |
Before Width: | Height: | Size: 56 KiB |
Before Width: | Height: | Size: 178 KiB |
Before Width: | Height: | Size: 62 KiB |
Before Width: | Height: | Size: 62 KiB |
Before Width: | Height: | Size: 109 KiB |
Before Width: | Height: | Size: 26 KiB |
Before Width: | Height: | Size: 20 KiB |
Before Width: | Height: | Size: 86 KiB |
Before Width: | Height: | Size: 32 KiB |
Before Width: | Height: | Size: 131 KiB After Width: | Height: | Size: 131 KiB |
@ -1,67 +0,0 @@ |
||||
--- |
||||
sidebar_navigation: |
||||
title: TimeCamp integration |
||||
priority: 797 |
||||
description: Time tracking with TimeCamp |
||||
keywords: time tracking, timecamp integration |
||||
--- |
||||
|
||||
# Time tracking with TimeCamp |
||||
|
||||
Please note that the TimeCamp integration is not officially supported by OpenProject and consequently is not actively maintained. |
||||
|
||||
TimeCamp allows you to track your time spent on OpenProject work packages with a start/stop button. The times will then be recorded in your [TimeCamp account](https://app.timecamp.com/auth/login). |
||||
|
||||
## Installation |
||||
|
||||
You can install a browser add-in to track time via TimeCamp in OpenProject. This way, you can record time spent directly in a work package in OpenProject via a start/stop button. You need to register an account in TimeCamp in order to use this feature. |
||||
|
||||
This integration can be added for Google Chrome as [TimeCamp extension](https://chrome.google.com/webstore/detail/time-tracker-by-timecamp/ohbkdjmhoegleofcohdjagmcnkimfdaa). |
||||
|
||||
## Configuration |
||||
|
||||
1. Download the [TimeCamp Google Chrome plugin](https://chrome.google.com/webstore/detail/time-tracker-by-timecamp/ohbkdjmhoegleofcohdjagmcnkimfdaa). |
||||
|
||||
![TimeCamp extension in Google Chrome shop](download-timecamp-extension.png) |
||||
|
||||
2. Add the extension. |
||||
|
||||
![pop up to allow to add extension](add_extension.png) |
||||
|
||||
3. Pin TimeCamp to your browser. |
||||
|
||||
![TimeCamp instructions how to pin the extension to the browser](pin-to-browser-full.png) |
||||
|
||||
## Using TimeCamp in OpenProject |
||||
|
||||
1. Create a [TimeCamp account](https://app.timecamp.com/auth/login) if you do not have one yet. |
||||
|
||||
2. In TimeCamp, add a new project and tasks to it if you have not got anything set up yet. |
||||
|
||||
![TimeCamp account with a new project which shows 2 tasks](project-with-2-tasks.png) |
||||
|
||||
The time tracked in Openproject will later on appear in TimeCamp on the task that you select. |
||||
|
||||
3. [Log in to OpenProject](https://www.openproject.org/signin/), open a project and go to a work package. |
||||
|
||||
If you are already logged in, please make sure to log out and back in again so that the TimeCamp projects and tasks will appear in OpenProject. |
||||
|
||||
![OpenProject work package detail view with green start button to start timer](work-package-start-timer.png) |
||||
|
||||
Only in the work package form you will see the green **TimeCamp Start timer** button. |
||||
|
||||
4. Click on **Start timer** and select a task from your TimeCamp projects that you would want to use for tracking your time. |
||||
|
||||
![OpenProject work package detail view with drop down from start timer to select TimeCamp project and task](Start-time-in-OP.png) |
||||
|
||||
5. The timer button turns red, indicating that time is being recorded. |
||||
|
||||
![OpenProject work package detail view with red timer button recording the time](stop-time-in-OP.png) |
||||
|
||||
6. Stop the timer by clicking on the red button indicating the time that has passed. |
||||
|
||||
## Time report |
||||
|
||||
Go to you TimeCamp account, to the Timesheet and your tracked time appears there. |
||||
|
||||
![TimeCamp Timesheet](Time-appears-in-TC.png) |
Before Width: | Height: | Size: 482 KiB |
Before Width: | Height: | Size: 329 KiB |
Before Width: | Height: | Size: 457 KiB |
Before Width: | Height: | Size: 55 KiB |
Before Width: | Height: | Size: 208 KiB |
Before Width: | Height: | Size: 301 KiB |
Before Width: | Height: | Size: 468 KiB |
Before Width: | Height: | Size: 443 KiB |
Before Width: | Height: | Size: 346 KiB |
Before Width: | Height: | Size: 304 KiB |
Before Width: | Height: | Size: 298 KiB |
Before Width: | Height: | Size: 481 KiB |
Before Width: | Height: | Size: 478 KiB |
Before Width: | Height: | Size: 420 KiB |