Skip to content

Commit

Permalink
Create GitHub JS lint action
Browse files Browse the repository at this point in the history
  • Loading branch information
kmgalanakis committed Mar 23, 2023
1 parent 1830d92 commit 3c017e4
Show file tree
Hide file tree
Showing 6 changed files with 329 additions and 128 deletions.
4 changes: 4 additions & 0 deletions .eslintignore
Original file line number Diff line number Diff line change
@@ -0,0 +1,4 @@
webpack.config.js
tests/
dist/
node_modules/
3 changes: 3 additions & 0 deletions .eslintrc.js
Original file line number Diff line number Diff line change
@@ -0,0 +1,3 @@
module.exports = {
extends: ['@10up/eslint-config/wordpress'],
};
41 changes: 41 additions & 0 deletions .github/workflows/jslint.yml
Original file line number Diff line number Diff line change
@@ -0,0 +1,41 @@
name: JS Lint

on:
push:
branches:
- develop
- trunk
pull_request:
branches:
- develop

jobs:
jslint:
runs-on: ubuntu-latest

steps:
- name: Checkout
uses: actions/checkout@v3
- name: Use desired version of NodeJS
uses: actions/setup-node@v3
with:
node-version-file: '.nvmrc'
- name: Install dependencies
run: npm install
- name: Build
run: npm run build
- name: Generate linting report
run: npm run lint:js -- --output-file eslint-report.json --format json
- name: Generate linting report
run: npm run lint-js -- --output-file eslint-report.json --format json
continue-on-error: true
- name: Annotate code linting results
uses: ataylorme/eslint-annotate-action@1.2.0
with:
repo-token: '${{ secrets.GITHUB_TOKEN }}'
report-json: 'eslint-report.json'
- name: Update summary
run: |
npm_config_yes=true npx github:10up/eslint-json-to-md --path ./eslint-report.json --output ./eslint-report.md
cat eslint-report.md >> $GITHUB_STEP_SUMMARY
if: ${{ failure() }}
203 changes: 117 additions & 86 deletions assets/js/src/simple-page-ordering.js
Original file line number Diff line number Diff line change
@@ -1,170 +1,201 @@
import '../../css/scss/simple-page-ordering.scss';
import 'jquery-ui-sortable';
// eslint-disable-next-line import/no-unresolved
import 'jquery';

const sortable_post_table = window.jQuery('.wp-list-table tbody');
function update_simple_ordering_callback(response) {
if ( 'children' === response ) {
if (response === 'children') {
window.location.reload();
return;
}

var changes = jQuery.parseJSON( response );
const changes = window.jQuery.parseJSON(response);

var new_pos = changes.new_pos;
for ( var key in new_pos ) {
if ( 'next' === key ) {
const { new_pos } = changes;
// eslint-disable-next-line no-restricted-syntax
for (const key in new_pos) {
if (key === 'next') {
// eslint-disable-next-line no-continue
continue;
}

var inline_key = document.getElementById('inline_' + key);
if ( null !== inline_key && new_pos.hasOwnProperty(key) ) {
var dom_menu_order = inline_key.querySelector('.menu_order');
const inline_key = document.getElementById(`inline_${key}`);
// eslint-disable-next-line no-prototype-builtins
if (inline_key !== null && new_pos.hasOwnProperty(key)) {
const dom_menu_order = inline_key.querySelector('.menu_order');

if ( undefined !== new_pos[key]['menu_order'] ) {
if ( null !== dom_menu_order ) {
dom_menu_order.textContent = new_pos[key]['menu_order'];
if (undefined !== new_pos[key].menu_order) {
if (dom_menu_order !== null) {
dom_menu_order.textContent = new_pos[key].menu_order;
}

var dom_post_parent = inline_key.querySelector('.post_parent');
if ( null !== dom_post_parent ) {
dom_post_parent.textContent = new_pos[key]['post_parent'];
const dom_post_parent = inline_key.querySelector('.post_parent');
if (dom_post_parent !== null) {
dom_post_parent.textContent = new_pos[key].post_parent;
}

var post_title = null;
var dom_post_title = inline_key.querySelector('.post_title');
if ( null !== dom_post_title ) {
let post_title = null;
const dom_post_title = inline_key.querySelector('.post_title');
if (dom_post_title !== null) {
post_title = dom_post_title.innerHTML;
}

var dashes = 0;
while ( dashes < new_pos[key]['depth'] ) {
post_title = '&mdash; ' + post_title;
let dashes = 0;
while (dashes < new_pos[key].depth) {
post_title = `&mdash; ${post_title}`;
dashes++;
}
var dom_row_title = inline_key.parentNode.querySelector('.row-title');
if ( null !== dom_row_title && null !== post_title ) {
const dom_row_title = inline_key.parentNode.querySelector('.row-title');
if (dom_row_title !== null && post_title !== null) {
// Decode mdash character before rendering the title.
var textArea = document.createElement('textarea');
const textArea = document.createElement('textarea');
textArea.innerHTML = post_title;
dom_row_title.textContent = textArea.value;
}
} else if ( null !== dom_menu_order ) {
} else if (dom_menu_order !== null) {
dom_menu_order.textContent = new_pos[key];
}
}
}

if ( changes.next ) {
jQuery.post( ajaxurl, {
action: 'simple_page_ordering',
id: changes.next['id'],
previd: changes.next['previd'],
nextid: changes.next['nextid'],
start: changes.next['start'],
_wpnonce: simple_page_ordering_localized_data._wpnonce,
screen_id: simple_page_ordering_localized_data.screen_id,
excluded: JSON.stringify( changes.next['excluded'] )
}, update_simple_ordering_callback );
if (changes.next) {
window.jQuery.post(
window.ajaxurl,
{
action: 'simple_page_ordering',
id: changes.next.id,
previd: changes.next.previd,
nextid: changes.next.nextid,
start: changes.next.start,
_wpnonce: window.simple_page_ordering_localized_data._wpnonce,
screen_id: window.simple_page_ordering_localized_data.screen_id,
excluded: JSON.stringify(changes.next.excluded),
},
update_simple_ordering_callback,
);
} else {
jQuery('.spo-updating-row').removeClass('spo-updating-row').find('.check-column').removeClass('spinner is-active');
window
.jQuery('.spo-updating-row')
.removeClass('spo-updating-row')
.find('.check-column')
.removeClass('spinner is-active');
sortable_post_table.removeClass('spo-updating').sortable('enable');
}
}

var sortable_post_table = jQuery(".wp-list-table tbody");
sortable_post_table.sortable({
items: '> tr',
cursor: 'move',
axis: 'y',
containment: 'table.widefat',
cancel: 'input, textarea, button, select, option, .inline-edit-row',
cancel: 'input, textarea, button, select, option, .inline-edit-row',
distance: 2,
opacity: .8,
opacity: 0.8,
tolerance: 'pointer',
create: function() {
jQuery( document ).keydown(function(e) {
var key = e.key || e.keyCode;
if ( 'Escape' === key || 'Esc' === key || 27 === key ) {
sortable_post_table.sortable( 'option', 'preventUpdate', true );
sortable_post_table.sortable( 'cancel' );
create() {
window.jQuery(document).keydown(function (e) {
const key = e.key || e.keyCode;
if (key === 'Escape' || key === 'Esc' || key === 27) {
sortable_post_table.sortable('option', 'preventUpdate', true);
sortable_post_table.sortable('cancel');
}
});
},
start: function(e, ui){
if ( typeof(inlineEditPost) !== 'undefined' ) {
start(e, ui) {
if (typeof inlineEditPost !== 'undefined') {
// eslint-disable-next-line no-undef
inlineEditPost.revert();
}
ui.placeholder.height(ui.item.height());
ui.placeholder.empty();
},
helper: function(e, ui) {
var children = ui.children();
for ( var i=0; i<children.length; i++ ) {
var selector = jQuery(children[i]);
selector.width( selector.width() );
};
helper(e, ui) {
const children = ui.children();
for (let i = 0; i < children.length; i++) {
const selector = window.jQuery(children[i]);
selector.width(selector.width());
}
return ui;
},
stop: function(e, ui) {
if ( sortable_post_table.sortable( 'option', 'preventUpdate') ) {
sortable_post_table.sortable( 'option', 'preventUpdate', false );
stop(e, ui) {
if (sortable_post_table.sortable('option', 'preventUpdate')) {
sortable_post_table.sortable('option', 'preventUpdate', false);
}

// remove fixed widths
ui.item.children().css('width','');
ui.item.children().css('width', '');
},
update: function(e, ui) {
if ( sortable_post_table.sortable( 'option', 'preventUpdate') ) {
sortable_post_table.sortable( 'option', 'preventUpdate', false );
update(e, ui) {
if (sortable_post_table.sortable('option', 'preventUpdate')) {
sortable_post_table.sortable('option', 'preventUpdate', false);
return;
}

sortable_post_table.sortable('disable').addClass('spo-updating');
ui.item.addClass('spo-updating-row');
ui.item.find('.check-column').addClass('spinner is-active');

var postid = ui.item[0].id.substr(5); // post id
const postid = ui.item[0].id.substr(5); // post id

var prevpostid = false;
var prevpost = ui.item.prev();
if ( prevpost.length > 0 ) {
let prevpostid = false;
const prevpost = ui.item.prev();
if (prevpost.length > 0) {
prevpostid = prevpost.attr('id').substr(5);
}

var nextpostid = false;
var nextpost = ui.item.next();
if ( nextpost.length > 0 ) {
let nextpostid = false;
const nextpost = ui.item.next();
if (nextpost.length > 0) {
nextpostid = nextpost.attr('id').substr(5);
}

// go do the sorting stuff via ajax
jQuery.post( ajaxurl, { action: 'simple_page_ordering', id: postid, previd: prevpostid, nextid: nextpostid, _wpnonce: simple_page_ordering_localized_data._wpnonce, screen_id: simple_page_ordering_localized_data.screen_id, }, update_simple_ordering_callback );
window.jQuery.post(
window.ajaxurl,
{
action: 'simple_page_ordering',
id: postid,
previd: prevpostid,
nextid: nextpostid,
_wpnonce: window.simple_page_ordering_localized_data._wpnonce,
screen_id: window.simple_page_ordering_localized_data.screen_id,
},
update_simple_ordering_callback,
);

// fix cell colors
var table_rows = document.querySelectorAll('tr.iedit'),
table_row_count = table_rows.length;
while( table_row_count-- ) {
if ( 0 === table_row_count%2 ) {
jQuery(table_rows[table_row_count]).addClass('alternate');
const table_rows = document.querySelectorAll('tr.iedit');
let table_row_count = table_rows.length;
while (table_row_count--) {
if (table_row_count % 2 === 0) {
window.jQuery(table_rows[table_row_count]).addClass('alternate');
} else {
jQuery(table_rows[table_row_count]).removeClass('alternate');
window.jQuery(table_rows[table_row_count]).removeClass('alternate');
}
}
}
},
});

jQuery( function() {
window.jQuery(function () {
// set up click handler for order reset link
jQuery( '#simple-page-ordering-reset' ).on( 'click', function(e) {
window.jQuery('#simple-page-ordering-reset').on('click', function (e) {
e.preventDefault();
var post_type = jQuery( this ).data( 'posttype' );
if ( window.confirm( 'Are you sure you want to reset the ' + post_type + ' order?' ) ) {
jQuery.post( ajaxurl, {
action: 'reset_simple_page_ordering',
post_type: post_type,
_wpnonce: simple_page_ordering_localized_data._wpnonce,
screen_id: simple_page_ordering_localized_data.screen_id
}, function() { window.location.reload(); } );
const post_type = window.jQuery(this).data('posttype');
// eslint-disable-next-line no-alert
if (window.confirm(`Are you sure you want to reset the ${post_type} order?`)) {
window.jQuery.post(
window.ajaxurl,
{
action: 'reset_simple_page_ordering',
post_type,
_wpnonce: window.simple_page_ordering_localized_data._wpnonce,
screen_id: window.simple_page_ordering_localized_data.screen_id,
},
function () {
window.location.reload();
},
);
}
} );
});
});
Loading

0 comments on commit 3c017e4

Please sign in to comment.