您需要先安装一个扩展,例如 篡改猴、Greasemonkey 或 暴力猴,之后才能安装此脚本。
您需要先安装一个扩展,例如 篡改猴 或 暴力猴,之后才能安装此脚本。
您需要先安装一个扩展,例如 篡改猴 或 暴力猴,之后才能安装此脚本。
您需要先安装一个扩展,例如 篡改猴 或 Userscripts ,之后才能安装此脚本。
您需要先安装一款用户脚本管理器扩展,例如 Tampermonkey,才能安装此脚本。
您需要先安装用户脚本管理器扩展后才能安装此脚本。
creates IHK Ausbilungsnachweis from actitime sheet | Greasemonkey 4.1: ✕ Tampermonkey 4.4: ✔
// ==UserScript== // https://github.com/hannsen/userscripts // @name actiTIME to Ausbilungsnachweis // @namespace https://actitime.net/ // @version 1.9 // @description creates IHK Ausbilungsnachweis from actitime sheet | Greasemonkey 4.1: ✕ Tampermonkey 4.4: ✔ // @author hoannsi // @match https://ktr.quodata.de/actitime* // @grant none // ==/UserScript== azubiName = "azubiName"; ausbildungsbereich = "ausbildungsbereich"; var createCookie = function(name, value, days) { var expires; if (days) { var date = new Date(); date.setTime(date.getTime() + (days * 24 * 60 * 60 * 1000)); expires = "; expires=" + date.toGMTString(); } else { expires = ""; } document.cookie = name + "=" + value + expires + "; path=/"; }; function getCookie(c_name) { if (document.cookie.length > 0) { c_start = document.cookie.indexOf(c_name + "="); if (c_start != -1) { c_start = c_start + c_name.length + 1; c_end = document.cookie.indexOf(";", c_start); if (c_end == -1) { c_end = document.cookie.length; } return unescape(document.cookie.substring(c_start, c_end)); } } return ""; } //cookie laden, wenn leer meine daten rein try{azubiList = JSON.parse(getCookie('azubiList'));} catch(err){azubiList = [azubiName , ausbildungsbereich];} today = new Date(); var dd = today.getDate(); var mm = today.getMonth()+1; //January is 0! var yyyy = today.getFullYear(); if(dd<10){ dd='0'+dd; } if(mm<10){ mm='0'+mm; } var today = dd+'.'+mm+'.'+yyyy; //wann zur arbeit gekommen workTimes=[]; var i = 0; // Holt die Ankunfszeit aus den Kommentaren der ersten Zeile function getWorkTime(){ $('.cursorImageLink')[i].click(); setTimeout( function(){ if( $("#editDescriptionPopupText")[0].value){ workTimes.push( $("#editDescriptionPopupText")[0].value); } else{ workTimes.push('9:00'); } if(i < 4){ i++; getWorkTime(); } }, 100); } zeitVom = ""; zeitBis = ""; yearFound = ""; function getTimes(){ splitTimes = $('#ext-gen10').html().split(','); yearFound = splitTimes[1]; splitTimes = splitTimes[0].split('-'); zeitVom = splitTimes[0]; zeitBis = splitTimes[1]; } //wieviel stunden gearbeitet: workTotal=['mo','di','mi','do','fr','total']; workTotal=[]; function getWorkTotal(){ workTotal.push(document.getElementById('dayTotal[0]').innerHTML); workTotal.push(document.getElementById('dayTotal[1]').innerHTML); workTotal.push(document.getElementById('dayTotal[2]').innerHTML); workTotal.push(document.getElementById('dayTotal[3]').innerHTML); workTotal.push(document.getElementById('dayTotal[4]').innerHTML); workTotal.push(document.getElementById('weekTotal').innerHTML); } // supTask = ["manueller Test durch QD-Mitarbeiter (PROLab-Weiterentwicklung)", undefined, undefined, "4:06", "", "", "", "1:10", "", "", undefined, undefined] allTasks=[]; function getTasks(){ //zeilen level $('.taskNameColumn').each(function(){ var supTask=[]; //task namen supTask.push( '• ' + $(this).find('.task').html() + ' (' + $(this).find('.customer').html() + ' / ' + $(this).find('.project').html() + ')' ); //jede spalte in momentaner zeile $(this).siblings().each(function(){ supTask.push( $(this).find('.text.inputTT').val() ); }); //falls Task frozen, gibt es keine input fields, wir brauchen alternative methode calendarWorkingDayNormal if(typeof supTask[3] == "undefined"){ supTask.splice(1 , 11); $(this).siblings().each(function(){ supTask.push( $(this).find('.text.completedTimeText').text() ); }); } console.log( supTask[3].match(/\s*--.*/gi) ); allTasks.push(supTask); }); } // createDay(1) is monday, 5 is friday //returns html code to be filled into table function createDay( dayNumber , getTime){ var output = ""; for(var i =0; i<allTasks.length; i++){ if(allTasks[i][dayNumber + 2].match(/\s*--.*/gi) !== null) allTasks[i][dayNumber + 2] = ''; if(allTasks[i][dayNumber + 2] !== "" ){ if(getTime){output = output + allTasks[i][dayNumber + 2] + '<br>' ;} else{output = output + allTasks[i][0] + '<br>';} } } return output; } function addTimes(in1, in2){ var in1Save =in1; in1 = in1.split(':'); in2 = in2.split(':'); var hours = parseInt(in1[0]) + parseInt(in2[0]); var mins = parseInt(in1[1]) + parseInt(in2[1]); if(mins > 59){ hours++; mins = mins % 60; } mins = mins.toString(); var pad = "00"; var minsGood = pad.substring(0, pad.length - mins.length) + mins; return in1Save + '-' + hours + ':' + minsGood; } function newWin() { var w = window.open(); var html = newHTML; $(w.document.body).html(html); } $(document).ready(function(){ $('#taskSelectControl').parent().after('<a href="javascript:void(0)" id="actiToAusbildungButton"> Actime 2 Ausbildungsnachweis</a> <input id="azubiName" value="'+ azubiList[0] + '"></input><input id="fachrichtung" value= "'+ azubiList[1] + '"></input>'); $('#actiToAusbildungButton').on("click" , function(){ azubiList[0] = $('#azubiName').val(); azubiList[1] = $('#fachrichtung').val(); var json_str = JSON.stringify(azubiList); createCookie('azubiList', json_str, 60); getWorkTime(); getWorkTotal(); getTasks(); getTimes(); setTimeout( function(){ createHTML(); newWin(); },600); } ); }); newHTML=""; function createHTML(){ newHTML = ` <!DOCTYPE html><html> <style type="text/css" media="print"> @page { size: auto; /* auto is the initial value */ margin: 0; /* this affects the margin in the printer settings */ } </style> <style type="text/css"> * {font-size:10px;} .tg {border-collapse:collapse;border-spacing:0;} .tg td{font-family:Arial, sans-serif;font-size:10px;padding:10px 5px;border-style:solid;border-width:1px;overflow:hidden;word-break:normal;} .tg th{font-family:Arial, sans-serif;font-size:10px;font-weight:normal;padding:10px 5px;border-style:solid;border-width:1px;overflow:hidden;word-break:normal;} .tg .tg-yw4l{vertical-align:top} table {width:90% ; margin:auto;} </style> <table class="tg"> <tr> <th class="tg-031e" colspan="2">Name des/der Auszubildenden: ` + azubiList[0] + `</th> </tr> <tr> <td class="tg-031e">Ausbildungsjahr: ` + yearFound + ` </td> <td class="tg-031e">Ausbildungsbereich: ` + azubiList[1] + `</td> </tr> <tr> <td class="tg-yw4l">Ausbildungswoche vom: ` + zeitVom + ` </td> <td class="tg-yw4l">bis: ` + zeitBis + `</td> </tr> </table> <br> <table class="tg"> <tr> <th class="tg-yw4l"></th> <th class="tg-yw4l">Betriebliche Tätigkeiten, Unterweisungen, betrieblicher Unterricht, <br>sonstige Schulungen, Themen des Berufsschulunterrichts</th> <th class="tg-yw4l">Arbeitszeit<br>von/bis</th> <th class="tg-yw4l">Zeit in<br>h</th> </tr> <tr> <td class="tg-yw4l days" rowspan="2">Montag</td> <td class="tg-yw4l" rowspan="2">` + createDay(1, false) +`</td> <td class="tg-yw4l" rowspan="2"> ` + addTimes( workTimes[0] , workTotal[0] ) + `</td> <td class="tg-yw4l">` + createDay(1, true) +`</td> </tr> <tr> <td class="tg-yw4l"> ∑ ` + workTotal[0] + `</td> </tr> <tr> <td class="tg-yw4l days" rowspan="2">Dienstag</td> <td class="tg-yw4l" rowspan="2">` + createDay(2, false) +`</td> <td class="tg-yw4l" rowspan="2"> ` + addTimes( workTimes[1] , workTotal[1] ) + ` </td> <td class="tg-yw4l">` + createDay(2, true) +`</td> </tr> <tr> <td class="tg-yw4l"> ∑ ` + workTotal[1] + `</td> </tr> <tr> <td class="tg-yw4l days" rowspan="2">Mittwoch</td> <td class="tg-yw4l" rowspan="2">` + createDay(3, false) +`</td> <td class="tg-yw4l" rowspan="2"> `+ addTimes( workTimes[2] , workTotal[2] ) + ` </td> <td class="tg-yw4l">` + createDay(3, true) +`</td> </tr> <tr> <td class="tg-yw4l"> ∑ ` + workTotal[2] + `</td> </tr> <tr> <td class="tg-yw4l days" rowspan="2">Donnerstag</td> <td class="tg-yw4l" rowspan="2">` + createDay(4, false) +`</td> <td class="tg-yw4l" rowspan="2"> `+ addTimes( workTimes[3] , workTotal[3] ) + ` </td> <td class="tg-yw4l">` + createDay(4, true) +`</td> </tr> <tr> <td class="tg-yw4l"> ∑ ` + workTotal[3] + `</td> </tr> <tr> <td class="tg-yw4l days" rowspan="2">Freitag</td> <td class="tg-yw4l" rowspan="2">` + createDay(5, false) +`</td> <td class="tg-yw4l" rowspan="2"> ` + addTimes( workTimes[4] , workTotal[4] ) + ` </td> <td class="tg-yw4l">` + createDay(5, true) +`</td> </tr> <tr> <td class="tg-yw4l"> ∑ ` + workTotal[4] + `</td> </tr> <tr> <td class="tg-yw4l" colspan="3" align="right" >Gesamtstunden der Woche:</td> <td class="tg-yw4l"> ∑ ` + workTotal[5] + `</td> </tr> </table> <div style="width:95% ; margin:auto; font-family:Arial, sans-serif; text-align:center;"> <br> __ Anzahl Fehltage krank __ Anzahl Tage Berufschule __ Anzahl Tage Unternehmen <br> <br> </div> <table class="tg"> <tr> <td class="tg-031e">Besondere Bemerkungen Auszubildende/r: <br> <br> </td> <td class="tg-031e">Weitere Sichtvermerke (z.B.: Berufsschule, …): <br> <br> </td> </tr> <tr> <td class="tg-yw4l"> ` + today + `<br> <br>Datum / Unterschrift / Auszubildende/r</td> <td class="tg-yw4l">` + today + `<br> <br>Datum / Unterschrift / Ausbildender bzw. Ausbilder/in</td> </tr> </table> </html> `; }