Begin JSLint journey
git-svn-id: http://svg-edit.googlecode.com/svn/trunk@2640 eee81c28-f429-11dd-99c0-75d572ba1ddd
This commit is contained in:
@@ -1,3 +1,5 @@
|
|||||||
|
/*globals globalStorage, widget, svgEditor, svgedit */
|
||||||
|
/*jslint vars: true, eqeq: true */
|
||||||
/*
|
/*
|
||||||
* svg-editor.js
|
* svg-editor.js
|
||||||
*
|
*
|
||||||
@@ -17,7 +19,10 @@
|
|||||||
|
|
||||||
(function() {
|
(function() {
|
||||||
|
|
||||||
if (!window.svgEditor) window.svgEditor = function($) {
|
if (window.svgEditor) {
|
||||||
|
return;
|
||||||
|
}
|
||||||
|
window.svgEditor = function($) {
|
||||||
var svgCanvas,
|
var svgCanvas,
|
||||||
Editor = {},
|
Editor = {},
|
||||||
isReady = false,
|
isReady = false,
|
||||||
@@ -114,9 +119,12 @@
|
|||||||
|
|
||||||
// Store and retrieve preferences
|
// Store and retrieve preferences
|
||||||
$.pref = function(key, val) {
|
$.pref = function(key, val) {
|
||||||
if (val) curPrefs[key] = val;
|
if (val) {
|
||||||
|
curPrefs[key] = val;
|
||||||
|
}
|
||||||
key = 'svg-edit-' + key;
|
key = 'svg-edit-' + key;
|
||||||
var host = location.hostname,
|
var d, result,
|
||||||
|
host = location.hostname,
|
||||||
onWeb = host && host.indexOf('.') >= 0,
|
onWeb = host && host.indexOf('.') >= 0,
|
||||||
store = (val != undefined),
|
store = (val != undefined),
|
||||||
storage = false;
|
storage = false;
|
||||||
@@ -130,13 +138,13 @@
|
|||||||
if (window.globalStorage && onWeb) {
|
if (window.globalStorage && onWeb) {
|
||||||
storage = globalStorage[host];
|
storage = globalStorage[host];
|
||||||
}
|
}
|
||||||
} catch(e) {}
|
} catch(e2) {}
|
||||||
|
|
||||||
if (storage) {
|
if (storage) {
|
||||||
if (store) {
|
if (store) {
|
||||||
storage.setItem(key, val);
|
storage.setItem(key, val);
|
||||||
} else if (storage.getItem(key)) {
|
} else if (storage.getItem(key)) {
|
||||||
return storage.getItem(key) + ''; // Convert to string for FF (.value fails in Webkit)
|
return String(storage.getItem(key)); // Convert to string for FF (.value fails in Webkit)
|
||||||
}
|
}
|
||||||
} else if (window.widget) {
|
} else if (window.widget) {
|
||||||
if (store) {
|
if (store) {
|
||||||
@@ -146,12 +154,12 @@
|
|||||||
}
|
}
|
||||||
} else {
|
} else {
|
||||||
if (store) {
|
if (store) {
|
||||||
var d = new Date();
|
d = new Date();
|
||||||
d.setTime(d.getTime() + 31536000000);
|
d.setTime(d.getTime() + 31536000000);
|
||||||
val = encodeURIComponent(val);
|
val = encodeURIComponent(val);
|
||||||
document.cookie = key+'='+val+'; expires='+d.toUTCString();
|
document.cookie = key+'='+val+'; expires='+d.toUTCString();
|
||||||
} else {
|
} else {
|
||||||
var result = document.cookie.match(new RegExp(key + '=([^;]+)'));
|
result = document.cookie.match(new RegExp(key + '=([^;]+)'));
|
||||||
return result ? decodeURIComponent(result[1]) : '';
|
return result ? decodeURIComponent(result[1]) : '';
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
@@ -205,20 +213,22 @@
|
|||||||
// For external openers
|
// For external openers
|
||||||
(function() {
|
(function() {
|
||||||
// let the opener know SVG Edit is ready
|
// let the opener know SVG Edit is ready
|
||||||
var w = window.opener;
|
var svgEditorReadyEvent,
|
||||||
|
w = window.opener;
|
||||||
if (w) {
|
if (w) {
|
||||||
try {
|
try {
|
||||||
var svgEditorReadyEvent = w.document.createEvent('Event');
|
svgEditorReadyEvent = w.document.createEvent('Event');
|
||||||
svgEditorReadyEvent.initEvent('svgEditorReady', true, true);
|
svgEditorReadyEvent.initEvent('svgEditorReady', true, true);
|
||||||
w.document.documentElement.dispatchEvent(svgEditorReadyEvent);
|
w.document.documentElement.dispatchEvent(svgEditorReadyEvent);
|
||||||
}
|
}
|
||||||
catch(e) {}
|
catch(e) {}
|
||||||
}
|
}
|
||||||
})();
|
}());
|
||||||
|
|
||||||
(function() {
|
(function() {
|
||||||
// Load config/data from URL if given
|
// Load config/data from URL if given
|
||||||
var urldata = $.deparam.querystring(true);
|
var src, qstr,
|
||||||
|
urldata = $.deparam.querystring(true);
|
||||||
if (!$.isEmptyObject(urldata)) {
|
if (!$.isEmptyObject(urldata)) {
|
||||||
if (urldata.dimensions) {
|
if (urldata.dimensions) {
|
||||||
urldata.dimensions = urldata.dimensions.split(',');
|
urldata.dimensions = urldata.dimensions.split(',');
|
||||||
@@ -234,8 +244,8 @@
|
|||||||
|
|
||||||
svgEditor.setConfig(urldata);
|
svgEditor.setConfig(urldata);
|
||||||
|
|
||||||
var src = urldata.source;
|
src = urldata.source;
|
||||||
var qstr = $.param.querystring();
|
qstr = $.param.querystring();
|
||||||
|
|
||||||
if (!src) { // urldata.source may have been null if it ended with '='
|
if (!src) { // urldata.source may have been null if it ended with '='
|
||||||
if (qstr.indexOf('source=data:') >= 0) {
|
if (qstr.indexOf('source=data:') >= 0) {
|
||||||
@@ -264,7 +274,7 @@
|
|||||||
Editor.loadFromString(cached);
|
Editor.loadFromString(cached);
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
})();
|
}());
|
||||||
|
|
||||||
var extFunc = function() {
|
var extFunc = function() {
|
||||||
$.each(curConfig.extensions, function() {
|
$.each(curConfig.extensions, function() {
|
||||||
@@ -458,9 +468,10 @@
|
|||||||
$(this).parent().prepend(this);
|
$(this).parent().prepend(this);
|
||||||
});
|
});
|
||||||
|
|
||||||
var tleft = $('#tools_left');
|
var min_height,
|
||||||
|
tleft = $('#tools_left');
|
||||||
if (tleft.length !== 0) {
|
if (tleft.length !== 0) {
|
||||||
var min_height = tleft.offset().top + tleft.outerHeight();
|
min_height = tleft.offset().top + tleft.outerHeight();
|
||||||
}
|
}
|
||||||
// var size = $.pref('iconsize');
|
// var size = $.pref('iconsize');
|
||||||
// if (size && size != 'm') {
|
// if (size && size != 'm') {
|
||||||
@@ -578,10 +589,14 @@
|
|||||||
ok.click(function() {
|
ok.click(function() {
|
||||||
box.hide();
|
box.hide();
|
||||||
var resp = (type === 'prompt' || type === 'select') ? ctrl.val() : true;
|
var resp = (type === 'prompt' || type === 'select') ? ctrl.val() : true;
|
||||||
if (callback) callback(resp);
|
if (callback) {
|
||||||
|
callback(resp);
|
||||||
|
}
|
||||||
}).focus();
|
}).focus();
|
||||||
|
|
||||||
if (type === 'prompt' || type === 'select') ctrl.focus();
|
if (type === 'prompt' || type === 'select') {
|
||||||
|
ctrl.focus();
|
||||||
|
}
|
||||||
};
|
};
|
||||||
|
|
||||||
$.alert = function(msg, cb) { dbox('alert', msg, cb);};
|
$.alert = function(msg, cb) { dbox('alert', msg, cb);};
|
||||||
@@ -709,7 +724,9 @@
|
|||||||
// called when we've selected a different element
|
// called when we've selected a different element
|
||||||
var selectedChanged = function(window, elems) {
|
var selectedChanged = function(window, elems) {
|
||||||
var mode = svgCanvas.getMode();
|
var mode = svgCanvas.getMode();
|
||||||
if (mode === 'select') setSelectMode();
|
if (mode === 'select') {
|
||||||
|
setSelectMode();
|
||||||
|
}
|
||||||
var is_node = (mode == "pathedit");
|
var is_node = (mode == "pathedit");
|
||||||
// if elems[1] is present, then we have more than one element
|
// if elems[1] is present, then we have more than one element
|
||||||
selectedElement = (elems.length === 1 || elems[1] == null ? elems[0] : null);
|
selectedElement = (elems.length === 1 || elems[1] == null ? elems[0] : null);
|
||||||
@@ -740,7 +757,9 @@
|
|||||||
var mode = svgCanvas.getMode();
|
var mode = svgCanvas.getMode();
|
||||||
var elem = elems[0];
|
var elem = elems[0];
|
||||||
|
|
||||||
if (!elem) return;
|
if (!elem) {
|
||||||
|
return;
|
||||||
|
}
|
||||||
|
|
||||||
multiselected = (elems.length >= 2 && elems[1] != null);
|
multiselected = (elems.length >= 2 && elems[1] != null);
|
||||||
// Only updating fields for single elements for now
|
// Only updating fields for single elements for now
|
||||||
@@ -765,12 +784,13 @@
|
|||||||
|
|
||||||
// called when any element has changed
|
// called when any element has changed
|
||||||
var elementChanged = function(window, elems) {
|
var elementChanged = function(window, elems) {
|
||||||
var mode = svgCanvas.getMode();
|
var i,
|
||||||
|
mode = svgCanvas.getMode();
|
||||||
if (mode === 'select') {
|
if (mode === 'select') {
|
||||||
setSelectMode();
|
setSelectMode();
|
||||||
}
|
}
|
||||||
|
|
||||||
for (var i = 0; i < elems.length; ++i) {
|
for (i = 0; i < elems.length; ++i) {
|
||||||
var elem = elems[i];
|
var elem = elems[i];
|
||||||
|
|
||||||
// if the element changed was the svg, then it could be a resolution change
|
// if the element changed was the svg, then it could be a resolution change
|
||||||
@@ -814,7 +834,7 @@
|
|||||||
w_area = workarea,
|
w_area = workarea,
|
||||||
canvas_pos = $('#svgcanvas').position();
|
canvas_pos = $('#svgcanvas').position();
|
||||||
var z_info = svgCanvas.setBBoxZoom(bbox, w_area.width()-scrbar, w_area.height()-scrbar);
|
var z_info = svgCanvas.setBBoxZoom(bbox, w_area.width()-scrbar, w_area.height()-scrbar);
|
||||||
if (!z_info) return;
|
if (!z_info) {return;}
|
||||||
var zoomlevel = z_info.zoom,
|
var zoomlevel = z_info.zoom,
|
||||||
bb = z_info.bbox;
|
bb = z_info.bbox;
|
||||||
|
|
||||||
@@ -899,7 +919,7 @@
|
|||||||
// Remember the function that goes with this ID
|
// Remember the function that goes with this ID
|
||||||
flyout_funcs[opts.sel] = opts.fn;
|
flyout_funcs[opts.sel] = opts.fn;
|
||||||
|
|
||||||
if (opts.isDefault) def = i;
|
if (opts.isDefault) {def = i;}
|
||||||
|
|
||||||
// Clicking the icon in flyout should set this set's icon
|
// Clicking the icon in flyout should set this set's icon
|
||||||
var func = function(event) {
|
var func = function(event) {
|
||||||
@@ -918,7 +938,7 @@
|
|||||||
}
|
}
|
||||||
});
|
});
|
||||||
}
|
}
|
||||||
if ($(this).hasClass('disabled')) return false;
|
if ($(this).hasClass('disabled')) {return false;}
|
||||||
if (toolButtonClick(show_sel)) {
|
if (toolButtonClick(show_sel)) {
|
||||||
options.fn();
|
options.fn();
|
||||||
}
|
}
|
||||||
@@ -953,7 +973,9 @@
|
|||||||
|
|
||||||
// Clicking the "show" icon should set the current mode
|
// Clicking the "show" icon should set the current mode
|
||||||
shower.mousedown(function(evt) {
|
shower.mousedown(function(evt) {
|
||||||
if (shower.hasClass('disabled')) return false;
|
if (shower.hasClass('disabled')) {
|
||||||
|
return false;
|
||||||
|
}
|
||||||
var holder = $(hold_sel);
|
var holder = $(hold_sel);
|
||||||
var l = pos.left + 34;
|
var l = pos.left + 34;
|
||||||
var w = holder.width() * -1;
|
var w = holder.width() * -1;
|
||||||
@@ -1009,7 +1031,9 @@
|
|||||||
var setFlyoutTitles = function() {
|
var setFlyoutTitles = function() {
|
||||||
$('.tools_flyout').each(function() {
|
$('.tools_flyout').each(function() {
|
||||||
var shower = $('#' + this.id + '_show');
|
var shower = $('#' + this.id + '_show');
|
||||||
if (shower.data('isLibrary')) return;
|
if (shower.data('isLibrary')) {
|
||||||
|
return;
|
||||||
|
}
|
||||||
|
|
||||||
var tooltips = [];
|
var tooltips = [];
|
||||||
$(this).children().each(function() {
|
$(this).children().each(function() {
|
||||||
@@ -1051,17 +1075,19 @@
|
|||||||
if (ext.context_tools) {
|
if (ext.context_tools) {
|
||||||
$.each(ext.context_tools, function(i, tool) {
|
$.each(ext.context_tools, function(i, tool) {
|
||||||
// Add select tool
|
// Add select tool
|
||||||
|
var html;
|
||||||
var cont_id = tool.container_id ? (' id="' + tool.container_id + '"') : '';
|
var cont_id = tool.container_id ? (' id="' + tool.container_id + '"') : '';
|
||||||
var panel = $('#' + tool.panel);
|
var panel = $('#' + tool.panel);
|
||||||
|
|
||||||
// create the panel if it doesn't exist
|
// create the panel if it doesn't exist
|
||||||
if (!panel.length)
|
if (!panel.length) {
|
||||||
panel = $('<div>', {id: tool.panel}).appendTo('#tools_top');
|
panel = $('<div>', {id: tool.panel}).appendTo('#tools_top');
|
||||||
|
}
|
||||||
|
|
||||||
// TODO: Allow support for other types, or adding to existing tool
|
// TODO: Allow support for other types, or adding to existing tool
|
||||||
switch (tool.type) {
|
switch (tool.type) {
|
||||||
case 'tool_button':
|
case 'tool_button':
|
||||||
var html = '<div class="tool_button">' + tool.id + '</div>';
|
html = '<div class="tool_button">' + tool.id + '</div>';
|
||||||
var div = $(html).appendTo(panel);
|
var div = $(html).appendTo(panel);
|
||||||
if (tool.events) {
|
if (tool.events) {
|
||||||
$.each(tool.events, function(evt, func) {
|
$.each(tool.events, function(evt, func) {
|
||||||
@@ -1070,7 +1096,7 @@
|
|||||||
}
|
}
|
||||||
break;
|
break;
|
||||||
case 'select':
|
case 'select':
|
||||||
var html = '<label' + cont_id + '>'
|
html = '<label' + cont_id + '>'
|
||||||
+ '<select id="' + tool.id + '">';
|
+ '<select id="' + tool.id + '">';
|
||||||
$.each(tool.options, function(val, text) {
|
$.each(tool.options, function(val, text) {
|
||||||
var sel = (val == tool.defval) ? " selected":"";
|
var sel = (val == tool.defval) ? " selected":"";
|
||||||
@@ -1085,7 +1111,7 @@
|
|||||||
});
|
});
|
||||||
break;
|
break;
|
||||||
case 'button-select':
|
case 'button-select':
|
||||||
var html = '<div id="' + tool.id + '" class="dropdown toolset" title="' + tool.title + '">'
|
html = '<div id="' + tool.id + '" class="dropdown toolset" title="' + tool.title + '">'
|
||||||
+ '<div id="cur_' + tool.id + '" class="icon_label"></div><button></button></div>';
|
+ '<div id="cur_' + tool.id + '" class="icon_label"></div><button></button></div>';
|
||||||
|
|
||||||
var list = $('<ul id="' + tool.id + '_opts"></ul>').appendTo('#option_lists');
|
var list = $('<ul id="' + tool.id + '_opts"></ul>').appendTo('#option_lists');
|
||||||
@@ -1107,7 +1133,7 @@
|
|||||||
|
|
||||||
break;
|
break;
|
||||||
case 'input':
|
case 'input':
|
||||||
var html = '<label' + cont_id + '>'
|
html = '<label' + cont_id + '>'
|
||||||
+ '<span id="' + tool.id + '_label">'
|
+ '<span id="' + tool.id + '_label">'
|
||||||
+ tool.label + ':</span>'
|
+ tool.label + ':</span>'
|
||||||
+ '<input id="' + tool.id + '" title="' + tool.title
|
+ '<input id="' + tool.id + '" title="' + tool.title
|
||||||
@@ -1156,7 +1182,7 @@
|
|||||||
icon = $('<img src="' + btn.icon + '">');
|
icon = $('<img src="' + btn.icon + '">');
|
||||||
} else {
|
} else {
|
||||||
fallback_obj[id] = btn.icon;
|
fallback_obj[id] = btn.icon;
|
||||||
var svgicon = btn.svgicon?btn.svgicon:btn.id;
|
var svgicon = btn.svgicon || btn.id;
|
||||||
if (btn.type == 'app_menu') {
|
if (btn.type == 'app_menu') {
|
||||||
placement_obj['#' + id + ' > div'] = svgicon;
|
placement_obj['#' + id + ' > div'] = svgicon;
|
||||||
} else {
|
} else {
|
||||||
@@ -1177,8 +1203,9 @@
|
|||||||
cls = 'tool_button';
|
cls = 'tool_button';
|
||||||
parent = '#' + btn.panel;
|
parent = '#' + btn.panel;
|
||||||
// create the panel if it doesn't exist
|
// create the panel if it doesn't exist
|
||||||
if (!$(parent).length)
|
if (!$(parent).length) {
|
||||||
$('<div>', {id: btn.panel}).appendTo('#tools_top');
|
$('<div>', {id: btn.panel}).appendTo('#tools_top');
|
||||||
|
}
|
||||||
break;
|
break;
|
||||||
case 'app_menu':
|
case 'app_menu':
|
||||||
cls = '';
|
cls = '';
|
||||||
@@ -1255,7 +1282,7 @@
|
|||||||
$('#' + btn.list + '_opts').append(button);
|
$('#' + btn.list + '_opts').append(button);
|
||||||
if (btn.isDefault) {
|
if (btn.isDefault) {
|
||||||
$('#cur_' + btn.list).append(button.children().clone());
|
$('#cur_' + btn.list).append(button.children().clone());
|
||||||
var svgicon = btn.svgicon?btn.svgicon:btn.id;
|
var svgicon = btn.svgicon || btn.id;
|
||||||
placement_obj['#cur_' + btn.list] = svgicon;
|
placement_obj['#cur_' + btn.list] = svgicon;
|
||||||
}
|
}
|
||||||
} else if (btn.includeWith) {
|
} else if (btn.includeWith) {
|
||||||
|
|||||||
Reference in New Issue
Block a user