chore: Add eslint prettier phpcs config PSR2
This commit is contained in:
parent
a53192beeb
commit
d30edb6749
10 changed files with 2417 additions and 297 deletions
3
.eslintignore
Normal file
3
.eslintignore
Normal file
|
@ -0,0 +1,3 @@
|
|||
huebee.js
|
||||
jquery-ui.min.js
|
||||
bootstrap.js
|
13
.eslintrc
Normal file
13
.eslintrc
Normal 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
1325
package-lock.json
generated
File diff suppressed because it is too large
Load diff
|
@ -7,10 +7,16 @@
|
|||
"watch-poll": "mix watch -- --watch-options-poll=1000",
|
||||
"hot": "mix watch --hot",
|
||||
"prod": "npm run production",
|
||||
"production": "mix --production"
|
||||
"production": "mix --production",
|
||||
"lint": "eslint 'resources/assets/js/*'"
|
||||
},
|
||||
"devDependencies": {
|
||||
"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",
|
||||
"laravel-mix": "^6.0.49",
|
||||
"sass": "^1.56.1",
|
||||
|
|
23
phpcs.xml
Normal file
23
phpcs.xml
Normal 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
2
public/js/app.js
vendored
File diff suppressed because one or more lines are too long
2
public/mix-manifest.json
generated
2
public/mix-manifest.json
generated
|
@ -1,4 +1,4 @@
|
|||
{
|
||||
"/css/app.css": "/css/app.css?id=9a25947db63214edd4e6f459200dfa62",
|
||||
"/js/app.js": "/js/app.js?id=b71fe417971ee1aaaaa84e3824221126"
|
||||
"/js/app.js": "/js/app.js?id=894c631b0c521ca3e5df669b4220f77b"
|
||||
}
|
||||
|
|
|
@ -1,31 +1,30 @@
|
|||
$.when( $.ready ).then(function() {
|
||||
$.when($.ready).then(() => {
|
||||
const base = (document.querySelector("base") || {}).href;
|
||||
|
||||
var base = (document.querySelector('base') || {}).href;
|
||||
|
||||
var itemID = $('form[data-item-id]').data('item-id');
|
||||
var fakePassword = '*****';
|
||||
const itemID = $("form[data-item-id]").data("item-id");
|
||||
const fakePassword = "*****";
|
||||
|
||||
// If in edit mode and password field is present, fill it with stars
|
||||
if (itemID) {
|
||||
var passwordField = $('input[name="config[password]"]').first();
|
||||
const passwordField = $('input[name="config[password]"]').first();
|
||||
|
||||
if (passwordField.length > 0) {
|
||||
passwordField.attr('value', fakePassword);
|
||||
passwordField.attr("value", fakePassword);
|
||||
}
|
||||
}
|
||||
|
||||
if($('.message-container').length) {
|
||||
setTimeout(
|
||||
function()
|
||||
{
|
||||
$('.message-container').fadeOut();
|
||||
if ($(".message-container").length) {
|
||||
setTimeout(() => {
|
||||
$(".message-container").fadeOut();
|
||||
}, 3500);
|
||||
}
|
||||
|
||||
// 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
|
||||
var hidden, visibilityChange;
|
||||
if (typeof document.hidden !== "undefined") { // Opera 12.10 and Firefox 18 and later support
|
||||
let hidden;
|
||||
let visibilityChange;
|
||||
if (typeof document.hidden !== "undefined") {
|
||||
// Opera 12.10 and Firefox 18 and later support
|
||||
hidden = "hidden";
|
||||
visibilityChange = "visibilitychange";
|
||||
} else if (typeof document.msHidden !== "undefined") {
|
||||
|
@ -36,52 +35,57 @@ $.when( $.ready ).then(function() {
|
|||
visibilityChange = "webkitvisibilitychange";
|
||||
}
|
||||
|
||||
var livestatsRefreshTimeouts = [];
|
||||
var livestatsFuncs = [];
|
||||
var livestatsContainers = $('.livestats-container');
|
||||
const livestatsRefreshTimeouts = [];
|
||||
const livestatsFuncs = [];
|
||||
const livestatsContainers = $(".livestats-container");
|
||||
function stopLivestatsRefresh() {
|
||||
for (var timeoutId of livestatsRefreshTimeouts) {
|
||||
livestatsRefreshTimeouts.forEach((timeoutId) => {
|
||||
window.clearTimeout(timeoutId);
|
||||
}
|
||||
});
|
||||
}
|
||||
function startLivestatsRefresh() {
|
||||
for (var fun of livestatsFuncs) {
|
||||
livestatsFuncs.forEach((fun) => {
|
||||
fun();
|
||||
}
|
||||
});
|
||||
}
|
||||
|
||||
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");
|
||||
} else {
|
||||
document.addEventListener(visibilityChange, function() {
|
||||
document.addEventListener(
|
||||
visibilityChange,
|
||||
() => {
|
||||
if (document[hidden]) {
|
||||
stopLivestatsRefresh();
|
||||
} else {
|
||||
startLivestatsRefresh();
|
||||
}
|
||||
}, false);
|
||||
},
|
||||
false
|
||||
);
|
||||
}
|
||||
|
||||
livestatsContainers.each(function (index) {
|
||||
var id = $(this).data('id');
|
||||
var dataonly = $(this).data('dataonly');
|
||||
var increaseby = (dataonly == 1) ? 20000 : 1000;
|
||||
var container = $(this);
|
||||
var max_timer = 30000;
|
||||
var timer = 5000;
|
||||
var fun = function worker() {
|
||||
const id = $(this).data("id");
|
||||
const dataonly = $(this).data("dataonly");
|
||||
const increaseby = dataonly === 1 ? 20000 : 1000;
|
||||
const container = $(this);
|
||||
const maxTimer = 30000;
|
||||
let timer = 5000;
|
||||
const fun = function worker() {
|
||||
$.ajax({
|
||||
url: base+'get_stats/'+id,
|
||||
dataType: 'json',
|
||||
success: function(data) {
|
||||
url: `${base}get_stats/${id}`,
|
||||
dataType: "json",
|
||||
success(data) {
|
||||
container.html(data.html);
|
||||
if(data.status == 'active') timer = increaseby;
|
||||
else {
|
||||
if(timer < max_timer) timer += 2000;
|
||||
}
|
||||
if (data.status === "active") timer = increaseby;
|
||||
else if (timer < maxTimer) timer += 2000;
|
||||
},
|
||||
complete: function(jqXHR) {
|
||||
complete(jqXHR) {
|
||||
if (jqXHR.status > 299) {
|
||||
// Stop polling when we get errors
|
||||
return;
|
||||
|
@ -89,29 +93,27 @@ $.when( $.ready ).then(function() {
|
|||
|
||||
// Schedule the next request when the current one's complete
|
||||
livestatsRefreshTimeouts[index] = window.setTimeout(worker, timer);
|
||||
}
|
||||
},
|
||||
});
|
||||
};
|
||||
livestatsFuncs[index] = fun;
|
||||
fun();
|
||||
});
|
||||
|
||||
}
|
||||
|
||||
function readURL(input) {
|
||||
|
||||
if (input.files && input.files[0]) {
|
||||
var reader = new FileReader();
|
||||
const reader = new FileReader();
|
||||
|
||||
reader.onload = function (e) {
|
||||
$('#appimage img').attr('src', e.target.result);
|
||||
$("#appimage img").attr("src", e.target.result);
|
||||
};
|
||||
|
||||
reader.readAsDataURL(input.files[0]);
|
||||
}
|
||||
}
|
||||
|
||||
$('#upload').change(function() {
|
||||
$("#upload").change(function () {
|
||||
readURL(this);
|
||||
});
|
||||
/* $(".droppable").droppable({
|
||||
|
@ -131,151 +133,158 @@ $.when( $.ready ).then(function() {
|
|||
}
|
||||
}); */
|
||||
|
||||
$( '#sortable' ).sortable({
|
||||
stop: function (event, ui) {
|
||||
var idsInOrder = $('#sortable').sortable('toArray', {
|
||||
attribute: 'data-id'
|
||||
$("#sortable").sortable({
|
||||
stop() {
|
||||
const idsInOrder = $("#sortable").sortable("toArray", {
|
||||
attribute: "data-id",
|
||||
});
|
||||
$.post(
|
||||
base+'order',
|
||||
{ order:idsInOrder }
|
||||
);
|
||||
}
|
||||
|
||||
$.post(`${base}order`, { order: idsInOrder });
|
||||
},
|
||||
});
|
||||
$('#sortable').sortable('disable');
|
||||
$("#sortable").sortable("disable");
|
||||
|
||||
$('#main').on('mouseenter', '#sortable.ui-sortable-disabled .item', function () {
|
||||
$(this).siblings('.tooltip').addClass('active')
|
||||
$('.refresh', this).addClass('active')
|
||||
}).on('mouseleave', '.item', function () {
|
||||
$(this).siblings('.tooltip').removeClass('active')
|
||||
$('.refresh', this).removeClass('active')
|
||||
$("#main")
|
||||
.on("mouseenter", "#sortable.ui-sortable-disabled .item", function () {
|
||||
$(this).siblings(".tooltip").addClass("active");
|
||||
$(".refresh", this).addClass("active");
|
||||
})
|
||||
$('#config-buttons').on('mouseenter', 'a', function () {
|
||||
$('.tooltip', this).addClass('active');
|
||||
}).on('mouseleave', 'a', function () {
|
||||
$('.tooltip', this).removeClass('active');
|
||||
.on("mouseleave", ".item", function () {
|
||||
$(this).siblings(".tooltip").removeClass("active");
|
||||
$(".refresh", 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) {
|
||||
if ($('#search-container select[name=provider]').val() === 'tiles') {
|
||||
$(".searchform > form").on("submit", (event) => {
|
||||
if ($("#search-container select[name=provider]").val() === "tiles") {
|
||||
event.preventDefault();
|
||||
}
|
||||
});
|
||||
|
||||
$('#search-container').on('input', 'input[name=q]', function () {
|
||||
const search = this.value
|
||||
const items = $('#sortable').children('.item-container')
|
||||
if($('#search-container select[name=provider]').val() === 'tiles') {
|
||||
$("#search-container")
|
||||
.on("input", "input[name=q]", function () {
|
||||
const search = this.value;
|
||||
const items = $("#sortable").children(".item-container");
|
||||
if ($("#search-container select[name=provider]").val() === "tiles") {
|
||||
if (search.length > 0) {
|
||||
items.hide()
|
||||
items.filter(function () {
|
||||
const name = $(this).data('name').toLowerCase();
|
||||
return name.includes(search.toLowerCase())
|
||||
}).show()
|
||||
items.hide();
|
||||
items
|
||||
.filter(function () {
|
||||
const name = $(this).data("name").toLowerCase();
|
||||
return name.includes(search.toLowerCase());
|
||||
})
|
||||
.show();
|
||||
} else {
|
||||
items.show()
|
||||
items.show();
|
||||
}
|
||||
} else {
|
||||
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()
|
||||
items.show();
|
||||
}
|
||||
})
|
||||
|
||||
$('#app').on('click', '#config-button', function(e) {
|
||||
e.preventDefault();
|
||||
var app = $('#app');
|
||||
var 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');
|
||||
.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 {
|
||||
$('#sortable .tooltip').css('display', 'none')
|
||||
$('#sortable').sortable('enable');
|
||||
setTimeout(function() {
|
||||
$('.add-item').fadeIn();
|
||||
$('.item-edit').fadeIn();
|
||||
items.show();
|
||||
}
|
||||
} else {
|
||||
$("#search-container button").show();
|
||||
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);
|
||||
|
||||
}
|
||||
}).on('click', '#add-item, #pin-item', function(e) {
|
||||
})
|
||||
.on("click", "#add-item, #pin-item", (e) => {
|
||||
e.preventDefault();
|
||||
var app = $('#app');
|
||||
var active = (app.hasClass('sidebar'));
|
||||
app.toggleClass('sidebar');
|
||||
|
||||
}).on('click', '.close-sidenav', function(e) {
|
||||
const app = $("#app");
|
||||
// const active = app.hasClass("sidebar");
|
||||
app.toggleClass("sidebar");
|
||||
})
|
||||
.on("click", ".close-sidenav", (e) => {
|
||||
e.preventDefault();
|
||||
var app = $('#app');
|
||||
app.removeClass('sidebar');
|
||||
|
||||
}).on('click', '#test_config', function(e) {
|
||||
const app = $("#app");
|
||||
app.removeClass("sidebar");
|
||||
})
|
||||
.on("click", "#test_config", (e) => {
|
||||
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();
|
||||
if(override_url.length && override_url != '') {
|
||||
apiurl = override_url;
|
||||
const overrideUrl = $(
|
||||
'#sapconfig input[name="config[override_url]"]'
|
||||
).val();
|
||||
if (overrideUrl.length && overrideUrl !== "") {
|
||||
apiurl = overrideUrl;
|
||||
}
|
||||
|
||||
var data = {};
|
||||
data['url'] = apiurl;
|
||||
$('.config-item').each(function(index){
|
||||
var config = $(this).data('config');
|
||||
const data = {};
|
||||
data.url = apiurl;
|
||||
$(".config-item").each(function () {
|
||||
const config = $(this).data("config");
|
||||
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) {
|
||||
data.password = '';
|
||||
data.password = "";
|
||||
}
|
||||
|
||||
$.post(base+'test_config', { data: data }, function(data) {
|
||||
alert(data);
|
||||
$.post(`${base}test_config`, { data }, (responseData) => {
|
||||
alert(responseData);
|
||||
});
|
||||
|
||||
});
|
||||
$('#pinlist').on('click', 'a', function(e) {
|
||||
$("#pinlist").on("click", "a", function (e) {
|
||||
e.preventDefault();
|
||||
var current = $(this);
|
||||
var id = current.data('id');
|
||||
var tag = current.data('tag');
|
||||
$.get(base+'items/pintoggle/'+id+'/true/'+tag, function(data) {
|
||||
var inner = $(data).filter('#sortable').html();
|
||||
$('#sortable').html(inner);
|
||||
current.toggleClass('active');
|
||||
const current = $(this);
|
||||
const id = current.data("id");
|
||||
const tag = current.data("tag");
|
||||
$.get(`${base}items/pintoggle/${id}/true/${tag}`, (data) => {
|
||||
const inner = $(data).filter("#sortable").html();
|
||||
$("#sortable").html(inner);
|
||||
current.toggleClass("active");
|
||||
});
|
||||
});
|
||||
$('#itemform').on('submit', function(e) {
|
||||
var passwordField = $('input[name="config[password]"]').first();
|
||||
$("#itemform").on("submit", () => {
|
||||
const passwordField = $('input[name="config[password]"]').first();
|
||||
if (passwordField.length > 0) {
|
||||
if (passwordField.attr('value') === fakePassword) {
|
||||
passwordField.attr('value', '');
|
||||
if (passwordField.attr("value") === fakePassword) {
|
||||
passwordField.attr("value", "");
|
||||
}
|
||||
}
|
||||
});
|
||||
|
||||
});
|
||||
|
|
23
resources/assets/js/keyBindings.js
vendored
23
resources/assets/js/keyBindings.js
vendored
|
@ -1,4 +1,4 @@
|
|||
const focusSearch = event => {
|
||||
const focusSearch = (event) => {
|
||||
const searchInput = document.querySelector('input[name="q"]');
|
||||
if (searchInput) {
|
||||
event.preventDefault();
|
||||
|
@ -6,33 +6,40 @@ const focusSearch = event => {
|
|||
}
|
||||
};
|
||||
|
||||
const openFirstNonHiddenItem = event => {
|
||||
const openFirstNonHiddenItem = (event) => {
|
||||
if (event.target !== document.querySelector('input[name="q"]')) {
|
||||
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;
|
||||
}
|
||||
|
||||
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();
|
||||
window.open(item.href);
|
||||
}
|
||||
};
|
||||
|
||||
const KEY_BINDINGS = {
|
||||
'/': focusSearch,
|
||||
'Enter': openFirstNonHiddenItem
|
||||
"/": focusSearch,
|
||||
Enter: openFirstNonHiddenItem,
|
||||
};
|
||||
|
||||
document.addEventListener('keydown', function (event) {
|
||||
document.addEventListener("keydown", (event) => {
|
||||
try {
|
||||
if (event.key in KEY_BINDINGS) {
|
||||
KEY_BINDINGS[event.key](event);
|
||||
}
|
||||
} catch (e) {
|
||||
// Nothing to do
|
||||
}
|
||||
});
|
Loading…
Reference in a new issue