Youtrack的时间跟踪器:DIY

有一个很棒的T-REC应用程序,可让您跟踪在Youtrack中花费在任务上的时间,并将其写入任务。但是作者在两年多前就放弃了它,再加上旧的依赖,一个核的不断加载(显然是电子的罪魁祸首)以及周期性的崩溃使它变得“不方便”使用。我决定只在专业人士上编写具有相同功能的自己的书,因此Honsu出现了……



有关使用Youtrack的最新文档在这里

工作原理:

要从第三方应用程序访问Youtrack,您需要一个令牌才能工作。

  1. 在浏览器中登录到YouTrack
  2. 转到个人资料“ example.youtrack.com/users/me
  3. 找到“更新个人信息并管理登录名”项
  4. 打开标签“身份验证”
  5. 点击按钮“新令牌...”
  6. 填写客户字段“ YoutrackTimerec”
  7. 选择我们需要访问哪些子系统-首先是“ YouTrack”
  8. 点击创建令牌按钮
  9. 我们复制令牌,因为它仅显示一次。

示例以cURL请求的形式出现,但是它们很容易转换为所需的形式。

首先,您需要检查输入的地址是否正确以及服务器端是否有REST API。 如果服务可用且密钥正确,则将返回带有会计数据的json

curl -X GET "https://example.myjetbrains.com/api/admin/users/me?fields=id,login,name,email"
-H "Accept: application/json"
-H "Authorization: Bearer perm:token"
-H "Cache-Control: no-cache"
-H "Content-Type: application/json"




{"login":"s.user",
"email":"s.user@example.team",
"name":"S User",
"id":"1-325",
"$type":"Me"}



没有任务什么敏捷?简化后,任务通常位于冲刺中,而冲刺位于板中。您只需要获得活动的板,便可以稍后选择任务进行时间跟踪。 答案包含特定用户可用板卡的列表:

curl -X GET "https://example.myjetbrains.com/api/agiles?fields=name,id,projects(id,shortName,name),columnSettings(columns(presentation))&$top=100"
-H "Accept: application/json"
-H "Authorization: Bearer perm:token"
-H "Cache-Control: no-cache"
-H "Content-Type: application/json"




[
   {
      "projects":[{ "shortName":"OPS", "name":"Operations",
                     "id":"04", "$type":"Project" }],
      "columnSettings":{
         "columns":[
            { "presentation":"Open", "$type":"AgileColumn"},
            { "presentation":"In Progress, Paused","$type":"AgileColumn" },
            { "presentation":"Postponed", "$type":"AgileColumn" },
            { "presentation":"Closed, Resolved", "$type":"AgileColumn" },
            { "presentation":"Feedback, On Review", "$type":"AgileColumn" }
         ],
         "$type":"ColumnSettings"
      },
      "name":"Web",
      "id":"15",
      "$type":"Agile"
   }
]



下一步是从

棋盘上获取任务:-将名字命名木板-以空格结尾的名称,以':`结尾
-{{当前冲刺}`仅从当前冲刺执行任务
-##未解析`仅采取未关闭的任务 任务将带有一系列对象,这里有很多属性,但是考虑到时间,将需要ID字段,Summary是标题,Spent Time是花费的时间(以分钟为单位),而sprint是要使用的sprint ID。

curl -X GET "https://example.myjetbrains.com/rest/issue?filter=for:me%20Board%20Some%20Name:%7BCurrent%20sprint%7D%20%23Unresolved%20"
-H "Accept: application/json"
-H "Authorization: Bearer perm:token"
-H "Cache-Control: no-cache"
-H "Content-Type: application/json"




{
   "issue":[
      {
         "id":"38-1234", 
         "entityId":"2-12345",
         "jiraId":null,
         "field":[
            { "name":"projectShortName", "value":"38"  },
            { "name":"summary", "value":"[system] [tech] Huge hard task" },
            { "name":"created", "value":"1582624816973" },
            { "name":"Spent time", "value":[ "399" ],  "valueId":["6h 39m"],"color":null },
            { "name":"sprint", "value":[  { "value":"Value", "id":"ID" } ] }
         ],
      }]
}



所获得的数据足以用于任务列表中的映射和导航。该应用程序的主要思想是考虑在完成特定任务上花费的时间。为此,请向服务器发送分钟数(WorkItem),并带有以下查询 为什么使用XML?由于某种原因,测试服务器不接受WorkItem作为json对象。 每日任务历史记录: 处理工作项目后,您可以请求花费时间> 0字段的任务,然后可以编译工作历史记录。 请求当前sprint的所有任务 接下来,我们处理传入的任务数组,并请求已注销时间的任务 处理完接收到的数据后,可以以一种方便的形式显示它, Honsu存放在哪里:github.com/dalerank/nanogui/tree/master/honsu

curl -i -X POST "https://example.myjetbrains.com/rest/issue/38-1234/timetracking/workitem" 
-H "Accept: application/json"
-H "Authorization: Bearer perm:token"
-H "Cache-Control: no-cache"
-H "Content-Type: application/xml"
-d <?xml version=\"1.0\" encoding=\"UTF-8\"?> <workItem> <date>UnixEpocTime*1000</date> <duration>10</duration> <description>added by Honsu</description> <worktype> <name>Development</name> </worktype> </workItem>











curl -X GET "https://example.myjetbrains.com/rest/issue?filter=for:me%20Board%20Some%20Name:%7BCurrent%20sprint%7D"
-H "Accept: application/json"
-H "Authorization: Bearer perm:token"
-H "Cache-Control: no-cache"
-H "Content-Type: application/json"




curl -X GET "https://example.myjetbrains.com/rest/issue/38-1234/timetracking/workitem"
-H "Accept: application/json"
-H "Authorization: Bearer perm:token"
-H "Cache-Control: no-cache"
-H "Content-Type: application/json"







它与其他示例组装在一起,

或者以exe(Windows)形式出现在这里:github.com/dalerank/nanogui/releases

这样做的原因:

+跟踪花费在任务上的时间
+查看跟踪的rest api的工作方式
+如有可能,制作一个monoapp,而无需依赖关系
+有趣的事情:)

它能做什么:

+从您那里跟踪任务
+显示活动的板子
+在任务中将收集的时间标记为工作项
+减少停机时间
+在检测到活动时提醒没有任务的情况
+按天显示时间跟踪的历史记录
+不存储本地数据(密钥和服务器除外)

不知道如何:

+使用多个帐户
+如果没有Internet,则存储破解时间 +在
app中创建新任务
+显示任务的颜色
+建立时间表+
从演出的发行版进行更新

内容:

+ CMake + C ++ 11 + OpenGL(或另一个gapi)
+ OpenSSL
+ cpp-httplib
+在其他平台(Ubuntu \ MacOS)上已构建Windows的受支持版本,甚至可以运行

All Articles