| 123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150 |
- <?php
- namespace zin;
- h::importJs($app->getWebRoot() . 'js/sheetjs/xlsx.full.min.js');
- h::importJs($app->getWebRoot() . 'js/filesaver/filesaver.js');
- $this->app->loadLang('file');
- jsVar('untitled', $lang->file->untitled);
- $fileName = isset($pivotName) ? $pivotName : '';
- div
- (
- setID('export'),
- setClass('modal'),
- div
- (
- setClass('modal-dialog shadow'),
- div
- (
- setClass('modal-content'),
- div(setClass('modal-header'), div(setClass('modal-title'), $lang->export)),
- div
- (
- setClass('modal-actions'),
- button
- (
- set::type('button'),
- setClass('btn square ghost'),
- set('data-dismiss', 'modal'),
- span(setClass('close'))
- )
- ),
- div
- (
- setClass('modal-body'),
- div
- (
- setClass('py-2 ml-8 mr-10 flex items-center'),
- div
- (
- setStyle('width', '20%'),
- setClass('text-right pr-4'),
- $lang->file->fileName
- ),
- div
- (
- setStyle('width', '80%'),
- input
- (
- set::name('fileName'),
- set::placeholder($lang->file->untitled),
- set::value($fileName)
- )
- )
- ),
- div
- (
- setClass('py-2 ml-8 mr-10 flex items-center'),
- div
- (
- setStyle('width', '20%'),
- setClass('text-right pr-4'),
- $lang->pivot->exportType
- ),
- div
- (
- setStyle('width', '80%'),
- picker
- (
- set::name('fileType'),
- set::items($config->pivot->fileType),
- set::value('xlsx'),
- set::required(true)
- )
- )
- )
- ),
- div
- (
- setClass('modal-footer flex justify-center'),
- button
- (
- set::type('button'),
- setID('export-data-button'),
- setClass('btn primary'),
- $lang->save
- )
- )
- )
- )
- )
- ?>
- <script id="exportJS">
- /**
- * Export file.
- *
- * @param object $domObj
- * @access public
- * @return void
- */
- exportFile = function($domObj)
- {
- if(typeof $domObj == 'undefined') return;
- var fileName = $('#fileName').val().trim() ? $('#fileName').val().trim() : $('#fileName')[0].placeholder;
- var fileType = $('[name=fileType]').zui('picker').$.value;
- var tableName = fileName + '.' + fileType;
- if(fileType == 'xlsx' || fileType == 'xls')
- {
- const new_sheet = XLSX.utils.table_to_book($domObj, {raw: true});
- XLSX.writeFile(new_sheet, tableName);
- }
- else if(fileType == 'html' || fileType == 'mht')
- {
- const htmlContent = $domObj.outerHTML;
- const $temp = $('<div>').html(htmlContent);
- $temp.find('*').removeAttr('style');
- $temp.find('*').removeAttr('class');
- $temp.find('*').removeAttr('data-flex');
- $temp.find('*').removeAttr('data-width');
- $temp.find('*').removeAttr('data-type');
- $temp.find('*').removeAttr('data-fixed-left-width');
- const cleanTableHTML = $temp.html();
- var head = '<head><meta http-equiv="Content-Type" content="text/html; charset=utf-8">';
- var style = '<style>table, th, td {font-size: 12px; border: 1px solid gray; border-collapse: collapse;}table th, table td {padding: 5px;}</style>';
- var title = '<title>' + fileName + '</title></head>';
- var body = '<body>' + cleanTableHTML + '</body>';
- const finalHTML = head + style + title + body;
- if(fileType == 'html')
- {
- const blob = new Blob([finalHTML], { type: 'text/html;charset=utf-8' });
- saveAs(blob, tableName);
- }
- else if(fileType == 'mht')
- {
- const data = {html: finalHTML, fileName: fileName};
- $.post($.createLink('file', 'ajaxExport2mht'), data, function(resp)
- {
- const blob = new Blob([resp], { type: "application/x-mimearchive" });
- saveAs(blob, tableName);
- });
- }
- }
- $('#export').modal('hide');
- }
- </script>
|