You can not select more than 25 topics Topics must start with a chinese character,a letter or number, can include dashes ('-') and can be up to 35 characters long.

labelTaskPage.js 28 kB

3 years ago
3 years ago
3 years ago
123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207208209210211212213214215216217218219220221222223224225226227228229230231232233234235236237238239240241242243244245246247248249250251252253254255256257258259260261262263264265266267268269270271272273274275276277278279280281282283284285286287288289290291292293294295296297298299300301302303304305306307308309310311312313314315316317318319320321322323324325326327328329330331332333334335336337338339340341342343344345346347348349350351352353354355356357358359360361362363364365366367368369370371372373374375376377378379380381382383384385386387388389390391392393394395396397398399400401402403404405406407408409410411412413414415416417418419420421422423424425426427428429430431432433434435436437438439440441442443444445446447448449450451452453454455456457458459460461462463464465466467468469470471472473474475476477478479480481482483484485486487488489490491492493494495496497498499500501502503504505506507508509510511512513514515516517518519520521522523524525526527528529530531532533534535536537538539540541542543544545546547548549550551552553554555556557558559560561562563564565566567568569570571572573574575576577578579580581582583584585586587588589590591592593594595596597598599600601602603604605606607608609610611612613614615616617618619620621622623624625626627628629630631632633634635636637638639640641642643644645646647648649650651652653654655656657658659660661662663664665666667668669670671672673674675676677678679680681682683684685686687688689690691692693694695696697698699700701702703704705706707708709710711712713714715716717718719720721722723724725726727728729730731732733734735736737738739740741742743744745746747748749750751752753754755756757758759760761762763764765766767768769770771772773774775776777778779780781782783784785786787788789790791792793794795796797798799800801802803804805806807808809810811812813814815816817818819820821822823824825826827828829830831832833834835836837838839840841842843844845846847848849850851852853854855856857858859860861862863864865866867868869870871872873874875876877878879880881882883884885886887888889890891892893894895896897898899900901902903904905906907908909910911912913914915916917918919920921922923924925926927928929930931932933934935936937938939940941942943944945946947948949950951952953954955956957958959960961962963964965966967968969970971972973974975976977978979980981982983984985986987988989990991992993994995996997998999100010011002100310041005100610071008100910101011101210131014
  1. var token;
  2. if(isEmpty(token)){
  3. var meta = $("meta[name=_uid]");
  4. if(!isEmpty(meta)){
  5. token = meta.attr("content");
  6. console.log("token is uid:" + token);
  7. }
  8. }
  9. var authorMeta = $("meta[name=author]");
  10. var userName;
  11. if(!isEmpty(authorMeta)){
  12. userName = authorMeta.attr("content");
  13. console.log("user name=" + userName);
  14. }
  15. var userType;
  16. if(isEmpty(userType)){
  17. userType =1;
  18. }
  19. var ip = getIp();
  20. var pageSize = 10;
  21. var tableData;
  22. var tablePageData;
  23. var modelListData;
  24. var dataSetTaskData;
  25. var userInfoData;
  26. var labelPropertyData;
  27. var repoId = $('#repoId').val();
  28. console.log("repoId=" + repoId);
  29. function setDataSetTask(){
  30. //dataset_task_list();
  31. //display_createdatasetlabel(0);
  32. //getUser();
  33. //dislpayUser();
  34. getLabelPropertyTask();
  35. displayLabelPropertyTask();
  36. dataset_sele_Change("");
  37. $(".ui.dataset.modal").modal("show");
  38. }
  39. function getLabelPropertyTask(){
  40. $.ajax({
  41. type:"GET",
  42. url:ip + "/api/label-property-task-all/",
  43. headers: {
  44. authorization:token,
  45. },
  46. dataType:"json",
  47. async:false,
  48. success:function(json){
  49. labelPropertyData = json;
  50. console.log(json);
  51. },
  52. error:function(response) {
  53. redirect(response);
  54. }
  55. });
  56. }
  57. function displayLabelPropertyTask(){
  58. var html="<option value=\"\" selected=\"\">请选择</option>";
  59. for (var i=0;i<labelPropertyData.length;i++){
  60. var row = "<option value=\""+labelPropertyData[i].id+
  61. "\">"+labelPropertyData[i].task_name +
  62. "</option>";
  63. html=html+row;
  64. }
  65. console.log(html);
  66. document.getElementById('labelpropertytask_dataset').innerHTML=html;
  67. document.getElementById('labelpropertytask_auto').innerHTML=html;
  68. }
  69. function dataset_task_list(){
  70. $.ajax({
  71. type:"GET",
  72. url:ip + "/gitea-dataset/",
  73. headers: {
  74. authorization:token,
  75. },
  76. dataType:"json",
  77. data:{
  78. 'repoId':repoId,
  79. 'dateset_type':'[1]'
  80. },
  81. async:false,
  82. success:function(json){
  83. dataSetTaskData = json;
  84. console.log(json);
  85. // return json.token;
  86. },
  87. error:function(response) {
  88. redirect(response);
  89. }
  90. });
  91. }
  92. function countLabel(){
  93. $.ajax({
  94. type:"GET",
  95. url:ip + "/gitea/label-count/",
  96. headers: {
  97. authorization:token,
  98. },
  99. dataType:"json",
  100. async:false,
  101. success:function(json){
  102. alert("请等待几分钟,服务端正在加紧统计。");
  103. },
  104. error:function(response) {
  105. redirect(response);
  106. }
  107. });
  108. }
  109. function setPredictTask(){
  110. //dataset_task_list();
  111. //display_createdatasetlabel(1);
  112. get_model_list();
  113. displayModelTask();
  114. dataset_auto_sele_Change("");
  115. $(".ui.predict.modal").modal("show");
  116. }
  117. function get_model_list(){
  118. $.ajax({
  119. type:"GET",
  120. url:ip + "/api/queryAlgModelForAutoLabel/",
  121. headers: {
  122. authorization:token,
  123. },
  124. dataType:"json",
  125. async:false,
  126. success:function(json){
  127. modelListData = json;
  128. console.log(json);
  129. // return json.token;
  130. },
  131. error:function(response) {
  132. redirect(response);
  133. }
  134. });
  135. }
  136. function displayModelTask(){
  137. var html="";
  138. for (var i=0;i<modelListData.length;i++){
  139. if (i==0){
  140. var row = "<option value=\""+modelListData[i].id+
  141. "\" selected=\"\">"+modelListData[i].model_name +
  142. "</option>";
  143. }else{
  144. var row = "<option value=\""+modelListData[i].id+
  145. "\">"+modelListData[i].model_name+
  146. "</option>";
  147. }
  148. html=html+row;
  149. }
  150. console.log(html);
  151. document.getElementById('model_list').innerHTML=html;
  152. }
  153. function sele_export_Change(sele){
  154. var isNeedPicture = $('#isNeedPicture option:selected').val();
  155. if(isNeedPicture == 3){
  156. document.getElementById("maxscore_div").style.display="block";
  157. document.getElementById("minscore_div").style.display="block";
  158. $('#maxscore').val("1.0");
  159. $('#minscore').val("0.6");
  160. }else{
  161. document.getElementById("maxscore_div").style.display="none";
  162. document.getElementById("minscore_div").style.display="none";
  163. $('#maxscore').val("");
  164. $('#minscore').val("");
  165. }
  166. }
  167. function dataset_sele_Change(sele){
  168. var dataset_listName = $('#dataset_list option:selected').text();
  169. console.log("select dataset_list =" + dataset_listName);
  170. $("#datasetlabeltaskname").val(dataset_listName+"-人工标注");
  171. }
  172. function dataset_auto_sele_Change(sele){
  173. var dataset_listName = $('#dataset_list_auto option:selected').text();
  174. console.log("select dataset_list_auto =" + dataset_listName);
  175. $("#autolabeltaskname").val(dataset_listName+"-自动标注");
  176. }
  177. var createsucced;
  178. function submit_datasettask(){
  179. console.log($('#datasetlabeltaskname').val());
  180. var task_name = $('#datasetlabeltaskname').val();
  181. if (isEmpty(task_name) || task_name.length > 32){
  182. alert("人工标注任务名称不能为空或者不能超过32个字符。");
  183. return;
  184. }
  185. var assign_user_id = $('#assign_user option:selected').val();
  186. if(isEmpty(assign_user_id)){
  187. assign_user_id = token;
  188. }
  189. var relate_task_id = $('#dataset_list option:selected').val();
  190. if(isEmpty(relate_task_id)){
  191. alert("数据集对象不能为空。");
  192. return;
  193. }
  194. var labelpropertytaskid = $('#labelpropertytask_dataset option:selected').val();
  195. createsucced = true;
  196. label_task_create(task_name, relate_task_id, 2,assign_user_id,labelpropertytaskid,-1);
  197. if(createsucced){
  198. $(".ui.dataset.modal").modal("hide");
  199. //$("#labelDataModal").modal('hide');
  200. }
  201. page(0,pageSize);
  202. }
  203. function submit_autolabeltask(){
  204. console.log($('#autolabeltaskname').val());
  205. var task_name = $('#autolabeltaskname').val();
  206. if (isEmpty(task_name) || task_name.length > 32){
  207. alert("自动标注任务名称不能为空或者不能超过32个字符。");
  208. return;
  209. }
  210. var model_id = $('#model_list option:selected').val();
  211. if(isEmpty(model_id)){
  212. alert("标注模型不能为空。");
  213. return;
  214. }
  215. var relate_task_id = $('#dataset_list_auto option:selected').val();
  216. if(isEmpty(relate_task_id)){
  217. alert("数据集对象不能为空。");
  218. return;
  219. }
  220. var assign_user_id = $('#label_assign_user option:selected').val();
  221. if(isEmpty(assign_user_id)){
  222. assign_user_id = token;
  223. }
  224. var labelpropertytaskid = $('#labelpropertytask_auto option:selected').val();
  225. createsucced = true;
  226. label_task_create(task_name, relate_task_id, 1,assign_user_id,labelpropertytaskid,model_id);
  227. if(createsucced){
  228. $("#labelModal").modal('hide');
  229. }
  230. page(0,pageSize);
  231. }
  232. function label_task_create(task_name, relate_task_id, taskType,assign_user_id,labelpropertytaskid,model_id){
  233. var task_flow_type = $('#task_flow_type option:selected').val();
  234. var relate_other_label_task = [];
  235. if(task_flow_type == 2){
  236. var items = document.getElementsByName("category");
  237. for (i = 0; i < items.length; i++) {
  238. if (items[i].checked) {
  239. relate_other_label_task.push(items[i].value);
  240. }
  241. }
  242. }
  243. relate_other_label_task_jsonstr = JSON.stringify(relate_other_label_task);
  244. console.log("relate_task_id=" + relate_task_id);
  245. $.ajax({
  246. type:"POST",
  247. contentType:'application/json',
  248. url:ip + "/gitea/label-task/",
  249. dataType:"json",
  250. async:false,
  251. headers: {
  252. authorization:token,
  253. },
  254. beforeSend: function (xhr) {
  255.       xhr.withCredentials = true
  256.     },
  257. data:JSON.stringify({'task_name':task_name,
  258. 'assign_user_id':assign_user_id,
  259. 'task_flow_type':task_flow_type,
  260. 'relate_task_id':relate_task_id,//task id
  261. 'relate_other_label_task': relate_other_label_task_jsonstr,
  262. "taskType": taskType,
  263. "appid": repoId,
  264. "createUserName":userName,
  265. "labelPropertyTaskId":labelpropertytaskid,
  266. "modelId":model_id
  267. }),
  268. success:function(res){
  269. console.log(res);
  270. if(res.code == 0){
  271. alert("标注任务创建成功!");
  272. createsucced = true;
  273. }
  274. else{
  275. alert("创建标注任务失败," + res.message);
  276. createsucced = false;
  277. }
  278. },
  279. error:function(response) {
  280. redirect(response);
  281. }
  282. });
  283. }
  284. function list(current,pageSize){
  285. $.ajax({
  286. type:"GET",
  287. url:ip + "/gitea/label-task-page/",
  288. headers: {
  289. authorization:token,
  290. },
  291. dataType:"json",
  292. data:{'startPage':current,
  293. 'pageSize':pageSize},
  294. async:false,
  295. success:function(json){
  296. tablePageData = json;
  297. tableData = json.data;
  298. //console.log(json);
  299. },
  300. error:function(response) {
  301. redirect(response);
  302. }
  303. });
  304. }
  305. var otherUserLabelTaskData;
  306. function flow_type_sele_Change(sele){
  307. var task_flow_type = $('#task_flow_type option:selected').val();
  308. if(task_flow_type == 2){
  309. var datasetid = $('#dataset_list option:selected').val();
  310. getOtherUserLabelTaskByDataSetId(datasetid);
  311. var html = "<p>请选择该数据集要审核的标注任务</p>";
  312. for(var i = 0; i < otherUserLabelTaskData.length; i++){
  313. html += "<p><input type=\"checkbox\" name=\"category\" value=\"" + otherUserLabelTaskData[i].id + "\"/>" + otherUserLabelTaskData[i].task_name + "(标注人:" + otherUserLabelTaskData[i].assign_user + ")" + "</p>";
  314. }
  315. document.getElementById('related_task_list').innerHTML=html;
  316. }else{
  317. document.getElementById('related_task_list').innerHTML= "";
  318. }
  319. }
  320. function getOtherUserLabelTaskByDataSetId(datasetid){
  321. $.ajax({
  322. type:"GET",
  323. url:ip + "/gitea/label-related-task/" + datasetid + "/",
  324. headers: {
  325. authorization:token,
  326. },
  327. dataType:"json",
  328. async:false,
  329. success:function(json){
  330. otherUserLabelTaskData = json;
  331. console.log(json);
  332. },
  333. error:function(response) {
  334. redirect(response);
  335. }
  336. });
  337. }
  338. function dislpayUser(){
  339. var html="<option value=\"\" selected=\"\">请选择</option>";
  340. for (var i=0;i<userInfoData.length;i++){
  341. var row = "<option value=\""+userInfoData[i].id+
  342. "\">"+userInfoData[i].username+
  343. "</option>";
  344. html=html+row;
  345. }
  346. console.log(html);
  347. document.getElementById('assign_user').innerHTML=html;
  348. document.getElementById('label_assign_user').innerHTML=html;
  349. }
  350. function getUser(){
  351. $.ajax({
  352. type:"GET",
  353. url:ip + "/api/queryAllUser/",
  354. headers: {
  355. authorization:token,
  356. },
  357. dataType:"json",
  358. async:false,
  359. success:function(json){
  360. userInfoData = json;
  361. console.log(json);
  362. },
  363. error:function(response) {
  364. redirect(response);
  365. }
  366. });
  367. }
  368. function delete_labeltask(){
  369. var stop = del();
  370. if (stop){
  371. return;
  372. }
  373. var Check = $("table[id='label_task_list'] input[type=checkbox]:checked");//在table中找input下类型为checkbox属性为选中状态的数据
  374. Check.each(function () {//遍历
  375. var row = $(this).parent("td").parent("tr");//获取选中行
  376. var id = row.find("[id='labeltask_id']").html();//获取name='Sid'的值
  377. delete_labeltask_byid(id);
  378. });
  379. page(0,pageSize);
  380. }
  381. function del(){
  382. if($("table[id='label_task_list'] input[type=checkbox]").is(":checked")) {
  383. if (confirm("确实要删除吗?")) {
  384. // alert("已经删除!");
  385. return false;
  386. } else {
  387. // alert("已经取消了删除操作");
  388. return true;
  389. }
  390. }else if($("table[id='label_task_list']").find("input").length=="0"){
  391. alert("暂无可删的数据!");
  392. return true;
  393. }else{
  394. alert("请先选择需要删除的选项!");
  395. return true;
  396. }
  397. }
  398. function delete_labeltask_byid(label_task_id){
  399. $.ajax({
  400. type:"DELETE",
  401. url:ip + "/gitea/label-task/",
  402. headers: {
  403. authorization:token,
  404. },
  405. dataType:"json",
  406. async:false,
  407. data:{'label_task_id': label_task_id},
  408. success:function(json){
  409. console.log(json);
  410. },
  411. error:function(response) {
  412. redirect(response);
  413. }
  414. });
  415. }
  416. function getTaskTypeDesc(task_type){
  417. if(task_type == 1){
  418. return "图片-自动标注";
  419. }else if(task_type == 2){
  420. return "图片";
  421. }else if(task_type == 3){
  422. return "CT影像";
  423. }else if(task_type == 4){
  424. return "视频";
  425. }
  426. return "其它";
  427. }
  428. function getLabelDesc(task_flow_type){
  429. if(task_flow_type == 2){
  430. return "审核";
  431. }else{
  432. return "人工"
  433. }
  434. }
  435. function getTaskSataus(task_status,task_status_desc){
  436. if(task_status == 0){
  437. return "标注中:" + task_status_desc;
  438. }else if(task_status == 1){
  439. return "审核中:" + task_status_desc;
  440. }
  441. else if(task_status == -1){
  442. return "关联的数据集已经被删除。"
  443. }
  444. else if(task_status == 20){
  445. return "自动标注进行中:" + task_status_desc;
  446. }else if(task_status == 21){
  447. return task_status_desc;
  448. }
  449. return "";
  450. }
  451. function getVerify(task_status,id,task_type){
  452. console.log("task_status=" + task_status + " userType=" + userType);
  453. if(task_status == 0 && (userType == 1 || userType == 0) ){
  454. return "<a onclick=\"startToVerify(\'"+id+"\',\'" + task_type +"\');\" class=\"btn btn-xs btn-success\">转审核</a>&nbsp;&nbsp;&nbsp;";
  455. }else if(task_status == 1 && userType == 2){
  456. return "<a onclick=\"goVerify(\'"+id+"\',\'" + task_type +"\');\" class=\"btn btn-xs btn-success\">进入审核</a>&nbsp;&nbsp;&nbsp;" + "<a onclick=\"startToLabel(\'"+id+"\',\'" + task_type +"\');\" class=\"btn btn-xs btn-success\">转标注</a>&nbsp;&nbsp;&nbsp;";
  457. }else{
  458. return "";
  459. }
  460. }
  461. function getLabel(task_status,id,task_type,task_flow_type){
  462. if((task_status == 0 || task_status == 21) && (userType == 1 || userType == 0)){
  463. return "<a onclick=\"personLabel(\'" + id + "\'," + task_type + ")\"><b>" + getLabelDesc(task_flow_type) + "标注</b></a><br>";
  464. }else{
  465. return "";
  466. }
  467. }
  468. function display_list(){
  469. var html="<tr>\
  470. <th></th>\
  471. <th id=\"labeltask_head\"></th>\
  472. <th>标注任务名称</th>\
  473. <th>关联的数据集名称</th>\
  474. <th>数据类型</th>\
  475. <th>标注人员</th>\
  476. <th>审核人员</th>\
  477. <th>任务开始时间</th>\
  478. <th>任务状态</th>\
  479. <th>总标注数量</th>\
  480. <th>操作</th>\
  481. </tr>";
  482. for (var i=0;i<tableData.length;i++){
  483. var row = "<tr>\
  484. <td><input type=\"checkbox\" class=\"flat-grey list-child\"/></td>\
  485. <td id=\"labeltask_id\">"+tableData[i].id+"</td>\
  486. <td>"+tableData[i].task_name+"</td>\
  487. <td>"+tableData[i].relate_task_name+"</td>\
  488. <td>"+ getTaskTypeDesc(tableData[i].task_type) +"</td>\
  489. <td>"+tableData[i].assign_user+"</td>\
  490. <td>"+tableData[i].verify_user+"</td>\
  491. <td>"+tableData[i].task_add_time+"</td>\
  492. <td>"+getTaskSataus(tableData[i].task_status,tableData[i].task_status_desc)+"</td>\
  493. <td>"+tableData[i].total_label+"</td>\
  494. <td>" +
  495. getLabel(tableData[i].task_status,tableData[i].id,tableData[i].task_type,tableData[i].task_flow_type) + "<a onclick=\"setTaskId(\'"+tableData[i].id+"\');\"><b>导出标注</b></a>"
  496. +
  497. "</td>\
  498. </tr>";
  499. html=html+row;
  500. }
  501. //console.log(html);
  502. document.getElementById('label_task_list').innerHTML=html;
  503. $('#label_task_list tr').find('td:eq(1)').hide();
  504. $('#label_task_list tr').find('th:eq(1)').hide();
  505. isNeedToRefresh = false;
  506. taskNeedIntervalToRefresh();
  507. }
  508. var isNeedToRefresh;
  509. var refreshTimeId = [];
  510. var refreshCount;
  511. var refreshMaxTime;
  512. function taskNeedIntervalToRefresh(){
  513. var isNeedToSetInterval = false;
  514. refreshMaxTime= 1;
  515. if(!isEmpty(tableData)){
  516. for (var i=0;i<tableData.length;i++){
  517. if(tableData[i].task_status == 20){
  518. console.log("有任务在自动标注中。需要自动刷新。");
  519. isNeedToRefresh = true;//有任务在进行中才刷新,否则不刷新。
  520. refreshMaxTime = 500;
  521. break;
  522. }
  523. }
  524. }
  525. if(!isEmpty(refreshTimeId)){
  526. for(var i =0; i < refreshTimeId.length ;i++){
  527. console.log("清除定时器。refreshTimeId=" + refreshTimeId[i]);
  528. window.clearInterval(refreshTimeId[i]);
  529. }
  530. refreshTimeId = [];
  531. }
  532. if(isNeedToRefresh){
  533. refreshCount = 0;
  534. var tmpTimeId = self.setInterval("clockRefresh('" + refreshMaxTime +"')",5000);//5秒刷新
  535. refreshTimeId.push(tmpTimeId);
  536. console.log("开始刷新。tmpTimeId=" + tmpTimeId);
  537. }
  538. }
  539. function clockRefresh(refreshMaxTime){
  540. refreshCount = refreshCount + 1;
  541. if(refreshCount > refreshMaxTime){
  542. for(var i =0; i < refreshTimeId.length ;i++){
  543. console.log("超过刷新最大次数,清除定时器。timeId=" + refreshTimeId[i]);
  544. window.clearInterval(refreshTimeId[i]);
  545. }
  546. refreshTimeId = [];
  547. return;
  548. }
  549. var current = $('#displayPage1').text();
  550. console.log("开始刷新。current=" + current);
  551. if(current >= 1){
  552. page(current - 1,pageSize);
  553. }
  554. }
  555. function startToLabel(taskid, task_type){//从审核转回标注,标注人不变。
  556. $.ajax({
  557. type:"PATCH",
  558. url:ip + "/gitea/label-task-status/",
  559. dataType:"json",
  560. async:false,
  561. headers: {
  562. authorization:token,
  563. },
  564. data:{
  565. "label_task_id" : taskid,
  566. "verify_user_id" : 0,
  567. "task_status" : 0
  568. },
  569. success:function(res){
  570. console.log(res);
  571. },
  572. error:function(response) {
  573. redirect(response);
  574. }
  575. });
  576. var current =$('#displayPage1').text();
  577. page(current - 1,pageSize);
  578. }
  579. function startToVerify(taskid, task_type){
  580. $("#hide_labeltasktoverifyid").val(taskid);
  581. $.ajax({
  582. type:"GET",
  583. url:ip + "/api/queryVerifyUser/",
  584. headers: {
  585. authorization:token,
  586. },
  587. dataType:"json",
  588. async:false,
  589. success:function(json){
  590. console.log(json);
  591. var html="<option value=\"\" selected=\"\">请选择</option>";
  592. for (var i=0;i<json.length; i++){
  593. var row = "<option value=\""+json[i].id+"\">" + json[i].username + "</option>";
  594. html=html+row;
  595. }
  596. document.getElementById('label_verify_user').innerHTML=html;
  597. },
  598. error:function(response) {
  599. redirect(response);
  600. }
  601. });
  602. $("#startToVerify").modal('show');
  603. }
  604. function submit_labeltask_toverify(){
  605. var label_task_id = $('#hide_labeltasktoverifyid').val();
  606. console.log("label_task_id=" +label_task_id);
  607. var verify_user_id = $('#label_verify_user option:selected').val();
  608. //修改状态
  609. $.ajax({
  610. type:"PATCH",
  611. url:ip + "/gitea/label-task-status/",
  612. dataType:"json",
  613. async:false,
  614. headers: {
  615. authorization:token,
  616. },
  617. data:{
  618. "label_task_id" : label_task_id,
  619. "verify_user_id" : verify_user_id,
  620. "task_status" : 1
  621. },
  622. success:function(res){
  623. console.log(res);
  624. },
  625. error:function(response) {
  626. redirect(response);
  627. }
  628. });
  629. $("#startToVerify").modal('hide');
  630. var current =$('#displayPage1').text();
  631. page(current - 1,pageSize);
  632. }
  633. function goVerify(taskid, task_type){
  634. sessionStorage.setItem('label_task',taskid);
  635. sessionStorage.setItem('label_task_status',1);//审核
  636. console.log("task_type=" + task_type);
  637. if(task_type == 2 || task_type == 1 || task_type == 4){
  638. window.location.href="labeling.html";
  639. }else if(task_type == 3){
  640. window.location.href="labelingDcm.html";
  641. }
  642. }
  643. function personLabel(taskid, task_type){
  644. sessionStorage.setItem('label_task',taskid);
  645. sessionStorage.setItem('token',token);
  646. sessionStorage.setItem('userType',1);
  647. var pathname = window.location.pathname;
  648. var search = window.location.search
  649. var url_name = pathname + search
  650. sessionStorage.setItem('return_url',url_name);
  651. console.log("task_type=" + task_type);
  652. if(task_type == 2 || task_type == 1 || task_type == 4){
  653. window.open("/self/labeling.html?","标注"+new Date().getMilliseconds());
  654. //window.location.href="/self/labeling.html";
  655. }else if(task_type == 3){
  656. window.location.href="labelingDcm.html";
  657. }
  658. }
  659. function setMultiTaskId(){
  660. var Check = $("table[id='label_task_list'] input[type=checkbox]:checked");//在table中找input下类型为checkbox属性为选中状态的数据
  661. if(Check.length == 0){
  662. alert("请选择一个或者多个标注数据进行导出。");
  663. return;
  664. }
  665. var taskList = [];
  666. Check.each(function () {//遍历
  667. var row = $(this).parent("td").parent("tr");//获取选中行
  668. var id = row.find("[id='labeltask_id']").html();//获取name='Sid'的值
  669. taskList.push(id);
  670. //$('#hide_labeltaskid').val(id);
  671. });
  672. setTaskId(JSON.stringify(taskList));
  673. }
  674. function setTaskId(labeltaskid){
  675. $('#hide_labeltaskid').val(labeltaskid);
  676. console.log("go here1");
  677. bar.style.width='1%';
  678. document.getElementById('text-progress').innerHTML="0%";
  679. document.getElementById("predtask_id").removeAttribute("disabled");
  680. console.log("go here2");
  681. $(".ui.export.modal").modal("show");
  682. }
  683. function isBeetween(score_threshhold){
  684. if(isEmpty(score_threshhold)){
  685. return true;
  686. }
  687. var regPos = /^\d+(\.\d+)?$/; //非负浮点数
  688. if(!regPos.test(score_threshhold)){
  689. return false;
  690. }else{
  691. if(score_threshhold >1 || score_threshhold < 0){
  692. return false;
  693. }
  694. }
  695. return true;
  696. }
  697. function downloadFile(){
  698. var labeltaskid = $('#hide_labeltaskid').val();
  699. var isNeedPicture = $('#isNeedPicture option:selected').val();
  700. var maxscore = $('#maxscore').val();
  701. var minscore = $('#minscore').val();
  702. var exportFormat = $('#exportFormat option:selected').val();
  703. if(isNeedPicture == 3){
  704. if(!isBeetween(maxscore)){
  705. alert("标注得分最大值应该填写0--1.0之间的数值。");
  706. return;
  707. }
  708. if(!isBeetween(minscore)){
  709. alert("标注得分最小值应该填写0--1.0之间的数值。");
  710. return;
  711. }
  712. if(!isEmpty(maxscore) && !isEmpty(minscore)){
  713. if(minscore>maxscore){
  714. alert("标注得分最小值应该小于标注得分最大值。");
  715. return;
  716. }
  717. }
  718. }
  719. document.getElementById("predtask_id").setAttribute("disabled", true);
  720. var taskreturnid = "";
  721. $.ajax({
  722. type:"GET",
  723. url:ip + "/gitea-label-task-export/",
  724. headers: {
  725. authorization:token,
  726. },
  727. dataType:"json",
  728. data:{
  729. "label_task_id" : labeltaskid,
  730. "needPicture" : isNeedPicture,
  731. "exportFormat":exportFormat,
  732. "maxscore":maxscore,
  733. "minscore":minscore
  734. },
  735. async:false,
  736. success:function(json){
  737. taskreturnid = json.message;
  738. console.log(json);
  739. },
  740. error:function(response) {
  741. redirect(response);
  742. }
  743. });
  744. console.log("taskreturnid=" +taskreturnid);
  745. if(!isEmpty(taskreturnid)){
  746. setIntervalToDo(taskreturnid);
  747. }
  748. }
  749. var timeId=[];
  750. var count;
  751. var progress;
  752. function setIntervalToDo(taskreturnid){
  753. count=0;
  754. var tmpTimeId = self.setInterval("clock('" + taskreturnid +"')",1000);//5秒刷新
  755. timeId.push(tmpTimeId);
  756. console.log("开始刷新。timeId=" + tmpTimeId);
  757. }
  758. function clock(taskreturnid){
  759. count++;
  760. if(count > 600 ){
  761. for(var i = 0;i < timeId.length; i++){
  762. console.log("清除定时器1。exportTimeId=" + timeId[i]);
  763. window.clearInterval(timeId[i]);
  764. }
  765. timeId = [];
  766. $(".ui.export.modal").modal("hide");
  767. return;
  768. }
  769. $.ajax({
  770. type:"GET",
  771. url:ip + "/api/query-download-progress/",
  772. headers: {
  773. authorization:token,
  774. },
  775. dataType:"json",
  776. data:{'taskId': taskreturnid},
  777. async:false,
  778. success:function(json){
  779. progress = json;
  780. console.log(json);
  781. },
  782. error:function(response) {
  783. progress = null;
  784. console.log('query return null.');
  785. redirect(response);
  786. }
  787. });
  788. if(!isEmpty(progress)){
  789. if(progress.progress >= 100){
  790. var iSpeed = progress.progress;
  791. bar.style.width=iSpeed+'%';
  792. document.getElementById('text-progress').innerHTML=iSpeed+'%' + ",开始下载文件。"
  793. for(var i = 0;i < timeId.length; i++){
  794. console.log("清除定时器2。exportTimeId=" + timeId[i]);
  795. window.clearInterval(timeId[i]);
  796. }
  797. timeId = [];
  798. var url = ip + "/api/label-file-download/";
  799. var $iframe = $('<iframe />');
  800. var $form = $('<form method="get" target="_self"/>');
  801. $form.attr('action', url); //设置get的url地址
  802. $form.append('<input type="hidden" name="taskId" value="' + taskreturnid + '" />');
  803. $iframe.append($form);
  804. $(document.body).append($iframe);
  805. $form[0].submit();//提交表单
  806. $iframe.remove();//移除框架
  807. $(".ui.export.modal").modal("hide");
  808. }else{
  809. //更新进度
  810. var iSpeed = progress.progress;
  811. bar.style.width=iSpeed+'%';
  812. document.getElementById('text-progress').innerHTML=iSpeed+'%'
  813. }
  814. }else{
  815. count = 600;
  816. }
  817. }
  818. function page(current,pageSize){
  819. list(current,pageSize);
  820. display_list();
  821. setPage(tablePageData,pageSize);
  822. sessionStorage.setItem('label_task_page',current);
  823. }
  824. function nextPage(){
  825. var current = $('#displayPage1').text();
  826. console.log("current=" + current);
  827. page(current,pageSize);
  828. }
  829. function prePage(){
  830. var current =$('#displayPage1').text();
  831. console.log("current=" + current);
  832. if(current > 1){
  833. console.log("current=" + (current - 2));
  834. page(current - 2,pageSize);
  835. }
  836. }
  837. function goPage(){
  838. var goNum = $('#goNum').val();
  839. var pageTotal = $("#totalNum").text();
  840. var pageNum = parseInt(pageTotal/pageSize);
  841. if(pageTotal%pageSize!=0){
  842. pageNum += 1;
  843. }else {
  844. pageNum = pageNum;
  845. }
  846. if (goNum<=0){
  847. alert("请输入大于0的数值");
  848. }
  849. else if(goNum<=pageNum){
  850. page(goNum - 1,pageSize);
  851. }
  852. else{
  853. alert("不能超出总页码!");
  854. }
  855. }
  856. $("#goNum").keydown(function (e) {
  857. if (e.keyCode == 13) {
  858. goPage();
  859. }
  860. });
  861. function setPage(pageData,pageSize){
  862. if (isEmpty(pageData)){
  863. return;
  864. }
  865. var startIndex = pageData.current * pageSize;
  866. if(pageData.total > 0){
  867. startIndex = startIndex + 1;
  868. }
  869. $('#startIndex').text(startIndex);
  870. $('#endIndex').text(pageData.current * pageSize + pageData.data.length);
  871. $('#totalNum').text(pageData.total);
  872. $('#displayPage1').text(pageData.current + 1);
  873. console.log("set prePage status, pageData.current=" + pageData.current);
  874. if(pageData.current == 0){
  875. console.log("set prePage disabled.");
  876. $('#prePage').removeAttr("href");
  877. $('#prePage').attr('style','color:#f5f5f6;');
  878. }
  879. else{
  880. $('#prePage').attr("href","javascript:prePage()");
  881. $('#prePage').attr('style','color:#000;');
  882. }
  883. if((pageData.current + 1) * pageSize >= pageData.total){
  884. console.log("set nextPage disabled.");
  885. $('#nextPage').removeAttr("href");
  886. }
  887. else{
  888. $('#nextPage').attr("href","javascript:nextPage()");
  889. }
  890. var pageTotal = pageData.total;
  891. var pageNum = parseInt(pageTotal/pageSize);
  892. if(pageTotal%pageSize!=0){
  893. pageNum += 1;
  894. }else {
  895. pageNum = pageNum;
  896. }
  897. $("#totalPageNum").text(pageNum);
  898. }
  899. var tmpCurrent = sessionStorage.getItem("label_task_page");
  900. if(isEmpty(tmpCurrent)){
  901. tmpCurrent = 0;
  902. }
  903. page(tmpCurrent,pageSize);