mirror of
https://github.com/NohamR/BetterYGG.git
synced 2026-01-10 08:18:19 +00:00
[1.2] Adding a linter and reformat all code
This commit is contained in:
1
.gitattributes
vendored
Normal file
1
.gitattributes
vendored
Normal file
@@ -0,0 +1 @@
|
|||||||
|
*.js text eol=lf
|
||||||
1
.gitignore
vendored
1
.gitignore
vendored
@@ -1,3 +1,4 @@
|
|||||||
*.zip
|
*.zip
|
||||||
.vscode
|
.vscode
|
||||||
Capture
|
Capture
|
||||||
|
.eslintrc.json
|
||||||
|
|||||||
@@ -1,3 +1,3 @@
|
|||||||
var downloadButton = document.querySelector('a.butt');
|
var downloadButton = document.querySelector('a.butt');
|
||||||
downloadButton.onclick = function(){}
|
downloadButton.onclick = function () {};
|
||||||
downloadButton.removeAttribute('onclick');
|
downloadButton.removeAttribute('onclick');
|
||||||
|
|||||||
@@ -2,14 +2,12 @@
|
|||||||
injectScript(chrome.extension.getURL('contentScripts/addTorrent/accessAddTorrent.js'), 'head');
|
injectScript(chrome.extension.getURL('contentScripts/addTorrent/accessAddTorrent.js'), 'head');
|
||||||
injectLink(chrome.extension.getURL("css/style.css"), 'head');
|
injectLink(chrome.extension.getURL("css/style.css"), 'head');
|
||||||
|
|
||||||
/********************************************************************/
|
|
||||||
/********************************************************************/
|
|
||||||
/********************************************************************/
|
/********************************************************************/
|
||||||
|
|
||||||
var path = window.location.pathname;
|
var path = window.location.pathname;
|
||||||
|
|
||||||
/* Add an info line to the table */
|
/* Add an info line to the table */
|
||||||
var tableLines = document.querySelectorAll('table.infos-torrent tbody tr')
|
var tableLines = document.querySelectorAll('table.infos-torrent tbody tr');
|
||||||
var downloadLine = tableLines[1];
|
var downloadLine = tableLines[1];
|
||||||
var torrentInfo = downloadLine.cloneNode(true);
|
var torrentInfo = downloadLine.cloneNode(true);
|
||||||
torrentInfo.style = "display: none";
|
torrentInfo.style = "display: none";
|
||||||
@@ -17,43 +15,44 @@ downloadLine.insertAdjacentElement('afterend', torrentInfo);
|
|||||||
|
|
||||||
/* Add third party download button */
|
/* Add third party download button */
|
||||||
var downloadButton = downloadLine.querySelector('a.butt');
|
var downloadButton = downloadLine.querySelector('a.butt');
|
||||||
flexButton = document.createElement('a');
|
var flexButton = document.createElement('a');
|
||||||
flexButton.appendChild(document.createTextNode("Télécharger via discord "));
|
flexButton.appendChild(document.createTextNode("Télécharger via discord "));
|
||||||
var span = document.createElement('span');
|
var span = document.createElement('span');
|
||||||
span.className = "ico_download";
|
span.className = "ico_download";
|
||||||
flexButton.appendChild(span);
|
flexButton.appendChild(span);
|
||||||
flexButton.className = "butt discord"
|
flexButton.className = "butt discord";
|
||||||
flexButton.style = "display: none";
|
flexButton.style = "display: none";
|
||||||
flexButton.addEventListener('click', addToDiscord);
|
flexButton.addEventListener('click', addToDiscord);
|
||||||
downloadButton.parentElement.appendChild(flexButton);
|
downloadButton.parentElement.appendChild(flexButton);
|
||||||
|
|
||||||
/* Retrieve torrent data from page*/
|
/* Retrieve torrent data from page*/
|
||||||
var torrentId = (/.*\/torrent\/.*\/.*\/(\d+)\-/g).exec(window.location.pathname);
|
var torrentId = (/.*\/torrent\/.*\/.*\/(\d+)-/g).exec(window.location.pathname);
|
||||||
if (torrentId) {
|
if (torrentId) {
|
||||||
torrentId = torrentId[1]
|
torrentId = torrentId[1];
|
||||||
}
|
}
|
||||||
var torrentTitle = document.querySelector('div#title h1').textContent.trim().split(".").join(" ");
|
var torrentTitle = document.querySelector('div#title h1').textContent.trim().split(".").join(" ");
|
||||||
torrentYear = (/(19\d{2}|2\d{3})/g).exec(torrentTitle)
|
var torrentYear = (/(19\d{2}|2\d{3})/g).exec(torrentTitle);
|
||||||
if (torrentYear) {
|
if (torrentYear) {
|
||||||
torrentYear = torrentYear[1]
|
torrentYear = torrentYear[1];
|
||||||
}
|
}
|
||||||
if(torrentTitle.includes('1080'))
|
var torrentQuality = '';
|
||||||
|
if (torrentTitle.includes('1080')) {
|
||||||
torrentQuality = '1080p';
|
torrentQuality = '1080p';
|
||||||
else if(torrentTitle.includes('720'))
|
} else if (torrentTitle.includes('720')) {
|
||||||
torrentQuality = '720p';
|
torrentQuality = '720p';
|
||||||
else if(torrentTitle.includes('480'))
|
} else if (torrentTitle.includes('480')) {
|
||||||
torrentQuality = '480p';
|
torrentQuality = '480p';
|
||||||
|
}
|
||||||
|
|
||||||
/* Retrieve credentials from Google Storage*/
|
/* Retrieve credentials from Google Storage*/
|
||||||
var discordWebhookUrl, discordUserName, categories;
|
var discordWebhookUrl, discordUserName, categories;
|
||||||
chrome.storage.sync.get(['yggToken', 'discordWebhookUrl', 'discordUserName', 'displayDiscord', 'displayAddCategories', 'categories', 'defaultCategories'], function (value) {
|
chrome.storage.sync.get(['yggToken', 'discordWebhookUrl', 'discordUserName', 'displayDiscord', 'displayAddCategories', 'categories', 'defaultCategories'], function (value) {
|
||||||
if (value.yggToken) {
|
if (value.yggToken) {
|
||||||
downloadButton.setAttribute('href', "https://www2.yggtorrent.ch/rss/download?id=" + torrentId + "&passkey=" + value.yggToken);
|
downloadButton.setAttribute('href', "https://www2.yggtorrent.ch/rss/download?id=" + torrentId + "&passkey=" + value.yggToken);
|
||||||
}
|
} else {
|
||||||
else{
|
|
||||||
var alertYggToken = '<div id="error_ygg_button_alert" class="alert alert-danger" role="alert" style="margin-bottom:0;">Une erreur est survenue, Vérifiez que votre token Ygg soit chargé !</div>';
|
var alertYggToken = '<div id="error_ygg_button_alert" class="alert alert-danger" role="alert" style="margin-bottom:0;">Une erreur est survenue, Vérifiez que votre token Ygg soit chargé !</div>';
|
||||||
if (document.readyState !== "complete") {
|
if (document.readyState !== "complete") {
|
||||||
document.addEventListener('readystatechange', function onReadyStateChange() {
|
document.addEventListener('readystatechange', function () {
|
||||||
downloadLine.childNodes[3].innerHTML = alertYggToken;
|
downloadLine.childNodes[3].innerHTML = alertYggToken;
|
||||||
}, false);
|
}, false);
|
||||||
} else {
|
} else {
|
||||||
@@ -63,29 +62,25 @@ chrome.storage.sync.get(['yggToken', 'discordWebhookUrl', 'discordUserName', 'di
|
|||||||
if (value.displayDiscord) {
|
if (value.displayDiscord) {
|
||||||
if (value.discordWebhookUrl) {
|
if (value.discordWebhookUrl) {
|
||||||
discordWebhookUrl = value.discordWebhookUrl;
|
discordWebhookUrl = value.discordWebhookUrl;
|
||||||
}
|
} else {
|
||||||
else{
|
showAlert('error_discord_button_alert');
|
||||||
showAlert('error_discord_button_alert')
|
|
||||||
}
|
}
|
||||||
if (value.discordUserName) {
|
if (value.discordUserName) {
|
||||||
discordUserName = value.discordUserName;
|
discordUserName = value.discordUserName;
|
||||||
}
|
} else {
|
||||||
else{
|
discordUserName = "BetterYGG - Extension";
|
||||||
discordUserName = "BetterYGG - Extension"
|
|
||||||
}
|
}
|
||||||
|
|
||||||
if (value.displayAddCategories) {
|
if (value.displayAddCategories) {
|
||||||
if (value.categories) {
|
if (value.categories) {
|
||||||
categories = value.categories;
|
categories = value.categories;
|
||||||
if (categories.length === 0) {
|
if (categories.length === 0) {
|
||||||
showAlert('error_categories_alert')
|
showAlert('error_categories_alert');
|
||||||
}
|
}
|
||||||
|
} else {
|
||||||
|
showAlert('error_categories_alert');
|
||||||
}
|
}
|
||||||
else{
|
} else {
|
||||||
showAlert('error_categories_alert')
|
|
||||||
}
|
|
||||||
}
|
|
||||||
else {
|
|
||||||
if (value.defaultCategories) {
|
if (value.defaultCategories) {
|
||||||
categories = value.defaultCategories;
|
categories = value.defaultCategories;
|
||||||
}
|
}
|
||||||
@@ -93,14 +88,16 @@ chrome.storage.sync.get(['yggToken', 'discordWebhookUrl', 'discordUserName', 'di
|
|||||||
|
|
||||||
/* Retrieve torrent data from page*/
|
/* Retrieve torrent data from page*/
|
||||||
var torrentType = getTypeFromUrl(categories);
|
var torrentType = getTypeFromUrl(categories);
|
||||||
var torrentEpisode = '', torrentSeason = '', torrentQuality = '';
|
var torrentEpisode = '', torrentSeason = '';
|
||||||
if (torrentType.season) {
|
if (torrentType.season) {
|
||||||
document.querySelectorAll('a.term').forEach(function (element) {
|
document.querySelectorAll('a.term').forEach(function (element) {
|
||||||
var key = element.innerHTML
|
var key = element.innerHTML;
|
||||||
if(key.includes('Saison'))
|
if (key.includes('Saison')) {
|
||||||
torrentSeason = key.replace('Saison ', '');
|
torrentSeason = key.replace('Saison ', '');
|
||||||
if(key.includes('Episode'))
|
}
|
||||||
|
if (key.includes('Episode')) {
|
||||||
torrentEpisode = key.replace('Episode ', '');
|
torrentEpisode = key.replace('Episode ', '');
|
||||||
|
}
|
||||||
});
|
});
|
||||||
}
|
}
|
||||||
|
|
||||||
@@ -111,7 +108,7 @@ chrome.storage.sync.get(['yggToken', 'discordWebhookUrl', 'discordUserName', 'di
|
|||||||
left.childNodes[1].className = 'ico_info-circle';
|
left.childNodes[1].className = 'ico_info-circle';
|
||||||
var right = torrentInfo.childNodes[3];
|
var right = torrentInfo.childNodes[3];
|
||||||
/* Add alert banners */
|
/* Add alert banners */
|
||||||
right.innerHTML = '<div id="valid_form_alert" class="alert alert-success" role="alert" style="display: none">C\'est un succes, le torrent a été envoyé !</div>'
|
right.innerHTML = '<div id="valid_form_alert" class="alert alert-success" role="alert" style="display: none">C\'est un succes, le torrent a été envoyé !</div>';
|
||||||
right.innerHTML += '<div id="error_form_alert" class="alert alert-danger" role="alert" style="display: none">Une erreur est survenue, Vérifiez le formulaire çi dessous.!</div>';
|
right.innerHTML += '<div id="error_form_alert" class="alert alert-danger" role="alert" style="display: none">Une erreur est survenue, Vérifiez le formulaire çi dessous.!</div>';
|
||||||
right.innerHTML += '<div id="error_discord_button_alert" class="alert alert-danger" role="alert" style="display: none">Une erreur est survenue, Vérifiez que votre url Discord Webhook soit correcte !</div>';
|
right.innerHTML += '<div id="error_discord_button_alert" class="alert alert-danger" role="alert" style="display: none">Une erreur est survenue, Vérifiez que votre url Discord Webhook soit correcte !</div>';
|
||||||
right.innerHTML += '<div id="error_categories_alert" class="alert alert-danger" role="alert" style="display: none">Une erreur est survenue, La liste des catégories est vide !</div>';
|
right.innerHTML += '<div id="error_categories_alert" class="alert alert-danger" role="alert" style="display: none">Une erreur est survenue, La liste des catégories est vide !</div>';
|
||||||
@@ -127,7 +124,7 @@ chrome.storage.sync.get(['yggToken', 'discordWebhookUrl', 'discordUserName', 'di
|
|||||||
row.appendChild(getInputCol("Titre", "title", ["error"], "text", torrentTitle,
|
row.appendChild(getInputCol("Titre", "title", ["error"], "text", torrentTitle,
|
||||||
{
|
{
|
||||||
onInput: function () {
|
onInput: function () {
|
||||||
this.classList.remove('error')
|
this.classList.remove('error');
|
||||||
}
|
}
|
||||||
})
|
})
|
||||||
);
|
);
|
||||||
@@ -138,3 +135,261 @@ chrome.storage.sync.get(['yggToken', 'discordWebhookUrl', 'discordUserName', 'di
|
|||||||
flexButton.style.display = "";
|
flexButton.style.display = "";
|
||||||
}
|
}
|
||||||
});
|
});
|
||||||
|
|
||||||
|
/*************/
|
||||||
|
/* FUNCTIONS */
|
||||||
|
/*************/
|
||||||
|
|
||||||
|
function alert(id) {
|
||||||
|
document.querySelectorAll('.alert').forEach(function (elem) {
|
||||||
|
elem.style.display = "none";
|
||||||
|
});
|
||||||
|
document.getElementById(id).style.display = "block";
|
||||||
|
}
|
||||||
|
|
||||||
|
function showAlert(id) {
|
||||||
|
if (document.readyState !== "complete") {
|
||||||
|
document.addEventListener('readystatechange', function () {
|
||||||
|
alert(id);
|
||||||
|
}, false);
|
||||||
|
} else {
|
||||||
|
alert(id);
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
function addToDiscord() {
|
||||||
|
if (discordWebhookUrl === undefined) {
|
||||||
|
showAlert('error_discord_button_alert');
|
||||||
|
return;
|
||||||
|
}
|
||||||
|
|
||||||
|
var inputs = document.forms['form_info'].querySelectorAll('input, select');
|
||||||
|
var dict = {};
|
||||||
|
|
||||||
|
for (var i = 0; i < inputs.length; i++) {
|
||||||
|
var input = inputs[i];
|
||||||
|
if (!input) {
|
||||||
|
continue;
|
||||||
|
}
|
||||||
|
if (input.className.includes('error')) {
|
||||||
|
showAlert('error_form_alert');
|
||||||
|
return;
|
||||||
|
}
|
||||||
|
dict[input.name] = input.value;
|
||||||
|
}
|
||||||
|
|
||||||
|
var data = {
|
||||||
|
content: JSON.stringify(dict),
|
||||||
|
username: discordUserName,
|
||||||
|
};
|
||||||
|
|
||||||
|
var xhr = new XMLHttpRequest();
|
||||||
|
xhr.open('POST', discordWebhookUrl);
|
||||||
|
xhr.setRequestHeader('Content-Type', 'multipart/form-data');
|
||||||
|
xhr.onload = function () {
|
||||||
|
if (xhr.status === 204) {
|
||||||
|
showAlert('valid_form_alert');
|
||||||
|
} else {
|
||||||
|
showAlert('error_discord_button_alert');
|
||||||
|
}
|
||||||
|
};
|
||||||
|
xhr.send(JSON.stringify(data));
|
||||||
|
}
|
||||||
|
|
||||||
|
/*********************/
|
||||||
|
/* GET HTML ELEMENTS */
|
||||||
|
/*********************/
|
||||||
|
|
||||||
|
function getInput(name, classes, type, value, attrs = {}) {
|
||||||
|
var inputNode = document.createElement('input');
|
||||||
|
inputNode.name = name;
|
||||||
|
inputNode.className = "form-control " + classes.join(" ");
|
||||||
|
inputNode.setAttribute("type", type);
|
||||||
|
for (var key in attrs) {
|
||||||
|
inputNode.setAttribute(key, attrs[key]);
|
||||||
|
}
|
||||||
|
inputNode.value = value;
|
||||||
|
return inputNode;
|
||||||
|
}
|
||||||
|
|
||||||
|
function getSelect(name, classes, options, selected, attrs = {}) {
|
||||||
|
var selectNode = document.createElement('select');
|
||||||
|
selectNode.name = name;
|
||||||
|
selectNode.className = "form-control " + classes.join(" ");
|
||||||
|
for (var key in attrs) {
|
||||||
|
selectNode.setAttribute(key, attrs[key]);
|
||||||
|
}
|
||||||
|
for (var index in options) {
|
||||||
|
var type = options[index];
|
||||||
|
var option = document.createElement("option");
|
||||||
|
option.value = type;
|
||||||
|
option.text = type;
|
||||||
|
if (type === selected) {
|
||||||
|
option.setAttribute("selected", "selected");
|
||||||
|
}
|
||||||
|
selectNode.appendChild(option);
|
||||||
|
}
|
||||||
|
return selectNode;
|
||||||
|
}
|
||||||
|
|
||||||
|
function getFormGroup(input, label, name, size) {
|
||||||
|
var labelNode = document.createElement('label');
|
||||||
|
labelNode.className = "control-label";
|
||||||
|
labelNode.setAttribute("for", name);
|
||||||
|
labelNode.appendChild(document.createTextNode(label));
|
||||||
|
|
||||||
|
var div = document.createElement('div');
|
||||||
|
div.className = "form-group col-" + size;
|
||||||
|
div.appendChild(labelNode);
|
||||||
|
div.appendChild(input);
|
||||||
|
return div;
|
||||||
|
}
|
||||||
|
|
||||||
|
function getInputCol(label, name, classes, type, value, {size = 12, attrs = {}, onInput = false}) {
|
||||||
|
var input = getInput(name, classes, type, value, attrs);
|
||||||
|
if (onInput) {
|
||||||
|
input.addEventListener("input", onInput);
|
||||||
|
}
|
||||||
|
return getFormGroup(input, label, name, size);
|
||||||
|
}
|
||||||
|
|
||||||
|
function getSelectCol(label, name, classes, options, selected, {size = 12, attrs = {}, onInput = false}) {
|
||||||
|
var select = getSelect(name, classes, options, selected, attrs);
|
||||||
|
if (onInput) {
|
||||||
|
select.addEventListener("input", onInput);
|
||||||
|
}
|
||||||
|
return getFormGroup(select, label, name, size);
|
||||||
|
}
|
||||||
|
|
||||||
|
function getSecondRow(torrentType, torrentSeason, torrentEpisode, torrentId, torrentYear, torrentQuality, categories) {
|
||||||
|
var size = 3;
|
||||||
|
var classes = [];
|
||||||
|
var onInput = false;
|
||||||
|
var row = document.createElement('div');
|
||||||
|
row.className = "row";
|
||||||
|
if (torrentType.season) {
|
||||||
|
size = 2;
|
||||||
|
if (torrentSeason === '') {
|
||||||
|
classes = ['error'];
|
||||||
|
}
|
||||||
|
onInput = function () {
|
||||||
|
torrentSeason = formatEpisodeSeason(this.value);
|
||||||
|
this.value = torrentSeason;
|
||||||
|
if (torrentSeason === "") {
|
||||||
|
this.className += ' error';
|
||||||
|
} else {
|
||||||
|
this.classList.remove('error');
|
||||||
|
}
|
||||||
|
};
|
||||||
|
row.appendChild(getInputCol("Saison", "season", classes, "number", torrentSeason, {size: size, attrs: {"min": "0"}, onInput: onInput}));
|
||||||
|
classes = [];
|
||||||
|
onInput = false;
|
||||||
|
|
||||||
|
if (torrentEpisode === '') {
|
||||||
|
classes = ['warning'];
|
||||||
|
}
|
||||||
|
onInput = function () {
|
||||||
|
torrentEpisode = formatEpisodeSeason(this.value);
|
||||||
|
this.value = torrentEpisode;
|
||||||
|
if (torrentEpisode === "") {
|
||||||
|
this.className += ' warning';
|
||||||
|
} else {
|
||||||
|
this.classList.remove('warning');
|
||||||
|
}
|
||||||
|
};
|
||||||
|
row.appendChild(getInputCol("Episode", "episode", classes, "number", torrentEpisode, {size: size, attrs: {"min": "0"}, onInput: onInput}));
|
||||||
|
classes = [];
|
||||||
|
onInput = false;
|
||||||
|
|
||||||
|
var space = document.createElement('div');
|
||||||
|
space.className = 'col-1';
|
||||||
|
row.appendChild(space);
|
||||||
|
row.appendChild(getInputCol("ID", "id", [], "text", torrentId, {size: size}));
|
||||||
|
row.appendChild(space.cloneNode());
|
||||||
|
} else {
|
||||||
|
row.appendChild(getInputCol("ID", "id", [], "text", torrentId, {size: size}));
|
||||||
|
row.appendChild(getInputCol("Year", "year", ['warning'], "text", torrentYear, {size: size,
|
||||||
|
onInput: function () {
|
||||||
|
if (this.value.length !== 4) {
|
||||||
|
this.classList.remove('warning');
|
||||||
|
this.classList += ' error';
|
||||||
|
} else {
|
||||||
|
this.classList.remove('error');
|
||||||
|
this.classList.remove('warning');
|
||||||
|
}
|
||||||
|
}
|
||||||
|
})
|
||||||
|
);
|
||||||
|
}
|
||||||
|
|
||||||
|
row.appendChild(getInputCol("Quality", "quality", [], "text", torrentQuality, {size: size}));
|
||||||
|
|
||||||
|
onInput = function () {
|
||||||
|
torrentType = getTypeFromName(categories, this.options[this.selectedIndex].value);
|
||||||
|
if (torrentType.name === 'unknown') {
|
||||||
|
this.className += ' error';
|
||||||
|
} else {
|
||||||
|
this.classList.remove('error');
|
||||||
|
row.replaceWith(getSecondRow(torrentType, torrentSeason, torrentEpisode, torrentId, torrentYear, torrentQuality, categories));
|
||||||
|
}
|
||||||
|
};
|
||||||
|
var categoriesNameList = categories.map(x => x.name);
|
||||||
|
if (torrentType.name === 'unknown') {
|
||||||
|
classes = ['error'];
|
||||||
|
categoriesNameList.push('unknown');
|
||||||
|
}
|
||||||
|
row.appendChild(getSelectCol('Types', 'type', classes, categoriesNameList, torrentType.name, {size: size, onInput: onInput}));
|
||||||
|
classes = [];
|
||||||
|
onInput = false;
|
||||||
|
|
||||||
|
return row;
|
||||||
|
}
|
||||||
|
|
||||||
|
|
||||||
|
/*********/
|
||||||
|
/* Utils */
|
||||||
|
/*********/
|
||||||
|
|
||||||
|
/* Ensure the episode and season number is nice */
|
||||||
|
function formatEpisodeSeason(value) {
|
||||||
|
if (value > 0 && value <= 9) {
|
||||||
|
if (value.includes("0")) {
|
||||||
|
value = "" + parseInt(value);
|
||||||
|
}
|
||||||
|
value = "0" + value;
|
||||||
|
} else {
|
||||||
|
while (value.substring(0, 1) === "0") {
|
||||||
|
value = value.substring(1, value.length);
|
||||||
|
}
|
||||||
|
}
|
||||||
|
return value;
|
||||||
|
}
|
||||||
|
|
||||||
|
function getTypeFromUrl(categories) {
|
||||||
|
for (var i in categories) {
|
||||||
|
var urls = categories[i].urls;
|
||||||
|
for (var j in urls) {
|
||||||
|
if (path.indexOf(urls[j]) !== -1) {
|
||||||
|
return categories[i];
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
return {
|
||||||
|
name: "unknown",
|
||||||
|
season: false,
|
||||||
|
urls: ["/"]
|
||||||
|
};
|
||||||
|
}
|
||||||
|
|
||||||
|
function getTypeFromName(categories, name) {
|
||||||
|
for (var i in categories) {
|
||||||
|
if (categories[i].name === name) {
|
||||||
|
return categories[i];
|
||||||
|
}
|
||||||
|
}
|
||||||
|
return {
|
||||||
|
name: "unknown",
|
||||||
|
season: false,
|
||||||
|
urls: ["/"]
|
||||||
|
};
|
||||||
|
}
|
||||||
|
|||||||
@@ -1,259 +0,0 @@
|
|||||||
/*************/
|
|
||||||
/* FUNCTIONS */
|
|
||||||
/*************/
|
|
||||||
|
|
||||||
function alert(id){
|
|
||||||
document.querySelectorAll('.alert').forEach(function(elem){
|
|
||||||
elem.style.display = "none";
|
|
||||||
});
|
|
||||||
document.getElementById(id).style.display = "block";
|
|
||||||
}
|
|
||||||
|
|
||||||
function showAlert(id){
|
|
||||||
if (document.readyState !== "complete"){
|
|
||||||
document.addEventListener('readystatechange', function onReadyStateChange() {
|
|
||||||
alert(id);
|
|
||||||
}, false);
|
|
||||||
} else {
|
|
||||||
alert(id);
|
|
||||||
}
|
|
||||||
}
|
|
||||||
|
|
||||||
function addToDiscord() {
|
|
||||||
if(discordWebhookUrl === undefined){
|
|
||||||
showAlert('error_discord_button_alert')
|
|
||||||
return;
|
|
||||||
}
|
|
||||||
|
|
||||||
var inputs = document.forms['form_info'].querySelectorAll('input, select');
|
|
||||||
var dict = {}
|
|
||||||
|
|
||||||
for(var i = 0; i < inputs.length; i++){
|
|
||||||
input = inputs[i]
|
|
||||||
if(!input){
|
|
||||||
continue;
|
|
||||||
}
|
|
||||||
if(input.className.includes('error')){
|
|
||||||
showAlert('error_form_alert');
|
|
||||||
return;
|
|
||||||
}
|
|
||||||
dict[input.name] = input.value;
|
|
||||||
}
|
|
||||||
|
|
||||||
data = {
|
|
||||||
content: JSON.stringify(dict),
|
|
||||||
username: discordUserName,
|
|
||||||
}
|
|
||||||
|
|
||||||
xhr = new XMLHttpRequest();
|
|
||||||
xhr.open('POST', discordWebhookUrl);
|
|
||||||
xhr.setRequestHeader('Content-Type', 'multipart/form-data');
|
|
||||||
xhr.onload = function() {
|
|
||||||
if (xhr.status === 204) {
|
|
||||||
showAlert('valid_form_alert');
|
|
||||||
}
|
|
||||||
else{
|
|
||||||
showAlert('error_discord_button_alert');
|
|
||||||
}
|
|
||||||
};
|
|
||||||
xhr.send(JSON.stringify(data));
|
|
||||||
}
|
|
||||||
|
|
||||||
/*********************/
|
|
||||||
/* GET HTML ELEMENTS */
|
|
||||||
/*********************/
|
|
||||||
|
|
||||||
function getInput(name, classes, type, value, attrs = {}) {
|
|
||||||
var inputNode = document.createElement('input');
|
|
||||||
inputNode.name = name;
|
|
||||||
inputNode.className = "form-control " + classes.join(" ");
|
|
||||||
inputNode.setAttribute("type", type);
|
|
||||||
for (var key in attrs) {
|
|
||||||
inputNode.setAttribute(key, attrs[key]);
|
|
||||||
}
|
|
||||||
inputNode.value = value;
|
|
||||||
return inputNode;
|
|
||||||
}
|
|
||||||
|
|
||||||
function getSelect(name, classes, options, selected, attrs = {}){
|
|
||||||
var selectNode = document.createElement('select');
|
|
||||||
selectNode.name = name;
|
|
||||||
selectNode.className = "form-control " + classes.join(" ");
|
|
||||||
for (var key in attrs) {
|
|
||||||
selectNode.setAttribute(key, attrs[key]);
|
|
||||||
}
|
|
||||||
for (var index in options){
|
|
||||||
var type = options[index];
|
|
||||||
var option = document.createElement("option");
|
|
||||||
option.value = type;
|
|
||||||
option.text = type;
|
|
||||||
if (type === selected)
|
|
||||||
option.setAttribute("selected", "selected");
|
|
||||||
selectNode.appendChild(option);
|
|
||||||
}
|
|
||||||
return selectNode;
|
|
||||||
}
|
|
||||||
|
|
||||||
function getFormGroup(input, label, name, size) {
|
|
||||||
var labelNode = document.createElement('label');
|
|
||||||
labelNode.className = "control-label";
|
|
||||||
labelNode.setAttribute("for", name);
|
|
||||||
labelNode.appendChild(document.createTextNode(label));
|
|
||||||
|
|
||||||
var div = document.createElement('div');
|
|
||||||
div.className = "form-group col-" + size;
|
|
||||||
div.appendChild(labelNode);
|
|
||||||
div.appendChild(input);
|
|
||||||
return div;
|
|
||||||
}
|
|
||||||
|
|
||||||
function getInputCol(label, name, classes, type, value, { size = 12, attrs = {}, onInput = false }){
|
|
||||||
var input = getInput(name, classes, type, value, attrs);
|
|
||||||
if(onInput){
|
|
||||||
input.addEventListener("input", onInput);
|
|
||||||
}
|
|
||||||
return getFormGroup(input, label, name, size);
|
|
||||||
}
|
|
||||||
|
|
||||||
function getSelectCol(label, name, classes, options, selected, { size = 12, attrs = {}, onInput = false }){
|
|
||||||
var select = getSelect(name, classes, options, selected, attrs);
|
|
||||||
if(onInput){
|
|
||||||
select.addEventListener("input", onInput);
|
|
||||||
}
|
|
||||||
return getFormGroup(select, label, name, size);
|
|
||||||
}
|
|
||||||
|
|
||||||
function getSecondRow(torrentType, torrentSeason, torrentEpisode, torrentId, torrentYear, torrentQuality, categories){
|
|
||||||
var size = 3;
|
|
||||||
var classes = [];
|
|
||||||
var onInput = false;
|
|
||||||
var row = document.createElement('div');
|
|
||||||
row.className = "row";
|
|
||||||
if(torrentType.season){
|
|
||||||
size = 2;
|
|
||||||
if(torrentSeason == ''){
|
|
||||||
classes = ['error'];
|
|
||||||
}
|
|
||||||
onInput = function() {
|
|
||||||
torrentSeason = formatEpisodeSeason(this.value);
|
|
||||||
this.value = torrentSeason;
|
|
||||||
if(torrentSeason === "")
|
|
||||||
this.className += ' error';
|
|
||||||
else
|
|
||||||
this.classList.remove('error');
|
|
||||||
}
|
|
||||||
row.appendChild(getInputCol("Saison", "season", classes, "number", torrentSeason, { size:size, attrs:{"min": "0"}, onInput:onInput }));
|
|
||||||
classes = [];
|
|
||||||
onInput = false;
|
|
||||||
|
|
||||||
if(torrentEpisode == ''){
|
|
||||||
classes = ['warning'];
|
|
||||||
}
|
|
||||||
onInput = function() {
|
|
||||||
torrentEpisode = formatEpisodeSeason(this.value);
|
|
||||||
this.value = torrentEpisode;
|
|
||||||
if(torrentEpisode === "")
|
|
||||||
this.className += ' warning';
|
|
||||||
else
|
|
||||||
this.classList.remove('warning');
|
|
||||||
}
|
|
||||||
row.appendChild(getInputCol("Episode", "episode", classes, "number", torrentEpisode,{ size:size, attrs:{"min": "0"}, onInput:onInput }));
|
|
||||||
classes = [];
|
|
||||||
onInput = false;
|
|
||||||
|
|
||||||
var space = document.createElement('div');
|
|
||||||
space.className = 'col-1';
|
|
||||||
row.appendChild(space);
|
|
||||||
row.appendChild(getInputCol("ID", "id", [], "text", torrentId, { size:size }));
|
|
||||||
row.appendChild(space.cloneNode());
|
|
||||||
}
|
|
||||||
else{
|
|
||||||
row.appendChild(getInputCol("ID", "id", [], "text", torrentId, { size:size }));
|
|
||||||
row.appendChild(getInputCol("Year", "year", ['warning'], "text", torrentYear, { size:size,
|
|
||||||
onInput:function() {
|
|
||||||
if(this.value.length != 4){
|
|
||||||
this.classList.remove('warning')
|
|
||||||
this.classList += ' error'
|
|
||||||
}
|
|
||||||
else{
|
|
||||||
this.classList.remove('error')
|
|
||||||
this.classList.remove('warning')
|
|
||||||
}
|
|
||||||
}
|
|
||||||
})
|
|
||||||
);
|
|
||||||
}
|
|
||||||
|
|
||||||
row.appendChild(getInputCol("Quality", "quality", [], "text", torrentQuality, { size:size }));
|
|
||||||
|
|
||||||
onInput = function() {
|
|
||||||
torrentType = getTypeFromName(categories, this.options[this.selectedIndex].value)
|
|
||||||
if(torrentType.name === 'unknown'){
|
|
||||||
this.className += ' error';
|
|
||||||
}
|
|
||||||
else{
|
|
||||||
this.classList.remove('error');
|
|
||||||
row.replaceWith(getSecondRow(torrentType, torrentSeason, torrentEpisode, torrentId, torrentYear, torrentQuality, categories))
|
|
||||||
}
|
|
||||||
}
|
|
||||||
categoriesNameList = categories.map(x => x.name);
|
|
||||||
if(torrentType.name === 'unknown'){
|
|
||||||
classes = ['error'];
|
|
||||||
categoriesNameList.push('unknown');
|
|
||||||
}
|
|
||||||
row.appendChild(getSelectCol('Types', 'type', classes, categoriesNameList, torrentType.name, { size:size, onInput:onInput }));
|
|
||||||
classes = []
|
|
||||||
onInput = false;
|
|
||||||
|
|
||||||
return row
|
|
||||||
}
|
|
||||||
|
|
||||||
|
|
||||||
/*********/
|
|
||||||
/* Utils */
|
|
||||||
/*********/
|
|
||||||
|
|
||||||
/* Ensure the episode and season number is nice */
|
|
||||||
function formatEpisodeSeason(value){
|
|
||||||
if(value > 0 && value <= 9){
|
|
||||||
if(value.includes("0")){
|
|
||||||
value = "" + parseInt(value);
|
|
||||||
}
|
|
||||||
value = "0" + value;
|
|
||||||
}
|
|
||||||
else{
|
|
||||||
while(value.substring(0,1) === "0"){
|
|
||||||
value = value.substring(1, value.length);
|
|
||||||
}
|
|
||||||
}
|
|
||||||
return value;
|
|
||||||
}
|
|
||||||
|
|
||||||
function getTypeFromUrl(categories) {
|
|
||||||
for (var i in categories) {
|
|
||||||
var urls = categories[i].urls
|
|
||||||
for(var j in urls){
|
|
||||||
if(path.indexOf(urls[j]) != -1){
|
|
||||||
return categories[i];
|
|
||||||
}
|
|
||||||
}
|
|
||||||
}
|
|
||||||
return {
|
|
||||||
name: "unknown",
|
|
||||||
season: false,
|
|
||||||
urls: ["/"]
|
|
||||||
};
|
|
||||||
};
|
|
||||||
|
|
||||||
function getTypeFromName(categories, name) {
|
|
||||||
for (var i in categories) {
|
|
||||||
if (categories[i].name === name){
|
|
||||||
return categories[i];
|
|
||||||
}
|
|
||||||
}
|
|
||||||
return {
|
|
||||||
name: "unknown",
|
|
||||||
season: false,
|
|
||||||
urls: ["/"]
|
|
||||||
};
|
|
||||||
};
|
|
||||||
@@ -2,9 +2,10 @@
|
|||||||
injectScript(chrome.extension.getURL('/contentScripts/allPages/accessAllPages.js'), 'head');
|
injectScript(chrome.extension.getURL('/contentScripts/allPages/accessAllPages.js'), 'head');
|
||||||
|
|
||||||
/* disable annoying fuckn popup */
|
/* disable annoying fuckn popup */
|
||||||
popup = document.querySelector('div.ad-alert-wrapper');
|
var popup = document.querySelector('div.ad-alert-wrapper');
|
||||||
if(popup && popup.style.display !== "none")
|
if (popup && popup.style.display !== "none") {
|
||||||
document.querySelector('button.ad-alert-message-continue-btn').click()
|
document.querySelector('button.ad-alert-message-continue-btn').click();
|
||||||
|
}
|
||||||
|
|
||||||
/* Retrieve credentials from Google Storage*/
|
/* Retrieve credentials from Google Storage*/
|
||||||
chrome.storage.sync.get(['searchOrder', 'searchSort'], function (value) {
|
chrome.storage.sync.get(['searchOrder', 'searchSort'], function (value) {
|
||||||
|
|||||||
@@ -1,22 +1,22 @@
|
|||||||
/* Inject scripts don't forget to add them to web_accessible_resources in manifest */
|
/* Inject scripts don't forget to add them to web_accessible_resources in manifest */
|
||||||
injectScript(chrome.extension.getURL('contentScripts/search/accessSearch.js'), 'head');
|
injectScript(chrome.extension.getURL('contentScripts/search/accessSearch.js'), 'head');
|
||||||
|
|
||||||
function addDlButton(idx, torrentId, yggToken) {
|
/********************************************************************/
|
||||||
var cell = table.rows[idx].cells[2];
|
|
||||||
|
/* Retrieve credentials from Google Storage*/
|
||||||
|
chrome.storage.sync.get(['yggToken'], function (value) {
|
||||||
|
if (value.yggToken) {
|
||||||
|
/* Add a download button on each torrent line */
|
||||||
|
var table = document.getElementsByTagName('tbody')[1];
|
||||||
|
for (var i = 0; i < table.rows.length; i++) {
|
||||||
|
var torrentId = table.rows[i].cells[2].children[0].getAttribute('target')
|
||||||
|
var cell = table.rows[i].cells[2];
|
||||||
var downloadButton = document.createElement('a')
|
var downloadButton = document.createElement('a')
|
||||||
var downloadIcon = document.createElement('img')
|
var downloadIcon = document.createElement('img')
|
||||||
downloadIcon.setAttribute('src', chrome.extension.getURL("img/download.png"));
|
downloadIcon.setAttribute('src', chrome.extension.getURL("img/download.png"));
|
||||||
downloadButton.appendChild(downloadIcon);
|
downloadButton.appendChild(downloadIcon);
|
||||||
downloadButton.setAttribute('href', "https://www2.yggtorrent.ch/rss/download?id=" + torrentId + "&passkey=" + yggToken);
|
downloadButton.setAttribute('href', "https://www2.yggtorrent.ch/rss/download?id=" + torrentId + "&passkey=" + value.yggToken);
|
||||||
cell.appendChild(downloadButton);
|
cell.appendChild(downloadButton);
|
||||||
}
|
}
|
||||||
|
|
||||||
chrome.storage.sync.get(['yggToken'], function(value){
|
|
||||||
if(value.yggToken){
|
|
||||||
for (var i = 0; i < table.rows.length; i++) {
|
|
||||||
var torrentId = table.rows[i].cells[2].children[0].getAttribute('target')
|
|
||||||
addDlButton(i, torrentId, value.yggToken);
|
|
||||||
}
|
|
||||||
}
|
}
|
||||||
});
|
});
|
||||||
}
|
|
||||||
@@ -1,3 +1,4 @@
|
|||||||
|
/* eslint-disable no-unused-vars */
|
||||||
function injectScript(file, node) {
|
function injectScript(file, node) {
|
||||||
var th = document.getElementsByTagName(node)[0];
|
var th = document.getElementsByTagName(node)[0];
|
||||||
var s = document.createElement('script');
|
var s = document.createElement('script');
|
||||||
|
|||||||
@@ -30,7 +30,7 @@
|
|||||||
{
|
{
|
||||||
"matches": ["https://*.yggtorrent.ch/torrent/*"],
|
"matches": ["https://*.yggtorrent.ch/torrent/*"],
|
||||||
"run_at": "document_idle",
|
"run_at": "document_idle",
|
||||||
"js": ["js/utilsFunctions.js", "contentScripts/addTorrent/functions.js", "contentScripts/addTorrent/addTorrent.js"]
|
"js": ["js/utilsFunctions.js", "contentScripts/addTorrent/addTorrent.js"]
|
||||||
},
|
},
|
||||||
{
|
{
|
||||||
"matches": ["https://*.yggtorrent.ch/"],
|
"matches": ["https://*.yggtorrent.ch/"],
|
||||||
|
|||||||
@@ -8,7 +8,7 @@ var storedValues = [
|
|||||||
'categories',
|
'categories',
|
||||||
'searchSort',
|
'searchSort',
|
||||||
'searchOrder'
|
'searchOrder'
|
||||||
]
|
];
|
||||||
|
|
||||||
var yggToken = document.getElementById('yggToken');
|
var yggToken = document.getElementById('yggToken');
|
||||||
var discordWebhookUrl = document.getElementById('discordWebhookUrl');
|
var discordWebhookUrl = document.getElementById('discordWebhookUrl');
|
||||||
@@ -30,12 +30,15 @@ var searchSort = document.getElementById('searchSort');
|
|||||||
var searchOrder = document.getElementById('searchOrder');
|
var searchOrder = document.getElementById('searchOrder');
|
||||||
|
|
||||||
chrome.storage.sync.get(storedValues, function (value) {
|
chrome.storage.sync.get(storedValues, function (value) {
|
||||||
if(value.yggToken)
|
if (value.yggToken) {
|
||||||
yggToken.value = value.yggToken;
|
yggToken.value = value.yggToken;
|
||||||
if(value.discordWebhookUrl)
|
}
|
||||||
|
if (value.discordWebhookUrl) {
|
||||||
discordWebhookUrl.value = value.discordWebhookUrl;
|
discordWebhookUrl.value = value.discordWebhookUrl;
|
||||||
if(value.discordUserName)
|
}
|
||||||
|
if (value.discordUserName) {
|
||||||
discordUserName.value = value.discordUserName;
|
discordUserName.value = value.discordUserName;
|
||||||
|
}
|
||||||
if (value.displayDiscord) {
|
if (value.displayDiscord) {
|
||||||
displayDiscord.checked = value.displayDiscord;
|
displayDiscord.checked = value.displayDiscord;
|
||||||
if (displayDiscord.checked) {
|
if (displayDiscord.checked) {
|
||||||
@@ -44,8 +47,7 @@ chrome.storage.sync.get(storedValues, function(value){
|
|||||||
if (displayAddCategories.checked) {
|
if (displayAddCategories.checked) {
|
||||||
addCategories.style.display = "block";
|
addCategories.style.display = "block";
|
||||||
}
|
}
|
||||||
}
|
} else {
|
||||||
else {
|
|
||||||
discordIntegration.style.display = "none";
|
discordIntegration.style.display = "none";
|
||||||
displayAddCategoriesSection.style.display = "none";
|
displayAddCategoriesSection.style.display = "none";
|
||||||
addCategories.style.display = "none";
|
addCategories.style.display = "none";
|
||||||
@@ -54,8 +56,7 @@ chrome.storage.sync.get(storedValues, function(value){
|
|||||||
displayAddCategories.checked = value.displayAddCategories;
|
displayAddCategories.checked = value.displayAddCategories;
|
||||||
if (displayAddCategories.checked) {
|
if (displayAddCategories.checked) {
|
||||||
addCategories.style.display = "block";
|
addCategories.style.display = "block";
|
||||||
}
|
} else {
|
||||||
else {
|
|
||||||
addCategories.style.display = "none";
|
addCategories.style.display = "none";
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
@@ -66,8 +67,8 @@ chrome.storage.sync.get(storedValues, function(value){
|
|||||||
}
|
}
|
||||||
if (value.defaultCategories) {
|
if (value.defaultCategories) {
|
||||||
defaultCategories = value.defaultCategories;
|
defaultCategories = value.defaultCategories;
|
||||||
buttonSaveCategories.addEventListener('click', saveCategories)
|
buttonSaveCategories.addEventListener('click', saveCategories);
|
||||||
buttonRestoreCategories.addEventListener('click', restoreDefaultCategories)
|
buttonRestoreCategories.addEventListener('click', restoreDefaultCategories);
|
||||||
}
|
}
|
||||||
if (value.searchSort) {
|
if (value.searchSort) {
|
||||||
document.querySelector('#searchSort option[value=' + value.searchSort + ']').selected = "selected";
|
document.querySelector('#searchSort option[value=' + value.searchSort + ']').selected = "selected";
|
||||||
@@ -99,8 +100,7 @@ document.addEventListener('DOMContentLoaded', function () {
|
|||||||
if (displayAddCategories.checked) {
|
if (displayAddCategories.checked) {
|
||||||
addCategories.style.display = "block";
|
addCategories.style.display = "block";
|
||||||
}
|
}
|
||||||
}
|
} else {
|
||||||
else {
|
|
||||||
discordIntegration.style.display = "none";
|
discordIntegration.style.display = "none";
|
||||||
displayAddCategoriesSection.style.display = "none";
|
displayAddCategoriesSection.style.display = "none";
|
||||||
addCategories.style.display = "none";
|
addCategories.style.display = "none";
|
||||||
@@ -108,9 +108,9 @@ document.addEventListener('DOMContentLoaded', function () {
|
|||||||
});
|
});
|
||||||
displayAddCategories.addEventListener('input', function () {
|
displayAddCategories.addEventListener('input', function () {
|
||||||
addToStorage('displayAddCategories', this.checked);
|
addToStorage('displayAddCategories', this.checked);
|
||||||
if (this.checked)
|
if (this.checked) {
|
||||||
addCategories.style.display = "block";
|
addCategories.style.display = "block";
|
||||||
else {
|
} else {
|
||||||
addCategories.style.display = "none";
|
addCategories.style.display = "none";
|
||||||
}
|
}
|
||||||
});
|
});
|
||||||
@@ -127,20 +127,20 @@ document.addEventListener('DOMContentLoaded', function () {
|
|||||||
/***********************/
|
/***********************/
|
||||||
|
|
||||||
function makeCategoriesArray() {
|
function makeCategoriesArray() {
|
||||||
lines = Array.from(categoriesTable.children)
|
var lines = Array.from(categoriesTable.children);
|
||||||
var categoriesArray = []
|
var categoriesArray = [];
|
||||||
for (var i in lines) {
|
for (var i in lines) {
|
||||||
var line = lines[i];
|
var line = lines[i];
|
||||||
name = line.getElementsByTagName('input').namedItem('name').value;
|
var name = line.getElementsByTagName('input').namedItem('name').value;
|
||||||
season = line.getElementsByTagName('input').namedItem('season').checked;
|
var season = line.getElementsByTagName('input').namedItem('season').checked;
|
||||||
urls = line.getElementsByTagName('textarea').namedItem('urls').value;
|
var urls = line.getElementsByTagName('textarea').namedItem('urls').value;
|
||||||
urlsArray = urls.split('\n').filter(x => x != '')
|
var urlsArray = urls.split('\n').filter(x => x !== '');
|
||||||
if(name != ''){
|
if (name !== '') {
|
||||||
categoriesArray.push({
|
categoriesArray.push({
|
||||||
name: name,
|
name: name,
|
||||||
season: season,
|
season: season,
|
||||||
urls: urlsArray
|
urls: urlsArray
|
||||||
})
|
});
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
return categoriesArray;
|
return categoriesArray;
|
||||||
@@ -151,11 +151,11 @@ function makeCategoriesTable(categories) {
|
|||||||
for (var i in categories) {
|
for (var i in categories) {
|
||||||
var line = categories[i];
|
var line = categories[i];
|
||||||
var tr = getTr(line.name, line.season, line.urls, "Supprimer", deleteLine);
|
var tr = getTr(line.name, line.season, line.urls, "Supprimer", deleteLine);
|
||||||
tbody.appendChild(tr)
|
tbody.appendChild(tr);
|
||||||
}
|
}
|
||||||
var tr = getTr('', false, [], "Ajouter", addLine);
|
tr = getTr('', false, [], "Ajouter", addLine);
|
||||||
tbody.appendChild(tr)
|
tbody.appendChild(tr);
|
||||||
categoriesTable.parentNode.replaceChild(tbody, categoriesTable)
|
categoriesTable.parentNode.replaceChild(tbody, categoriesTable);
|
||||||
categoriesTable = tbody;
|
categoriesTable = tbody;
|
||||||
}
|
}
|
||||||
|
|
||||||
@@ -189,7 +189,7 @@ function getTr(name, season, urls, buttonText, buttonOnClick){
|
|||||||
|
|
||||||
var tdTrash = document.createElement('td');
|
var tdTrash = document.createElement('td');
|
||||||
var button = document.createElement('button');
|
var button = document.createElement('button');
|
||||||
button.innerText = buttonText
|
button.innerText = buttonText;
|
||||||
button.addEventListener("click", buttonOnClick);
|
button.addEventListener("click", buttonOnClick);
|
||||||
tdTrash.appendChild(button);
|
tdTrash.appendChild(button);
|
||||||
tr.appendChild(tdTrash);
|
tr.appendChild(tdTrash);
|
||||||
@@ -202,15 +202,15 @@ function getTr(name, season, urls, buttonText, buttonOnClick){
|
|||||||
/*******************/
|
/*******************/
|
||||||
|
|
||||||
function addLine() {
|
function addLine() {
|
||||||
this.innerText = "Supprimer"
|
this.innerText = "Supprimer";
|
||||||
this.removeEventListener("click", addLine);
|
this.removeEventListener("click", addLine);
|
||||||
this.addEventListener("click", deleteLine);
|
this.addEventListener("click", deleteLine);
|
||||||
var tr = getTr('', false, [], "Ajouter", addLine);
|
var tr = getTr('', false, [], "Ajouter", addLine);
|
||||||
categoriesTable.appendChild(tr)
|
categoriesTable.appendChild(tr);
|
||||||
}
|
}
|
||||||
|
|
||||||
function deleteLine() {
|
function deleteLine() {
|
||||||
this.parentElement.parentElement.remove()
|
this.parentElement.parentElement.remove();
|
||||||
}
|
}
|
||||||
|
|
||||||
function saveCategories() {
|
function saveCategories() {
|
||||||
@@ -220,7 +220,7 @@ function saveCategories(){
|
|||||||
}
|
}
|
||||||
|
|
||||||
function restoreDefaultCategories() {
|
function restoreDefaultCategories() {
|
||||||
categories = defaultCategories
|
categories = defaultCategories;
|
||||||
addToStorage('categories', categories);
|
addToStorage('categories', categories);
|
||||||
makeCategoriesTable(categories);
|
makeCategoriesTable(categories);
|
||||||
}
|
}
|
||||||
|
|||||||
Reference in New Issue
Block a user