optimize download
optimize error message
This commit is contained in:
@@ -50,6 +50,7 @@ define(
|
||||
// 延迟同步函数
|
||||
var fontDelaySync = lang.debounce(function (options) {
|
||||
program.loading.show(i18n.lang.msg_syncing, 4000);
|
||||
|
||||
program.sync.addTask(options).then(function (data) {
|
||||
if (options.newProject && data && data.newData) {
|
||||
actions['new']({
|
||||
@@ -120,20 +121,12 @@ define(
|
||||
},
|
||||
|
||||
'export': function (e) {
|
||||
if (!e.target.getAttribute('download')) {
|
||||
e.preventDefault();
|
||||
}
|
||||
},
|
||||
|
||||
'export-file': function (e) {
|
||||
if (program.ttfManager.get()) {
|
||||
var target = $(e.target);
|
||||
program.exporter.export(program.ttfManager.get(), {
|
||||
type: target.attr('data-type'),
|
||||
target: target,
|
||||
originEvent: e,
|
||||
error: function () {
|
||||
e.preventDefault();
|
||||
error: function (ev) {
|
||||
program.fire('font-error', ev);
|
||||
}
|
||||
});
|
||||
}
|
||||
@@ -310,6 +303,12 @@ define(
|
||||
if (program.ttfManager.get()) {
|
||||
var result = program.ttfManager.optimize();
|
||||
if (true !== result) {
|
||||
if (result.repeat) {
|
||||
program.fire('font-error', {
|
||||
number: 10200,
|
||||
data: result.repeat
|
||||
});
|
||||
}
|
||||
alert(result.message);
|
||||
}
|
||||
}
|
||||
|
||||
@@ -12,6 +12,24 @@ define(
|
||||
var actions = require('./actions');
|
||||
var program;
|
||||
|
||||
/**
|
||||
* 通知错误信息
|
||||
*
|
||||
* @param {Object} options 参数
|
||||
* @param {number} options.number 错误号
|
||||
* @param {Object} options.data 错误数据
|
||||
*/
|
||||
function notifyError(options) {
|
||||
// 重复的代码点
|
||||
if (options.number === 10200 && options.data) {
|
||||
var glyfList = Array.isArray(options.data) ? options.data : [options.data];
|
||||
var pageSize = program.setting.get('editor').viewer.pageSize;
|
||||
var page = Math.ceil(glyfList[0] / pageSize);
|
||||
showTTF(program.ttfManager.get(), page, glyfList);
|
||||
}
|
||||
}
|
||||
|
||||
|
||||
/**
|
||||
* 获取ttf的编辑选项
|
||||
*
|
||||
@@ -602,6 +620,9 @@ define(
|
||||
program.previewer.load(ttf, e.keyCode === 114 ? 'ttf' : 'woff');
|
||||
}
|
||||
}
|
||||
})
|
||||
.on('font-error', function (e) {
|
||||
notifyError(e);
|
||||
});
|
||||
}
|
||||
|
||||
|
||||
@@ -5,12 +5,13 @@
|
||||
|
||||
define(
|
||||
function (require) {
|
||||
var pixelRatio = require('common/getPixelRatio');
|
||||
var i18n = require('../i18n/i18n');
|
||||
var glyf2svgfile = require('../widget/util/glyf2svgfile');
|
||||
var download = require('../widget/util/download');
|
||||
var svg2base64 = require('fonteditor-core/ttf/svg2base64');
|
||||
var bytes2base64 = require('fonteditor-core/ttf/util/bytes2base64');
|
||||
var colorpicker = require('./colorpicker');
|
||||
var pixelRatio = require('common/getPixelRatio');
|
||||
|
||||
function getSvg(setting) {
|
||||
var opt = {
|
||||
@@ -55,19 +56,17 @@ define(
|
||||
$('#glyf-download-color').on('change', onChange);
|
||||
$('#glyf-download-size').on('change', onChange);
|
||||
colorpicker.show('#glyf-download-color');
|
||||
$('#glyf-download-svg').on('mousedown', $.proxy(function (e) {
|
||||
$('#glyf-download-svg').on('click', $.proxy(function (e) {
|
||||
var svgText = getSvg(this.setting);
|
||||
var target = $(e.target);
|
||||
target.attr('download', (this.setting.glyf.name || 'svg')+ '.svg');
|
||||
target.attr('href', svg2base64(svgText));
|
||||
download((this.setting.glyf.name || 'svg') + '.svg', svg2base64(svgText));
|
||||
}, this));
|
||||
|
||||
$('#glyf-download-png').on('mousedown', $.proxy(function (e) {
|
||||
$('#glyf-download-png').on('click', $.proxy(function (e) {
|
||||
var canvas = $('#glyf-download-preview canvas').get(0);
|
||||
var imgData = canvas.toDataURL();
|
||||
var target = $(e.target);
|
||||
target.attr('download', (this.setting.glyf.name || 'png')+ '.png');
|
||||
target.attr('href', imgData);
|
||||
download((this.setting.glyf.name || 'png') + '.png', imgData);
|
||||
}, this));
|
||||
|
||||
$('#glyf-download-name').html(setting.glyf.name);
|
||||
@@ -77,8 +76,8 @@ define(
|
||||
onDispose: function () {
|
||||
$('#glyf-download-color').off('change');
|
||||
$('#glyf-download-size').off('change');
|
||||
$('#glyf-download-svg').off('mousedown');
|
||||
$('#glyf-download-png').off('mousedown');
|
||||
$('#glyf-download-svg').off('click');
|
||||
$('#glyf-download-png').off('click');
|
||||
this.setting = null;
|
||||
}
|
||||
});
|
||||
|
||||
@@ -71,12 +71,6 @@ define(
|
||||
}
|
||||
});
|
||||
|
||||
$('#export-btn').on('mouseup', actions['export-file']);
|
||||
$('#export-btn-woff').on('mouseup', actions['export-file']);
|
||||
$('#export-btn-svg').on('mouseup', actions['export-file']);
|
||||
$('#export-btn-eot').on('mouseup', actions['export-file']);
|
||||
$('#export-btn-zip').on('mouseup', actions['export-file']);
|
||||
|
||||
document.getElementById('font-import').addEventListener('change', onUpFile);
|
||||
}
|
||||
|
||||
|
||||
@@ -445,6 +445,7 @@ define(
|
||||
}
|
||||
|
||||
return {
|
||||
repeat: result.repeat,
|
||||
message: message
|
||||
};
|
||||
};
|
||||
|
||||
@@ -11,6 +11,7 @@ define(
|
||||
var ttf2icon = require('fonteditor-core/ttf/ttf2icon');
|
||||
var config = require('fonteditor-core/ttf/data/default');
|
||||
var exportRender = require('../template/export-render');
|
||||
var download = require('./util/download');
|
||||
var JSZip = require('JSZip');
|
||||
|
||||
/**
|
||||
@@ -106,16 +107,12 @@ define(
|
||||
+ base64Str;
|
||||
}
|
||||
|
||||
var target = $(options.target);
|
||||
target.attr('download', fileName + '.' + options.type);
|
||||
|
||||
target.attr('href', base64Str);
|
||||
download(fileName + '.' + options.type, base64Str);
|
||||
if (options.success) {
|
||||
options.success(base64Str);
|
||||
}
|
||||
}
|
||||
catch (e) {
|
||||
$(options.target).removeAttr('download');
|
||||
if (options.error) {
|
||||
options.error(e);
|
||||
}
|
||||
@@ -123,8 +120,6 @@ define(
|
||||
throw e;
|
||||
}
|
||||
}
|
||||
|
||||
return options.target;
|
||||
}
|
||||
|
||||
|
||||
|
||||
@@ -10,7 +10,7 @@ define(
|
||||
var resolvettf = require('./util/resolvettf');
|
||||
var ttf2icon = require('fonteditor-core/ttf/ttf2icon');
|
||||
var font = require('fonteditor-core/ttf/font');
|
||||
|
||||
var program = require('./program');
|
||||
var previewRender = require('../template/preview-render'); // 模板渲染函数
|
||||
var extend = require('common/lang').extend;
|
||||
var isIE = !!window.ActiveXObject || 'ActiveXObject' in window;
|
||||
@@ -28,7 +28,14 @@ define(
|
||||
};
|
||||
|
||||
ttf = resolvettf(ttf);
|
||||
var fontData = font.create(ttf).toBase64(options);
|
||||
try {
|
||||
var fontData = font.create(ttf).toBase64(options);
|
||||
}
|
||||
catch(e) {
|
||||
program.fire('font-error', e);
|
||||
throw e;
|
||||
}
|
||||
|
||||
var data = extend(
|
||||
{
|
||||
fontData: fontData,
|
||||
|
||||
@@ -10,7 +10,7 @@ define(
|
||||
var Resolver = require('common/promise');
|
||||
var string = require('common/string');
|
||||
var project = require('./project');
|
||||
|
||||
var program = require('./program');
|
||||
var resolvettf = require('./util/resolvettf');
|
||||
var font = require('fonteditor-core/ttf/font');
|
||||
var ttf2woff = require('fonteditor-core/ttf/ttf2woff');
|
||||
@@ -154,6 +154,7 @@ define(
|
||||
});
|
||||
}
|
||||
catch (e) {
|
||||
program.fire('font-error', e);
|
||||
alert(e.message);
|
||||
throw e;
|
||||
}
|
||||
|
||||
41
src/fonteditor/widget/util/download.js
Normal file
41
src/fonteditor/widget/util/download.js
Normal file
@@ -0,0 +1,41 @@
|
||||
/**
|
||||
* @file chrome下载
|
||||
* 由于浏览器限制,需要注意调用的时候需要在一次交互内,例如`click`等
|
||||
*
|
||||
* @author mengke01(kekee000@gmail.com)
|
||||
*/
|
||||
|
||||
|
||||
define(function (require) {
|
||||
|
||||
/**
|
||||
* chrome下载
|
||||
*
|
||||
* @param {string} fileName 文件名
|
||||
* @param {string} base64Str base64字符串
|
||||
*/
|
||||
function download(fileName, base64Str) {
|
||||
var a = document.createElement('a');
|
||||
a.download = fileName;
|
||||
a.href = base64Str;
|
||||
a.addEventListener('click', function () {
|
||||
a.remove();
|
||||
});
|
||||
document.body.appendChild(a);
|
||||
if (a.click) {
|
||||
a.click();
|
||||
}
|
||||
else {
|
||||
var event = document.createEvent('MouseEvents');
|
||||
event.initMouseEvent('click',
|
||||
true, true, document.defaultView,
|
||||
0, 0, 0, 0, 0,
|
||||
false, false, false, false,
|
||||
0, null
|
||||
);
|
||||
a.dispatchEvent(event);
|
||||
}
|
||||
}
|
||||
|
||||
return download;
|
||||
});
|
||||
Reference in New Issue
Block a user