mirror of
https://github.com/xibyte/jsketcher
synced 2025-12-06 16:33:15 +01:00
fix linter complaints
This commit is contained in:
parent
a2fb3e7a38
commit
3cfbf3537d
15 changed files with 97 additions and 86 deletions
3
build/.eslintignore
Normal file
3
build/.eslintignore
Normal file
|
|
@ -0,0 +1,3 @@
|
|||
/web/app/math/lm.js
|
||||
/web/app/math/qr.js
|
||||
|
||||
|
|
@ -5,7 +5,7 @@
|
|||
"scripts": {
|
||||
"start": "webpack-dev-server --content-base web/ --port 3000",
|
||||
"build": "webpack --config webpack.config.js --progress --profile --colors",
|
||||
"lint": "eslint web/app -c ./build/.eslintrc.json"
|
||||
"lint": "eslint web/app -c ./build/.eslintrc.json --ignore-path ./build/.eslintignore"
|
||||
},
|
||||
"repository": {
|
||||
"type": "git",
|
||||
|
|
|
|||
|
|
@ -414,13 +414,14 @@ function segmentsToPaths(segments) {
|
|||
return null;
|
||||
}
|
||||
|
||||
var path;
|
||||
for (var ei = 0; ei < segments.length; ei++) {
|
||||
var edge = segments[ei];
|
||||
if (edge[3]) {
|
||||
continue;
|
||||
}
|
||||
edge[3] = true;
|
||||
var path = [edge[0], edge[1]];
|
||||
path = [edge[0], edge[1]];
|
||||
paths.push(path);
|
||||
var next = nextPoint(edge[1]);
|
||||
while (next !== null) {
|
||||
|
|
@ -435,7 +436,7 @@ function segmentsToPaths(segments) {
|
|||
|
||||
var filteredPaths = [];
|
||||
for (var i = 0; i < paths.length; i++) {
|
||||
var path = paths[i];
|
||||
path = paths[i];
|
||||
|
||||
//Set derived from object to be able to recunstruct
|
||||
cad_utils.iteratePath(path, 0, function (a, b) {
|
||||
|
|
@ -495,16 +496,15 @@ function splitTwoSegments(a, b) {
|
|||
|
||||
var dcXdb = dc.cross(db);
|
||||
|
||||
var s = dcXdb.dot(daXdb) / daXdb.lengthSquared();
|
||||
if (s > 0.0 && s < 1.0) {
|
||||
var ip = a[0].plus(da.times(s));
|
||||
function _split(s, ip) {
|
||||
if (s[0].equals(ip) || s[1].equals(ip)) {
|
||||
return [s];
|
||||
}
|
||||
return [[s[0], ip, s[2]], [ip, s[1], s[2]]]
|
||||
}
|
||||
|
||||
var s = dcXdb.dot(daXdb) / daXdb.lengthSquared();
|
||||
if (s > 0.0 && s < 1.0) {
|
||||
var ip = a[0].plus(da.times(s));
|
||||
return {
|
||||
splitterParts : _split(a, ip),
|
||||
residual : _split(b, ip)
|
||||
|
|
@ -540,11 +540,12 @@ function recoverySketchInfo(polygons) {
|
|||
var poly = polygons[pi];
|
||||
var paths = [];
|
||||
poly.collectPaths(paths);
|
||||
for (var i = 0; i < paths.length; i++) {
|
||||
var path = paths[i];
|
||||
var i, path, n, p, q;
|
||||
for (i = 0; i < paths.length; i++) {
|
||||
path = paths[i];
|
||||
if (poly.csgInfo !== undefined && poly.csgInfo.derivedFrom !== undefined) {
|
||||
var n = path.length;
|
||||
for (var p = n - 1, q = 0; q < n ; p = q++ ) {
|
||||
n = path.length;
|
||||
for (p = n - 1, q = 0; q < n ; p = q++ ) {
|
||||
sketchEdges.put(key(path[p], path[q]), poly.csgInfo);
|
||||
}
|
||||
} else {
|
||||
|
|
@ -553,10 +554,10 @@ function recoverySketchInfo(polygons) {
|
|||
}
|
||||
}
|
||||
|
||||
for (var i = 0; i < nonStructuralGons.length; i++) {
|
||||
var path = nonStructuralGons[i];
|
||||
var n = path.length;
|
||||
for (var p = n - 1, q = 0; q < n ; p = q++ ) {
|
||||
for (i = 0; i < nonStructuralGons.length; i++) {
|
||||
path = nonStructuralGons[i];
|
||||
n = path.length;
|
||||
for (p = n - 1, q = 0; q < n ; p = q++ ) {
|
||||
var csgInfo = sketchEdges.get(key(path[p], path[q]));
|
||||
if (csgInfo === null) {
|
||||
csgInfo = sketchEdges.get(key(path[q], path[p]));
|
||||
|
|
|
|||
|
|
@ -35,7 +35,6 @@ Graph.findAllLoops = function(graph, hashCode, equals) {
|
|||
path.push(vertex);
|
||||
var needClone = false;
|
||||
|
||||
VERTEX:
|
||||
for (i = 0; i < next.length; i++) {
|
||||
var v = next[i];
|
||||
if (equals(v, comesFrom)) {
|
||||
|
|
@ -49,7 +48,7 @@ Graph.findAllLoops = function(graph, hashCode, equals) {
|
|||
path.pop();
|
||||
}
|
||||
|
||||
for (var i = 0; i < graph.size(); i++) {
|
||||
for (i = 0; i < graph.size(); i++) {
|
||||
var vertex = graph.at(i);
|
||||
if (visited.get(vertex) !== true) {
|
||||
step(vertex, -1, []);
|
||||
|
|
@ -83,8 +82,8 @@ Graph.findAllLoops = function(graph, hashCode, equals) {
|
|||
return true;
|
||||
}
|
||||
|
||||
var duplicates = 0;
|
||||
for (var i = 0; i < loops.length; i++) {
|
||||
var i, duplicates = 0;
|
||||
for (i = 0; i < loops.length; i++) {
|
||||
var a = loops[i];
|
||||
if (a == null) continue;
|
||||
for (var j = i + 1; j < loops.length; j++) {
|
||||
|
|
@ -100,7 +99,7 @@ Graph.findAllLoops = function(graph, hashCode, equals) {
|
|||
}
|
||||
if (duplicates != 0) {
|
||||
var filtered = [];
|
||||
for (var i = 0; i < loops.length; i++) {
|
||||
for (i = 0; i < loops.length; i++) {
|
||||
if (loops[i] != null) filtered.push(loops[i]);
|
||||
}
|
||||
loops = filtered;
|
||||
|
|
|
|||
|
|
@ -76,7 +76,7 @@
|
|||
* @version $Id: LevenbergMarquardtOptimizer.java 1416643 2012-12-03 19:37:14Z tn $
|
||||
* @constructor
|
||||
*/
|
||||
function LMOptimizer(startPoint, target, model, jacobian) {
|
||||
export default function LMOptimizer(startPoint, target, model, jacobian) {
|
||||
|
||||
|
||||
this.startPoint = startPoint;
|
||||
|
|
@ -1046,5 +1046,3 @@ function LMOptimizer(startPoint, target, model, jacobian) {
|
|||
}
|
||||
|
||||
}
|
||||
|
||||
export {LMOptimizer}
|
||||
|
|
@ -478,8 +478,8 @@ function Angle(params) {
|
|||
out[l1p1y] = dx1 / r2;
|
||||
out[l1p2x] = dy1 / r2;
|
||||
out[l1p2y] = -dx1 / r2;
|
||||
var dx1 = (p(l1p2x) - p(l1p1x));
|
||||
var dy1 = (p(l1p2y) - p(l1p1y));
|
||||
dx1 = (p(l1p2x) - p(l1p1x));
|
||||
dy1 = (p(l1p2y) - p(l1p1y));
|
||||
var dx2 = (p(l2p2x) - p(l2p1x));
|
||||
var dy2 = (p(l2p2y) - p(l2p1y));
|
||||
var a = Math.atan2(dy1, dx1) + p(angle);
|
||||
|
|
@ -487,7 +487,7 @@ function Angle(params) {
|
|||
var sa = Math.sin(a);
|
||||
var x2 = dx2 * ca + dy2 * sa;
|
||||
var y2 = -dx2 * sa + dy2 * ca;
|
||||
var r2 = dx2 * dx2 + dy2 * dy2;
|
||||
r2 = dx2 * dx2 + dy2 * dy2;
|
||||
dx2 = -y2 / r2;
|
||||
dy2 = x2 / r2;
|
||||
out[l2p1x] = (-ca * dx2 + sa * dy2);
|
||||
|
|
|
|||
|
|
@ -1,6 +1,7 @@
|
|||
import * as utils from '../../utils/utils'
|
||||
import * as math from '../../math/math'
|
||||
import QR from '../../math/qr'
|
||||
import LMOptimizer from '../../math/lm'
|
||||
import {ConstantWrapper, EqualsTo} from './constraints'
|
||||
import {dog_leg} from '../../math/optim'
|
||||
|
||||
|
|
@ -188,12 +189,12 @@ System.prototype.getValues = function() {
|
|||
|
||||
var wrapAux = function(constrs, locked) {
|
||||
|
||||
var lockedSet = {};
|
||||
for (var i = 0; i < locked.length; i++) {
|
||||
var i, lockedSet = {};
|
||||
for (i = 0; i < locked.length; i++) {
|
||||
lockedSet[locked[i].j] = true;
|
||||
}
|
||||
|
||||
for (var i = 0; i < constrs.length; i++) {
|
||||
for (i = 0; i < constrs.length; i++) {
|
||||
var c = constrs[i];
|
||||
var mask = [];
|
||||
var needWrap = false;
|
||||
|
|
|
|||
|
|
@ -13,12 +13,13 @@ function FilletTool(viewer) {
|
|||
|
||||
FilletTool.prototype.makeFillet = function(point1, point2) {
|
||||
function shrink(point1) {
|
||||
var a, b;
|
||||
if (point1.id === point1.parent.a.id) {
|
||||
var a = point1.parent.b;
|
||||
var b = point1.parent.a;
|
||||
a = point1.parent.b;
|
||||
b = point1.parent.a;
|
||||
} else {
|
||||
var a = point1.parent.a;
|
||||
var b = point1.parent.b;
|
||||
a = point1.parent.a;
|
||||
b = point1.parent.b;
|
||||
}
|
||||
var d = math.distanceAB(a, b);
|
||||
var k = 4 / 5;
|
||||
|
|
@ -45,7 +46,7 @@ FilletTool.prototype.makeFillet = function(point1, point2) {
|
|||
var arc = new Arc(
|
||||
new EndPoint(point1.x, point1.y),
|
||||
new EndPoint(point2.x, point2.y),
|
||||
new EndPoint(vec.x, vec.y))
|
||||
new EndPoint(vec.x, vec.y));
|
||||
point1.parent.layer.objects.push(arc);
|
||||
var pm = this.viewer.parametricManager;
|
||||
arc.stabilize(this.viewer);
|
||||
|
|
@ -94,12 +95,13 @@ FilletTool.prototype.mouseup = function(e) {
|
|||
}
|
||||
};
|
||||
|
||||
FilletTool.prototype.getCandidate = function(e) {
|
||||
var picked = this.viewer.pick(e);
|
||||
if (picked.length > 0) {
|
||||
function isLine(line) {
|
||||
return line != null && line._class === 'TCAD.TWO.Segment';
|
||||
}
|
||||
|
||||
FilletTool.prototype.getCandidate = function(e) {
|
||||
var picked = this.viewer.pick(e);
|
||||
if (picked.length > 0) {
|
||||
var res = fetch.sketchObjects(picked, true, ['TCAD.TWO.EndPoint']);
|
||||
if (res == null) return null;
|
||||
var point1 = res[0];
|
||||
|
|
|
|||
|
|
@ -74,27 +74,27 @@ IO.prototype._loadSketch = function(sketch) {
|
|||
var layer = getLayer(this.viewer, ioLayer['name']);
|
||||
if (!!ioLayer.style) layer.style = ioLayer.style;
|
||||
var layerData = ioLayer['data'];
|
||||
for (var i = 0; i < layerData.length; ++i) {
|
||||
for (i = 0; i < layerData.length; ++i) {
|
||||
var obj = layerData[i];
|
||||
var skobj = null;
|
||||
var _class = obj['_class'];
|
||||
var aux = !!obj['aux'];
|
||||
if (_class === T.SEGMENT) {
|
||||
var points = obj['points'];
|
||||
var a = endPoint(points[0]);
|
||||
var b = endPoint(points[1]);
|
||||
const points = obj['points'];
|
||||
const a = endPoint(points[0]);
|
||||
const b = endPoint(points[1]);
|
||||
skobj = new Segment(a, b);
|
||||
} else if (_class === T.END_POINT) {
|
||||
skobj = endPoint(obj['location']);
|
||||
} else if (_class === T.ARC) {
|
||||
var points = obj['points'];
|
||||
var a = endPoint(points[0]);
|
||||
var b = endPoint(points[1]);
|
||||
var c = endPoint(points[2]);
|
||||
const points = obj['points'];
|
||||
const a = endPoint(points[0]);
|
||||
const b = endPoint(points[1]);
|
||||
const c = endPoint(points[2]);
|
||||
skobj = new Arc(a, b, c);
|
||||
if (!aux) skobj.stabilize(this.viewer);
|
||||
} else if (_class === T.CIRCLE) {
|
||||
var c = endPoint(obj['c']);
|
||||
const c = endPoint(obj['c']);
|
||||
skobj = new Circle(c);
|
||||
skobj.r.set(obj['r']);
|
||||
} else if (_class === T.HDIM) {
|
||||
|
|
@ -138,7 +138,7 @@ IO.prototype._loadSketch = function(sketch) {
|
|||
if (sketchConstraints !== undefined) {
|
||||
for (var i = 0; i < sketchConstraints.length; ++i) {
|
||||
try {
|
||||
var c = this.parseConstr(sketchConstraints[i], index);
|
||||
const c = this.parseConstr(sketchConstraints[i], index);
|
||||
this.viewer.parametricManager._add(c);
|
||||
} catch (err) {
|
||||
console.error(err);
|
||||
|
|
@ -212,7 +212,7 @@ IO.prototype._serializeSketch = function() {
|
|||
var subSystems = this.viewer.parametricManager.subSystems;
|
||||
for (var j = 0; j < subSystems.length; j++) {
|
||||
var sub = subSystems[j];
|
||||
for (var i = 0; i < sub.constraints.length; ++i) {
|
||||
for (i = 0; i < sub.constraints.length; ++i) {
|
||||
if (!sub.constraints[i].aux) {
|
||||
constrs.push(this.serializeConstr(sub.constraints[i]));
|
||||
}
|
||||
|
|
@ -226,7 +226,7 @@ IO.prototype._serializeSketch = function() {
|
|||
return sketch;
|
||||
};
|
||||
|
||||
IO.prototype.setupBoundary = function(boundary) {
|
||||
IO.prototype.setupBoundary = function(boundary, index) {
|
||||
var boundaryLayerName = "__bounds__";
|
||||
var boundaryLayer = this.viewer.findLayerByName(boundaryLayerName);
|
||||
|
||||
|
|
@ -486,6 +486,7 @@ IO.prototype.dxfExport = function () {
|
|||
var out = new TextBuilder();
|
||||
var bbox = new BBox();
|
||||
var toExport = this.getLayersToExport();
|
||||
var i;
|
||||
bbox.checkLayers(toExport);
|
||||
out.line("999");
|
||||
out.line("js.parametric.sketcher");
|
||||
|
|
@ -525,7 +526,7 @@ IO.prototype.dxfExport = function () {
|
|||
out.line("2");
|
||||
out.line("TABLES");
|
||||
|
||||
for (var i = 0; i < toExport.length; i++) {
|
||||
for (i = 0; i < toExport.length; i++) {
|
||||
out.line("0");
|
||||
out.line("LAYER");
|
||||
out.line("2");
|
||||
|
|
@ -555,7 +556,7 @@ IO.prototype.dxfExport = function () {
|
|||
for (var l = 0; l < toExport.length; l++) {
|
||||
var lid = l + 1;
|
||||
var layer = toExport[l];
|
||||
for (var i = 0; i < layer.objects.length; ++i) {
|
||||
for (i = 0; i < layer.objects.length; ++i) {
|
||||
var obj = layer.objects[i];
|
||||
if (obj._class === T.END_POINT) {
|
||||
out.line("0");
|
||||
|
|
|
|||
|
|
@ -163,7 +163,8 @@ ParametricManager.prototype.removeConstraintsByParams = function(ownedParams) {
|
|||
for (var s = 0; s < this.subSystems.length; s++) {
|
||||
var toRemove = [];
|
||||
var sub = this.subSystems[s];
|
||||
for (var i = 0; i < sub.constraints.length; ++i) {
|
||||
var i;
|
||||
for (i = 0; i < sub.constraints.length; ++i) {
|
||||
var sdataArr = sub.constraints[i].getSolveData(this.constantResolver);
|
||||
MAIN:
|
||||
for (var j = 0; j < sdataArr.length; j++) {
|
||||
|
|
@ -181,7 +182,7 @@ ParametricManager.prototype.removeConstraintsByParams = function(ownedParams) {
|
|||
}
|
||||
toRemove.sort();
|
||||
|
||||
for (var i = toRemove.length - 1; i >= 0 ; --i) {
|
||||
for (i = toRemove.length - 1; i >= 0 ; --i) {
|
||||
sub.constraints.splice( toRemove[i], 1);
|
||||
}
|
||||
}
|
||||
|
|
|
|||
|
|
@ -222,9 +222,10 @@ DiameterDimension.prototype.drawForCircle = function(ctx, scale, viewer) {
|
|||
ctx.restore();
|
||||
}
|
||||
|
||||
var tx, ty;
|
||||
if (h - fontSize * .3 > 0) { // take into account font size to not have circle overlap symbols
|
||||
var tx = (a.x + _vxn * textOff) - (-_vyn) * h;
|
||||
var ty = (a.y + _vyn * textOff) - ( _vxn) * h;
|
||||
tx = (a.x + _vxn * textOff) - (-_vyn) * h;
|
||||
ty = (a.y + _vyn * textOff) - ( _vxn) * h;
|
||||
drawText(tx, ty);
|
||||
} else {
|
||||
var off = 2 * viewer.dimScale;
|
||||
|
|
@ -237,8 +238,8 @@ DiameterDimension.prototype.drawForCircle = function(ctx, scale, viewer) {
|
|||
ctx.stroke();
|
||||
angled._multiply(off);
|
||||
|
||||
var tx = (b.x + _vxn * textOff) + angled.x;
|
||||
var ty = (b.y + _vyn * textOff) + angled.y;
|
||||
tx = (b.x + _vxn * textOff) + angled.x;
|
||||
ty = (b.y + _vyn * textOff) + angled.y;
|
||||
drawText(tx, ty);
|
||||
}
|
||||
};
|
||||
|
|
|
|||
|
|
@ -31,7 +31,7 @@ AddSegmentTool.prototype.mousedown = function(e) {
|
|||
|
||||
AddSegmentTool.prototype.mouseup = function(e) {
|
||||
if (this.line == null) {
|
||||
var b = this.viewer.screenToModel(e);
|
||||
const b = this.viewer.screenToModel(e);
|
||||
var a = b;
|
||||
var needSnap = false;
|
||||
if (this.viewer.snapped.length != 0) {
|
||||
|
|
@ -54,7 +54,7 @@ AddSegmentTool.prototype.mouseup = function(e) {
|
|||
this.viewer.refresh();
|
||||
}
|
||||
if (this.multi) {
|
||||
var b = this.line.b;
|
||||
const b = this.line.b;
|
||||
this.line = this.viewer.addSegment(b.x, b.y, b.x, b.y, this.viewer.activeLayer);
|
||||
this.viewer.parametricManager.linkObjects([this.line.a, b]);
|
||||
} else {
|
||||
|
|
|
|||
|
|
@ -887,11 +887,13 @@ PanTool.prototype.mousemove = function(e) {
|
|||
PanTool.prototype.mousedown = function(e) {
|
||||
if (e.button == 0) {
|
||||
var picked = this.viewer.pick(e);
|
||||
var i;
|
||||
if (picked.length > 0) {
|
||||
var toSelect;
|
||||
if (e.shiftKey) {
|
||||
var toSelect = picked[0];
|
||||
toSelect = picked[0];
|
||||
var ids = this.viewer.selected.map(function(s){return s.id});
|
||||
for (var i = 0; i < picked.length; i++) {
|
||||
for (i = 0; i < picked.length; i++) {
|
||||
if (ids.indexOf(picked[i].id) != -1) {
|
||||
this.viewer.deselect(picked[i]);
|
||||
} else {
|
||||
|
|
@ -901,9 +903,9 @@ PanTool.prototype.mousedown = function(e) {
|
|||
this.viewer.select([toSelect], false);
|
||||
this.deselectOnUp = false;
|
||||
} else {
|
||||
var toSelect = picked[0];
|
||||
toSelect = picked[0];
|
||||
if (this.viewer.selected.length === 1) {
|
||||
for (var i = 0; i < picked.length - 1; i++) {
|
||||
for (i = 0; i < picked.length - 1; i++) {
|
||||
if (picked[i].id == this.viewer.selected[0].id) {
|
||||
toSelect = picked[i + 1];
|
||||
break;
|
||||
|
|
|
|||
|
|
@ -124,9 +124,9 @@ export function Number(name, initValue, baseStep, round) {
|
|||
propLayout(this.root, name, this.input);
|
||||
}
|
||||
|
||||
export function Combo(id, label) {
|
||||
export function Combo(id, labelText) {
|
||||
this.root = $('<div/>', {'class': 'tc-row tc-ctrl tc-ctrl-combo'});
|
||||
var label = $('<span/>', {'class': 'tc-prop-name', text: label});
|
||||
var label = $('<span/>', {'class': 'tc-prop-name', text: labelText});
|
||||
this.select = $('<select>', {id : id});
|
||||
this.root.append(label)
|
||||
.append($('<div/>', {'class': 'tc-prop-value'}).append(this.select));
|
||||
|
|
|
|||
|
|
@ -307,10 +307,11 @@ export function sketchToPolygons(geom) {
|
|||
|
||||
var loops = Graph.findAllLoops(graph, dict.hashCodeF, dict.equalsF);
|
||||
var polygons = [];
|
||||
for (var li = 0; li < loops.length; ++li) {
|
||||
var loop = loops[li];
|
||||
var li, loop, polyPoints;
|
||||
for (li = 0; li < loops.length; ++li) {
|
||||
loop = loops[li];
|
||||
if (!isCCW(loop)) loop.reverse();
|
||||
var polyPoints = [];
|
||||
polyPoints = [];
|
||||
for (var pi = 0; pi < loop.length; ++pi) {
|
||||
var point = loop[pi];
|
||||
var next = loop[(pi + 1) % loop.length];
|
||||
|
|
@ -328,9 +329,9 @@ export function sketchToPolygons(geom) {
|
|||
console.warn("Points count < 3!");
|
||||
}
|
||||
}
|
||||
for (var li = 0; li < geom.loops.length; ++li) {
|
||||
var loop = geom.loops[li];
|
||||
var polyPoints = loop.slice(0);
|
||||
for (li = 0; li < geom.loops.length; ++li) {
|
||||
loop = geom.loops[li];
|
||||
polyPoints = loop.slice(0);
|
||||
for (var si = 0; si < polyPoints.length; si++) {
|
||||
var conn = polyPoints[si];
|
||||
//reuse a point and ignore b point since it's a guaranteed loop
|
||||
|
|
@ -840,8 +841,9 @@ export function Polygon(shell, holes, normal) {
|
|||
if (!holes) {
|
||||
holes = [];
|
||||
}
|
||||
var h;
|
||||
checkPolygon(shell);
|
||||
for (var h = 0; h < holes.length; ++h) {
|
||||
for (h = 0; h < holes.length; ++h) {
|
||||
checkPolygon(holes[h]);
|
||||
}
|
||||
|
||||
|
|
@ -851,7 +853,7 @@ export function Polygon(shell, holes, normal) {
|
|||
shell = fixCCW(shell, normal);
|
||||
if (holes.length > 0) {
|
||||
var neg = normal.negate();
|
||||
for (var h = 0; h < holes.length; ++h) {
|
||||
for (h = 0; h < holes.length; ++h) {
|
||||
holes[h] = fixCCW(holes[h], neg);
|
||||
}
|
||||
}
|
||||
|
|
|
|||
Loading…
Reference in a new issue