Monday, June 3, 2024
 Popular · Latest · Hot · Upcoming
144
rated 0 times [  146] [ 2]  / answers: 1 / hits: 41910  / 8 Years ago, mon, may 23, 2016, 12:00:00

I am not familiar with new JavaScript ES6 coding conventions and have been given some code where I need it to be plain old JavaScript ES5.



I need to convert this JS code without the use of Babel or any other transpiler. I cannot use Babel as I am not allowed to use it at work.



I realise that all the const can be converted to var but unsure of new arrow functions and other items.



I have tried converting but getting:




Uncaught ReferenceError: line is not defined




The ES6 code that I would like converted to ES5 is:



const data = [{ rec: 1, region: LEFT, intrface: Line-1 },{ rec: 1, region: LEFT, intrface: Line-2 },{ rec: 1, region: RIGHT, intrface: Line-3 },{ rec: 1, region: RIGHT, intrface: Line-4 }];

const s = Snap(#svg);
const height = 40;
const canvasWidth = 400;
const lineWidth = 180;
const rightOffset = canvasWidth/2 - lineWidth;

const leftLines = data.filter((line) => !isRightLine(line));
const rightLines = data.filter(isRightLine);

leftLines.forEach(drawLine);
rightLines.forEach(drawLine);

const numberOfLines = Math.max(leftLines.length, rightLines.length);
const rectSize = 20;
const rectangles = [];

for (let i = 0; i < numberOfLines; i++) {
rectangles.push(drawRect(i));
}

function drawLine(data, index) {
const {intrface} = data;
const isRight = isRightLine(data);
const x = isRight ? canvasWidth/2 + rightOffset : 0;
const y = height * (index + 1);
const stroke = isRight ? 'red' : 'black';

const line = s.line(x, y, x + 180, y);
line.attr({
stroke,
strokeWidth: 1
});

const text = s.text(x + 10, y - 5, intrface);

text.attr({
fill: stroke,
cursor: 'pointer'
});

text.click(() => {
console.log('clicked', data);

//window.location.href = http://stackoverflow.com/;
});
}

function isRightLine({region}) {
return region === 'RIGHT';
}

function drawRect(index) {
const x = canvasWidth/2 - rectSize/2;
const y = height * (index + 1) - rectSize/2;
const rectangle = s.rect(x, y, rectSize, rectSize);

rectangle.attr({
fill: 'black'
});

console.log('rr', x, y);

return rectangle;
}

More From » javascript

 Answers
46

I will assume that since you are not very familiar with es6 you are probably not very familiar with babeljs.io which gives you an option to convert back:



Check this link up.



use strict;

var data = [{ rec: 1, region: LEFT, intrface: Line-1 }, { rec: 1, region: LEFT, intrface: Line-2 }, { rec: 1, region: RIGHT, intrface: Line-3 }, { rec: 1, region: RIGHT, intrface: Line-4 }];

var s = Snap(#svg);
var height = 40;
var canvasWidth = 400;
var lineWidth = 180;
var rightOffset = canvasWidth / 2 - lineWidth;

var leftLines = data.filter(function (line) {
return !isRightLine(line);
});
var rightLines = data.filter(isRightLine);

leftLines.forEach(drawLine);
rightLines.forEach(drawLine);

var numberOfLines = Math.max(leftLines.length, rightLines.length);
var rectSize = 20;
var rectangles = [];

for (var i = 0; i < numberOfLines; i++) {
rectangles.push(drawRect(i));
}

function drawLine(data, index) {
var intrface = data.intrface;

var isRight = isRightLine(data);
var x = isRight ? canvasWidth / 2 + rightOffset : 0;
var y = height * (index + 1);
var stroke = isRight ? 'red' : 'black';

var line = s.line(x, y, x + 180, y);
line.attr({
stroke: stroke,
strokeWidth: 1
});

var text = s.text(x + 10, y - 5, intrface);

text.attr({
fill: stroke,
cursor: 'pointer'
});

text.click(function () {
console.log('clicked', data);

//window.location.href = http://stackoverflow.com/;
});
}

// you might want to change this - howeverever you will have to change everywhere in the code that calls isRightLine to pass a primitive vs an object.
function isRightLine(_ref) {
var region = _ref.region;

return region === 'RIGHT';
}

function drawRect(index) {
var x = canvasWidth / 2 - rectSize / 2;
var y = height * (index + 1) - rectSize / 2;
var rectangle = s.rect(x, y, rectSize, rectSize);

rectangle.attr({
fill: 'black'
});

console.log('rr', x, y);

return rectangle;
}

[#62065] Friday, May 20, 2016, 8 Years  [reply] [flag answer]
Only authorized users can answer the question. Please sign in first, or register a free account.
soniap

Total Points: 626
Total Questions: 119
Total Answers: 110

Location: Palestine
Member since Tue, Jul 20, 2021
3 Years ago
;