Begin JSLint journey

git-svn-id: http://svg-edit.googlecode.com/svn/trunk@2640 eee81c28-f429-11dd-99c0-75d572ba1ddd
This commit is contained in:
Brett Zamir
2014-01-31 00:27:46 +00:00
parent 6b5a4e645e
commit afa427a4a2

View File

@@ -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) {