bs-tabs.js 2.4 KB

12345678910111213141516171819202122232425262728293031323334353637383940414243444546474849505152535455565758596061626364656667686970717273747576777879808182838485
  1. define(['jquery', 'https://cdn.jsdelivr.net/npm/bootstrap@5.1.3/dist/js/bootstrap.bundle.min.js'], function (jQuery) {
  2. 'use strict';
  3. function Control() {}
  4. Control.prototype.draw = function (oControlHost) {
  5. var o = oControlHost.configuration;
  6. this.m_sCardNames = [];
  7. var aTabs = o.Tabs || this.generateTabsFromDataStore(oControlHost);
  8. var aHtml = [];
  9. aHtml.push('<ul class="nav nav-tabs" role="tablist">');
  10. for (var i = 0; i < aTabs.length; i++) {
  11. var oTab = aTabs[i];
  12. this.m_sCardNames[i] = oTab.card;
  13. aHtml.push(
  14. '<li class="nav-item" role="presentation"><a class="nav-link" cardIndex="' +
  15. i +
  16. '" aria-controls="" role="tab" data-toggle="tab">' +
  17. oTab.label +
  18. '</a></li>'
  19. );
  20. }
  21. aHtml.push('</ul>');
  22. oControlHost.container.innerHTML = aHtml.join('');
  23. var sID = oControlHost.container.id;
  24. var aAnchors = oControlHost.container.querySelectorAll('LI > A');
  25. for (var i = 0; i < aTabs.length; i++) {
  26. aAnchors[i].onclick = this.onTabClick.bind(
  27. this,
  28. aAnchors[i],
  29. oControlHost.page
  30. );
  31. }
  32. jQuery('#' + sID + ' li:eq(0) a').click();
  33. // jQuery( '[data-toggle="modal"]' ).modal('hide');
  34. jQuery('[data-toggle="tooltip"]').tooltip();
  35. jQuery('[data-toggle="popover"]').popover();
  36. // jQuery( '#' + sID + ' [data-toggle="popover"]' ).popover();
  37. };
  38. Control.prototype.onTabClick = function (elAnchor, oPage) {
  39. jQuery(elAnchor).tab('show');
  40. var iCardIndex = +elAnchor.getAttribute('cardIndex');
  41. if (this.m_sCards) {
  42. var a = oPage.getControlsByName(this.m_sCards);
  43. for (var i = 0; i < a.length; i++) {
  44. a[i].setDisplay(i === iCardIndex);
  45. }
  46. return;
  47. }
  48. for (var i = 0; i < this.m_sCardNames.length; i++) {
  49. oPage.getControlByName(this.m_sCardNames[i]).setDisplay(i === iCardIndex);
  50. }
  51. };
  52. Control.prototype.generateTabsFromDataStore = function (oControlHost) {
  53. var oDataStore = this.m_oDataStore;
  54. if (!oDataStore) {
  55. return null;
  56. }
  57. var iLabelColumn = oDataStore.getColumnIndex('Label') || 0;
  58. this.m_sCards = oControlHost.configuration.Cards;
  59. var aTabs = [];
  60. var iRowCount = oDataStore.rowCount;
  61. for (var iRow = 0; iRow < iRowCount; iRow++) {
  62. aTabs.push({
  63. label: oDataStore.getFormattedCellValue(iRow, iLabelColumn),
  64. card: this.m_sCards
  65. });
  66. }
  67. return aTabs;
  68. };
  69. Control.prototype.setData = function (oControlHost, oDataStore) {
  70. this.m_oDataStore = oDataStore;
  71. };
  72. return Control;
  73. });