2015-07-29 5 views
2

Может ли пользователь определить собственное имя файла для экспортированного PDF-файла в amcharts?. В настоящее время имя по умолчанию: amCharts.pdf.Определенные пользователем имена для экспортированных файлов PDF?

Со ссылкой на ссылку AmCharts Export Config, я увидел, что пользователь может программно изменить имя файла, используемое по умолчанию, однако он не может определить имена файлов во время выполнения, когда экспорт в PDF является clicked.Is это можно сделать?

+0

@martynasma Любые идеи? –

+0

Вы хотите просто изменить имя по умолчанию экспортированных файлов или хотите, чтобы физически попросил пользователя ввести имя файла, когда он нажимает на экспорт? – martynasma

+0

Более поздний. Попросите пользователя ввести имя файла по клику export-> pdf. –

ответ

4

Вы можете использовать menuReviver, чтобы прикрепить еще один click event handler, чтобы прервать выполнение с приглашением модальным, чтобы перезаписать имя файла.

"export": { 
    "enabled": true, 
    "menuReviver": function(config, li) { 
    var context = this; // INSTANCE 

    // MODIFY ONLY IMAGE ITEMS 
    if (config.capture) { 
     var title = li.getElementsByTagName("span")[ 0 ].textContent; 
     var link = document.createElement("a"); 
     var span = document.createElement("span"); 

     // REMOVE ORIGINAL 
     li.getElementsByTagName("a")[ 0 ].remove(); 

     // TITLE 
     span.innerHTML = title; 
     link.appendChild(span); 

     function callback() { 
     var fileName = prompt("Filename"); 

     // CHECK FILENAME 
     if (fileName) { 

      // CAPTURE CHART 
      this.capture({}, function() { 

      // GET JPG DATA 
      this.toPDF({}, function(base64) { 
       var info = this.defaults.formats.PDF; 

       // OFFER DOWNLOAD WITH GIVEN FILENAME 
       this.download(base64, info.mimeType, fileName + info.extension); 
      }); 
      }); 
     } 
     } 

     // LINK 
     link.addEventListener("click", function() { 
     callback.apply(context, arguments); 
     }); 
     li.appendChild(link); 
    } 
    } 

http://codepen.io/amcharts/pen/674b14ad4e2594a31ac59a455dda6784

В случае, если вы хотите сделать это вручную, вы можете сделать это следующим образом:

"export": { 
    "enabled": true, 
    "menu": [ { 
    "format": "PDF", 
    "click": function() { 
     var fileName = prompt("Filename:"); 

     // CHECK FILENAME 
     if (fileName) { 

     // CAPTURE CHART 
     this.capture({}, function() { 

      // GET JPG DATA 
      this.toPDF({}, function(base64) { 
      var info = this.defaults.formats.PDF; 

      // OFFER DOWNLOAD WITH GIVEN FILENAME 
      this.download(base64, info.mimeType, fileName + info.extension); 
      }); 
     }); 
     } 
    } 
    } ] 
} 
+0

Отлично! Работает так, как я хочу, с одним незначительным сбоем. Если я отменяю приглашение, файл все равно загружается с именем файла, таким же, как и filetype. Любая коррекция для этого? –

+0

Я обновил свой ответ. Первый пример: заменяет элемент «a» для присоединения измененного прослушивателя событий. Второй образец: просто проверяет значение приглашения. – Maertz

+0

Привет @Maertz, как вы это делаете, если хотите больше, чем просто один, например, только «JPG, PDF, CSV и ANNOTATE» – royjavelosa

Смежные вопросы