1function escapeHtml(s) { 2 return String(s || "") 3 .replaceAll("&", "&") 4 .replaceAll("<", "<") 5 .replaceAll(">", ">") 6 .replaceAll('"', """) 7 .replaceAll("'", "'"); 8} 9function formatDateDe(raw) { 10 const v = String(raw || '').trim(); 11 if (v === '') { 12 return ''; 13 } 14 15 const mDe = v.match(/^(\d{1,2})\.(\d{1,2})\.(\d{4})$/); 16 if (mDe) { 17 const dd = parseInt(mDe[1], 10); 18 const mm = parseInt(mDe[2], 10); 19 const yyyy = parseInt(mDe[3], 10); 20 21 if (yyyy < 1 || yyyy > 9999 || mm < 1 || mm > 12) { 22 return ''; 23 } 24 25 const lastDay = new Date(yyyy, mm, 0).getDate(); 26 if (dd < 1 || dd > lastDay) { 27 return ''; 28 } 29 30 return String(dd).padStart(2, '0') + '.' + String(mm).padStart(2, '0') + '.' + String(yyyy); 31 } 32 33 const mIso = v.match(/^(\d{4})-(\d{2})-(\d{2})(?:$|[T\s])/); 34 if (mIso) { 35 const yyyy = parseInt(mIso[1], 10); 36 const mm = parseInt(mIso[2], 10); 37 const dd = parseInt(mIso[3], 10); 38 39 if (yyyy < 1 || yyyy > 9999 || mm < 1 || mm > 12) { 40 return ''; 41 } 42 43 const lastDay = new Date(yyyy, mm, 0).getDate(); 44 if (dd < 1 || dd > lastDay) { 45 return ''; 46 } 47 48 return String(dd).padStart(2, '0') + '.' + String(mm).padStart(2, '0') + '.' + String(yyyy); 49 } 50 51 return ''; 52} 53function formatTimeDe(raw) { 54 const v = String(raw || '').trim(); 55 if (v === '') { 56 return ''; 57 } 58 59 // Format HH:MM oder HH:MM:SS direkt 60 const mTime = v.match(/^(\d{1,2}):(\d{2})(?::(\d{2}))?$/); 61 if (mTime) { 62 const hh = parseInt(mTime[1], 10); 63 const mm = parseInt(mTime[2], 10); 64 const ss = mTime[3] !== undefined ? parseInt(mTime[3], 10) : 0; 65 66 if (hh < 0 || hh > 23 || mm < 0 || mm > 59 || ss < 0 || ss > 59) { 67 return ''; 68 } 69 70 return String(hh).padStart(2, '0') + ':' + String(mm).padStart(2, '0'); 71 } 72 73 // ISO oder DATETIME YYYY-MM-DD HH:MM:SS oder mit T 74 const mIso = v.match(/^\d{4}-\d{2}-\d{2}[T\s](\d{2}):(\d{2})(?::(\d{2}))?/); 75 if (mIso) { 76 const hh = parseInt(mIso[1], 10); 77 const mm = parseInt(mIso[2], 10); 78 const ss = mIso[3] !== undefined ? parseInt(mIso[3], 10) : 0; 79 80 if (hh < 0 || hh > 23 || mm < 0 || mm > 59 || ss < 0 || ss > 59) { 81 return ''; 82 } 83 84 return String(hh).padStart(2, '0') + ':' + String(mm).padStart(2, '0'); 85 } 86 87 return ''; 88} 89function parseJsonSafe(v) { 90 if (v && typeof v === 'object') { 91 return v; 92 } 93 94 const s = String(v || '').trim(); 95 if (s === '') { 96 return null; 97 } 98 99 try { 100 return JSON.parse(s); 101 } catch (e) { 102 return null; 103 } 104} 105function pad2(n) { 106 const v = String(n ?? "").trim(); 107 return v.length === 1 ? ("0" + v) : v; 108} 109 110function formatDateTimeDe(iso) { 111 const v = String(iso ?? "").trim(); 112 if (v === "") { 113 return ""; 114 } 115 116 const m = v.match( 117 /^(\d{4})-(\d{2})-(\d{2})[T\s](\d{2}):(\d{2})/ 118 ); 119 120 if (!m) { 121 return v; 122 } 123 124 const yyyy = m[1]; 125 const mm = m[2]; 126 const dd = m[3]; 127 const hh = m[4]; 128 const mi = m[5]; 129 130 return dd + "." + mm + "." + yyyy + " " + hh + ":" + mi; 131} 132 133 134(function( $ ){ 135 136 function syllables(word) { 137 word = word.toLowerCase(); 138 if (word.length <= 3) { 139 return 1; 140 } 141 if (word.length == 0) { 142 return 0; 143 } 144 word = word.replace(/(?:[^laeiouy]es|ed|en|[^laeiouy]e)$/, ''); 145 word = word.replace(/^y/, ''); 146 147 /* 148 if(word.match(/[aeiouy]{1,2}/g) == null) 149 return 0 150 else word = word.match(/[aeiouy]{1,2}/g).length; 151 */ 152 if(word.match(/[aeiouyäöüáéâà èîêâûôÅ]{1,2}/g) == null) 153 return 0 154 else word = word.match(/[aeiouyäöüáéâà èîêâûôÅ]{1,2}/g).length; 155 156 return word; 157 } 158 /** 159 * @param {Function} f Function that handles the result. 160 * 161 */ 162 $.fn.readability = function(f){ 163 164 let averageReadingTime = 250; // words per minute 165 166 let text = $(this).text().trim().replace(/(?:\r\n|\r|\n)/g, ' ').replace(/( )/ig,""); //our text 167 168 if(text.length == 0) //If the text is in a textarea or input field we can use .val(); 169 text = $(this).val().trim().replace(/(?:\r\n|\r|\n)/g, ' ').replace(/( )/ig,""); 170 171 let words = text.split(" "); //Let's split the words in an array 172 173 let syllableCount = 0; //Initializing variables for syllables and sentances 174 let sentencesCount = 0; 175 176 for(let i = 0; i < words.length; i++){ 177 syllableCount += syllables(words[i]); //Using our function to calculate syllables in our word and increment our counter.
178 179 //Longer words will have a longer read time 180 if(words[i].length >= 15 && words[i].length < 20) 181 averageReadingTime--; 182 else if(words[i].length >= 20) 183 averageReadingTime -= 2; 184 185 //If a word has a dot at the end, we can increment sentances 186 if(words[i].charAt(words[i].length - 1) == "." || words[i].charAt(words[i].length - 1) == "!" || words[i].charAt(words[i].length - 1) == "?"){ 187 sentencesCount++; 188 } 189 190 } 191 192 // The Flesch Reading Ease Readability Formula 193 //let readingEaseScore = 206.835 - 1.015*(words.length/sentencesCount) - 84.6*(syllableCount/words.length);//EN 194 let readingEaseScore = 180 - (words.length/sentencesCount) - 58.5*(syllableCount/words.length);//DE 195 196 //Our increment for the average reading time. Harder text = longer reading time 197 let readingEase = 0; 198 199 if(readingEaseScore <= 30){ 200 readingEase -= 30; 201 } else if(readingEaseScore <= 60){ 202 readingEase -= 10; 203 } else if(readingEaseScore <= 70){ 204 readingEase += 5 ; 205 } else if(readingEaseScore <= 90){ 206 readingEase += 15; 207 } else readingEase += 30; 208 209 averageReadingTime += readingEase; 210 let minutes = words.length/averageReadingTime; // minutes 211 212 f({time:minutes, readingEase:readingEaseScore, words:words.length}); 213 return($(this)); 214 } 215 216})( jQuery ); 217+function ($){ 218 219 'use strict'; 220 221 /** 222 * LimitText Class Definition 223 */ 224 var LimitText = function (element, options){ 225 this.options = options; 226 this.$element = $(element); 227 if(!isEmpty(this.$element.attr('maxlength'))){ 228 // if an existing container is not defined, then a default will be created 229 this.$status = (this.options.statusMessage.length) ? 230 $(this.options.statusMessage) : $(this.options.containerElement); 231 232 // Add classes to the status container, and insert base text 233 this.$status 234 .addClass(this.options.containerClass + ' ' + this.options.counterClass) 235 .append('<small class="uk-float-right uk-margin-small-top">' + 236 this.options.limit + '</small>'); 237 238 // reference not available til we've appended the html snippet 239 this.$count = $('small', this.$status); 240 241 // insert the default message container if one isn't already defined 242 if (!this.options.statusMessage.length){ 243 this.$status.insertAfter(this.$element); 244 } 245 246 // set our event handler and proxy it to properly set the context 247 this.$element.on('input.limitText.data-api propertychange.limitText.data-api', $.proxy(this.checkCount, this)); 248 249 // and run initial check of current value 250 this.checkCount(); 251 } 252 }; 253 254 LimitText.VERSION = '0.0.1'; 255 LimitText.NAME = 'limitText'; 256 257 LimitText.DEFAULTS = { 258 limit: 200, 259 warningLimit: 10, 260 statusMessage: '', 261 // These two are Bootstrap text emphasis classes 262 // that you can override in the config, or roll 263 // your own of the same name 264 counterClass: 'text-primary', 265 warningClass: 'text-danger', 266 // The default container element is only used if an 267 // existing container (statusMessage) is not defined 268 containerElement: '<div>', 269 containerClass: 'limit-text-status' 270 }; 271 272 LimitText.prototype.checkCount = function (){ 273 var currVal = this.$element.val(); 274 275 if (currVal.length > this.$element.attr('maxlength')){ 276 // reset the currVal, so that it stays within the limit 277 currVal = currVal.substr(0, this.$element.attr('maxlength') - 1); 278 this.$element.val(currVal); 279 } 280 281 var remaining = this.$element.attr('maxlength') - currVal.length; 282 283 this.$count.html(remaining); 284 285 if (remaining <= this.options.warningLimit){ 286 this.$status.removeClass(this.options.counterClass).addClass(this.options.warningClass); 287 } else { 288 this.$status.removeClass(this.options.warningClass).addClass(this.options.counterClass); 289 } 290 }; 291 292 LimitText.prototype.destroy = function (){ 293 $.removeData(this.$element[0], 'limitText'); 294 295 // remove the inserted status container 296 if (!this.options.statusMessage.length){ 297 this.$status.remove(); 298 } else { 299 this.$status 300 .removeClass( 301 this.options.containerClass + ' ' + 302 this.options.counterClass + ' ' + 303 this.options.warningClass) 304 .empty(); 305 } 306 307 this.$element.off('input.limitText.data-api propertychange.limitText.data-api'); 308 this.$element = null; 309 }; 310 311 // limitText Plugin Definition 312 313 function Plugin (option){ 314 return this.each(function (){ 315 var $this = $(this), 316 data = $this.data('limitText'), 317 options = $.extend({}, LimitText.DEFAULTS, $this.data(), typeof option == 'object' && option); 318 319 if (!data) $this.data('limitText', (data = new LimitText(this, options))); 320 if (typeof option == 'string') data[option](); 321 }); 322 } 323 324 var old = $.fn.limitText; 325 326 $.fn.limitText = Plugin; 327 $.fn.limitText.Constructor = LimitText; 328 329 // limitText No Conflict 330 331 $.fn.limitText.noConflict = function (){ 332 $.fn.limitText = old; 333 return this; 334 }; 335 336}(jQuery); 337(function ($) { 338 339 'use strict'; 340 341 window.FESULTLimitText = window.FESULTLimitText || {}; 342 343 window.FESULTLimitText.init = function (context) { 344 var $context = context ? $(context) : $(document); 345 346 $context 347 .find('input[maxlength], textarea[maxlength]') 348 .add($context.filter('input[maxlength], textarea[maxlength]')) 349 .each(function () { 350 var $field = $(this); 351 352 if ($field.data('limitText')) { 353 $field.limitText('checkCount'); 354 return; 355 } 356 357 $field.limitText(); 358 }); 359 }; 360 361 window.FESULTLimitText.observe = function () { 362 if (window.FESULTLimitTextObserver) { 363 return; 364 } 365 366 window.FESULTLimitTextObserver = new MutationObserver(function (mutations) { 367 mutations.forEach(function (mutation) { 368 if (mutation.type === 'attributes') { 369 window.FESULTLimitText.init(mutation.target); 370 return; 371 } 372 373 $(mutation.addedNodes).each(function () { 374 if (this.nodeType !== 1) { 375 return; 376 } 377 378 window.FESULTLimitText.init(this); 379 }); 380 }); 381 }); 382 383 window.FESULTLimitTextObserver.observe(document.body, { 384 childList: true, 385 subtree: true, 386 attributes: true, 387 attributeFilter: ['maxlength'] 388 }); 389 }; 390 391 $(function () { 392 window.FESULTLimitText.init(document); 393 window.FESULTLimitText.observe(); 394 });
395 396})(jQuery); 397jQuery(function($){ 398 $.fn.hScroll = function (amount){ 399 amount = amount || 120; 400 $(this).bind("DOMMouseScroll mousewheel", function(event){ 401 var oEvent = event.originalEvent, 402 direction = oEvent.detail ? oEvent.detail * -amount : oEvent.wheelDelta, 403 position = $(this).scrollLeft(); 404 if (direction === undefined) { 405 direction = event.deltaY; 406 } 407 position += direction > 0 ? -amount : amount; 408 $(this).scrollLeft(position); 409 event.preventDefault(); 410 }) 411 }; 412}); 413(function($, window, document, undefined){ 414 $.fn.modal = function(userOptions){ 415 var options = $.extend({}, $.fn.modal.defaults, userOptions); 416 $.fn.modal.defaults = { 417 }; 418 return this.each(function(){ 419 var btn = $(this), 420 modal = btn.next(), 421 closeBtn = $(".close"); 422 btn.on("click", function(){ 423 modal.show(); 424 }); 425 closeBtn.on("click", function(){ 426 modal.hide(); 427 }); 428 modal.on("click", function(event){ 429 var target = $(event.target); 430 if (target.is(modal)){ 431 modal.hide(); 432 } 433 }); 434 }); 435 }; 436})(jQuery, window, document); 437jQuery.fn.single_double_click = function(single_click_callback, double_click_callback, timeout){ 438 return this.each(function(){ 439 var clicks = 0, self = this; 440 jQuery(this).click(function(event){ 441 clicks++; 442 if (clicks == 1) { 443 setTimeout(function(){ 444 if(clicks == 1) { 445 single_click_callback.call(self, event); 446 } else { 447 double_click_callback.call(self, event); 448 } 449 clicks = 0; 450 }, timeout || 300); 451 } 452 }); 453 }); 454} 455function getNested(obj, ...args){ 456 return args.reduce((obj, level) => obj && obj[level], obj) 457} 458var Select2Cascade = ( function(window, $){ 459 460 function Select2Cascade(parent, child, placeholderEmpty, placeholder, term, select2Options, url){ 461 462 if(parent && child){ 463 let afterActions = []; 464 let options = select2Options || {}; 465 466 this.then = function(callback){ 467 afterActions.push(callback); 468 return this; 469 }; 470 471 parent.on("change", function (e){ 472 473 if(!parent.val()){ 474 475 if(options){ 476 options.placeholder = placeholderEmpty; 477 } 478 479 child.prop("disabled", true); 480 481 } else { 482 483 if(options){ 484 options.placeholder = placeholder; 485 486 if(child.data("url")){ 487 options.ajax.url = child.data("url").replace(':parentTerm:', term).replace(':parentId:', parent.val()); 488 } else if(url) { 489 options.ajax.url = url.replace(':parentTerm:', term).replace(':parentId:', parent.val()); 490 } else { 491 options.ajax.url = options.ajax.url.replace(':parentTerm:', term).replace(':parentId:', parent.val()); 492 } 493 } 494 495 child.prop("disabled", false); 496 } 497 498 child.empty(); 499 child.select2(options); 500 501 }); 502 } 503 } 504 505 return Select2Cascade; 506 507})( window, $); 508function sumbitAjaxForm(formname, formurl, afterurl, closeID){ 509 510 unloadCheck=false; 511 512 var afterurl = afterurl; 513 var form = $('#'+formname); 514 var checkboxes = form.find('input[type="checkbox"]'); 515 var files = form.find('input[type="file"]'); 516 517 form.blur(); 518 519 var checkboxPromises = checkboxes.map(function(index, checkbox){ 520 return new Promise(function(resolve) { 521 if (checkbox.checked === false) { 522 checkbox.value = 0; 523 } else { 524 checkbox.value = 1; 525 } 526 527 $('#' + formname + " input[name='" + checkbox.name + "']:input[type='hidden']").remove(); 528 $('<input>').attr({ 529 type: 'hidden', 530 id: checkbox.id, 531 name: checkbox.name, 532 value: checkbox.value 533 }).appendTo('#' + formname); 534 535 resolve(); 536 }); 537 }).get(); 538 539 var filePromises = files.map(function(index, fileInput){ 540 return new Promise(function(resolve) {
541 var filesData = fileInput.files; 542 543 if (filesData.length > 0) { 544 var reader = new FileReader(); 545 546 reader.onloadend = function() { 547 var fileDataUrl = reader.result; 548 var base64Index = fileDataUrl.indexOf(';base64,') + ';base64,'.length; 549 var fileData = fileDataUrl.substring(base64Index); 550 551 var fileName = fileInput.name; 552 553 $('#' + formname + " input[name='" + fileInput.name + "']:input[type='hidden']").remove(); 554 $('<input>').attr({ 555 type: 'hidden', 556 id: fileInput.id, 557 name: fileInput.name + '[data]', 558 value: fileData 559 }).appendTo('#' + formname); 560 $('<input>').attr({ 561 type: 'hidden', 562 id: fileInput.id, 563 name: fileInput.name + '[name]', 564 value: filesData[0].name 565 }).appendTo('#' + formname); 566 $('<input>').attr({ 567 type: 'hidden', 568 id: fileInput.id, 569 name: fileInput.name + '[type]', 570 value: filesData[0].type 571 }).appendTo('#' + formname); 572 $('<input>').attr({ 573 type: 'hidden', 574 id: fileInput.id, 575 name: fileInput.name + '[size]', 576 value: filesData[0].size 577 }).appendTo('#' + formname); 578 $('<input>').attr({ 579 type: 'hidden', 580 id: fileInput.id, 581 name: fileInput.name + '[lastModified]', 582 value: filesData[0].lastModified 583 }).appendTo('#' + formname); 584 585 resolve(); 586 }; 587 588 reader.readAsDataURL(filesData[0]); 589 } else { 590 resolve(); 591 } 592 }); 593 }).get(); 594 595 $("#"+formname).find('input[type="text"][data-emptyword]').each(function() { 596 const emptyword = $(this).attr('data-emptyword'); 597 if ($(this).val() === emptyword) { 598 $(this).attr('type', 'number'); 599 $(this).val(0); 600 } 601 }); 602 603 var FormValues = $("#"+formname+" input[type!='checkbox'], #"+formname+" input[type!='file'], #"+formname+" select, #"+formname+" textarea, #"+formname+" email").serialize({checkboxesAsBools: false}); 604 605 Promise.all(checkboxPromises.concat(filePromises)).then(function(){ 606 607 if(!isEmpty($("#"+formname+" input[type!='checkbox'], #"+formname+" input[type!='file'], #"+formname+" select, #"+formname+" textarea, #"+formname+" email").serialize({checkboxesAsBools: false}))){ 608 FormValues = $("#"+formname+" input[type!='checkbox'], #"+formname+" input[type!='file'], #"+formname+" select, #"+formname+" textarea, #"+formname+" email").serialize({checkboxesAsBools: false}); 609 } 610 611 }).then(function(){ 612 613 $.ajax({
614 method: 'post', 615 type: 'post', 616 url: formurl, 617 dataType: 'html', //(xml, json, script, or html) 618 data: FormValues, 619 success: function(response){ 620 var responseObj = jQuery.parseJSON(response); 621 if(afterurl=='download'){ 622 // var responseObj = jQuery.parseJSON(response); 623 if(responseObj.valid==true){ 624 removeBorderChanged('#'+formname); 625 FESULTkit.request.download({'formurl':responseObj.downloadurl}); 626 } else { 627 if(isEmpty(responseObj.message)){ 628 removeBorderChanged('#'+formname); 629 window.location.reload(); 630 } else { 631 FESULTkit.notification({ 632 status: 'danger', 633 icon: 'mdi-alert', 634 color: 'rose', 635 text: responseObj.message 636 }); 637 } 638 } 639 } else if(afterurl=='backwards'){ 640 if(responseObj.valid==true){ 641 removeBorderChanged('#'+formname); 642 UIkit.modal('#remotemodal').hide(); 643 window.history.back(); 644 } else { 645 if(responseObj.message){ 646 FESULTkit.notification({ 647 status: 'danger', 648 icon: 'mdi-alert', 649 color: 'rose', 650 text: responseObj.message 651 }); 652 } 653 } 654 } else if(afterurl=='callback'){ 655 removeBorderChanged('#'+formname); 656 callbackMainFunction(formname, 'save'); 657 } else if(afterurl=='response'){ 658 // var responseObj = jQuery.parseJSON(response); 659 if(responseObj.valid==true){ 660 removeBorderChanged('#'+formname); 661 662 if(responseObj.message && typeof responseObj.message !== "undefined" && responseObj.message.length>0){ 663 FESULTkit.notification({ 664 status: 'success', 665 icon: 'mdi-check', 666 color: 'emerald', 667 text: responseObj.message 668 }); 669 SaveCloseUIModal(formname, responseObj.ID); 670 } else { 671 FESULTkit.notification({ 672 status: 'success', 673 icon: 'mdi-check', 674 color: 'emerald', 675 text: 'Daten wurden gespeichert' 676 }); 677 } 678 if(responseObj.reload==true){ 679 window.location.reload(true); 680 } 681 } else { 682 FESULTkit.notification({ 683 status: 'danger', 684 icon: 'mdi-alert', 685 color: 'rose', 686 text: responseObj.message 687 }); 688 } 689 } else if(afterurl=='notificationbox'){ 690 // var responseObj = jQuery.parseJSON(response); 691 // if(responseObj.valid==true){ 692 // document.location=responseObj.redirect; 693 // } else { 694 // FESULTkit.notification({message: "<i class='fas fa-exclamation-triangle'></i> "+responseObj.message, status: 'danger'}); 695 // } 696 } else if(afterurl=='redirect'){ 697 // var responseObj = jQuery.parseJSON(response); 698 if(responseObj.valid==true){ 699 removeBorderChanged('#'+formname); 700 UIkit.modal('#remotemodal').hide(); 701 document.location=responseObj.redirect; 702 } else { 703 FESULTkit.notification({ 704 status: 'danger', 705 icon: 'mdi-alert', 706 color: 'rose', 707 text: responseObj.message 708 }); 709 if(responseObj.redirect){ 710 document.location=responseObj.redirect; 711 } 712 } 713 }
713 else if(afterurl=='uiModalSave'){ 714 var ID=''; 715 if (IsJsonString(response)){ 716 // var responseObj = jQuery.parseJSON(response); 717 ID = responseObj.ID; 718 } 719 SaveCloseUIModal(formname, ID); 720 $('#reloadTable').click(); 721 } else if(afterurl=='reloadtable'){ 722 if(responseObj.valid==true){ 723 removeBorderChanged('#'+formname); 724 UIkit.modal('#remotemodal').hide(); 725 $(".dataTable").each(function(index, element){ 726 var elementId = $(element).attr('id'); 727 if (typeof elementId !== 'undefined' && elementId){ 728 reloadDataTable(elementId); 729 } 730 }); 731 } else { 732 FESULTkit.notification({ 733 status: 'danger', 734 icon: 'mdi-alert', 735 color: 'rose', 736 text: responseObj.message, 737 timeout:7000 738 }); 739 740 } 741 } else if(afterurl=='reload'){ 742 if(responseObj.valid==true){ 743 removeBorderChanged('#'+formname); 744 UIkit.modal('#remotemodal').hide(); 745 //@TODO Immer aus oder per Parameter? 746 //UIkit.notification({message: "<i class='fas fa-check'></i> Die Daten wurden gespeichert. Bitte warten, die Seite wird neu geladen.", status: 'success'}); 747 window.location.reload(true); 748 } else { 749 FESULTkit.notification({ 750 status: 'danger', 751 icon: 'mdi-alert', 752 color: 'rose', 753 text: responseObj.message, 754 timeout:7000 755 }); 756 } 757 } else if(afterurl=='savedialog'){ 758 FESULTkit.notification({ 759 status: 'success', 760 icon: 'mdi-check', 761 color: 'emerald', 762 text: 'Die Daten wurden gespeichert.' 763 }); 764 UIkit.modal('#remotemodal').hide(); 765 } else { 766 FESULTkit.notification({ 767 status: 'success', 768 icon: 'mdi-check', 769 color: 'emerald', 770 text: 'Die Daten wurden gespeichert.' 771 }); 772 if(closeID!=null && closeID!=''){ 773 parent.eval(closeID).close(); 774 } 775 if(afterurl!=null && afterurl!=''){ 776 document.location=afterurl; 777 } 778 } 779 $('.btn-save').show(); 780 } 781 }); 782 $('#wait').hide(); 783 }); 784} 785function getFormValues(frm, result){ 786 if(result[0]==null){ 787 if(result.valid==true){ 788 $.each(result.form.elements, function(key, value){ 789 var formElement = $("#"+frm+" #"+key); 790 switch(formElement.attr("type")) 791 { 792 case "text" : case "hidden": case "textarea": case "password": case "number": case "email": 793 formElement.val(value); 794 if(key=='color'){ 795 formElement.val(value); 796 formElement.css('background-color','#'+value); 797 } 798 break; 799 case "date": case "time": 800 formElement.val(value); 801 break; 802 case "select" : 803 if(isObject(value)){ 804 formElement.val(value.id); 805 } else { 806 formElement.val(value); 807 } 808 break; 809 case "select2" : 810 setSelect2Value(formElement, value); 811 break; 812 case "color" : 813 formElement.val(value); 814 formElement.css('background-color','#'+value); 815 break; 816 case "checkbox": 817 if(value=='1' || value==true || value=='on'){ 818 formElement.attr("checked",true); 819 } else { 820 formElement.attr("checked",false); 821 } 822 break; 823 case "radio" : 824 $("#"+frm+" input[name="+key+"]").attr('checked', false); 825 $("#"+frm+" input[name="+key+"][value=" + value + "]").attr('checked', 'checked'); 826 break; 827 case "frame" : 828 if(value==null){ 829 value = ''; 830 } 831 if(key=='mailBody'){ 832 value = value.replace('target="_top"','target="_blank"'); 833 value = value.replace('target="_parent"','target="_blank"'); 834 value = value.replace('target="_self"','target="_blank"'); 835 } 836 formElement.contents().find('html').html(value); 837 default: 838 if(isObject(value)){ 839 value = value.value; 840 } 841 if(!isEmpty(formElement.data('formatdate'))){ 842 value = formatDate2str(value, formElement.data('formatdate')) 843 } 844 formElement.html(value); 845 } 846 return true; 847 }); 848 $("#"+frm).attr("data-init", "1"); 849 } else { 850 return false; 851 } 852 } else { 853 $.each(result[0], function(key, value){ 854 var formElement = $("#"+frm+" #"+key); 855 switch(formElement.attr("type")) 856 { 857 case "text" : case "hidden": case "textarea": case "password": case "number": case "email": 858 formElement.val(value); 859 if(key=='color'){ 860 formElement.val(value); 861 formElement.css('background-color','#'+value); 862 } 863 break; 864 case "date": case "time": 865 formElement.val(value); 866 break; 867 case "select" : 868 formElement.val(value); 869 break; 870 case "color" : 871 formElement.val(value); 872 formElement.css('background-color','#'+value); 873 break; 874 case "radio" : case "checkbox": 875 if(value=='1'){ 876 formElement.attr("checked",true); 877 } else { 878 formElement.attr("checked",false); 879 } 880 break; 881 case "frame" : 882 if(value==null){ 883 value = ''; 884 } 885 if(key=='mailBody'){ 886 value = value.replace('target="_top"','target="_blank"'); 887 value = value.replace('target="_parent"','target="_blank"'); 888 value = value.replace('target="_self"','target="_blank"'); 889 } 890 formElement.contents().find('html').html(value); 891 default: 892 formElement.html(value); 893 } 894 return true; 895 }); 896 $("#"+frm).attr("data-init", "1"); 897 } 898} 899$(document).ready(function(){ 900 $("#remotemodal #remotemodal-btn-custom").on("click change", function() { 901 if(!isEmpty($('#remotemodal #remotemodal-btn-custom').attr("data-posturl"))){ 902 FESULTkit.request.simplepost({'formurl':$('#remotemodal #remotemodal-btn-custom').attr("data-posturl")}); 903 } 904 });
905 $('.fesult-hScroll').hScroll(120); 906}); 907document.addEventListener('DOMContentLoaded', function(){ 908 909 const ele = document.getElementsByClassName('fesult-grapScroll'); 910 911 for (let element of ele){ 912 element.style.cursor = 'grab'; 913 let pos = { top: 0, left: 0, x: 0, y: 0 }; 914 915 const mouseDownHandler = function(e){ 916 element.style.cursor = 'grabbing'; 917 element.style.userSelect = 'none'; 918 919 pos = { 920 left: element.scrollLeft, 921 top: element.scrollTop, 922 // Get the current mouse position 923 x: e.clientX, 924 y: e.clientY, 925 }; 926 927 document.addEventListener('mousemove', mouseMoveHandler); 928 document.addEventListener('mouseup', mouseUpHandler); 929 }; 930 931 const mouseMoveHandler = function(e){ 932 // How far the mouse has been moved 933 const dx = e.clientX - pos.x; 934 const dy = e.clientY - pos.y; 935 936 // Scroll the element 937 element.scrollTop = pos.top - dy; 938 element.scrollLeft = pos.left - dx; 939 }; 940 941 const mouseUpHandler = function(){ 942 element.style.cursor = 'grab'; 943 element.style.removeProperty('user-select'); 944 945 document.removeEventListener('mousemove', mouseMoveHandler); 946 document.removeEventListener('mouseup', mouseUpHandler); 947 }; 948 949 // Attach the handler 950 element.addEventListener('mousedown', mouseDownHandler); 951 }; 952}); 953var FESULTcallbacks = { 954 "FormEvent": { 955 "load": function(param){ 956 return; 957 }, 958 "save": function(param){ 959 return; 960 }, 961 "close": function(param){ 962 return; 963 }, 964 "reset": function(param){ 965 return; 966 }, 967 "delete": function(param){ 968 return; 969 } 970 }, 971 "FormFormgenerator": { 972 "load": function(param){ 973 return; 974 }, 975 "save": function(param){ 976 return; 977 }, 978 "close": function(param){ 979 return; 980 }, 981 "reset": function(param){ 982 return; 983 }, 984 "delete": function(param){ 985 window.location.reload(); 986 } 987 }, 988 "FormTemplateFormComponent": { 989 "load": function(param){ 990 return; 991 }, 992 "save": function(param){ 993 return; 994 }, 995 "close": function(param){ 996 return; 997 }, 998 "reset": function(param){ 999 return; 1000 }, 1001 "delete": function(param){ 1002 window.location.reload(); 1003 } 1004 }, 1005 "FormDiseases": { 1006 "load": function(param){ 1007 return; 1008 }, 1009 "save": function(param){ 1010 return; 1011 }, 1012 "close": function(param){ 1013 return; 1014 }, 1015 "reset": function(param){ 1016 return; 1017 }, 1018 "delete": function(param){ 1019 window.location.reload(); 1020 } 1021 }, 1022 "FormSession": { 1023 "load": function(param){ 1024 return; 1025 }, 1026 "save": function(param){ 1027 return; 1028 }, 1029 "close": function(param){ 1030 return; 1031 }, 1032 "reset": function(param){ 1033 return; 1034 }, 1035 "delete": function(param){ 1036 window.location.reload(); 1037 } 1038 }, 1039 "FormServerassigncustomers": { 1040 "load": function(param){ 1041 return; 1042 }, 1043 "save": function(param){ 1044 window.location.reload(); 1045 }, 1046 "close": function(param){ 1047 return; 1048 }, 1049 "reset": function(param){ 1050 return; 1051 }, 1052 "delete": function(param){ 1053 window.location.reload(); 1054 } 1055 }, 1056 "FormPostpayment": { 1057 "load": function(param){ 1058 $('#FormPostpayment #amount').focus(); 1059 setTimeout(function() { 1060 $('#FormPostpayment #amount').focus(); 1061 $('#FormPostpayment #amount').select(); 1062 }, 400); 1063 }, 1064 "save": function(param){ 1065 window.location.reload(); 1066 }, 1067 "close": function(param){ 1068 return; 1069 }, 1070 "reset": function(param){ 1071 return; 1072 }, 1073 "delete": function(param){ 1074 return; 1075 } 1076 }, 1077 "FormApplication": { 1078 "load": function(param){ 1079 $('#elm_form_application_empty').hide(); 1080 $('#elm_form_application').show(); 1081 }, 1082 "save": function(param){ 1083 $('#elm_form_application').hide(); 1084 $('#elm_form_application_empty').show();
1085// window.location.reload(); 1086 }, 1087 "close": function(param){ 1088 $('#elm_form_application').hide(); 1089 $('#elm_form_application_empty').show(); 1090 }, 1091 "reset": function(param){ 1092 $('#elm_form_application_empty').hide(); 1093 $('#elm_form_application').show(); 1094 }, 1095 "delete": function(param){ 1096 $('#elm_form_application').hide(); 1097 $('#elm_form_application_empty').show(); 1098 window.location.reload(); 1099 } 1100 }, 1101 "FormPatientTreatingperson": { 1102 "load": function(param){ 1103 return; 1104 }, 1105 "save": function(param){ 1106 return; 1107 }, 1108 "close": function(param){ 1109 return; 1110 }, 1111 "reset": function(param){ 1112 return; 1113 }, 1114 "delete": function(param){ 1115 window.location.reload(); 1116 } 1117 }, 1118 "FormToDo": { 1119 "load": function(param){ 1120 $("#FormToDo #title").focus(); 1121 }, 1122 "save": function(param){ 1123 window.location.reload(); 1124 }, 1125 "close": function(param){ 1126 return; 1127 }, 1128 "reset": function(param){ 1129 return; 1130 }, 1131 "delete": function(param){ 1132 return; 1133 } 1134 }, 1135 "FormWidget": { 1136 "load": function(param){ 1137 $("#FormToDo #description").focus(); 1138 }, 1139 "save": function(param){ 1140 window.location.reload(); 1141 }, 1142 "close": function(param){ 1143 return; 1144 }, 1145 "reset": function(param){ 1146 return; 1147 }, 1148 "delete": function(param){ 1149 window.location.reload(); 1150 }, 1151 "clone": function(param){ 1152 window.location.reload(); 1153 } 1154 }, 1155 "FormAddress": { 1156 "load": function(param){ 1157 $("#FormAddress #street").focus(); 1158 return; 1159 }, 1160 "save": function(param){ 1161 window.location.reload(); 1162 }, 1163 "close": function(param){ 1164 return; 1165 }, 1166 "reset": function(param){ 1167 return; 1168 }, 1169 "delete": function(param){ 1170 return; 1171 } 1172 }, 1173 "FormViewsite": { 1174 "load": function(param){ 1175 return; 1176 }, 1177 "save": function(param){ 1178 window.location.reload(); 1179 }, 1180 "close": function(param){ 1181 return; 1182 }, 1183 "reset": function(param){ 1184 return; 1185 }, 1186 "delete": function(param){ 1187 return; 1188 } 1189 }, 1190 "FormProject": { 1191 "load": function(param){ 1192 return; 1193 }, 1194 "save": function(param){ 1195 window.location.reload(); 1196 }, 1197 "close": function(param){ 1198 return; 1199 }, 1200 "reset": function(param){ 1201 return; 1202 }, 1203 "delete": function(param){ 1204 return; 1205 } 1206 }, 1207 "FormInvoice": { 1208 "load": function(param){ 1209 return; 1210 }, 1211 "save": function(param){ 1212 return; 1213 }, 1214 "close": function(param){ 1215 return; 1216 }, 1217 "reset": function(param){ 1218 return; 1219 }, 1220 "delete": function(param){ 1221 return; 1222 } 1223 }, 1224 "FormProjectParticipant": { 1225 "load": function(param){ 1226 return; 1227 }, 1228 "save": function(param){ 1229 return; 1230 }, 1231 "close": function(param){ 1232 return; 1233 }, 1234 "reset": function(param){ 1235 return; 1236 }, 1237 "delete": function(param){ 1238 return; 1239 } 1240 }, 1241 "FormUser": { 1242 "load": function(param){ 1243 return; 1244 }, 1245 "save": function(param){ 1246 return; 1247 }, 1248 "close": function(param){ 1249 return; 1250 }, 1251 "reset": function(param){ 1252 return; 1253 }, 1254 "delete": function(param){ 1255 window.location.reload(); 1256 } 1257 }, 1258 "FormSiteSubLinks": { 1259 "load": function(param){ 1260 return; 1261 }, 1262 "save": function(param){ 1263 return; 1264 }, 1265 "close": function(param){ 1266 return; 1267 }, 1268 "reset": function(param){ 1269 return; 1270 }, 1271 "delete": function(param){ 1272 window.location.reload(); 1273 } 1274 }, 1275 "FormSiteNavigation": { 1276 "load": function(param){ 1277 return; 1278 }, 1279 "save": function(param){ 1280 return; 1281 }, 1282 "close": function(param){ 1283 return; 1284 }, 1285 "reset": function(param){ 1286 return; 1287 }, 1288 "delete": function(param){ 1289 window.location.reload(); 1290 } 1291 }, 1292 "FormSiteSubButtons": { 1293 "load": function(param){ 1294 return; 1295 }, 1296 "save": function(param){ 1297 return; 1298 }, 1299 "close": function(param){ 1300 return; 1301 }, 1302 "reset": function(param){ 1303 return; 1304 }, 1305 "delete": function(param){ 1306 window.location.reload(); 1307 } 1308 }, 1309 "FormSiteButtonButtons": { 1310 "load": function(param){ 1311 return; 1312 }, 1313 "save": function(param){ 1314 return; 1315 }, 1316 "close": function(param){ 1317 return; 1318 }, 1319 "reset": function(param){ 1320 return; 1321 }, 1322 "delete": function(param){ 1323 window.location.reload(); 1324 } 1325 }, 1326 "FormReminderCustomer": { 1327 "load": function(param){ 1328 return; 1329 }, 1330 "save": function(param){ 1331 window.location.reload(); 1332 }, 1333 "close": function(param){ 1334 return; 1335 }, 1336 "reset": function(param){ 1337 return; 1338 }, 1339 "delete": function(param){ 1340 window.location.reload(); 1341 } 1342 }, 1343 "FormChecklisteBudget": { 1344 "load": function(param){ 1345 return; 1346 }, 1347 "save": function(param){ 1348 return; 1349 }, 1350 "close": function(param){ 1351 return; 1352 }, 1353 "reset": function(param){ 1354 return; 1355 }, 1356 "delete": function(param){ 1357 window.location.reload(); 1358 } 1359 }, 1360 "FormMedicalretailerdevices": { 1361 "load": function(param){ 1362 return; 1363 }, 1364 "save": function(param){ 1365 return; 1366 }, 1367 "close": function(param){ 1368 return; 1369 }, 1370 "reset": function(param){ 1371 return; 1372 }, 1373 "delete": function(param){ 1374 window.location.reload(); 1375 } 1376 }, 1377 "FormPatientHistory": { 1378 "load": function(param){ 1379 return; 1380 }, 1381 "save": function(param){ 1382 $('#Table').DataTable().ajax.reload(); 1383 }, 1384 "close": function(param){ 1385 return; 1386 }, 1387 "reset": function(param){ 1388 return; 1389 }, 1390 "delete": function(param){ 1391 $('#Table').DataTable().ajax.reload(); 1392 } 1393 }, 1394 "FormPatientAllergies": { 1395 "load": function(param){ 1396 return; 1397 }, 1398 "save": function(param){ 1399 $('#Table').DataTable().ajax.reload(); 1400 }, 1401 "close": function(param){ 1402 return; 1403 }, 1404 "reset": function(param){ 1405 return; 1406 }, 1407 "delete": function(param){ 1408 $('#Table').DataTable().ajax.reload(); 1409 } 1410 }, 1411 "FormPatientAbsencedays": { 1412 "load": function(param){ 1413 return; 1414 }, 1415 "save": function(param){ 1416 $('#Table').DataTable().ajax.reload(); 1417 }, 1418 "close": function(param){ 1419 return; 1420 }, 1421 "reset": function(param){ 1422 return; 1423 }, 1424 "delete": function(param){ 1425 $('#Table').DataTable().ajax.reload(); 1426 } 1427 }, 1428 "FormPatientDiagnosis": { 1429 "load": function(param){ 1430 return; 1431 }, 1432 "save": function(param){ 1433 return; 1434 }, 1435 "close": function(param){ 1436 return; 1437 }, 1438 "reset": function(param){ 1439 return; 1440 }, 1441 "delete": function(param){ 1442 window.location.reload(); 1443 } 1444 }, 1445 "FormMedicaltechnicandevices": { 1446 "load": function(param){ 1447 return; 1448 }, 1449 "save": function(param){ 1450 return; 1451 }, 1452 "close": function(param){ 1453 return; 1454 }, 1455 "reset": function(param){ 1456 return; 1457 }, 1458 "delete": function(param){ 1459 window.location.reload(); 1460 } 1461 }, 1462 "FormContactdata": { 1463 "load": function(param){ 1464 return; 1465 }, 1466 "save": function(param){ 1467 return; 1468 }, 1469 "close": function(param){ 1470 return; 1471 }, 1472 "reset": function(param){ 1473 return; 1474 }, 1475 "delete": function(param){ 1476 window.location.reload(); 1477 } 1478 }, 1479 "FormMedicalmanufacturerdevices": { 1480 "load": function(param){ 1481 return; 1482 }, 1483 "save": function(param){ 1484 return; 1485 }, 1486 "close": function(param){ 1487 return; 1488 }, 1489 "reset": function(param){ 1490 return; 1491 }, 1492 "delete": function(param){ 1493 window.location.reload(); 1494 } 1495 }, 1496 "FormCompanySettingsProposals": { 1497 "load": function(param){ 1498 return; 1499 }, 1500 "save": function(param){ 1501 return; 1502 }, 1503 "close": function(param){ 1504 return; 1505 }, 1506 "reset": function(param){ 1507 return; 1508 }, 1509 "delete": function(param){ 1510 window.location.reload(); 1511 } 1512 }, 1513 "FormInvoiceitem": { 1514 "load": function(param){ 1515 $("#FormInvoiceitem #netamount").each(function() { 1516 $(this).on("change", function() { 1517 let betrag = $(this).val(); 1518 betrag = betrag.replace(',', '.'); 1519 betrag = ((parseFloat(betrag)/100)*(parseFloat($("#FormInvoiceitem #taxrate").val())+100)); 1520 betrag = betrag.toFixed(2); 1521 $("#FormInvoiceitem #grossamount").val(betrag.replace('.', ',')); 1522 }); 1523 }); 1524 $("#FormInvoiceitem #taxrate").each(function() { 1525 $(this).on("change", function() { 1526 let betrag = $("#FormInvoiceitem #netamount").val(); 1527 betrag = betrag.replace(',', '.'); 1528 betrag = ((parseFloat(betrag)/100)*(parseFloat($("#FormInvoiceitem #taxrate").val())+100)); 1529 betrag = betrag.toFixed(2); 1530 $("#FormInvoiceitem #grossamount").val(betrag.replace('.', ',')); 1531 }); 1532 }); 1533 $("#FormInvoiceitem #grossamount").each(function() { 1534 $(this).on("change", function() { 1535 let betragBrutto = $(this).val(); 1536 betragBrutto = betragBrutto.replace(',', '.'); 1537 betragBrutto = ((parseFloat(betragBrutto)/(100+parseFloat($("#FormInvoiceitem #taxrate").val())))*(100)); 1538 betragBrutto = betragBrutto.toFixed(2); 1539 $("#FormInvoiceitem #netamount").val(betragBrutto.replace('.', ',')); 1540 }); 1541 }); 1542 }, 1543 "save": function(param){ 1544 return; 1545 }, 1546 "close": function(param){ 1547 return; 1548 }, 1549 "reset": function(param){ 1550 return; 1551 }, 1552 "delete": function(param){ 1553 return; 1554 } 1555 }, 1556 "FormChecklisteBudget": { 1557 "load": function(param){ 1558 return; 1559 }, 1560 "save": function(param){ 1561 return; 1562 }, 1563 "close": function(param){ 1564 return; 1565 }, 1566 "reset": function(param){ 1567 return; 1568 }, 1569 "delete": function(param){ 1570 return; 1571 } 1572 } 1573}; 1574function generateFormItems(element){ 1575 if(isEmpty(element)){ 1576 return; 1577 } 1578 1579 var appendElement = ''; 1580 1581 if(element.type == 'h1' || element.type == 'h2' || element.type == 'h3' || element.type == 'h4' || element.type == 'h5' || element.type == 'h6'){ 1582 appendElement = $("<"+element.type+">"+generateFormItemsContent(element.content)+"</"+element.type+">"); 1583 } else if(element.type == 'content' || element.type == 'span'){ 1584 appendElement = $("<span>"+generateFormItemsContent(element.content)+"</span>"); 1585 } else if(element.type == 'label'){ 1586 appendElement = $("<label>"+generateFormItemsContent(element.content)+"</label>"); 1587 } else if(element.type == 'p'){ 1588 appendElement = $("<p>"+generateFormItemsContent(element.content)+"</p>"); 1589 } else if(element.type == 'a'){ 1590 appendElement = $("<a>"+generateFormItemsContent(element.content)+"</a>"); 1591 } else if(element.type == 'button'){ 1592 appendElement = $("<button>"+generateFormItemsContent(element.content)+"</button>"); 1593 } else if(element.type == 'textarea'){ 1594 appendElement = $("<textarea>"+generateFormItemsContent(element.content)+"</textarea>"); 1595 } else if(element.type == 'form'){ 1596 appendElement = $("<form>"+generateFormItemsContent(element.content)+"</form>"); 1597 } else if(element.type == 'i'){ 1598 appendElement = $("<i>"+generateFormItemsContent(element.content)+"</i>"); 1599 } else if(element.type == 'div'){ 1600 appendElement = $("<div>"+generateFormItemsContent(element.content)+"</div>"); 1601 } else if(element.type == 'del'){ 1602 appendElement = $("<del>"+generateFormItemsContent(element.content)+"</del>"); 1603 } else if(element.type == 'ul'){ 1604 appendElement = $("<ul>"+generateFormItemsContent(element.content)+"</ul>"); 1605 } else if(element.type == 'li'){ 1606 appendElement = $("<li>"+generateFormItemsContent(element.content)+"</li>"); 1607 } else if(element.type == 'optgroup'){ 1608 appendElement = $("<optgroup>"+generateFormItemsContent(element.content)+"</optgroup>"); 1609 } else if(element.type == 'input'){ 1610 // FIX: Input ist ein Void-Element â niemals mit Inhalt/Closing-Tag erzeugen 1611 appendElement = $("<input>"); 1612 } else if(element.type == 'select'){ 1613 appendElement = $("<select>"+generateFormItemsContent(element.content)+"</select>"); 1614 } else if(element.type == 'option'){ 1615 appendElement = $("<option>"+generateFormItemsContent(element.content)+"</option>"); 1616 } else if(element.type == 'picture'){ 1617 appendElement = $("<picture>"+generateFormItemsContent(element.content)+"</picture>"); 1618 } else if(element.type == 'img'){
1619 appendElement = $("<img>"); 1620 } else if(element.type == 'br'){ 1621 appendElement = $("<br>"); 1622 } else if(element.type == 'hr'){ 1623 appendElement = $("<hr>"); 1624 } else if(element.type == 'pre'){ 1625 appendElement = $("<pre>"+generateFormItemsContent(element.content)+"</pre>"); 1626 } else if(element.type == 'table'){ 1627 appendElement = $("<table>"+generateFormItemsContent(element.content)+"</table>"); 1628 } else if(element.type == 'thead'){ 1629 appendElement = $("<thead>"+generateFormItemsContent(element.content)+"</thead>"); 1630 } else if(element.type == 'tbody'){ 1631 appendElement = $("<tbody>"+generateFormItemsContent(element.content)+"</tbody>"); 1632 } else if(element.type == 'tr'){ 1633 appendElement = $("<tr>"+generateFormItemsContent(element.content)+"</tr>"); 1634 } else if(element.type == 'th'){ 1635 appendElement = $("<th>"+generateFormItemsContent(element.content)+"</th>"); 1636 } else if(element.type == 'td'){ 1637 appendElement = $("<td>"+generateFormItemsContent(element.content)+"</td>"); 1638 } else if(element.type == 'article'){ 1639 appendElement = $("<article>"+generateFormItemsContent(element.content)+"</article>"); 1640 } else if(element.type == 'datalist'){ 1641 appendElement = $("<datalist>"+generateFormItemsContent(element.content)+"</datalist>"); 1642 } else if(element.type == 'script'){ 1643 appendElement = $("<script style=\"display:none\">"+generateFormItemsContent(element.content)+"</script>"); 1644 } else { 1645 if (typeof element.type !== 'undefined'){ 1646 console.warn('Element wurde nicht erzeugt: unbekannter Typ ' + element.type); 1647 } else { 1648 console.warn('Element wurde nicht erzeugt: unbekannter Typ'); 1649 console.warn(element); 1650 } 1651 } 1652 1653 if(!isEmpty(appendElement) && element.attr){ 1654 // FIX: class nur einmal setzen; nur definierte Werte als Attribute schreiben 1655 if (element.attr.class){ 1656 appendElement.addClass(element.attr.class); 1657 } 1658 $.each(element.attr, function(key, value){ 1659 if (key === 'class') return; 1660 if (value === undefined || value === null) return; 1661 appendElement.attr(key, value); 1662 }); 1663 } 1664 1665 if(appendElement){ 1666 return appendElement[0].outerHTML; 1667 } 1668} 1669function generateFormItemsContent(element){ 1670 if(isEmpty(element)){ 1671 return ''; 1672 } 1673 if($.isArray(element)){ 1674 var appendObjts = ''; 1675 $(element).each(function(index, el){ 1676 var genObject = generateFormItems(el); 1677 if(!isEmpty(genObject)){ 1678 appendObjts += genObject; 1679 } 1680 }); 1681 return appendObjts; 1682 } else { 1683 return element; 1684 } 1685} 1686function formatSelect2Project(state){ 1687 if (!state.id) { 1688 return state.text; 1689 } 1690 1691 var artIcon = ''; 1692 1693 var subtext = [state.id, state.projectstatus, state.customer].filter(Boolean).join(" | "); 1694 1695 var $result = $('<span>'+state.text+'<br><span class="text-xs">'+artIcon+'<span class="itext-muted">'+subtext+'</span></span></span>'); 1696 return $result; 1697}; 1698function formatSelect2small(state){ 1699 if (!state.id){ 1700 return state.text; 1701 } 1702 1703 let subtext = ''; 1704 let dropdowntext = ''; 1705 1706 if(state.element){ 1707 subtext = state.element.dataset.subtext ? `<br><span class="text-xs itext-muted">${state.element.dataset.subtext}</span>` : ''; 1708 dropdowntext = state.element.dataset.dropdowntext ? `<div class="fesult-dropdown-triangle uk-dropdown" style="min-width:400px" uk-dropdown="pos: right-center; offset: 40; inset: false">${state.element.dataset.dropdowntext}</div>` : ''; 1709 } 1710 1711 let elementclass = 'text-sm padding-5 '; 1712 1713 if (state.element && state.element.dataset.styleelement){ 1714 elementclass += state.element.dataset.styleelement; 1715 } 1716 1717 let $result = $(`<div class="${elementclass}">${state.text}${subtext}</div>${dropdowntext}`); 1718 1719 return $result; 1720}; 1721function formatSelect2formated(state){ 1722 if (!state.id){ 1723 return state.text; 1724 } 1725 1726 let $result = $('<span class="'+state.cssclass+'">
1726'+state.text+'</span>'); 1727 1728 return $result; 1729}; 1730function formatSelect2Tablecolumns(state){ 1731 if (!state.id) { 1732 return state.text; 1733 } 1734 1735 var $result = $('<span class="text-sm">'+state.text+'</span>'); 1736 return $result; 1737}; 1738function setterSelect2Tablecolumns (data, container){ 1739 return data.id; 1740} 1741function formatSelect2Gitissuse(state){ 1742 if (!state.id) { 1743 return state.text; 1744 } 1745 1746 let artIcon = ''; 1747 if(state.provider=='Gitlab'){ 1748 artIcon = '<i class="fab fa-gitlab itext-muted"></i> '; 1749 } else if(state.provider=='Github'){ 1750 artIcon = '<i class="fab fa-github itext-muted"></i> '; 1751 } else if(state.provider=='Bitbucket'){ 1752 artIcon = '<i class="fab fa-bitbucket itext-muted"></i> '; 1753 } 1754 1755 var subtext = [state.externalID, state.state].filter(Boolean).join(" | "); 1756 1757 var $result = $('<span>'+state.text+'<br><span class="text-xs">'+artIcon+'<span class="itext-muted">'+subtext+'</span></span></span>'); 1758 return $result; 1759}; 1760function formatSelect2Bookkeepingaccount(state){ 1761 if (!state.id) { 1762 return state.text; 1763 } 1764 1765 let artIcon = ''; 1766 if(!state.artID || state.artID==0 || state.artID==1){ 1767 artIcon = '<i class="fas fa-question-circle itext-muted"></i> '; 1768 } else if(state.artID==2){ 1769 artIcon = '<i class="fas fa-arrow-alt-circle-up itext-success"></i> '; 1770 } else if(state.artID==3){ 1771 artIcon = '<i class="fas fa-arrow-alt-circle-down itext-danger"></i> '; 1772 } 1773
1774 var subtext = [state.bezeichnung].filter(Boolean).join(" | "); 1775 1776 var $result = $('<span>'+state.text+'<br><span class="text-xs">'+artIcon+'<span class="itext-muted">'+subtext+'</span></span></span>'); 1777 return $result; 1778}; 1779function formatSelect2Assignment(state){ 1780 if (!state.id) { 1781 return state.text; 1782 } 1783 1784 let kunde = ''; 1785 let person = ''; 1786 1787 if(!isEmpty(state.kunde)){ 1788 kunde = state.kunde; 1789 } 1790 1791 if(!isEmpty(state.person.vorname)){ 1792 person = person+state.person.vorname; 1793 } 1794 if(!isEmpty(state.person.nachname)){ 1795 person = person+' '+state.person.nachname; 1796 } 1797 1798 var subtext = [person, kunde].filter(Boolean).join(" | "); 1799 1800 var $result = $('<span>'+state.text+'<br><span class="text-xs itext-muted">'+subtext+'</span></span>'); 1801 return $result; 1802}; 1803function formatSelect2Article(state){ 1804 if (!state.id) { 1805 return state.text; 1806 } 1807 let artIcon = ''; 1808 1809 if(!state.artID || state.artID==0 || state.artID==1){ 1810 artIcon = '<i class="fas fa-question-circle itext-muted"></i> '; 1811 } else if(state.artID==2){ 1812 artIcon = '<i class="fas fa-arrow-alt-circle-up itext-success"></i> '; 1813 } else if(state.artID==3){ 1814 artIcon = '<i class="fas fa-arrow-alt-circle-down itext-danger"></i> '; 1815 } 1816 1817 let subtext = [state.atikelnummer, state.preisFormated].filter(Boolean).join(" | "); 1818 1819 var $result = $('<span>'+state.text+'<br><span class="text-xs itext-muted">'+subtext+'</span></span>'); 1820 return $result; 1821}; 1822function formatSelect2Gender(state){ 1823 if (!state.id) { 1824 return state.text; 1825 } 1826 var $result = $('<span>'+state.icon+' '+state.text+'</span>'); 1827 return $result; 1828}; 1829function formatSelect2Paymentmethod(state){ 1830 if (!state.id) { 1831 return state.text; 1832 } 1833 var $result = $('<span>'+state.text+'</span>'); 1834 return $result; 1835}; 1836function formatSelect2paneltype(state){ 1837 if (!state.id) { 1838 return state.name; 1839 } 1840 1841 let icon = ''; 1842 1843 if(!isEmpty(state.icon)){ 1844 icon = '<img style="width:40px;" src="' + state.icon + '"/>'; 1845 } 1846 1847 var $result = $('<div class="uk-grid uk-grid-small clearfix"><div class="uk-width-auto">'+icon+'</div><div class="uk-width-expand">'+state.name+'</div></div>'); 1848 return $result; 1849}; 1850function formatSelect2Person(state){ 1851 if (!state.id) { 1852 return state.text; 1853 } 1854 1855 let avatar = ''; 1856 let icon = ''; 1857 let subtext = [state.pia_professionalgroup,state.eMailadresse,state.email].filter(Boolean).join(" | "); 1858 let text = state.text; 1859 1860 if(!isEmpty(state.avatar)){ 1861 avatar = '<img class="uk-border-circle" style="width:40px;" src="' + state.avatar + '"/>'; 1862 } 1863 if(!isEmpty(state.genderIcon)){ 1864 icon = state.genderIcon; 1865 } 1866 if(state.id==='all'){ 1867 text = '<b>'+text+'</b>'; 1868 } 1869 1870 var $result = $('<div class="uk-grid uk-grid-small clearfix"><div class="uk-width-auto">'+avatar+'</div><div class="uk-width-expand text-sm"><span>'+icon+text+'<br><span class="text-xs itext-muted">'+subtext+'</span></span></div></div>'); 1871 return $result; 1872}; 1873function formatSelect2Hospitalcase(state){ 1874 if (!state.id) { 1875 return state.text; 1876 } 1877 1878 return $('<div class="uk-grid uk-grid-small clearfix"><div class="uk-width-expand"><span>'+state.text+'<br><span class="text-xs itext-muted">'+state.subtext+'</span></span></div></div>'); 1879}; 1880function formatSelect2Patient(state){ 1881 if (!state.id) { 1882 return state.text; 1883 } 1884 1885 let icon = ''; 1886 let textsuffix = ''; 1887 let textclass = ''; 1888 let subtext = [state.birthdate, state.internalID, state.casenumber].filter(Boolean).join(" | "); 1889 1890 if (!state.active && (state.active==1 || state.active=='1')){ 1891 textclass = ' itext-danger'; 1892 textsuffix = ' - bereits storniert'; 1893 } 1894 1895 if(!isEmpty(state.genderIcon)){ 1896 icon = state.genderIcon; 1897 } 1898 1899 var $result = $('<div class="uk-grid uk-grid-small clearfix"><div class="uk-width-expand'+textclass+'"><span>
1899'+icon+state.text+textsuffix+'<br><span class="text-xs itext-muted">'+subtext+'</span></span></div></div>'); 1900 return $result; 1901}; 1902function formatSelect2Language(state){ 1903 1904 if (!state.id) { 1905 return state.text; 1906 } 1907 1908 let image = ''; 1909 1910 if(!isEmpty(state.id)){ 1911 image = '<img loading="lazy" src="images/country/'+state.id+'.png" width="18px"/>'; 1912 } else { 1913 image = '<img loading="lazy" src="images/country/none.png" width="18px"/>'; 1914 } 1915 1916 let $result = $('<div class="uk-grid uk-grid-small clearfix text-sm"><div class="uk-width-auto">'+image+'</div><div class="uk-width-expand"><span>'+state.text+'</span> <span class="itext-muted">('+state.id+')</span></div></div>'); 1917 1918 return $result; 1919}; 1920function formatSelect2Icons(state){ 1921 1922 let keywords = ''; 1923 1924 if(!isEmpty(state.keywords)){ 1925 state.keywords.forEach(function(entry){ 1926// keywords.push('<span class="uk-label fesult-background-bluegrey">'+entry+'</span>'); 1927 keywords = keywords+'<span class="uk-label fesult-background-bluegrey" style="margin-right:3px;">'+entry+'</span>'; 1928 }); 1929 } 1930 let $result = $('<div class="uk-grid uk-grid-small clearfix"><div class="uk-width-auto"><img loading="lazy" src="'+state.imagepath+'"/ width="40px"></div><div class="uk-width-expand">'+keywords+'</div></div>'); 1931 1932 return $result; 1933}; 1934function formatSelect2IconsSmall(state){ 1935 1936 /*let keywords = ''; 1937 1938 if(!isEmpty(state.keywords)){ 1939 state.keywords.forEach(function(entry){ 1940 keywords = keywords+'<span class="uk-label fesult-background-bluegrey" style="margin-right:3px;">'+entry+'</span>'; 1941 }); 1942 }*/ 1943 let $result = $('<div class="uk-grid uk-grid-small clearfix"><div class="uk-width-expand text-center"><img src="'+state.imagepath+'"/ width="30px"></div><div class="uk-width-expand text-center"><img src="'+state.imagepath+'"/ width="24px"></div><div class="uk-width-expand text-center"><img src="'+state.imagepath+'"/ width="16px"></div></div>'); 1944 1945 return $result; 1946}; 1947function formatSelect2IconsFa(state){ 1948 1949 /*let keywords = ''; 1950 1951 if(!isEmpty(state.keywords)){ 1952 state.keywords.forEach(function(entry){ 1953 keywords = keywords+'<span class="uk-label fesult-background-bluegrey" style="margin-right:3px;">'+entry+'</span>'; 1954 }); 1955 }*/ 1956 let $result = $('<div class="uk-grid uk-grid-small clearfix"><div class="uk-width-auto text-center"><i class="'+state.fapath+' fa-fw"></i></div><div class="uk-width-expand">'+state.fapath+'</div></div>'); 1957 1958 return $result; 1959}; 1960function formatSelect2faText(state){ 1961 if(state.icon){ 1962 return $('<div class="uk-grid uk-grid-small clearfix"><div class="uk-width-auto text-center"><i class="'+state.icon+' fa-fw"></i></div><div class="uk-width-expand">'+state.text+'</div></div>'); 1963 } else { 1964 return $('<div class="uk-grid uk-grid-small clearfix"><div class="uk-width-auto text-center"></div><div class="uk-width-expand">'+state.text+'</div></div>'); 1965 } 1966}; 1967function formatSelect2faTextSmall(state){ 1968 if(state.icon){ 1969 return $('<div class="uk-grid uk-grid-small clearfix text-sm"><div class="uk-width-auto text-center"><i class="'+state.icon+' fa-fw"></i></div><div class="uk-width-expand">'+state.text+'</div></div>'); 1970 } else { 1971 return $('<div class="uk-grid uk-grid-small clearfix text-sm"><div class="uk-width-auto text-center"></div><div class="uk-width-expand">'+state.text+'</div></div>'); 1972 } 1973}; 1974function formatSelect2colorselect(state){ 1975 1976 let $result = $('<div class="w-full fesult-eventcolor_'+state.id+'_bg" style="color:#FFF;"><span class="pl-2">'+state.text+'</span></div>'); 1977 1978 return $result; 1979}; 1980function formatSelect2bgcolorselect(state){ 1981 1982 let $result = $('<div class="uk-grid uk-grid-small clearfix"><div class="uk-width-expand '+state.showclass+'">'+state.text+'</div></div>'); 1983 1984 return $result; 1985}; 1986function formatSelect2HapiAtccodes(state){ 1987 if (!state.id) { 1988 return state.text; 1989 } 1990 1991 let text = ''; 1992 let info = ''; 1993 let version = ''; 1994 let subtext = ''; 1995 1996 if(state.description){ 1997 text = state.code+' ('+state.description+')'; 1998 } else { 1999 text = state.code; 2000 } 2001 if(state.info){ 2002 info = 'DDD-Info: '+state.info; 2003 }
2004 if(state.version){ 2005 version = '(Version: '+state.version+')'; 2006 } 2007 2008 let subtextString = [info].filter(Boolean).join(" | "); 2009 2010 subtext = '<div class="uk-grid uk-grid-small text-xs"><div class="uk-width-expand">'+subtextString+'</div><div class="uk-width-auto">'+version+'</div></div>'; 2011 2012 return $('<span class="text-sm">'+text+'<br>'+subtext+'</span>'); 2013} 2014function formatSelect2drugs(state){ 2015 if (!state.id) { 2016 return state.text; 2017 } 2018 2019 let text = ''; 2020 let pzn = ''; 2021 let packagesize = ''; 2022 let atccode = ''; 2023 let manufacturer = ''; 2024 let subtext = ''; 2025 let activesubstance = state.activesubstance; 2026 let fallbackdata = ''; 2027 2028 if(state.isbtm==1){ 2029 activesubstance = '<span class="itext-danger">'+activesubstance+'</span>'; 2030 } 2031 2032 if(state.tradename){ 2033 if(state.activesubstance){ 2034 text = state.tradename+' ('+activesubstance+')'; 2035 } else { 2036 text = state.tradename; 2037 } 2038 } else { 2039 text = activesubstance; 2040 } 2041 2042 if(state.activestrength && state.ingredientstrength){ 2043 text = text+' - '+state.activestrength+' '+state.ingredientstrength; 2044 } 2045 if(state.dosageformStr){ 2046 text = text+' - '+state.dosageformStr; 2047 } 2048 if(state.deliverybottleneck){ 2049 text = '<i class="fas fa-truck fa-fw itext-danger uk-margin-small-right" itooltip="Lieferengpassmeldung vorliegen"></i>'+text; 2050 } 2051 if(state.pzn){ 2052 pzn = 'PZN: '+state.pzn; 2053 } else { 2054 if(state.pic){ 2055 pzn = 'PIC: '+state.pic; 2056 } 2057 } 2058 if(state.packagesize){ 2059 packagesize = 'Packung: '+state.packagesize; 2060 } 2061 if(state.atccode){ 2062 atccode = 'ATC: '+state.atccode; 2063 } 2064 if(state.manufacturer){ 2065 manufacturer = '('+state.manufacturer+')'; 2066 } 2067 2068 if(state.fallbackdata && state.fallbackdata==1){ 2069 fallbackdata = '<span class="itext-warning">Datensatz aus Fallbacksystem</span>'; 2070 } 2071 2072 let subtextString = [pzn,atccode,packagesize].filter(Boolean).join(" | "); 2073 2074 text = '<div class="uk-grid uk-grid-small"><div class="uk-width-expand">'+text+'</div><div class="uk-width-auto text-xs">'+fallbackdata+'</div></div>'; 2075 subtext = '<div class="uk-grid uk-grid-small text-xs" style="margin-top:5px;"><div class="uk-width-expand">'+subtextString+'</div><div class="uk-width-auto">'+manufacturer+'</div></div>'; 2076 2077 return $('<span class="text-sm">'+text+subtext+'</span>'); 2078}; 2079function setterSelect2ifapdrugs (data, container){ 2080 2081 if(data.pic){ 2082 $.post( 2083 { 2084 url: FESULTencryptURLs.sz6N8KD2EDVE6OTtifap, 2085 method: "GET", 2086 async: false, 2087 cache: false, 2088 data: { 2089 'action':'detail', 2090 'pic': data.pic 2091 }, 2092 dataType: "json" 2093 }, function(response, status, xhr){ 2094 setterSelect2drugs(response.result, container); 2095 } 2096 ).fail(function(xhr, textStatus, errorThrown){ 2097 if(xhr.code === 403){ 2098 FESULTkit.notification({ 2099 status: 'danger', 2100 icon: 'mdi-alert', 2101 color: 'rose', 2102 text: 'Authentifizierung erforderlich, bitte loggen Sie sich erneut ein' 2103 }); 2104 } else { 2105 FESULTkit.notification({ 2106 status: 'danger', 2107 icon: 'mdi-alert', 2108 color: 'rose', 2109 text: 'ifap webSERVICE Daten konnten nicht abgerufen werden' 2110 }); 2111 } 2112 }); 2113 } 2114 2115 return data.text; 2116} 2117function setterSelect2drugs (data, container){ 2118 2119 let parentform = $(container).closest("form"); 2120 if(parentform.length!=0){ 2121 if(!isEmpty(parentform.attr('id'))){ 2122 2123 if(!isEmpty(data.pzn) && data.pzn){ 2124 $('#'+parentform.attr('id')+' #pzn').val(data.pzn); 2125 $('#'+parentform.attr('id')+' #pzn').prop('readonly', true); 2126 } else { 2127 $('#'+parentform.attr('id')+' #pzn').val(''); 2128 $('#'+parentform.attr('id')+' #pzn').prop('readonly', false); 2129 } 2130 if(!isEmpty(data.pic) && data.pic){ 2131 $('#'+parentform.attr('id')+' #pic').val(data.pic); 2132 $('#'+parentform.attr('id')+' #pic').prop('readonly', true); 2133 } else { 2134 $('#'+parentform.attr('id')+' #pic').val(''); 2135 $('#'+parentform.attr('id')+' #pic').prop('readonly', false); 2136 } 2137 if(!isEmpty(data.activesubstance) && data.activesubstance){ 2138 $('#'+parentform.attr('id')+' #activesubstance').val(data.activesubstance); 2139 $('#'+parentform.attr('id')+' #activesubstance').prop('readonly', true); 2140 } else { 2141 $('#'+parentform.attr('id')+' #activesubstance').val(''); 2142 $('#'+parentform.attr('id')+' #activesubstance').prop('readonly', false); 2143 } 2144 if(!isEmpty(data.packagesize) && data.packagesize){ 2145 $('#'+parentform.attr('id')+' #packagesize').val(data.packagesize); 2146 $('#'+parentform.attr('id')+' #packagesize').prop('readonly', true); 2147 } else { 2148 $('#'+parentform.attr('id')+' #packagesize').val(''); 2149 $('#'+parentform.attr('id')+' #packagesize').prop('readonly', false); 2150 } 2151 if(!isEmpty(data.tradename) && data.tradename){ 2152 $('#'+parentform.attr('id')+' #tradename').val(data.tradename); 2153 $('#'+parentform.attr('id')+' #tradename').prop('readonly', true); 2154 } else { 2155 $('#'+parentform.attr('id')+' #tradename').val(''); 2156 $('#'+parentform.attr('id')+' #tradename').prop('readonly', false); 2157 } 2158 if(!isEmpty(data.atccode) && data.atccode){ 2159 $('#'+parentform.attr('id')+' #atccode').val(data.atccode); 2160 $('#'+parentform.attr('id')+' #atccode').prop('readonly', true); 2161 } else { 2162 $('#'+parentform.attr('id')+' #atccode').val(''); 2163 $('#'+parentform.attr('id')+' #atccode').prop('readonly', false); 2164 } 2165 if(!isEmpty(data.isbtm) && data.isbtm){ 2166 if(data.isbtm==1){ 2167 $('#'+parentform.attr('id')+' #isbtm').prop('checked', true); 2168 } else { 2169 $('#'+parentform.attr('id')+' #isbtm').prop('checked', false); 2170 } 2171 } 2172 if(!isEmpty(data.manufacturer) && data.manufacturer){ 2173 $('#'+parentform.attr('id')+' #manufacturer').val(data.manufacturer); 2174 } else { 2175 $('#'+parentform.attr('id')+' #manufacturer').val(''); 2176 $('#'+parentform.attr('id')+' #manufacturer').prop('readonly', false); 2177 } 2178 if(!isEmpty(data.activestrength) && data.activestrength){ 2179 $('#'+parentform.attr('id')+' #activestrength').val(data.activestrength); 2180 } else { 2181 $('#'+parentform.attr('id')+' #activestrength').val(''); 2182 $('#'+parentform.attr('id')+' #activestrength').prop('readonly', false); 2183 } 2184 if(!isEmpty(data.ingredientstrength) && data.ingredientstrength){ 2185 $('#'+parentform.attr('id')+' #ingredientstrength').val(data.ingredientstrength); 2186 } else { 2187 $('#'+parentform.attr('id')+' #ingredientstrength').val(''); 2188 $('#'+parentform.attr('id')+' #ingredientstrength').prop('readonly', false); 2189 } 2190 if(!isEmpty(data.dosageform) && data.dosageform){ 2191 2192 $('#'+parentform.attr('id')+' #dosageformCode').val(null).trigger('change'); 2193 2194 if ($('#'+parentform.attr('id')+' #dosageformCode').find("option[value='" + data.dosageform
2194+ "']").length) { 2195 $('#'+parentform.attr('id')+' #dosageformCode').val(data.dosageform).trigger('change'); 2196 } else { 2197 var newOption = new Option(data.dosageformStr, data.dosageform, true, true); 2198 $('#'+parentform.attr('id')+' #dosageformCode').append(newOption).trigger('change'); 2199 } 2200 } 2201 if(!isEmpty(data.dosageform) && data.dosageform){ 2202 2203 $('#'+parentform.attr('id')+' #dosageform').val(null).trigger('change'); 2204 2205 if ($('#'+parentform.attr('id')+' #dosageform').find("option[value='" + data.dosageform + "']").length) { 2206 $('#'+parentform.attr('id')+' #dosageform').val(data.dosageform).trigger('change'); 2207 } else { 2208 var newOption = new Option(data.dosageformStr, data.dosageform, true, true); 2209 $('#'+parentform.attr('id')+' #dosageform').append(newOption).trigger('change'); 2210 } 2211 } 2212 if(!isEmpty(data.unit) && data.unit){ 2213 2214 $('#'+parentform.attr('id')+' #dosingunitCode').val(null).trigger('change'); 2215 2216 if ($('#'+parentform.attr('id')+' #dosingunitCode').find("option[value='" + data.unit + "']").length) { 2217 $('#'+parentform.attr('id')+' #dosingunitCode').val(data.unit).trigger('change'); 2218 } else { 2219 var newOption = new Option(data.unitStr, data.unit, true, true); 2220 $('#'+parentform.attr('id')+' #dosingunitCode').append(newOption).trigger('change'); 2221 } 2222 } 2223 if(data.notdivisible==1){ 2224 $('#'+parentform.attr('id')+' #activestrength').prop('readonly', true); 2225 $('#'+parentform.attr('id')+' #ingredientstrength').prop('readonly', true); 2226 } else { 2227 $('#'+parentform.attr('id')+' #activestrength').prop('readonly', false); 2228 $('#'+parentform.attr('id')+' #ingredientstrength').prop('readonly', false); 2229 } 2230 } 2231 } 2232 return data.text; 2233} 2234function setterSelect2servicesToEvent (data, container){ 2235 console.warn(data); 2236 /*let parentform = $(container).closest("form"); 2237 if(parentform.length!=0){ 2238 if(!isEmpty(parentform.attr('id'))){ 2239 if(!isEmpty(data.minutesplanted) && data.minutesplanted){ 2240 $('#'+parentform.attr('id')+' #duration').val(data.minutesplanted); 2241 } 2242 } 2243 }*/ 2244 return data.text; 2245} 2246function setterTomSelectDefault (data, container){ 2247 return data.text; 2248} 2249function setterSelect2services (data, container){ 2250 2251 let parentform = $(container).closest("form"); 2252 if(parentform.length!=0){ 2253 if(!isEmpty(parentform.attr('id'))){ 2254 if(!isEmpty(data.minutesplanted) && data.minutesplanted){ 2255 $('#'+parentform.attr('id')+' #duration').val(data.minutesplanted); 2256 } 2257 } 2258 } 2259 return data.text; 2260} 2261function setterSelect2adminconnectorfields (data, container){ 2262 2263 let parentform = $(container).closest("form"); 2264 if(parentform.length!=0){ 2265 if(!isEmpty(parentform.attr('id'))){ 2266 if(!isEmpty(data.transdescription) && data.transdescription){ 2267 if ($('#'+parentform.attr('id')+' #transdescription').find("option[value='" + data.transdescription + "']").length) { 2268 $('#'+parentform.attr('id')+' #transdescription').val(data.transdescription).trigger('change'); 2269 } else { 2270 // Create a DOM Option and pre-select by default 2271 var newOption = new Option(data.transdescription, data.transdescription, true, true); 2272 // Append it to the select 2273 $('#'+parentform.attr('id')+' #transdescription').append(newOption).trigger('change'); 2274 } 2275 } 2276 if(!isEmpty(data.alias) && data.alias){ 2277 $('#'+parentform.attr('id')+' #alias').val(data.alias); 2278 } 2279 if(!isEmpty(data.label) && data.label){ 2280 $('#'+parentform.attr('id')+' #label').val(data.label); 2281 } 2282 } 2283 } 2284 return data.text; 2285} 2286function formatSelect2services(state){ 2287 if (!state.id) { 2288 return state.text; 2289 } 2290 2291 let subtext = ''; 2292 let minutesplanted = ''; 2293 let servicecatalog = ''; 2294
2295 //let subtext = [state.type,state.servicecatalog].filter(Boolean).join(" | "); 2296 if(state.minutesplanted && state.minutesplanted!=0){ 2297 minutesplanted = '<span class="uk-label fesult-background-lightblue uk-margin-small-right fesult-text-default">'+state.minutesplanted+'min</span>'; 2298 } 2299 if(state.servicecatalog){ 2300 servicecatalog = '<span class="uk-label fesult-background-lightblue uk-margin-small-right fesult-text-default">'+state.servicecatalog+'</span>'; 2301 } 2302 if(state.type && state.type!=state.servicecatalog){ 2303 subtext = '<div class="uk-grid uk-grid-small text-xs"><div class="uk-width-expand">'+minutesplanted+servicecatalog+'</div><div class="uk-width-auto">('+state.type+')</div></div>'; 2304 } else { 2305 subtext = '<span class="text-xs">'+minutesplanted+servicecatalog+'</span>'; 2306 } 2307 2308 return $('<span class="text-sm">'+state.text+'<br>'+subtext+'</span>'); 2309}; 2310function formatSelect2qualificationgfs(state){ 2311 if (!state.id) { 2312 return state.text; 2313 } 2314 2315 let subtext = ''; 2316 let minutesplanted = ''; 2317 let servicecatalog = ''; 2318 2319 //let subtext = [state.type,state.servicecatalog].filter(Boolean).join(" | "); 2320 if(state.minutesplanted && state.minutesplanted!=0){ 2321 minutesplanted = '<span class="uk-label fesult-background-lightblue uk-margin-small-right fesult-text-default">'+state.minutesplanted+'min</span>'; 2322 } 2323 if(state.servicecatalog){ 2324 servicecatalog = '<span class="uk-label fesult-background-lightblue uk-margin-small-right fesult-text-default">'+state.servicecatalog+'</span>'; 2325 } 2326 if(state.type && state.type!=state.servicecatalog){ 2327 subtext = '<div class="uk-grid uk-grid-small text-xs"><div class="uk-width-expand">'+minutesplanted+servicecatalog+'</div><div class="uk-width-auto">('+state.type+')</div></div>'; 2328 } else { 2329 subtext = '<span class="text-xs">'+minutesplanted+servicecatalog+'</span>'; 2330 } 2331 2332 return $('<span class="text-sm">'+state.text+'<br>'+subtext+'</span>'); 2333}; 2334function formatSelect2qualificationzwb(state){ 2335 if (!state.id) { 2336 return state.text; 2337 } 2338 2339 let subtext = ''; 2340 let minutesplanted = ''; 2341 let servicecatalog = ''; 2342 2343 //let subtext = [state.type,state.servicecatalog].filter(Boolean).join(" | "); 2344 if(state.minutesplanted && state.minutesplanted!=0){ 2345 minutesplanted = '<span class="uk-label fesult-background-lightblue uk-margin-small-right fesult-text-default">'+state.minutesplanted+'min</span>'; 2346 } 2347 if(state.servicecatalog){ 2348 servicecatalog = '<span class="uk-label fesult-background-lightblue uk-margin-small-right fesult-text-default">'+state.servicecatalog+'</span>'; 2349 } 2350 if(state.type && state.type!=state.servicecatalog){ 2351 subtext = '<div class="uk-grid uk-grid-small text-xs"><div class="uk-width-expand">'+minutesplanted+servicecatalog+'</div><div class="uk-width-auto">('+state.type+')</div></div>'; 2352 } else { 2353 subtext = '<span class="text-xs">'+minutesplanted+servicecatalog+'</span>'; 2354 } 2355 2356 return $('<span class="text-sm">'+state.text+'<br>'+subtext+'</span>'); 2357}; 2358function formatSelect2Trans(state){ 2359 if (!state.id) { 2360 return state.text; 2361 } 2362 let trans = '<span class="text-sm">'+state.text; 2363 2364 if(state.subtext && state.subtext.length>0){ 2365 trans = trans+'<br><span class="text-xs itext-muted">'+state.subtext+'</span>'; 2366 } 2367 2368 trans = trans+'</span>'; 2369 2370 var $result = $(trans); 2371 return $result; 2372}; 2373function formatSelect2adminconnectorfields(state){ 2374 if (!state.id) { 2375 return state.text; 2376 } 2377 2378 //let connectorname = ''; 2379 let modellabel = ''; 2380 2381 //if(state.aliasname){ 2382 // connectorname = state.aliasname; 2383 //} else { 2384 // connectorname = state.classname; 2385 //} 2386 //let subtext = [connectorname].filter(Boolean).join(" | "); 2387 2388 if(!isEmpty(state.model)){ 2389 modellabel = '<span class="uk-label text-center uk-margin-small-right fesult-background-stripe-4 text-xs">
2389'+state.model+'</span>'; 2390 } 2391 2392 var $result = $('<span class="text-sm">'+state.text+'<br>'+modellabel+'</span>'); 2393 return $result; 2394}; 2395function formatSelect2adminconnectortables(state){ 2396 if (!state.id) { 2397 return state.text; 2398 } 2399 2400 let connectorname = ''; 2401 let connectorlabel = ''; 2402 2403 if(state.aliasname){ 2404 connectorname = state.aliasname; 2405 } else { 2406 connectorname = state.classname; 2407 } 2408 let subtext = [connectorname].filter(Boolean).join(" | "); 2409 2410 if(state.admin == 1 || state.admin == '1'){ 2411 connectorlabel = '<span class="uk-label uk-width-xsmall text-center uk-margin-small-right fesult-background-stripe-4">Admin</span>'; 2412 } else { 2413 connectorlabel = '<span class="uk-label uk-width-xsmall text-center uk-margin-small-right fesult-background-bluegrey">User</span>'; 2414 } 2415 2416 var $result = $('<span class="text-xs">'+state.fullpath+'<br>'+connectorlabel+'<span class="text-xs itext-muted">'+subtext+'</span></span>'); 2417 return $result; 2418}; 2419function formatSelect2qscheckconnectorfields(state){ 2420 if (!state.id) { 2421 return state.text; 2422 } 2423 2424 let modellabel = '<span class="uk-label uk-width-small text-center uk-margin-small-right fesult-background-bluegrey">'+state.model+'</span>'; 2425 2426 var $result = $('<span class="text-sm">'+state.text+'<br>'+modellabel+'</span>'); 2427 return $result; 2428}; 2429function formatSelect2adminconnectormodel(state){ 2430 if (!state.id) { 2431 return state.text; 2432 } 2433 2434 let connectorname = ''; 2435 2436 if(state.aliasname){ 2437 connectorname = state.classname + ' (' + state.aliasname + ')'; 2438 } else { 2439 connectorname = state.classname; 2440 } 2441 2442 let connectorlabel = '<span class="uk-label uk-width-xsmall text-center uk-margin-small-right fesult-background-bluegrey">'+state.context+'</span>'; 2443 2444 var $result = $(connectorlabel+'<span class="text-sm itext-muted">'+connectorname+'</span></span>'); 2445 return $result; 2446}; 2447function formatSelect2adminconnectorsave(state){ 2448 if (!state.id) { 2449 return state.text; 2450 } 2451 2452 let connectorname = '';
2453 let connectorlabel = ''; 2454 2455 if(state.aliasname){ 2456 connectorname = state.aliasname; 2457 } else { 2458 connectorname = state.classname; 2459 } 2460 let subtext = [connectorname].filter(Boolean).join(" | "); 2461 2462 if(state.admin == 1 || state.admin == '1'){ 2463 connectorlabel = '<span class="uk-label uk-width-xsmall text-center uk-margin-small-right fesult-background-stripe-4">Admin</span>'; 2464 } else { 2465 connectorlabel = '<span class="uk-label uk-width-xsmall text-center uk-margin-small-right fesult-background-bluegrey">User</span>'; 2466 } 2467 2468 var $result = $('<span class="text-xs">'+state.fullpath+'<br>'+connectorlabel+'<span class="text-xs itext-muted">'+subtext+'</span></span>'); 2469 return $result; 2470}; 2471function formatSelect2adminconnectoractions(state){ 2472 if (!state.id) { 2473 return state.text; 2474 } 2475 2476 let connectorname = ''; 2477 let connectorlabel = ''; 2478 2479 if(state.aliasname){ 2480 connectorname = state.aliasname; 2481 } else { 2482 connectorname = state.classname; 2483 } 2484 let subtext = [connectorname].filter(Boolean).join(" | "); 2485 2486 if(state.admin == 1 || state.admin == '1'){ 2487 connectorlabel = '<span class="uk-label uk-width-xsmall text-center uk-margin-small-right fesult-background-stripe-4">Admin</span>'; 2488 } else { 2489 connectorlabel = '<span class="uk-label uk-width-xsmall text-center uk-margin-small-right fesult-background-bluegrey">User</span>'; 2490 } 2491 2492 var $result = $('<span class="text-xs">'+state.fullpath+'<br>'+connectorlabel+'<span class="text-xs itext-muted">'+subtext+'</span></span>'); 2493 return $result; 2494}; 2495function formatSelect2Gebueh(state){ 2496 if (!state.id) { 2497 return state.text; 2498 } 2499 2500 let subtext = [state.ziffer, state.preisFormated].filter(Boolean).join(" | "); 2501 2502 var $result = $('<span class="text-sm">'+state.text+'<br><span class="text-xs itext-muted">'+subtext+'</span></span>'); 2503 return $result; 2504}; 2505function formatSelect2Rooms(state){ 2506 if (!state.id) { 2507 return state.text; 2508 } 2509 2510 let subtext = [state.station].filter(Boolean).join(" | "); 2511 let marks = state.marks ?? null; 2512 2513 var $result = $( 2514 '<div class="uk-grid uk-grid-small clearfix">' + 2515 '<div class="uk-width-1-1 text-sm">' + state.text + '</div>' + 2516 '<div class="uk-width-expand text-xs itext-muted">' + subtext + '</div>' + 2517 '<div class="uk-width-auto text-xs itext-muted">' + marks + '</div>' + 2518 '</div>' 2519 ); 2520 return $result; 2521}; 2522function formatSelect2Eventtypes(state){ 2523 if (!state.id){ 2524 return state.text; 2525 } 2526 2527 let subtext = [state.station].filter(Boolean).join(" | "); 2528 2529 let icon = '<span class="fa-stack">'+ 2530 '<i class="fas fa-square fa-stack-2x fesult-eventcolor_'+state.colorclass+'"></i>'+ 2531 '<i class="'+state.icon+' fa-stack-1x fesult-text-white"></i>'+ 2532 '</span>'; 2533 2534 let schedulegroup = ''; 2535 if(state.schedulegroup=='1'){ 2536 schedulegroup = ' <span class="itext-muted">(Termingruppe)</span>'; 2537 } 2538 2539 var $result = $('<span class="text-sm">'+icon+state.text+schedulegroup+'<br><span class="text-xs itext-muted">'+subtext+'</span></span>'); 2540 return $result; 2541}; 2542function formatSelect2HapiDepartment(state){ 2543 if (!state.id) { 2544 return state.text; 2545 } 2546 2547 let subtext = ['Code: '+state.code].filter(Boolean).join(" | "); 2548 2549 var $result = $('<span class="text-sm">'+state.text+'<br><span class="text-xs itext-muted">'+subtext+'</span></span>'); 2550 return $result; 2551}; 2552function formatSelect2HapiDepartmentsOutpatient(state){ 2553 if (!state.id) { 2554 return state.text; 2555 } 2556 2557 let subtext = ['Code: '+state.code].filter(Boolean).join(" | "); 2558 2559 var $result = $('<span class="text-sm">'+state.text+'<br><span class="text-xs itext-muted">'+subtext+'</span></span>'); 2560 return $result; 2561}; 2562function formatSelect2HapiHospital(state){ 2563 if (!state.id) { 2564 return state.text; 2565 } 2566 2567 let subtext = [state.iknumber, state.locationnumber].filter(
2567Boolean).join(" | "); 2568 2569 var $result = $('<span class="text-sm">'+state.text+'<br><span class="text-xs itext-muted">'+subtext+'</span></span>'); 2570 return $result; 2571}; 2572 2573function formatSelect2serviceeventtypes(state) { 2574 if (!state.id) { 2575 return state.text; 2576 } 2577 2578 const icon = state.schedulegroup === 1 2579 ? '<i class="fas fa-users fa-fw"></i> ' 2580 : '<i class="fas fa-user fa-fw"></i> '; 2581 2582 const duration = state.durationPlannedMin >= 1 2583 ? ` <span class="itext-muted">(Termindauer ${state.durationPlannedMin} min)</span>` 2584 : ''; 2585 2586 return $(`<span class="text-sm"><span class="itext-muted">${icon}</span>${state.text}${duration}</span>`); 2587} 2588function setterSelect2Main (data, container){ 2589 if(data && data.meta){ 2590 if(data.meta.setter){ 2591 if(data.meta.setter=='submit'){ 2592 container.parents('form:first').submit(); 2593 } else if(data.meta.setter=='follow'){ 2594 if(!isEmpty(data.link)){ 2595 window.location.href = data.link; 2596 } 2597 } 2598 } 2599 } 2600} 2601function setterSelect2knowledgebasefollow (data, container){ 2602 if(!isEmpty(data.link)){ 2603 window.location.href = data.link; 2604 } 2605} 2606function setterSelect2serviceeventtypesGroup (data, container){ 2607 if (!FESULTscheduler.session.currentevent.schedulegroup_settings) { 2608 FESULTscheduler.session.currentevent.schedulegroup_settings = {}; 2609 } 2610 2611 if(data){ 2612 FESULTscheduler.session.currentevent.schedulegroup_settings.name = data.text; 2613 FESULTscheduler.session.currentevent.schedulegroup_settings.maxParticipant = data.maxParticipant; 2614 2615 FESULTscheduler.session.currentevent.serviceGroupID = data.id; 2616 FESULTscheduler.session.currentevent.serviceID = 0; 2617 FESULTscheduler.session.currentevent.roomID = data.roomID; 2618 } 2619 2620 $("#modal-scheduler-lightbox .elm-title").html(data.text); 2621 2622 let parentform = $(container).closest("form"); 2623 if(parentform.length!=0){ 2624 if(!isEmpty(parentform.attr('id'))){ 2625 if(!isEmpty(data.meta) && data.meta.serversidedata){ 2626 if(data.durationPlannedMin>=1){ 2627 $('#'+parentform.attr('id')+' #duration').val(data.durationPlannedMin); 2628 FESULTscheduler.helper.addminutetotime('#'+parentform.attr('id')+' #start_date_time', '#'+parentform.attr('id')+' #end_date_time', data.durationPlannedMin); 2629 } 2630 if(!isEmpty(data.room)){ 2631 FESULTscheduler.helper.addroom(data.room, data.roomID, '#'+parentform.attr('id')+' #roomID'); 2632 } else { 2633 $('#'+parentform.attr('id')+' #roomID').val(null).trigger('change'); 2634 } 2635 if(data.bookingEvent==1){ 2636 $('#'+parentform.attr('id')+' #bookingEvent').prop('checked', true); 2637 FESULTscheduler.lightbox.functions.setbookingEvent(1); 2638 } else { 2639 $('#'+parentform.attr('id')+' #bookingEvent').prop('checked', false); 2640 FESULTscheduler.lightbox.functions.setbookingEvent(0); 2641 } 2642 } 2643 } 2644 } 2645 return data.text; 2646} 2647function setterSelect2serviceeventtypes (data, container){ 2648 2649 if (!FESULTscheduler.session.currentevent.schedulegroup_settings) { 2650 FESULTscheduler.session.currentevent.schedulegroup_settings = {}; 2651 } 2652 2653 if(data){ 2654 FESULTscheduler.session.currentevent.serviceID = data.id; 2655 FESULTscheduler.session.currentevent.serviceGroupID = 0; 2656 } 2657 $("#modal-scheduler-lightbox .elm-title").html(data.text); 2658 2659 let parentform = $(container).closest("form"); 2660 if(parentform.length!=0){ 2661 if(!isEmpty(parentform.attr('id'))){ 2662 if(!isEmpty(data.meta) && data.meta.serversidedata){ 2663 if(data.durationPlannedMin>=1){ 2664 $('#'+parentform.attr('id')+' #duration').val(data.durationPlannedMin).change(); 2665 FESULTscheduler.helper.addminutetotime('#'+parentform.attr('id')+' #start_date_time', '#'+parentform.attr('id')+' #end_date_time', data.durationPlannedMin); 2666 } 2667 if(!isEmpty(data.room)){ 2668 FESULTscheduler.helper.addroom(data.room, data.roomID, '#'+parentform.attr('id')+' #roomID'); 2669 } else { 2670 $('#'+parentform.attr('id')+' #roomID').val(null).trigger('change'); 2671 } 2672 var participants = Object.values(FESULTscheduler.session.currentevent.participants); 2673 2674if (participants.length === 0 || !participants.some(participant => participant.role === 'patient')) { 2675 if (data.bookingEvent == 1) { 2676 $('#' + parentform.attr('id') + ' #bookingEvent').prop('checked', true); 2677 FESULTscheduler.lightbox.functions.setbookingEvent(1); 2678 } else { 2679 $('#' + parentform.attr('id') + ' #bookingEvent').prop('checked', false); 2680 FESULTscheduler.lightbox.functions.setbookingEvent(0); 2681 } 2682} 2683 2684 } 2685 } 2686 } 2687 return data.text; 2688} 2689function setterSelectPatientbt (data, container){ 2690 2691 if(data && data.id){ 2692 FESULTbluetoothVital.session.hospitalcaseid = data.id; 2693 FESULTbluetoothVital.functions.log('Behandlungsfall ausgewählt.'); 2694 2695 $("#btpatientwrapper").empty(); 2696 $("#btpatientwrapper").html('<span class="uk-text-primary">' + data.genderIcon + ' ' + data.firstname + ' ' + data.lastname + '</span>'); 2697 } 2698 2699 return data.text; 2700} 2701function setterSelectPatienttoevent (data, container){ 2702 console.log(data.data); 2703 if(data && data.data && data.data.person && data.data.person.idPerson){ 2704 2705 let plannedservices = {}; 2706 if(FESULTscheduler.session.currentevent.plannedservices && !isEmpty(FESULTscheduler.session.currentevent.plannedservices)){ 2707 plannedservices = FESULTscheduler.session.currentevent.plannedservices; 2708 /*$.each(FESULTscheduler.session.currentevent.plannedservices, function( key, value ){ 2709 if(!isEmpty(value)){ 2710 plannedservices[value.idServices] = value; 2711 } 2712 });*/ 2713 } 2714 console.log({ 2715 id: data.data.person.idPerson, 2716 name: data.data.person.firstname + ' ' + data.data.person.lastname, 2717 email: data.data.person.email, 2718 role: 'patient', 2719 status:'', 2720 notified:'', 2721 duration: FESULTscheduler.session.currentevent.duration, 2722 plannedservices: plannedservices, 2723 person:{ 2724 idPerson: data.data.person.idPerson, 2725 firstname: data.data.person.firstname, 2726 lastname: data.data.person.lastname, 2727 email: data.data.person.email, 2728 internalID: data.data.internalID 2729 } 2730 }); 2731 FESULTscheduler.session.currentevent.participants[data.data.person.idPerson] = { 2732 id: data.data.person.idPerson, 2733 name: data.data.person.firstname + ' ' + data.data.person.lastname, 2734 email: data.data.person.email, 2735 role: 'patient', 2736 status:'', 2737 notified:'', 2738 duration: FESULTscheduler.session.currentevent.duration, 2739 plannedservices: plannedservices, 2740 person:{ 2741 idPerson: data.data.person.idPerson, 2742 firstname: data.data.person.firstname, 2743 lastname: data.data.person.lastname, 2744 email: data.data.person.email, 2745 internalID: data.data.internalID 2746 } 2747 }; 2748 //console.warn(FESULTscheduler.session.currentevent.participants[data.data.person.personID]); 2749 2750 FESULTscheduler.lightbox.functions.setbookingEvent(0); 2751 2752 FESULTscheduler.lightbox.build(); 2753 } 2754 return data.data.person.firstname + ' ' + data.data.person.lastname; 2755} 2756function setterSelectPersontoevent(data, container){ 2757 2758 if(data && !isEmpty(data.id)){ 2759 FESULTscheduler.session.currentevent.participants[data.id] = { 2760 id: data.id, 2761 name: data.text, 2762 email: data.email, 2763 role: 'participant', 2764 status:'', 2765 notified:'', 2766 plannedservices: {}, 2767 person:{ 2768 idPerson: data.id, 2769 firstname: data.firstname, 2770 lastname: data.lastname, 2771 email: data.email 2772 } 2773 }; 2774 FESULTscheduler.session.currentevent.participants[data.id].checkconflict = FESULTscheduler.lightbox.functions.checkconflict( 2775 data.id, 2776 FESULTscheduler.session.currentevent.id, 2777 FESULTscheduler.session.currentevent.start_date_date+' '+FESULTscheduler.session.currentevent.start_date_time, 2778 FESULTscheduler.session.currentevent.end_date_date+' '+FESULTscheduler.session.currentevent.end_date_time 2779 ); 2780 FESULTscheduler.lightbox.build(); 2781 } 2782 2783 return data.text; 2784} 2785/*function setterSelectEmployeestoevent (data, container){ 2786 2787 if(data && data.person && !isEmpty(data.person.idPerson)){ 2788 2789 FESULTscheduler.session.currentevent.participants[data.person.idPerson] = { 2790 id: data.person.idPerson, 2791 name: data.text, 2792 email: data.person.email, 2793 role: 'treatingperson', 2794 status:'', 2795 notified:'', 2796 plannedservices: {}, 2797 person:{ 2798 idPerson: data.person.idPerson, 2799 firstname: data.person.firstname, 2800 lastname: data.person.lastname, 2801 email: data.person.email 2802 } 2803 }; 2804 FESULTscheduler.lightbox.build(); 2805 } 2806 return data.text; 2807}*/ 2808function setterSelectEmployeestoevent(data, container) 2809{ 2810 if (!data || typeof data !== 'object') { 2811 return ''; 2812 } 2813 2814 var idPerson = String(data.personid || '').trim(); 2815 if (!idPerson) { 2816 return ''; 2817 } 2818 2819 var label = String(data.value || '').trim(); 2820 2821 var firstname = ''; 2822 var lastname = ''; 2823 if (!isEmpty(data.firstname) || !isEmpty(data.lastname)) { 2824 firstname = String(data.firstname || '').trim(); 2825 lastname = String(data.lastname || '').trim(); 2826 } else if (label) {
2827 var parts = label.split(/\s+/).filter(Boolean); 2828 if (parts.length === 1) { 2829 firstname = parts[0]; 2830 } else if (parts.length > 1) { 2831 lastname = parts.pop(); 2832 firstname = parts.join(' '); 2833 } 2834 } 2835 2836 var email = String(data.email || '').trim(); 2837 2838 FESULTscheduler.session.currentevent.participants[idPerson] = { 2839 id: idPerson, 2840 name: label, 2841 email: email, 2842 role: 'treatingperson', 2843 status: '', 2844 notified: '', 2845 plannedservices: {}, 2846 person: { 2847 idPerson: idPerson, 2848 firstname: firstname, 2849 lastname: lastname, 2850 email: email 2851 } 2852 }; 2853 2854 FESULTscheduler.lightbox.build(); 2855 2856 return label; 2857} 2858function setterSelect2costcentres (data, container){ 2859 2860 return data.text; 2861} 2862function setterSelectSymptoms (data, container){ 2863 2864 //select2-clearafter 2865 let parentform = $(container).closest("form"); 2866 if(parentform.length!=0){ 2867 if(!isEmpty(parentform.attr('id'))){ 2868 2869 /*if(data.text){ 2870 $('#'+parentform.attr('id')+' #description').val(data.text); 2871 } 2872 if(data.text){ 2873 $('#'+parentform.attr('id')+' #description').val(data.text); 2874 }*/ 2875 if(data.snomedcode){ 2876 $('#'+parentform.attr('id')+' #snomedcode').val(data.snomedcode); 2877 } else { 2878 $('#'+parentform.attr('id')+' #snomedcode').val(''); 2879 } 2880 if(data.loinccode){ 2881 $('#'+parentform.attr('id')+' #loinccode').val(data.loinccode); 2882 } else { 2883 $('#'+parentform.attr('id')+' #loinccode').val(''); 2884 } 2885 } 2886 } 2887 return ''; 2888} 2889function setterSelect2HospitalClearafter (data, container){ 2890 2891 //select2-clearafter 2892 let parentform = $(container).closest("form"); 2893 if(parentform.length!=0){ 2894 if(!isEmpty(parentform.attr('id'))){ 2895 2896 if(data.text){ 2897 $('#'+parentform.attr('id')+' #institution').val(data.text); 2898 } 2899 if(data.iknumber){ 2900 $('#'+parentform.attr('id')+' #iknumber').val(data.iknumber); 2901 } 2902 if(data.locationnumber){ 2903 $('#'+parentform.attr('id')+' #locationnumber').val(data.locationnumber); 2904 } 2905 if(data.adddatahtml){ 2906 $('#'+parentform.attr('id')+' #elm_adddata').html(data.adddatahtml); 2907 } else { 2908 $('#'+parentform.attr('id')+' #elm_adddata').empty(); 2909 } 2910 } 2911 } 2912 return ''; 2913} 2914function formatSelect2Allergyintolerance(state){ 2915 if (!state.id) { 2916 return state.text; 2917 } 2918 2919 var $result = $('<span class="text-sm">'+state.text+'</span>'); 2920 return $result; 2921}; 2922function setterSelect2Allergyintolerance (data, container){ 2923 2924 let parentform = $(container).closest("form"); 2925 if(parentform.length!=0 && !isEmpty(data.text)){ 2926 if(!isEmpty(parentform.attr('id'))){ 2927 if(!isEmpty(data.code)){ 2928 $('#'+parentform.attr('id')+' #code').val(data.code); 2929 } 2930 if(!isEmpty(data.text)){ 2931 $('#'+parentform.attr('id')+' #description').val(data.text); 2932 } 2933 } 2934 } 2935 return data.text; 2936} 2937function formatSelect2Icd10(state){ 2938 if (!state.id) { 2939 return state.text; 2940 } 2941 2942 let label = ''; 2943 2944 if(!state.version_current){ 2945 label = '<span class="uk-label uk-margin-small-right">'+state.version+'</span>'; 2946 } 2947 2948 var $result = $('<span class="text-sm">'+label+state.full+'</span>'); 2949 return $result; 2950}; 2951function setterSelect2Icd10 (data, container){ 2952 2953 let parentform = $(container).closest("form"); 2954 if(parentform.length!=0 && !isEmpty(data.text)){ 2955 if(!isEmpty(parentform.attr('id'))){ 2956 if(!isEmpty(data.code)){ 2957 $('#'+parentform.attr('id')+' #code').val(data.code); 2958 } 2959 if(!isEmpty(data.text) && data.serverside==true){ 2960 $('#'+parentform.attr('id')+' #designation').val(data.text); 2961 } 2962 /*if(!isEmpty(data.id) && data.text){ 2963 $('#'+parentform.attr('id')+' #codeID').val(null).trigger('change'); 2964 2965 if ($('#'+parentform.attr('id')+' #codeID').find("option[value='" + data.id + "']").length) { 2966 $('#'+parentform.attr('id')+' #codeID').val(data.id).trigger('change'); 2967 } else { 2968 var newOption = new Option(data.text, data.id, true, true); 2969 $('#'+parentform.attr('id')+' #codeID').append(newOption).trigger('change'); 2970 } 2971 }*/ 2972 if(data.infectious){ 2973 $('#'+parentform.attr('id')+' #elm_msgInfectious').show(); 2974 } else { 2975 $('#'+parentform.attr('id')+' #elm_msgInfectious').hide(); 2976 } 2977 if(data.ebmlabor){ 2978 $('#'+parentform.attr('id')+' #elm_msgEBMLabor').show(); 2979 } else { 2980 $('#'+parentform.attr('id')+' #elm_msgEBMLabor').hide(); 2981 } 2982 2983 $('#'+parentform.attr('id')+' #elm_reason').hide(); 2984 if(data.checkSex==false){ 2985 $('#'+parentform.attr('id')+' #elm_msgSex').show(); 2986 $('#'+parentform.attr('id')+' #elm_reason').show(); 2987 } else { 2988 $('#'+parentform.attr('id')+' #elm_msgSex').hide(); 2989 } 2990 if(data.checkAge==false){ 2991 $('#'+parentform.attr('id')+' #elm_msgAge').show(); 2992 $('#'+parentform.attr('id')+' #elm_reason').show(); 2993 } else { 2994 $('#'+parentform.attr('id')+' #elm_msgAge').hide(); 2995 } 2996 if(!isEmpty(data.inkl)){ 2997 $('#'+parentform.attr('id')+' #elm_dimdidata_inkl').show(); 2998 $('#'+parentform.attr('id')+' #elm_dimdidata_inkl_content').html(data.inkl); 2999 $('#'+parentform.attr('id')+' #elm_dimdi').show(); 3000 } else { 3001 $('#'+parentform.attr('id')+' #elm_dimdidata_inkl').hide(); 3002 $('#'+parentform.attr('id')+' #elm_dimdidata_inkl_content').html(''); 3003 } 3004 if(!isEmpty(data.exkl)){ 3005 $('#'+parentform.attr('id')+' #elm_dimdidata_exkl').show(); 3006 $('#'+parentform.attr('id')+' #elm_dimdidata_exkl_content').html(data.exkl); 3007 $('#'+parentform.attr('id')+' #elm_dimdi').show(); 3008 } else { 3009 $('#'+parentform.attr('id')+' #elm_dimdidata_exkl').hide(); 3010 $('#'+parentform.attr('id')+' #elm_dimdidata_exkl_content').html(''); 3011 } 3012 if(!isEmpty(data.note)){ 3013 $('#'+parentform.attr('id')+' #elm_dimdidata_note').show(); 3014 $('#'+parentform.attr('id')+' #elm_dimdidata_note_content').html(data.note); 3015 $('#'+parentform.attr('id')+' #elm_dimdi').show(); 3016 } else { 3017 $('#'+parentform.attr('id')+' #elm_dimdidata_note').hide(); 3018 $('#'+parentform.attr('id')+' #elm_dimdidata_note_content').html(''); 3019 } 3020 if(!isEmpty(data.intro)){ 3021 $('#'+parentform.attr('id')+' #elm_dimdidata_intro').show(); 3022 $('#'+parentform.attr('id')+' #elm_dimdidata_intro_content').html(data.intro); 3023 $('#'+parentform.attr('id')+' #elm_dimdi').show(); 3024 } else { 3025 $('#'+parentform.attr('id')+' #elm_dimdidata_intro').hide(); 3026 $('#'+parentform.attr('id')+' #elm_dimdidata_intro_content').html(''); 3027 } 3028 } 3029 } 3030 return data.text; 3031} 3032function setterSelect2Icd10Code (data, container){ 3033 return data.code; 3034} 3035function setterSelect2HapiDepartmentCode (data, container){ 3036 return data.code; 3037} 3038function formatSelect2Ops(state){ 3039 if (!state.id) { 3040 return state.text; 3041 } 3042 3043 let label = ''; 3044
3045 if(!state.version_current){ 3046 label = '<span class="uk-label uk-margin-small-right">'+state.version+'</span>'; 3047 } 3048 3049 var $result = $('<span class="text-sm">'+label+state.full+'</span>'); 3050 return $result; 3051}; 3052function setterSelect2Ops (data, container){ 3053 3054 let parentform = $(container).closest("form"); 3055 if(parentform.length!=0 && !isEmpty(data.text)){ 3056 if(!isEmpty(parentform.attr('id'))){ 3057 if(!isEmpty(data.code)){ 3058 $('#'+parentform.attr('id')+' #code').val(data.code); 3059 } 3060 if(!isEmpty(data.text) && data.serverside==true){ 3061 $('#'+parentform.attr('id')+' #designation').val(data.text); 3062 } 3063 /*if(!isEmpty(data.id) && data.text){ 3064 $('#'+parentform.attr('id')+' #codeID').val(null).trigger('change'); 3065 3066 if ($('#'+parentform.attr('id')+' #codeID').find("option[value='" + data.id + "']").length) { 3067 $('#'+parentform.attr('id')+' #codeID').val(data.id).trigger('change'); 3068 } else { 3069 var newOption = new Option(data.text, data.id, true, true); 3070 $('#'+parentform.attr('id')+' #codeID').append(newOption).trigger('change'); 3071 } 3072 }*/ 3073 /*if(data.infectious){ 3074 $('#'+parentform.attr('id')+' #elm_msgInfectious').show(); 3075 } else { 3076 $('#'+parentform.attr('id')+' #elm_msgInfectious').hide(); 3077 } 3078 if(data.ebmlabor){ 3079 $('#'+parentform.attr('id')+' #elm_msgEBMLabor').show(); 3080 } else { 3081 $('#'+parentform.attr('id')+' #elm_msgEBMLabor').hide(); 3082 }*/ 3083 3084 //$('#'+parentform.attr('id')+' #elm_reason').hide(); 3085 /*if(data.checkSex==false){ 3086 $('#'+parentform.attr('id')+' #elm_msgSex').show(); 3087 $('#'+parentform.attr('id')+' #elm_reason').show(); 3088 } else { 3089 $('#'+parentform.attr('id')+' #elm_msgSex').hide(); 3090 } 3091 if(data.checkAge==false){ 3092 $('#'+parentform.attr('id')+' #elm_msgAge').show(); 3093 $('#'+parentform.attr('id')+' #elm_reason').show(); 3094 } else { 3095 $('#'+parentform.attr('id')+' #elm_msgAge').hide(); 3096 }*/ 3097 /*if(!isEmpty(data.inkl)){ 3098 $('#'+parentform.attr('id')+' #elm_dimdidata_inkl').show(); 3099 $('#'+parentform.attr('id')+' #elm_dimdidata_inkl_content').html(data.inkl); 3100 $('#'+parentform.attr('id')+' #elm_dimdi').show(); 3101 } else { 3102 $('#'+parentform.attr('id')+' #elm_dimdidata_inkl').hide(); 3103 $('#'+parentform.attr('id')+' #elm_dimdidata_inkl_content').html(''); 3104 } 3105 if(!isEmpty(data.exkl)){ 3106 $('#'+parentform.attr('id')+' #elm_dimdidata_exkl').show(); 3107 $('#'+parentform.attr('id')+' #elm_dimdidata_exkl_content').html(data.exkl); 3108 $('#'+parentform.attr('id')+' #elm_dimdi').show(); 3109 } else { 3110 $('#'+parentform.attr('id')+' #elm_dimdidata_exkl').hide(); 3111 $('#'+parentform.attr('id')+' #elm_dimdidata_exkl_content').html(''); 3112 } 3113 if(!isEmpty(data.note)){ 3114 $('#'+parentform.attr('id')+' #elm_dimdidata_note').show(); 3115 $('#'+parentform.attr('id')+' #elm_dimdidata_note_content').html(data.note); 3116 $('#'+parentform.attr('id')+' #elm_dimdi').show(); 3117 } else { 3118 $('#'+parentform.attr('id')+' #elm_dimdidata_note').hide(); 3119 $('#'+parentform.attr('id')+' #elm_dimdidata_note_content').html(''); 3120 } 3121 if(!isEmpty(data.intro)){ 3122 $('#'+parentform.attr('id')+' #elm_dimdidata_intro').show(); 3123 $('#'+parentform.attr('id')+' #elm_dimdidata_intro_content').html(data.intro); 3124 $('#'+parentform.attr('id')+' #elm_dimdi').show(); 3125 } else { 3126 $('#'+parentform.attr('id')+' #elm_dimdidata_intro').hide(); 3127 $('#'+parentform.attr('id')+' #elm_dimdidata_intro_content').html(''); 3128 }*/ 3129 } 3130 } 3131 return data.text; 3132} 3133function setterSelect2OpsCode (data, container){ 3134 return data.code; 3135} 3136function formatSelect2Goae(state){ 3137 if (!state.id) { 3138 return state.text; 3139 } 3140 3141 let segments = [state.points, state.factor, state.preisFormated].filter(
3141Boolean); 3142 let segmentsLabel = segments.map(segment => `<span class="uk-label fesult-background-bluegrey">${segment}</span>`); 3143 3144 let subtext = segmentsLabel.join(" "); 3145 3146 var $result = $('<span class="text-sm"><b>'+state.code+'</b> - '+state.text+'<br><span class="text-xs itext-muted">'+subtext+'</span></span>'); 3147 return $result; 3148}; 3149function setterSelect2 (data, container){ 3150 return data.text; 3151 } 3152function setterSelect2Article (data, container) { 3153 let parentform = $(container).closest("form"); 3154 if(parentform.length!=0){ 3155 if(!isEmpty(parentform.attr('id'))){ 3156 getFormValues( 3157 parentform.attr('id'), 3158 { 3159 valid: true, 3160 form: { 3161 elements: { 3162 netamount: data.preis, 3163 description: data.text, 3164 taxrate: data.steuern, 3165 bookkeepingaccount: data.konto 3166 } 3167 } 3168 } 3169 ); 3170 } 3171 } 3172 return data.text; 3173 } 3174function setterSelect2Todolist (data, container) { 3175// FESULTkit.request.simplepost({'formurl':'ghfghfg', 'query':'id='+data.id}); 3176// var parentform = $(container).closest("form"); 3177// if(parentform.length!=0){ 3178// if(!isEmpty(parentform.attr('id'))){ 3179// getFormValues( 3180// parentform.attr('id'), 3181// { 3182// valid: true, 3183// form: { 3184// elements: { 3185// netamount: data.preis, 3186// description: data.text, 3187// taxrate: data.steuern, 3188// bookkeepingaccount: data.konto 3189// } 3190// } 3191// } 3192// ); 3193// } 3194// } 3195// return data.text; 3196 } 3197$(function (){ 3198 /** 3199 * Diese Funktion überwacht Ãnderungen im DOM, sucht nach <img>-Tags mit der 3200 * Klasse svg, lädt das zugehörige SVG und ersetzt das <img>-Tag durch das 3201 * echte SVG-Element, wobei die ursprünglichen Attribute beibehalten werden. 3202 */ 3203 var observer = new MutationObserver(function(mutations) { 3204 mutations.forEach(function(mutation) { 3205 $("img.svg").each(function(){ 3206 var $img = jQuery(this); 3207 var attributes = $img.prop("attributes"); 3208 var imgURL = $img.attr("src"); 3209 $.get(imgURL, function (data){ 3210 var $svg = $(data).find('svg'); 3211 $svg = $svg.removeAttr('xmlns:a'); 3212 $.each(attributes, function(){ 3213 $svg.attr(this.name, this.value); 3214 }); 3215 $img.replaceWith($svg); 3216 }); 3217 }); 3218 }); 3219 }); 3220 3221 observer.observe(document.body, { childList: true, subtree: true }); 3222//Alte Variante 3223// $('body').bind('DOMSubtreeModified', function(){ 3224// $("img.svg").each(function (){ 3225// // Perf tip: Cache the image as jQuery object so that we don't use the selector muliple times. 3226// var $img = jQuery(this); 3227// // Get all the attributes. 3228// var attributes = $img.prop("attributes"); 3229// // Get the image's URL. 3230// var imgURL = $img.attr("src"); 3231// // Fire an AJAX GET request to the URL. 3232// $.get(imgURL, function (data){ 3233// // The data you get includes the document type definition, which we don't need. 3234// // We are only interested in the <svg> tag inside that. 3235// var $svg = $(data).find('svg'); 3236// // Remove any invalid XML tags as per http://validator.w3.org 3237// $svg = $svg.removeAttr('xmlns:a'); 3238// // Loop through original image's attributes and apply on SVG 3239// $.each(attributes, function(){ 3240// $svg.attr(this.name, this.value); 3241// }); 3242// // Replace image with new SVG 3243// $img.replaceWith($svg); 3244// }); 3245// }); 3246// }); 3247}); 3248function $_GET(searchparam){ 3249 if (!searchparam || typeof searchparam !== 'string') { 3250 return null; // oder throw new Error("Ungültiger Parameter"); 3251 } 3252 3253 const queryString = window.location.search.trim(); 3254 if (queryString) {
3255 const urlParams = new URLSearchParams(queryString); 3256 3257 if (urlParams.has(searchparam)) { 3258 return urlParams.get(searchparam).trim(); 3259 } 3260 } 3261 return null; 3262} 3263/*function searchWikipedia(lang, search){ 3264 3265 if(!lang){ 3266 let lang = 'de'; 3267 } 3268 3269 var url = "https://"+lang+".wikipedia.org/w/api.php"; 3270 3271 var params = { 3272 action: "query", 3273 list: "search", 3274 srsearch: search, 3275 format: "json" 3276 }; 3277 3278 url = url + "?origin=*"; 3279 Object.keys(params).forEach(function(key){url += "&" + key + "=" + params[key];}); 3280 3281 fetch(url) 3282 .then(function(response){return response.json();}) 3283 .then(function(response) { 3284 if (response.query.search[0].title === search){ 3285 return { 3286 'pageid': response.query.search[0].pageid, 3287 'url': "https://de.wikipedia.org/wiki/?curid="+response.query.search[0].pageid 3288 }; 3289 } 3290 }) 3291 .catch(function(error){console.log(error);}); 3292}*/ 3293function syntaxHighlightWithoutAnimation(json){ 3294 json = json.replace(/&/g, '&').replace(/</g, '<').replace(/>/g, '>'); 3295 return json.replace(/("(\\u[a-zA-Z0-9]{4}|\\[^u]|[^\\"])*"(\s*:)?|\b(true|false|null)\b|-?\d+(?:\.\d*)?(?:[eE][+\-]?\d+)?)/g, function (match) { 3296 var cls = 'number'; 3297 if (/^"/.test(match)) { 3298 if (/:$/.test(match)) { 3299 cls = 'key'; 3300 } else { 3301 cls = 'string'; 3302 } 3303 } else if (/true|false/.test(match)) { 3304 cls = 'boolean'; 3305 } else if (/null/.test(match)) { 3306 cls = 'null'; 3307 } 3308 return '<span class="' + cls + '">' + match + '</span>'; 3309 }); 3310} 3311function syntaxHighlight(json){ 3312 let obj; 3313 try { 3314 obj = JSON.parse(json); 3315 } catch (e) { 3316 // Fallback, wenn die Eingabe kein gültiges JSON ist 3317 console.error("SyntaxHighlight: Ungültiges JSON", e); 3318 return document.createTextNode("Ungültiges JSON: " + json); 3319 } 3320 3321 // Ãberprüfe, ob das Ergebnis des Parsens ein Objekt ist, sonst behandele es als einfachen String 3322 if (typeof obj !== 'object' || obj === null) { 3323 const container = document.createElement('div'); 3324 const span = document.createElement('span'); 3325 span.textContent = json; 3326 span.classList.add('string'); // Verwende die 'string'-Klasse für einfache Strings 3327 container.appendChild(span); 3328 return container; 3329 } 3330 3331 return createCollapsibleHtml(obj, true); 3332} 3333 3334function createCollapsibleHtml(obj, isRoot){ 3335 const container = document.createElement('div'); 3336 container.style.position = 'relative'; 3337 3338 // Füge die öffnenden Klammern am Anfang hinzu, unabhängig davon, ob es das Wurzelelement ist 3339 const openBrace = document.createElement('span'); 3340 openBrace.textContent = Array.isArray(obj) ? '[' : '{'; 3341 container.appendChild(openBrace); 3342 if (!isRoot) { 3343 container.style.marginLeft = '20px'; 3344 } 3345 3346 const entries = Object.entries(obj); 3347 entries.forEach(([key, value], index) => { 3348 const line = document.createElement('div'); 3349 const keySpan = document.createElement('span'); 3350 keySpan.textContent = `"${key}": `; 3351 keySpan.classList.add('key'); 3352 line.appendChild(keySpan); 3353 line.style.marginLeft = '20px'; 3354 3355 if (typeof value === 'object' && value !== null){ 3356 const isArray = Array.isArray(value); 3357 const button = document.createElement('a'); 3358 button.innerHTML = isArray ? '[+]' : '{+}'; 3359 const content = createCollapsibleHtml(value, false); 3360 content.style.display = 'none'; 3361 button.onclick = () => { 3362 const isHidden = content.style.display === 'none'; 3363 content.style.display = isHidden ? 'block' : 'none'; 3364 button.innerHTML = isHidden ? (isArray ? '[-]' : '{-}') : (isArray ? '[+]' : '{+}'); 3365 }; 3366 button.classList.add('jsonparserbutton'); 3367 line.appendChild(button); 3368 line.appendChild(content); 3369 } else { 3370 // Anpassung für die Anzeige von primitiven Typen 3371 const valueSpan = document.createElement('span'); 3372 valueSpan.innerHTML = JSON.stringify(value); 3373 if (typeof value === 'string') { 3374 valueSpan.classList.add('string'); 3375 } else if (typeof value === 'number') { 3376 valueSpan.classList.add('number'); 3377 } else if (typeof value === 'boolean') { 3378 valueSpan.classList.add('boolean'); 3379 } else if (value === null) { 3380 valueSpan.classList.add('null'); 3381 } 3382 line.appendChild(valueSpan); 3383 } 3384 container.appendChild(line); 3385 });
3386 3387 // Füge die schlieÃenden Klammern am Ende hinzu, unabhängig davon, ob es das Wurzelelement ist 3388 const closeBrace = document.createElement('span'); 3389 closeBrace.textContent = Array.isArray(obj) ? ']' : '}'; 3390 container.appendChild(closeBrace); 3391 3392 return container; 3393} 3394function removeBorderChanged(selector){ 3395 $(selector).find('.border-changed').removeClass('border-changed'); 3396}
Line numbers count LF bytes from the start of the resource, as the search results do. Vendor segments are library code the classifier recognised; they are stored but not indexed. Bytes are shown as Latin1 characters, one per byte.