toolbar.cs 12 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146
  1. using System;
  2. using System.Collections.Generic;
  3. using System.Linq;
  4. using System.Text;
  5. namespace FastReport.Web
  6. {
  7. partial class WebReport
  8. {
  9. string template_toolbar(bool renderBody)
  10. {
  11. if (!Toolbar.Show || !renderBody
  12. #if !OPENSOURCE
  13. || (Mode == WebReportMode.Dialog && !Toolbar.ShowOnDialogPage)
  14. #endif
  15. )
  16. return "";
  17. var showRefreshButton = Toolbar.ShowRefreshButton && !Report.IsLoadPrepared;
  18. var localization = new ToolbarLocalization(Res);
  19. var exports = Toolbar.Exports;
  20. var toolbarExportItem = $@"<div class=""fr-toolbar-item {template_FR}-toolbar-item"" title=""{localization.saveTxt}"">
  21. {GetResource("save.svg")}
  22. <div class=""fr-toolbar-dropdown-content {template_FR}-toolbar-dropdown-content"">"
  23. + (exports.ShowPreparedReport ? $@"<a target=""_blank"" href=""{template_export_url("fpx")}"">{localization.preparedTxt}</a>" : "")
  24. #if !OPENSOURCE
  25. + (exports.ShowPdfExport ? $@"<a id=""PdfExport"" target=""_blank"" href=""{template_export_url("pdf")}"">{localization.pdfTxt}</a>":"")
  26. + (exports.EnableSettings && exports.ShowPdfExport ? $@"<button class=""fr-webreport-settings-btn"" data-path=""pdf"">{GetResource("settings.svg")}</button>" : "")
  27. + (exports.ShowExcel2007Export ? $@"<a id=""XlsxExport"" target =""_blank"" href=""{template_export_url("xlsx")}"">{localization.excel2007Txt}</a>" : "")
  28. + (exports.EnableSettings && exports.ShowExcel2007Export ? $@"<button class=""fr-webreport-settings-btn"" data-path=""xlsx"">{GetResource("settings.svg")}</button>" : "")
  29. + (exports.ShowWord2007Export ? $@"<a id=""DocxExport"" target=""_blank"" href=""{template_export_url("docx")}"">{localization.word2007Txt}</a>" : "")
  30. + (exports.EnableSettings && exports.ShowWord2007Export ? $@"<button class=""fr-webreport-settings-btn"" data-path=""docx"">{GetResource("settings.svg")}</button>" : "")
  31. + (exports.ShowPowerPoint2007Export ? $@"<a id=""PptxExport"" target=""_blank"" href=""{template_export_url("pptx")}"">{localization.powerPoint2007Txt}</a>" : "")
  32. + (exports.EnableSettings && exports.ShowPowerPoint2007Export ? $@"<button class=""fr-webreport-settings-btn"" data-path=""pptx"">{GetResource("settings.svg")}</button>" : "")
  33. + (exports.ShowTextExport ? $@"<a target=""_blank"" href=""{template_export_url("txt")}"">{localization.textTxt}</a>" : "")
  34. + (exports.ShowRtfExport ? $@"<a id=""RtfExport"" target=""_blank"" href=""{template_export_url("rtf")}"">{localization.rtfTxt}</a>" : "")
  35. + (exports.EnableSettings && exports.ShowRtfExport ? $@"<button class=""fr-webreport-settings-btn"" data-path=""rtf"">{GetResource("settings.svg")}</button>" : "")
  36. + (exports.ShowXpsExport ? $@"<a target=""_blank"" href=""{template_export_url("xps")}"">{localization.xpsTxt}</a>" : "")
  37. + (exports.ShowOdsExport ? $@"<a id=""OdsExport"" target=""_blank"" href=""{template_export_url("ods")}"">{localization.odsTxt}</a>" : "")
  38. + (exports.EnableSettings && exports.ShowOdsExport ? $@"<button class=""fr-webreport-settings-btn"" data-path=""ods"">{GetResource("settings.svg")}</button>" : "")
  39. + (exports.ShowOdtExport ? $@"<a id=""OdtExport"" target=""_blank"" href=""{template_export_url("odt")}"">{localization.odtTxt}</a>" : "")
  40. + (exports.EnableSettings && exports.ShowOdtExport ? $@"<button class=""fr-webreport-settings-btn"" data-path=""odt"">{GetResource("settings.svg")}</button>" : "")
  41. + (exports.ShowXmlExcelExport ? $@"<a id=""XmlExport"" target=""_blank"" href=""{template_export_url("xml")}"">{localization.xmlTxt}</a>" : "")
  42. + (exports.EnableSettings && exports.ShowXmlExcelExport ? $@"<button class=""fr-webreport-settings-btn"" data-path=""xml"">{GetResource("settings.svg")}</button>" : "")
  43. + (exports.ShowDbfExport ? $@"<a target=""_blank"" href=""{template_export_url("dbf")}"">{localization.dbfTxt}</a>" : "")
  44. + (exports.ShowCsvExport ? $@"<a target=""_blank"" href=""{template_export_url("csv")}"">{localization.csvTxt}</a>" : "")
  45. + (exports.ShowSvgExport ? $@"<a id=""SvgExport"" target=""_blank"" href=""{template_export_url("svg")}"">{localization.svgTxt}</a>" : "")
  46. + (exports.EnableSettings && exports.ShowSvgExport? $@"<button class=""fr-webreport-settings-btn"" data-path=""svg"">{GetResource("settings.svg")}</button>" : "")
  47. + (exports.ShowMhtExport ? $@"<a target=""_blank"" href=""{template_export_url("mht")}"">{localization.mhtTxt}</a>" : "")
  48. + (exports.ShowExcel97Export ? $@"<a target=""_blank"" href=""{ template_export_url("xls")}"">{localization.excel97Txt}</a>" : "")
  49. + (exports.ShowEmailExport ? $@"<a id=""EmailExport"" target=""_blank"" onclick=""{template_FR}.showEmailExportModal();"">{localization.emailTxt}</a>" : "")
  50. + (exports.ShowHpglExport ? $@"<a target=""_blank"" href=""{ template_export_url("hpgl")}"">{localization.hpglTxt}</a>" : "")
  51. + (exports.ShowHTMLExport ? $@"<a id=""HtmlExport"" target=""_blank"" href=""{template_export_url("html")}"">{localization.htmlTxt}</a>" : "")
  52. + (exports.EnableSettings && exports.ShowHTMLExport ? $@"<button class=""fr-webreport-settings-btn"" data-path=""html"">{GetResource("settings.svg")}</button>" : "")
  53. //(exports.ShowImageExport? $@"<a id=""ImageExport"" target=""_blank"" href=""{template_export_url("image")}"">{localization.imageTxt}</a>" : "") + (exports.EnableSettings && exports.ShowImageExport ? $@"<button class=""fr-webreport-settings-btn"" data-path=""image"">{GetResource("settings.svg")}</button>" : "") +
  54. + (exports.ShowJsonExport ? $@"<a target=""_blank"" href=""{ template_export_url("json")}"">{localization.jsonTxt}</a>" : "")
  55. + (exports.ShowDxfExport ? $@"<a target=""_blank"" href=""{ template_export_url("dxf")}"">{localization.dxfTxt}</a>" : "")
  56. + (exports.ShowLaTeXExport ? $@"<a target=""_blank"" href=""{ template_export_url("latex")}"">{localization.latexTxt}</a>" : "")
  57. + (exports.ShowPpmlExport ? $@"<a target=""_blank"" href=""{ template_export_url("ppml")}"">{localization.ppmlTxt}</a>" : "")
  58. + (exports.ShowPSExport ? $@"<a target=""_blank"" href=""{ template_export_url("ps")}"">{localization.psTxt}</a>" : "")
  59. + (exports.ShowXamlExport ? $@"<a target=""_blank"" href=""{ template_export_url("xaml")}"">{localization.xamlTxt}</a>" : "")
  60. + (exports.ShowZplExport ? $@"<a target=""_blank"" href=""{ template_export_url("zpl")}"">{localization.zplTxt}</a>" : "")
  61. #endif
  62. + "</div></div>"
  63. ;
  64. var toolbarPrintItem = $@" <div class=""fr-toolbar-item {template_FR}-toolbar-item"" title=""{localization.printTxt}"">
  65. {GetResource("print.svg")}
  66. <div class=""fr-toolbar-dropdown-content {template_FR}-toolbar-dropdown-content"">
  67. " +
  68. (Toolbar.PrintInHtml ? $@"<a target=""_blank"" href=""{template_print_url("html")}"">{localization.printFromBrowserTxt}</a>
  69. " : "") +
  70. #if !OPENSOURCE
  71. (Toolbar.PrintInPdf ? $@"<a target=""_blank"" href=""{template_print_url("pdf")}"">{localization.printFromPdf}</a>
  72. " : "") +
  73. #endif
  74. $@"</div>
  75. </div>";
  76. var currentZoom = Zoom * 100;
  77. var selectedZoom1 = $@"<div class=""fr-toolbar-zoom-selected {template_FR}-zoom-selected"">";
  78. var selectedZoom2 = $@"<div>";
  79. var isFirstPage = CurrentPageIndex == 0;
  80. var isLastPage = CurrentPageIndex >= TotalPages - 1;
  81. var isSinglePage = SinglePage || TotalPages < 2;
  82. var customButtons = string.Join("", Toolbar.Elements.Select(x => x.Render(template_FR)));
  83. string templateToolbar = $@"
  84. <div class=""fr-toolbar {template_FR}-toolbar"">
  85. {(showRefreshButton ? $@"<div class=""fr-toolbar-item fr-toolbar-pointer {template_FR}-toolbar-item {template_FR}-pointer"" onclick=""{template_FR}.refresh();"" title=""{localization.reloadTxt}"">
  86. {GetResource("reload.svg")}
  87. </div>" : "")}
  88. {(exports.Show ? $"{toolbarExportItem}" : "")}
  89. {(Toolbar.ShowPrint ? $"{toolbarPrintItem}" : "")}
  90. {(Toolbar.ShowZoomButton ? $@"<div class=""fr-toolbar-item {template_FR}-toolbar-item"" title=""{localization.zoomTxt}"">
  91. {GetResource("magnifier.svg")}
  92. <div class=""fr-toolbar-item-dropdown-content {template_FR}-toolbar-dropdown-content"">
  93. <a onclick=""{template_FR}.zoom(300);"">{(currentZoom == 300 ? selectedZoom1 : selectedZoom2)}300%</div></a>
  94. <a onclick=""{template_FR}.zoom(200);"">{(currentZoom == 200 ? selectedZoom1 : selectedZoom2)}200%</div></a>
  95. <a onclick=""{template_FR}.zoom(150);"">{(currentZoom == 150 ? selectedZoom1 : selectedZoom2)}150%</div></a>
  96. <a onclick=""{template_FR}.zoom(100);"">{(currentZoom == 100 ? selectedZoom1 : selectedZoom2)}100%</div></a>
  97. <a onclick=""{template_FR}.zoom(90);"">{(currentZoom == 90 ? selectedZoom1 : selectedZoom2)}90%</div></a>
  98. <a onclick=""{template_FR}.zoom(75);"">{(currentZoom == 75 ? selectedZoom1 : selectedZoom2)}75%</div></a>
  99. <a onclick=""{template_FR}.zoom(50);"">{(currentZoom == 50 ? selectedZoom1 : selectedZoom2)}50%</div></a>
  100. <a onclick=""{template_FR}.zoom(25);"">{(currentZoom == 25 ? selectedZoom1 : selectedZoom2)}25%</div></a>
  101. </div>
  102. </div>" : "")}" + $@"
  103. {(Toolbar.ShowFirstButton ? $@"<div class=""fr-toolbar-item fr-toolbar-narrow {template_FR}-toolbar-item {template_FR}-toolbar-narrow {(isFirstPage ? $"{template_FR}-toolbar-notbutton {template_FR}-disabled" : $"{template_FR}-pointer")}"" {(isFirstPage ? "" : $@"onclick=""{template_FR}.goto('first');""")} title=""{localization.firstPageTxt}"">
  104. {GetResource("angle-double-left.svg")}
  105. </div>" : "")}
  106. {(Toolbar.ShowPrevButton ? $@"<div class=""fr-toolbar-item fr-toolbar-narrow {template_FR}-toolbar-item {template_FR}-toolbar-narrow {(isFirstPage ? $"{template_FR}-toolbar-notbutton {template_FR}-disabled" : $"{template_FR}-pointer")}"" {(isFirstPage ? "" : $@"onclick=""{template_FR}.goto('prev');""")} title=""{localization.previousPageTxt}"">
  107. {GetResource("angle-left.svg")}
  108. </div>" : "")}
  109. <div class=""fr-toolbar-item fr-toolbar-notbutton {template_FR}-toolbar-item {template_FR}-toolbar-notbutton"">
  110. <input id=""CurrentPage"" style=""{(Toolbar.Position == Positions.Top && Toolbar.Position == Positions.Bottom ? "margin-left: 0px;" : "")} {(isSinglePage ? $@"opacity: 0.5" : "")}"" class=""{template_FR}-current-page-input"" {(isSinglePage ? $@"readonly=""readonly""" : "")} type=""text"" value=""{((CurrentPageIndex + 1) > TotalPages ? TotalPages : (CurrentPageIndex + 1))}"" onchange=""{template_FR}.goto(document.getElementsByClassName('{template_FR}-current-page-input')[0].value);"" title=""{localization.currentPageTxt}"">
  111. </div>
  112. <div class=""fr-toolbar-item fr-toolbar-notbutton fr-toolbar-slash {template_FR}-toolbar-item {template_FR}-toolbar-notbutton {template_FR}-toolbar-slash"" style=""{(isSinglePage ? $@"opacity: 0.5" : "")}"">
  113. {GetResource("slash.svg")}
  114. </div>
  115. <div class=""fr-toolbar-item fr-toolbar-notbutton {template_FR}-toolbar-item {template_FR}-toolbar-notbutton"">
  116. <input id=""AllPages"" style=""{(Toolbar.Position == Positions.Top && Toolbar.Position == Positions.Bottom ? "margin-left: 0px;" : "")} {(isSinglePage ? $@"opacity: 0.5" : "")}"" type=""text"" value=""{TotalPages}"" readonly=""readonly"" title=""{localization.totalPagesTxt}"">
  117. </div>
  118. {(Toolbar.ShowNextButton ? $@" <div class=""fr-toolbar-item fr-toolbar-narrow {template_FR}-toolbar-item {template_FR}-toolbar-narrow {(isLastPage ? $"{template_FR}-toolbar-notbutton {template_FR}-disabled" : $"{template_FR}-pointer")}"" {(isLastPage ? "" : $@"onclick=""{template_FR}.goto('next');""")} title=""{localization.nextPageTxt}"">
  119. {GetResource("angle-right.svg")}
  120. </div>" : "")}
  121. {(Toolbar.ShowLastButton ? $@" <div class=""fr-toolbar-item fr-toolbar-narrow {template_FR}-toolbar-item {template_FR}-toolbar-narrow {(isLastPage ? $"{template_FR}-toolbar-notbutton {template_FR}-disabled" : $"{template_FR}-pointer")}"" {(isLastPage ? "" : $@"onclick=""{template_FR}.goto('last');""")} title=""{localization.lastPageTxt}"">
  122. {GetResource("angle-double-right.svg")}
  123. </div>" : "")}
  124. {customButtons}
  125. </div>
  126. {template_tabs()}
  127. ";
  128. return templateToolbar;
  129. }
  130. }
  131. }