chore: Add eslint prettier phpcs config PSR2

This commit is contained in:
Attila Kerekes 2022-11-28 20:28:42 +01:00 committed by Attila Kerekes
parent a53192beeb
commit d30edb6749
10 changed files with 2417 additions and 297 deletions

3
.eslintignore Normal file
View file

@ -0,0 +1,3 @@
huebee.js
jquery-ui.min.js
bootstrap.js

13
.eslintrc Normal file
View file

@ -0,0 +1,13 @@
{
"extends": ["airbnb-base", "prettier"],
"plugins": ["prettier"],
"rules": {
"prettier/prettier": ["error"]
},
"env": {
"browser": true
},
"globals": {
"$": true
}
}

1325
package-lock.json generated

File diff suppressed because it is too large Load diff

View file

@ -7,10 +7,16 @@
"watch-poll": "mix watch -- --watch-options-poll=1000", "watch-poll": "mix watch -- --watch-options-poll=1000",
"hot": "mix watch --hot", "hot": "mix watch --hot",
"prod": "npm run production", "prod": "npm run production",
"production": "mix --production" "production": "mix --production",
"lint": "eslint 'resources/assets/js/*'"
}, },
"devDependencies": { "devDependencies": {
"bootstrap-sass": "^3.4.3", "bootstrap-sass": "^3.4.3",
"eslint": "^8.28.0",
"eslint-config-airbnb-base": "^15.0.0",
"eslint-config-prettier": "^8.5.0",
"eslint-plugin-import": "^2.26.0",
"eslint-plugin-prettier": "^4.2.1",
"jquery": "^3.6.1", "jquery": "^3.6.1",
"laravel-mix": "^6.0.49", "laravel-mix": "^6.0.49",
"sass": "^1.56.1", "sass": "^1.56.1",

23
phpcs.xml Normal file
View file

@ -0,0 +1,23 @@
<?xml version="1.0"?>
<ruleset name="PHP_CodeSniffer">
<description>The coding standard for our project.</description>
<rule ref="PSR2"/>
<file>app</file>
<file>bootstrap</file>
<file>config</file>
<file>database</file>
<file>resources</file>
<file>routes</file>
<file>tests</file>
<exclude-pattern>bootstrap/cache/*</exclude-pattern>
<exclude-pattern>bootstrap/autoload.php</exclude-pattern>
<exclude-pattern>*/migrations/*</exclude-pattern>
<exclude-pattern>*/seeds/*</exclude-pattern>
<exclude-pattern>*.blade.php</exclude-pattern>
<exclude-pattern>*.js</exclude-pattern>
<!-- Show progression -->
<arg value="p"/>
</ruleset>

2
public/js/app.js vendored

File diff suppressed because one or more lines are too long

View file

@ -1,4 +1,4 @@
{ {
"/css/app.css": "/css/app.css?id=9a25947db63214edd4e6f459200dfa62", "/css/app.css": "/css/app.css?id=9a25947db63214edd4e6f459200dfa62",
"/js/app.js": "/js/app.js?id=b71fe417971ee1aaaaa84e3824221126" "/js/app.js": "/js/app.js?id=894c631b0c521ca3e5df669b4220f77b"
} }

View file

@ -1,31 +1,30 @@
$.when( $.ready ).then(function() { $.when($.ready).then(() => {
const base = (document.querySelector("base") || {}).href;
var base = (document.querySelector('base') || {}).href; const itemID = $("form[data-item-id]").data("item-id");
const fakePassword = "*****";
var itemID = $('form[data-item-id]').data('item-id');
var fakePassword = '*****';
// If in edit mode and password field is present, fill it with stars // If in edit mode and password field is present, fill it with stars
if (itemID) { if (itemID) {
var passwordField = $('input[name="config[password]"]').first(); const passwordField = $('input[name="config[password]"]').first();
if (passwordField.length > 0) { if (passwordField.length > 0) {
passwordField.attr('value', fakePassword); passwordField.attr("value", fakePassword);
} }
} }
if($('.message-container').length) { if ($(".message-container").length) {
setTimeout( setTimeout(() => {
function() $(".message-container").fadeOut();
{
$('.message-container').fadeOut();
}, 3500); }, 3500);
} }
// from https://developer.mozilla.org/en-US/docs/Web/API/Page_Visibility_API // from https://developer.mozilla.org/en-US/docs/Web/API/Page_Visibility_API
// Set the name of the hidden property and the change event for visibility // Set the name of the hidden property and the change event for visibility
var hidden, visibilityChange; let hidden;
if (typeof document.hidden !== "undefined") { // Opera 12.10 and Firefox 18 and later support let visibilityChange;
if (typeof document.hidden !== "undefined") {
// Opera 12.10 and Firefox 18 and later support
hidden = "hidden"; hidden = "hidden";
visibilityChange = "visibilitychange"; visibilityChange = "visibilitychange";
} else if (typeof document.msHidden !== "undefined") { } else if (typeof document.msHidden !== "undefined") {
@ -36,52 +35,57 @@ $.when( $.ready ).then(function() {
visibilityChange = "webkitvisibilitychange"; visibilityChange = "webkitvisibilitychange";
} }
var livestatsRefreshTimeouts = []; const livestatsRefreshTimeouts = [];
var livestatsFuncs = []; const livestatsFuncs = [];
var livestatsContainers = $('.livestats-container'); const livestatsContainers = $(".livestats-container");
function stopLivestatsRefresh() { function stopLivestatsRefresh() {
for (var timeoutId of livestatsRefreshTimeouts) { livestatsRefreshTimeouts.forEach((timeoutId) => {
window.clearTimeout(timeoutId); window.clearTimeout(timeoutId);
} });
} }
function startLivestatsRefresh() { function startLivestatsRefresh() {
for (var fun of livestatsFuncs) { livestatsFuncs.forEach((fun) => {
fun(); fun();
} });
} }
if (livestatsContainers.length > 0) { if (livestatsContainers.length > 0) {
if (typeof document.addEventListener === "undefined" || hidden === undefined) { if (
typeof document.addEventListener === "undefined" ||
hidden === undefined
) {
console.log("This browser does not support visibilityChange"); console.log("This browser does not support visibilityChange");
} else { } else {
document.addEventListener(visibilityChange, function() { document.addEventListener(
visibilityChange,
() => {
if (document[hidden]) { if (document[hidden]) {
stopLivestatsRefresh(); stopLivestatsRefresh();
} else { } else {
startLivestatsRefresh(); startLivestatsRefresh();
} }
}, false); },
false
);
} }
livestatsContainers.each(function (index) { livestatsContainers.each(function (index) {
var id = $(this).data('id'); const id = $(this).data("id");
var dataonly = $(this).data('dataonly'); const dataonly = $(this).data("dataonly");
var increaseby = (dataonly == 1) ? 20000 : 1000; const increaseby = dataonly === 1 ? 20000 : 1000;
var container = $(this); const container = $(this);
var max_timer = 30000; const maxTimer = 30000;
var timer = 5000; let timer = 5000;
var fun = function worker() { const fun = function worker() {
$.ajax({ $.ajax({
url: base+'get_stats/'+id, url: `${base}get_stats/${id}`,
dataType: 'json', dataType: "json",
success: function(data) { success(data) {
container.html(data.html); container.html(data.html);
if(data.status == 'active') timer = increaseby; if (data.status === "active") timer = increaseby;
else { else if (timer < maxTimer) timer += 2000;
if(timer < max_timer) timer += 2000;
}
}, },
complete: function(jqXHR) { complete(jqXHR) {
if (jqXHR.status > 299) { if (jqXHR.status > 299) {
// Stop polling when we get errors // Stop polling when we get errors
return; return;
@ -89,29 +93,27 @@ $.when( $.ready ).then(function() {
// Schedule the next request when the current one's complete // Schedule the next request when the current one's complete
livestatsRefreshTimeouts[index] = window.setTimeout(worker, timer); livestatsRefreshTimeouts[index] = window.setTimeout(worker, timer);
} },
}); });
}; };
livestatsFuncs[index] = fun; livestatsFuncs[index] = fun;
fun(); fun();
}); });
} }
function readURL(input) { function readURL(input) {
if (input.files && input.files[0]) { if (input.files && input.files[0]) {
var reader = new FileReader(); const reader = new FileReader();
reader.onload = function (e) { reader.onload = function (e) {
$('#appimage img').attr('src', e.target.result); $("#appimage img").attr("src", e.target.result);
}; };
reader.readAsDataURL(input.files[0]); reader.readAsDataURL(input.files[0]);
} }
} }
$('#upload').change(function() { $("#upload").change(function () {
readURL(this); readURL(this);
}); });
/* $(".droppable").droppable({ /* $(".droppable").droppable({
@ -131,151 +133,158 @@ $.when( $.ready ).then(function() {
} }
}); */ }); */
$( '#sortable' ).sortable({ $("#sortable").sortable({
stop: function (event, ui) { stop() {
var idsInOrder = $('#sortable').sortable('toArray', { const idsInOrder = $("#sortable").sortable("toArray", {
attribute: 'data-id' attribute: "data-id",
}); });
$.post( $.post(`${base}order`, { order: idsInOrder });
base+'order', },
{ order:idsInOrder }
);
}
}); });
$('#sortable').sortable('disable'); $("#sortable").sortable("disable");
$('#main').on('mouseenter', '#sortable.ui-sortable-disabled .item', function () { $("#main")
$(this).siblings('.tooltip').addClass('active') .on("mouseenter", "#sortable.ui-sortable-disabled .item", function () {
$('.refresh', this).addClass('active') $(this).siblings(".tooltip").addClass("active");
}).on('mouseleave', '.item', function () { $(".refresh", this).addClass("active");
$(this).siblings('.tooltip').removeClass('active')
$('.refresh', this).removeClass('active')
}) })
$('#config-buttons').on('mouseenter', 'a', function () { .on("mouseleave", ".item", function () {
$('.tooltip', this).addClass('active'); $(this).siblings(".tooltip").removeClass("active");
}).on('mouseleave', 'a', function () { $(".refresh", this).removeClass("active");
$('.tooltip', this).removeClass('active'); });
$("#config-buttons")
.on("mouseenter", "a", function () {
$(".tooltip", this).addClass("active");
}) })
.on("mouseleave", "a", function () {
$(".tooltip", this).removeClass("active");
});
$('.searchform > form').on('submit', function (event) { $(".searchform > form").on("submit", (event) => {
if ($('#search-container select[name=provider]').val() === 'tiles') { if ($("#search-container select[name=provider]").val() === "tiles") {
event.preventDefault(); event.preventDefault();
} }
}); });
$('#search-container').on('input', 'input[name=q]', function () { $("#search-container")
const search = this.value .on("input", "input[name=q]", function () {
const items = $('#sortable').children('.item-container') const search = this.value;
if($('#search-container select[name=provider]').val() === 'tiles') { const items = $("#sortable").children(".item-container");
if ($("#search-container select[name=provider]").val() === "tiles") {
if (search.length > 0) { if (search.length > 0) {
items.hide() items.hide();
items.filter(function () { items
const name = $(this).data('name').toLowerCase(); .filter(function () {
return name.includes(search.toLowerCase()) const name = $(this).data("name").toLowerCase();
}).show() return name.includes(search.toLowerCase());
})
.show();
} else { } else {
items.show() items.show();
} }
} else { } else {
items.show() items.show();
}
}).on('change', 'select[name=provider]', function () {
const items = $('#sortable').children('.item-container')
if($(this).val() === 'tiles') {
$('#search-container button').hide()
const search = $('#search-container input[name=q]').val()
if(search.length > 0) {
items.hide()
items.filter(function () {
const name = $(this).data('name').toLowerCase();
return name.includes(search.toLowerCase())
}).show()
} else {
items.show()
}
} else {
$('#search-container button').show()
items.show()
} }
}) })
.on("change", "select[name=provider]", function () {
$('#app').on('click', '#config-button', function(e) { const items = $("#sortable").children(".item-container");
e.preventDefault(); if ($(this).val() === "tiles") {
var app = $('#app'); $("#search-container button").hide();
var active = (app.hasClass('header')); const search = $("#search-container input[name=q]").val();
app.toggleClass('header'); if (search.length > 0) {
if(active) { items.hide();
$('.add-item').hide(); items
$('.item-edit').hide(); .filter(function () {
$('#app').removeClass('sidebar'); const name = $(this).data("name").toLowerCase();
$('#sortable .tooltip').css('display', '') return name.includes(search.toLowerCase());
$('#sortable').sortable('disable'); })
.show();
} else { } else {
$('#sortable .tooltip').css('display', 'none') items.show();
$('#sortable').sortable('enable'); }
setTimeout(function() { } else {
$('.add-item').fadeIn(); $("#search-container button").show();
$('.item-edit').fadeIn(); items.show();
}
});
$("#app")
.on("click", "#config-button", (e) => {
e.preventDefault();
const app = $("#app");
const active = app.hasClass("header");
app.toggleClass("header");
if (active) {
$(".add-item").hide();
$(".item-edit").hide();
$("#app").removeClass("sidebar");
$("#sortable .tooltip").css("display", "");
$("#sortable").sortable("disable");
} else {
$("#sortable .tooltip").css("display", "none");
$("#sortable").sortable("enable");
setTimeout(() => {
$(".add-item").fadeIn();
$(".item-edit").fadeIn();
}, 350); }, 350);
} }
}).on('click', '#add-item, #pin-item', function(e) { })
.on("click", "#add-item, #pin-item", (e) => {
e.preventDefault(); e.preventDefault();
var app = $('#app'); const app = $("#app");
var active = (app.hasClass('sidebar')); // const active = app.hasClass("sidebar");
app.toggleClass('sidebar'); app.toggleClass("sidebar");
})
}).on('click', '.close-sidenav', function(e) { .on("click", ".close-sidenav", (e) => {
e.preventDefault(); e.preventDefault();
var app = $('#app'); const app = $("#app");
app.removeClass('sidebar'); app.removeClass("sidebar");
})
}).on('click', '#test_config', function(e) { .on("click", "#test_config", (e) => {
e.preventDefault(); e.preventDefault();
var apiurl = $('#create input[name=url]').val(); let apiurl = $("#create input[name=url]").val();
var override_url = $('#sapconfig input[name="config[override_url]"]').val(); const overrideUrl = $(
if(override_url.length && override_url != '') { '#sapconfig input[name="config[override_url]"]'
apiurl = override_url; ).val();
if (overrideUrl.length && overrideUrl !== "") {
apiurl = overrideUrl;
} }
var data = {}; const data = {};
data['url'] = apiurl; data.url = apiurl;
$('.config-item').each(function(index){ $(".config-item").each(function () {
var config = $(this).data('config'); const config = $(this).data("config");
data[config] = $(this).val(); data[config] = $(this).val();
}); });
data['id'] = $('form[data-item-id]').data('item-id'); data.id = $("form[data-item-id]").data("item-id");
if (data.password && data.password === fakePassword) { if (data.password && data.password === fakePassword) {
data.password = ''; data.password = "";
} }
$.post(base+'test_config', { data: data }, function(data) { $.post(`${base}test_config`, { data }, (responseData) => {
alert(data); alert(responseData);
}); });
}); });
$('#pinlist').on('click', 'a', function(e) { $("#pinlist").on("click", "a", function (e) {
e.preventDefault(); e.preventDefault();
var current = $(this); const current = $(this);
var id = current.data('id'); const id = current.data("id");
var tag = current.data('tag'); const tag = current.data("tag");
$.get(base+'items/pintoggle/'+id+'/true/'+tag, function(data) { $.get(`${base}items/pintoggle/${id}/true/${tag}`, (data) => {
var inner = $(data).filter('#sortable').html(); const inner = $(data).filter("#sortable").html();
$('#sortable').html(inner); $("#sortable").html(inner);
current.toggleClass('active'); current.toggleClass("active");
}); });
}); });
$('#itemform').on('submit', function(e) { $("#itemform").on("submit", () => {
var passwordField = $('input[name="config[password]"]').first(); const passwordField = $('input[name="config[password]"]').first();
if (passwordField.length > 0) { if (passwordField.length > 0) {
if (passwordField.attr('value') === fakePassword) { if (passwordField.attr("value") === fakePassword) {
passwordField.attr('value', ''); passwordField.attr("value", "");
} }
} }
}); });
}); });

View file

@ -1,4 +1,4 @@
const focusSearch = event => { const focusSearch = (event) => {
const searchInput = document.querySelector('input[name="q"]'); const searchInput = document.querySelector('input[name="q"]');
if (searchInput) { if (searchInput) {
event.preventDefault(); event.preventDefault();
@ -6,33 +6,40 @@ const focusSearch = event => {
} }
}; };
const openFirstNonHiddenItem = event => { const openFirstNonHiddenItem = (event) => {
if (event.target !== document.querySelector('input[name="q"]')) { if (event.target !== document.querySelector('input[name="q"]')) {
return; return;
} }
if (document.querySelector('#search-container select[name=provider]').value !== 'tiles') { const providerSelect = document.querySelector(
"#search-container select[name=provider]"
);
if (providerSelect.value !== "tiles") {
return; return;
} }
const item = document.querySelector('#sortable section.item-container:not([style="display: none;"]) a'); const item = document.querySelector(
'#sortable section.item-container:not([style="display: none;"]) a'
);
if ('href' in item) { if ("href" in item) {
event.preventDefault(); event.preventDefault();
window.open(item.href); window.open(item.href);
} }
}; };
const KEY_BINDINGS = { const KEY_BINDINGS = {
'/': focusSearch, "/": focusSearch,
'Enter': openFirstNonHiddenItem Enter: openFirstNonHiddenItem,
}; };
document.addEventListener('keydown', function (event) { document.addEventListener("keydown", (event) => {
try { try {
if (event.key in KEY_BINDINGS) { if (event.key in KEY_BINDINGS) {
KEY_BINDINGS[event.key](event); KEY_BINDINGS[event.key](event);
} }
} catch (e) { } catch (e) {
// Nothing to do
} }
}); });

778
yarn.lock

File diff suppressed because it is too large Load diff