[ Disclaimer, Create new user --- Wiki markup help, Install P99 ]
Difference between revisions of "Magelo Blue:Loramin"
From Project 1999 Wiki
| Line 1: | Line 1: | ||
| − | + | var allSlots = [ | |
| + | 'Neck', 'Head', 'Ears1', 'Ears2', 'Face', 'Chest', 'Arms', 'Back', 'Waist', 'Shoulders', | ||
| + | 'Wrists1', 'Wrists2', 'Legs', 'Hands', 'Fingers1', 'Fingers2', 'Feet', 'Primary', | ||
| + | 'Secondary', 'Range', 'Ammo', 'Inv1', 'Inv2', 'Inv3', 'Inv4', 'Inv5', 'Inv6', 'Inv7', 'Inv8', | ||
| + | ]; | ||
| − | + | var parseEqText = function (eqText) { | |
| − | + | var convertSlot = function (rows, slot) { | |
| − | + | if (slot === 'Ear') return 'Ears' + (rows.Ears1 ? 2 : 1); | |
| − | + | if (slot === 'Fingers') return rows.Fingers1 ? 'Fingers2' : 'Fingers1'; | |
| − | + | if (slot === 'Wrist') return rows.Wrists1 ? 'Wrists2' : 'Wrists1'; | |
| − | + | if (slot.substr(0, 7) === 'General') { | |
| − | + | var index = slot.substr(7, 8); | |
| + | var isBagSlot = '-' === slot.substr(8, 9); | ||
| + | if (!isBagSlot) return 'Inv' + index; | ||
| + | } | ||
| + | return slot; | ||
| + | }; | ||
| − | + | var parseRows = function (eqText) { | |
| − | + | var rows = eqText.split('\n'); | |
| − | + | return rows.reduce(function (memo, row) { | |
| − | + | var slot = convertSlot(memo, row.split(' ')[0]); | |
| − | + | var value = row.split(' ')[1]; | |
| − | + | memo[slot] = value === 'Empty' ? '' : value; | |
| − | + | return memo; | |
| + | }, {}); | ||
| + | }; | ||
| − | + | var buildItemsBySlot = function (itemRows) { | |
| − | + | return allSlots.reduce(function (itemsBySlot, slot) { | |
| − | + | itemsBySlot[slot] = itemRows[slot]; | |
| − | + | return itemsBySlot; | |
| − | + | }, {}); | |
| − | + | }; | |
| − | + | ||
| − | + | ||
| − | + | ||
| − | + | ||
| − | + | ||
| − | + | ||
| − | + | ||
| − | + | ||
| − | + | ||
| − | + | ||
| − | + | ||
| − | + | var itemRows = parseRows(eqText); | |
| − | + | return buildItemsBySlot(itemRows); | |
| − | + | }; | |
| − | + | ||
| − | + | var copyMageloCode = function () { | |
| − | + | try { | |
| − | + | var range = document.createRange(); | |
| − | + | range.selectNode($('#magelo-text-output')[0]); | |
| − | + | window.getSelection().addRange(range); | |
| − | + | if (!document.execCommand('copy')) throw new Error(); | |
| − | + | ||
| − | + | ||
| − | + | alert( | |
| − | + | 'Your Magelo code has been copied. You can now paste in your Magelo profile, in ' + | |
| + | 'place of your current equipment section.' | ||
| + | ); | ||
| + | } catch (err) { | ||
| + | alert('Failed to copy code :( Please select and copy the code yourself.'); | ||
| + | } finally { | ||
| + | window.getSelection().removeAllRanges(); | ||
| + | } | ||
| + | }; | ||
| − | + | var onTextareaChange = function (e) { | |
| − | { | + | var parsed = parseEqText($(e.target).val()); |
| − | = | + | var mageloCode = allSlots |
| − | + | .map(function (slot) { | |
| − | + | var newLine = slot === 'Primary' || slot === 'Inv1' ? '\n' : ''; | |
| − | + | return newLine + '* ' + slot + ': ' + (parsed[slot] || ''); | |
| − | + | }) | |
| − | + | .join('\n'); | |
| − | + | ||
| − | + | ||
| − | + | ||
| − | === | + | |
| − | + | ||
| − | + | ||
| − | + | ||
| − | + | ||
| − | + | ||
| − | + | ||
| − | + | ||
| − | + | ||
| − | + | ||
| − | + | ||
| − | + | ||
| − | + | $('#magelo-text-output').text(mageloCode); | |
| + | window.setTimeout(function() { copyMageloCode(); }); | ||
| + | }; | ||
| − | + | $('#magelo-import-placeholder').replaceWith( | |
| − | + | '<textarea id="eq-text-input" style="min-height: 6em; max-width:50em""></textarea>' + | |
| − | + | '<pre id="magelo-text-output" style="min-height: 10em; min-width: 20em; max-width:50em""></pre>' | |
| − | + | ); | |
| − | + | $('#eq-text-input').change(onTextareaChange); | |
| − | + | ||
| − | + | ||
| − | + | ||
| − | + | ||
| − | + | ||
| − | + | ||
| − | + | ||
| − | + | ||
| − | + | ||
| − | + | ||
| − | + | ||
| − | + | ||
| − | + | ||
| − | + | ||
| − | + | ||
| − | + | ||
| − | + | ||
| − | + | ||
| − | + | ||
| − | + | ||
| − | + | ||
| − | + | ||
| − | + | ||
| − | + | ||
| − | + | ||
| − | + | ||
| − | + | ||
| − | + | ||
| − | + | ||
| − | + | ||
| − | + | ||
| − | + | ||
| − | + | ||
| − | < | + | |
| − | + | ||
| − | + | ||
| − | + | ||
| − | + | ||
| − | + | ||
| − | + | ||
| − | + | ||
| − | + | ||
| − | + | ||
| − | + | ||
| − | + | ||
| − | + | ||
| − | + | ||
| − | + | ||
| − | + | ||
| − | + | ||
| − | + | ||
| − | + | ||
| − | + | ||
| − | + | ||
| − | + | ||
| − | + | ||
| − | + | ||
| − | + | ||
| − | + | ||
| − | + | ||
| − | + | ||
| − | + | ||
| − | + | ||
| − | + | ||
| − | + | ||
| − | + | ||
| − | + | ||
| − | + | ||
| − | + | ||
| − | + | ||
| − | + | ||
| − | + | ||
| − | + | ||
| − | + | ||
| − | + | ||
| − | + | ||
| − | + | ||
| − | + | ||
| − | + | ||
| − | + | ||
| − | + | ||
| − | + | ||
| − | + | ||
| − | + | ||
| − | + | ||
| − | + | ||
| − | + | ||
| − | + | ||
| − | + | ||
| − | + | ||
| − | + | ||
| − | + | ||
| − | + | ||
| − | + | ||
| − | + | ||
| − | + | ||
| − | + | ||
| − | + | ||
| − | + | ||
| − | + | ||
| − | + | ||
| − | + | ||
| − | + | ||
| − | + | ||
| − | + | ||
| − | + | ||
| − | + | ||
| − | + | ||
| − | + | ||
| − | + | ||
| − | + | ||
| − | + | ||
| − | + | ||
| − | + | ||
| − | + | ||
| − | + | ||
| − | + | ||
| − | + | ||
| − | + | ||
| − | + | ||
| − | + | ||
| − | + | ||
| − | + | ||
| − | + | ||
| − | + | ||
| − | + | ||
| − | + | ||
| − | + | ||
| − | + | ||
| − | + | ||
| − | + | ||
| − | + | ||
| − | + | ||
| − | + | ||
| − | + | ||
| − | + | ||
| − | + | ||
| − | + | ||
| − | + | ||
| − | + | ||
| − | + | ||
| − | + | ||
| − | + | ||
| − | + | ||
| − | + | ||
| − | + | ||
| − | + | ||
| − | + | ||
| − | + | ||
| − | + | ||
Revision as of 19:08, 25 June 2020
var allSlots = [
'Neck', 'Head', 'Ears1', 'Ears2', 'Face', 'Chest', 'Arms', 'Back', 'Waist', 'Shoulders', 'Wrists1', 'Wrists2', 'Legs', 'Hands', 'Fingers1', 'Fingers2', 'Feet', 'Primary', 'Secondary', 'Range', 'Ammo', 'Inv1', 'Inv2', 'Inv3', 'Inv4', 'Inv5', 'Inv6', 'Inv7', 'Inv8',
];
var parseEqText = function (eqText) {
var convertSlot = function (rows, slot) {
if (slot === 'Ear') return 'Ears' + (rows.Ears1 ? 2 : 1);
if (slot === 'Fingers') return rows.Fingers1 ? 'Fingers2' : 'Fingers1';
if (slot === 'Wrist') return rows.Wrists1 ? 'Wrists2' : 'Wrists1';
if (slot.substr(0, 7) === 'General') {
var index = slot.substr(7, 8);
var isBagSlot = '-' === slot.substr(8, 9);
if (!isBagSlot) return 'Inv' + index;
}
return slot;
};
var parseRows = function (eqText) {
var rows = eqText.split('\n');
return rows.reduce(function (memo, row) {
var slot = convertSlot(memo, row.split(' ')[0]);
var value = row.split(' ')[1];
memo[slot] = value === 'Empty' ? : value;
return memo;
}, {});
};
var buildItemsBySlot = function (itemRows) {
return allSlots.reduce(function (itemsBySlot, slot) {
itemsBySlot[slot] = itemRows[slot];
return itemsBySlot;
}, {});
};
var itemRows = parseRows(eqText); return buildItemsBySlot(itemRows);
};
var copyMageloCode = function () {
try {
var range = document.createRange();
range.selectNode($('#magelo-text-output')[0]);
window.getSelection().addRange(range);
if (!document.execCommand('copy')) throw new Error();
alert(
'Your Magelo code has been copied. You can now paste in your Magelo profile, in ' +
'place of your current equipment section.'
);
} catch (err) {
alert('Failed to copy code :( Please select and copy the code yourself.');
} finally {
window.getSelection().removeAllRanges();
}
};
var onTextareaChange = function (e) {
var parsed = parseEqText($(e.target).val());
var mageloCode = allSlots
.map(function (slot) {
var newLine = slot === 'Primary' || slot === 'Inv1' ? '\n' : ;
return newLine + '* ' + slot + ': ' + (parsed[slot] || );
})
.join('\n');
$('#magelo-text-output').text(mageloCode);
window.setTimeout(function() { copyMageloCode(); });
};
$('#magelo-import-placeholder').replaceWith(
'<textarea id="eq-text-input" style="min-height: 6em; max-width:50em""></textarea>' +''
); $('#eq-text-input').change(onTextareaChange);