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 26 kB

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