03-Jun-2013 17:02
(Last edited: 28-Jun-2013 17:14)
1
Inventory Draft is a JavaScript program you can copy and run in your browser.
EDIT: Visual guide: http://imgur.com/a/dbNaz#0
EDIT: You can now generate pauper drafts!
EDIT: You can now generate rares-only drafts!
EDIT: You can now specify how many of each rarity you want per pack!
How to "install"


How to run
How to save
Here's the code:
EDIT: Visual guide: http://imgur.com/a/dbNaz#0
EDIT: You can now generate pauper drafts!
EDIT: You can now generate rares-only drafts!
EDIT: You can now specify how many of each rarity you want per pack!
How to "install"
- Copy all of the code below
- Open your favorite text editor (e.g. Notepad, Wordpad, GEdit, etc.)
- Paste the code you copied into the editor
- Save the file as "InventoryDraft.html" wherever you want on your computer
- Open the file in your browser (e.g. right-click -> Open with Chrome)
- In Deckbox, click inventory, hover over View and Hit Export

- Make sure you select Rarity and Image URL options

How to run
- Choose the number of players you want to generate packs for. There are 15 cards per pack and 3 packs per player.
- Upload your CSV file you saved from Deckbox.
- As soon as the file is chosen, the packs are created and displayed.
- If you do not like what was picked, refresh the page and repeat the steps.
How to save
- Once you have found a configuration you like, you may wish to save the file because it was randomly generated and cannot be reproduced
- Right-click the page in your browser and select "Save As"
- Name the file whatever you wish but make sure the file extension is ".html"
Here's the code:
<!DOCTYPE HTML>
<html>
<head>
<title>Inventory Draft</title>
<script src="InventoryDraft.js" ></script>
</head>
<body>
<p><a href="http://deckbox.org/forum/viewtopic.php?id=9790">More detailed instructions here</a></p>
<p><b>Number of players (3 packs per player):</b> <input type="number" id="numPlayers" min="1" max="8" value="1" /></p>
<p><b>Commons:</b><input type="number" id="numcommons" min="0" max="15" value="11" />
<b>Uncommons:</b><input type="number" id="numuncommons" min="0" max="15" value="3" />
<b>Rares:</b><input type="number" id="numrares" min="0" max="15" value="1" /></p>
<p><b>Upload your Inventory CSV file here:</b> <input type="file" id="files" name="files[]" /></p>
<output id="out"></output>
<script>
function CSVToArray(strData) {
strDelimiter = ",";
var objPattern = new RegExp(
(
"(\\" + strDelimiter + "|\\r?\\n|\\r|^)" +
"(?:\"([^\"]*(?:\"\"[^\"]*)*)\"|" +
"([^\"\\" + strDelimiter + "\\r\\n]*))"
),
"gi"
);
var arrData = [[]];
var arrMatches = null;
while (arrMatches = objPattern.exec( strData )){
var strMatchedDelimiter = arrMatches[ 1 ];
if (
strMatchedDelimiter.length &&
(strMatchedDelimiter != strDelimiter)
){
arrData.push( [] );
}
if (arrMatches[ 2 ]){
var strMatchedValue = arrMatches[ 2 ].replace(
new RegExp( "\"\"", "g" ),
"\""
);
} else {
var strMatchedValue = arrMatches[ 3 ];
}
arrData[ arrData.length - 1 ].push( strMatchedValue );
}
return( arrData );
}
function handleFileSelect(opt_startByte, opt_stopByte) {
var commons = [];
var uncommons = [];
var rares = [];
var mythics = [];
var commonsi = [];
var uncommonsi = [];
var raresi = [];
var mythicsi = [];
var numUn = document.getElementById('numuncommons').value;
var numC = document.getElementById('numcommons').value;
var numR = document.getElementById('numrares').value;
var nameCol = "Name";
var rarityCol = "Rarity";
var imageURLCol = "Image URL";
var common = "Common";
var uncommon = "Uncommon";
var rare = "Rare";
var mythic = "MythicRare";
var nameIndex, rarityIndex, imageURLIndex;
var numPlayers = document.getElementById('numPlayers').value;
var files = document.getElementById('files').files;
if (!files.length) {
alert('Please select a file!');
return;
}
var file = files[0];
var start = 0;
var stop = file.size - 1;
var reader = new FileReader();
reader.onload = function(evt) {
var contents = evt.target.result;
var lines = CSVToArray(contents);
var header = lines[0];
nameIndex = header.indexOf(nameCol);
rarityIndex = header.indexOf(rarityCol);
imageURLIndex = header.indexOf(imageURLCol);
for (var i = 1; i < lines.length; i++) {
var line = lines[i];
if (line[rarityIndex] == common) {
commons.push(line[nameIndex]);
commonsi.push(line[imageURLIndex]);
} else if (line[rarityIndex] == uncommon) {
uncommons.push(line[nameIndex]);
uncommonsi.push(line[imageURLIndex]);
} else if (line[rarityIndex] == rare) {
rares.push(line[nameIndex]);
raresi.push(line[imageURLIndex]);
} else if (line[rarityIndex] == mythic) {
mythics.push(line[nameIndex]);
mythicsi.push(line[imageURLIndex]);
} else {
}
}
var output = [];
var chosenc = [];
var chosenu = [];
var chosenr = [];
var chosenm = [];
var rand = 0;
var count = 0;
output.push('<p><i>', commons.length, ' - Number of commons<br>',
uncommons.length, ' - Number of uncommons<br>',
rares.length, ' - Number of rares<br>',
mythics.length, ' - Number of mythics</i></p>');
for (var j = 1; j <= numPlayers; j++) {
for (var k = 1; k <=3; k++) {
count = 0;
output.push('<p><strong>Player ', j, ', Pack ', k, '</strong></p>',
'<table><tr>');
for(var l = 0; l < numC; l++) {
while(true) {
rand = Math.floor(Math.random()*commons.length);
if (chosenc.indexOf(rand) == -1) {
chosenc.push(rand);
break;
}
}
output.push('<td><a target="_blank" href="http://deckbox.org/mtg/',
commons[rand].replace(" ", "%20"), '"><img src="',
commonsi[rand],'"></a></td>');
count = count + 1;
if (count % 5 == 0) { output.push('</tr><tr>'); }
}
for (var m = 0; m < numUn; m++) {
while(true) {
rand = Math.floor(Math.random()*uncommons.length);
if (chosenu.indexOf(rand) == -1) {
chosenu.push(rand);
break;
}
}
output.push('<td><a target="_blank" href="[url=http://deckbox.org/mtg/',]http://deckbox.org/mtg/',[/url]
uncommons[rand].replace(" ", "%20"), '"><img src="',
uncommonsi[rand],'"></a></td>');
count = count + 1;
if (count % 5 == 0) { output.push('</tr><tr>'); }
}
for (var n = 0; n < numR; n++) {
if (Math.floor(Math.random()*8 != 1)) {
while(true) {
rand = Math.floor(Math.random()*rares.length);
if (chosenr.indexOf(rand) == -1) {
chosenr.push(rand);
break;
}
}
output.push('<td><a target="_blank" href="[url=http://deckbox.org/mtg/',]http://deckbox.org/mtg/',[/url]
rares[rand].replace(" ", "%20"), '"><img src="',
raresi[rand],'"></a></td>');
} else {
while(true) {
rand = Math.floor(Math.random()*mythics.length);
if (chosenm.indexOf(rand) == -1) {
chosenm.push(rand);
break;
}
}
output.push('<td><a target="_blank" href="[url=http://deckbox.org/mtg/',]http://deckbox.org/mtg/',[/url]
mythics[rand].replace(" ", "%20"), '"><img src="',
mythicsi[rand],'"></a></td>');
}
count = count + 1;
if (count % 5 == 0) { output.push('</tr><tr>'); }
}
output.push('</tr></table>');
}
}
document.getElementById('out').innerHTML = output.join('');
};
reader.readAsText(file);
}
document.getElementById('files').addEventListener('change', handleFileSelect, false);
</script>
</body>
</html>[/rand][/rand][/rand][/rand][/rand][/rand][/rand][/];
var rand ][/];
var chosenr ][/];
var chosenc ][/imageURLIndex][/nameIndex][/rarityIndex][/imageURLIndex][/nameIndex][/rarityIndex][/imageURLIndex][/nameIndex][/rarityIndex][/imageURLIndex][/nameIndex][/rarityIndex][/i][/0][/0][/];
var mythicsi ][/];
var uncommonsi ][/];
var mythics ][/];
var uncommons ][/ arrData.length - 1 ][/ 3 ][/ 2 ][/] );
}
if (arrMatches[ 2 ][/ 1 ][/[][/^\"\\" + strDelimiter + "\\r\\n][/^\"][/]" /></p>
<output id]