optimize download

optimize error message
This commit is contained in:
kekee000
2016-04-19 00:33:21 +08:00
parent 426c2b4bbc
commit 20f7043df2
10 changed files with 95 additions and 35 deletions

View File

@@ -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);
}
}

View File

@@ -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);
});
}

View File

@@ -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;
}
});

View File

@@ -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);
}

View File

@@ -445,6 +445,7 @@ define(
}
return {
repeat: result.repeat,
message: message
};
};

View File

@@ -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;
}

View File

@@ -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,

View File

@@ -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;
}

View 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;
});