Compare commits
3 Commits
6e83fc331b
...
09d7b3386b
Author | SHA1 | Date | |
---|---|---|---|
09d7b3386b | |||
61964a83a4 | |||
65771792d3 |
252
.eslintrc.yml
Normal file
252
.eslintrc.yml
Normal file
@ -0,0 +1,252 @@
|
|||||||
|
---
|
||||||
|
# SPDX-License-Identifier: MIT OR LGPL-2.0-or-later
|
||||||
|
# SPDX-FileCopyrightText: 2018 Claudio André <claudioandre.br@gmail.com>
|
||||||
|
extends: 'eslint:recommended'
|
||||||
|
rules:
|
||||||
|
array-bracket-newline:
|
||||||
|
- error
|
||||||
|
- consistent
|
||||||
|
array-bracket-spacing:
|
||||||
|
- error
|
||||||
|
- never
|
||||||
|
array-callback-return: error
|
||||||
|
arrow-parens:
|
||||||
|
- error
|
||||||
|
- as-needed
|
||||||
|
arrow-spacing: error
|
||||||
|
block-scoped-var: error
|
||||||
|
block-spacing: error
|
||||||
|
brace-style: error
|
||||||
|
# Waiting for this to have matured a bit in eslint
|
||||||
|
# camelcase:
|
||||||
|
# - error
|
||||||
|
# - properties: never
|
||||||
|
# allow: [^vfunc_, ^on_, _instance_init]
|
||||||
|
comma-dangle:
|
||||||
|
- error
|
||||||
|
- arrays: always-multiline
|
||||||
|
objects: always-multiline
|
||||||
|
functions: never
|
||||||
|
comma-spacing:
|
||||||
|
- error
|
||||||
|
- before: false
|
||||||
|
after: true
|
||||||
|
comma-style:
|
||||||
|
- error
|
||||||
|
- last
|
||||||
|
computed-property-spacing: error
|
||||||
|
curly:
|
||||||
|
- error
|
||||||
|
- multi-or-nest
|
||||||
|
- consistent
|
||||||
|
dot-location:
|
||||||
|
- error
|
||||||
|
- property
|
||||||
|
eol-last: error
|
||||||
|
eqeqeq: error
|
||||||
|
func-call-spacing: error
|
||||||
|
func-name-matching: error
|
||||||
|
func-style:
|
||||||
|
- error
|
||||||
|
- declaration
|
||||||
|
- allowArrowFunctions: true
|
||||||
|
indent:
|
||||||
|
- error
|
||||||
|
- 4
|
||||||
|
- ignoredNodes:
|
||||||
|
# Allow not indenting the body of GObject.registerClass, since in the
|
||||||
|
# future it's intended to be a decorator
|
||||||
|
- 'CallExpression[callee.object.name=GObject][callee.property.name=registerClass] > ClassExpression:first-child'
|
||||||
|
# Allow dedenting chained member expressions
|
||||||
|
MemberExpression: 'off'
|
||||||
|
key-spacing:
|
||||||
|
- error
|
||||||
|
- beforeColon: false
|
||||||
|
afterColon: true
|
||||||
|
keyword-spacing:
|
||||||
|
- error
|
||||||
|
- before: true
|
||||||
|
after: true
|
||||||
|
linebreak-style:
|
||||||
|
- error
|
||||||
|
- unix
|
||||||
|
lines-between-class-members:
|
||||||
|
- error
|
||||||
|
- always
|
||||||
|
- exceptAfterSingleLine: true
|
||||||
|
max-nested-callbacks: error
|
||||||
|
max-statements-per-line: error
|
||||||
|
new-parens: error
|
||||||
|
no-array-constructor: error
|
||||||
|
no-await-in-loop: error
|
||||||
|
no-caller: error
|
||||||
|
no-constant-condition:
|
||||||
|
- error
|
||||||
|
- checkLoops: false
|
||||||
|
no-div-regex: error
|
||||||
|
no-empty:
|
||||||
|
- error
|
||||||
|
- allowEmptyCatch: true
|
||||||
|
no-extra-bind: error
|
||||||
|
no-extra-parens:
|
||||||
|
- error
|
||||||
|
- all
|
||||||
|
- conditionalAssign: false
|
||||||
|
nestedBinaryExpressions: false
|
||||||
|
returnAssign: false
|
||||||
|
no-implicit-coercion:
|
||||||
|
- error
|
||||||
|
- allow:
|
||||||
|
- '!!'
|
||||||
|
no-invalid-this: error
|
||||||
|
no-iterator: error
|
||||||
|
no-label-var: error
|
||||||
|
no-lonely-if: error
|
||||||
|
no-loop-func: error
|
||||||
|
no-nested-ternary: error
|
||||||
|
no-new-object: error
|
||||||
|
no-new-wrappers: error
|
||||||
|
no-octal-escape: error
|
||||||
|
no-proto: error
|
||||||
|
no-prototype-builtins: 'off'
|
||||||
|
no-restricted-globals: [error, window]
|
||||||
|
no-restricted-properties:
|
||||||
|
- error
|
||||||
|
- object: imports
|
||||||
|
property: format
|
||||||
|
message: Use template strings
|
||||||
|
- object: pkg
|
||||||
|
property: initFormat
|
||||||
|
message: Use template strings
|
||||||
|
- object: Lang
|
||||||
|
property: copyProperties
|
||||||
|
message: Use Object.assign()
|
||||||
|
- object: Lang
|
||||||
|
property: bind
|
||||||
|
message: Use arrow notation or Function.prototype.bind()
|
||||||
|
- object: Lang
|
||||||
|
property: Class
|
||||||
|
message: Use ES6 classes
|
||||||
|
no-restricted-syntax:
|
||||||
|
- error
|
||||||
|
- selector: >-
|
||||||
|
MethodDefinition[key.name="_init"] >
|
||||||
|
FunctionExpression[params.length=1] >
|
||||||
|
BlockStatement[body.length=1]
|
||||||
|
CallExpression[arguments.length=1][callee.object.type="Super"][callee.property.name="_init"] >
|
||||||
|
Identifier:first-child
|
||||||
|
message: _init() that only calls super._init() is unnecessary
|
||||||
|
- selector: >-
|
||||||
|
MethodDefinition[key.name="_init"] >
|
||||||
|
FunctionExpression[params.length=0] >
|
||||||
|
BlockStatement[body.length=1]
|
||||||
|
CallExpression[arguments.length=0][callee.object.type="Super"][callee.property.name="_init"]
|
||||||
|
message: _init() that only calls super._init() is unnecessary
|
||||||
|
- selector: BinaryExpression[operator="instanceof"][right.name="Array"]
|
||||||
|
message: Use Array.isArray()
|
||||||
|
no-return-assign: error
|
||||||
|
no-return-await: error
|
||||||
|
no-self-compare: error
|
||||||
|
no-shadow: error
|
||||||
|
no-shadow-restricted-names: error
|
||||||
|
no-spaced-func: error
|
||||||
|
no-tabs: error
|
||||||
|
no-template-curly-in-string: error
|
||||||
|
no-throw-literal: error
|
||||||
|
no-trailing-spaces: error
|
||||||
|
no-undef-init: error
|
||||||
|
no-unneeded-ternary: error
|
||||||
|
no-unused-expressions: error
|
||||||
|
no-unused-vars:
|
||||||
|
- error
|
||||||
|
# Vars use a suffix _ instead of a prefix because of file-scope private vars
|
||||||
|
- varsIgnorePattern: (^unused|_$)
|
||||||
|
argsIgnorePattern: ^(unused|_)
|
||||||
|
no-useless-call: error
|
||||||
|
no-useless-computed-key: error
|
||||||
|
no-useless-concat: error
|
||||||
|
no-useless-constructor: error
|
||||||
|
no-useless-rename: error
|
||||||
|
no-useless-return: error
|
||||||
|
no-whitespace-before-property: error
|
||||||
|
no-with: error
|
||||||
|
nonblock-statement-body-position:
|
||||||
|
- error
|
||||||
|
- below
|
||||||
|
object-curly-newline:
|
||||||
|
- error
|
||||||
|
- consistent: true
|
||||||
|
multiline: true
|
||||||
|
object-curly-spacing: error
|
||||||
|
object-shorthand: error
|
||||||
|
operator-assignment: error
|
||||||
|
operator-linebreak: error
|
||||||
|
padded-blocks:
|
||||||
|
- error
|
||||||
|
- never
|
||||||
|
# These may be a bit controversial, we can try them out and enable them later
|
||||||
|
# prefer-const: error
|
||||||
|
# prefer-destructuring: error
|
||||||
|
prefer-numeric-literals: error
|
||||||
|
prefer-promise-reject-errors: error
|
||||||
|
prefer-rest-params: error
|
||||||
|
prefer-spread: error
|
||||||
|
prefer-template: error
|
||||||
|
quotes:
|
||||||
|
- error
|
||||||
|
- single
|
||||||
|
- avoidEscape: true
|
||||||
|
require-await: error
|
||||||
|
rest-spread-spacing: error
|
||||||
|
semi:
|
||||||
|
- error
|
||||||
|
- always
|
||||||
|
semi-spacing:
|
||||||
|
- error
|
||||||
|
- before: false
|
||||||
|
after: true
|
||||||
|
semi-style: error
|
||||||
|
space-before-blocks: error
|
||||||
|
space-before-function-paren:
|
||||||
|
- error
|
||||||
|
- named: never
|
||||||
|
# for `function ()` and `async () =>`, preserve space around keywords
|
||||||
|
anonymous: always
|
||||||
|
asyncArrow: always
|
||||||
|
space-in-parens: error
|
||||||
|
space-infix-ops:
|
||||||
|
- error
|
||||||
|
- int32Hint: false
|
||||||
|
space-unary-ops: error
|
||||||
|
spaced-comment: error
|
||||||
|
switch-colon-spacing: error
|
||||||
|
symbol-description: error
|
||||||
|
template-curly-spacing: error
|
||||||
|
template-tag-spacing: error
|
||||||
|
unicode-bom: error
|
||||||
|
wrap-iife:
|
||||||
|
- error
|
||||||
|
- inside
|
||||||
|
yield-star-spacing: error
|
||||||
|
yoda: error
|
||||||
|
globals:
|
||||||
|
ARGV: readonly
|
||||||
|
Debugger: readonly
|
||||||
|
GIRepositoryGType: readonly
|
||||||
|
globalThis: readonly
|
||||||
|
imports: readonly
|
||||||
|
Intl: readonly
|
||||||
|
log: readonly
|
||||||
|
logError: readonly
|
||||||
|
print: readonly
|
||||||
|
printerr: readonly
|
||||||
|
window: readonly
|
||||||
|
TextEncoder: readonly
|
||||||
|
TextDecoder: readonly
|
||||||
|
console: readonly
|
||||||
|
setTimeout: readonly
|
||||||
|
setInterval: readonly
|
||||||
|
clearTimeout: readonly
|
||||||
|
clearInterval: readonly
|
||||||
|
parserOptions:
|
||||||
|
ecmaVersion: 2021
|
47
extension.js
47
extension.js
@ -169,15 +169,23 @@ class Indicator extends PanelMenu.Button {
|
|||||||
this._prefsButton = this._createButton ( 'big', 'preferences-system-symbolic', _('Preferences'), this._onPreferencesActivate );
|
this._prefsButton = this._createButton ( 'big', 'preferences-system-symbolic', _('Preferences'), this._onPreferencesActivate );
|
||||||
this._buttonMenu.actor.add_child (this._prefsButton);
|
this._buttonMenu.actor.add_child (this._prefsButton);
|
||||||
|
|
||||||
if ( this.serverLogic && this.serverLogic.canRecheck )
|
|
||||||
{
|
|
||||||
this._recheckButton = this._createButton ( 'big', 'mail-send-receive-symbolic', _('Recheck all'), this.recheckAll );
|
|
||||||
this._buttonMenu.actor.add_child (this._recheckButton );
|
|
||||||
}
|
|
||||||
|
|
||||||
this._reloadButton = this._createButton ( 'big', 'view-refresh-symbolic', _('Reload view'), this.updateStatus );
|
this._reloadButton = this._createButton ( 'big', 'view-refresh-symbolic', _('Reload view'), this.updateStatus );
|
||||||
this._buttonMenu.actor.add_child (this._reloadButton );
|
this._buttonMenu.actor.add_child (this._reloadButton );
|
||||||
|
|
||||||
|
if ( this.serverLogic && this.serverLogic.canRecheck )
|
||||||
|
{
|
||||||
|
let multiButtonBox = new St.BoxLayout( { style_class: 'monito-multibutton' } );
|
||||||
|
this._recheckButton = this._createButton ( 'big', 'mail-send-receive-symbolic', _('Recheck all'), this.recheckAll );
|
||||||
|
this._recheckSpecialButton = this._createPopupButton ( this.recheckSpecial );
|
||||||
|
multiButtonBox.add_child ( this._recheckButton );
|
||||||
|
multiButtonBox.add_child ( this._recheckSpecialButton );
|
||||||
|
this._buttonMenu.actor.add_child (multiButtonBox);
|
||||||
|
|
||||||
|
const sourceActor = new St.Widget();
|
||||||
|
this._menu = new PopupMenu.PopupMenu(sourceActor, 0.0, St.Side.TOP);
|
||||||
|
const menuItem1 = this._menu.addAction('Item 1', () => console.log('activated'));
|
||||||
|
}
|
||||||
|
|
||||||
let _intermediate = new PopupMenu.PopupBaseMenuItem ( {
|
let _intermediate = new PopupMenu.PopupBaseMenuItem ( {
|
||||||
style_class: 'monito-services',
|
style_class: 'monito-services',
|
||||||
reactive: false
|
reactive: false
|
||||||
@ -222,6 +230,11 @@ class Indicator extends PanelMenu.Button {
|
|||||||
this.serverLogic.recheckAll ( this._recheckButton );
|
this.serverLogic.recheckAll ( this._recheckButton );
|
||||||
}
|
}
|
||||||
|
|
||||||
|
recheckSpecial ( )
|
||||||
|
{
|
||||||
|
this._menu.open();
|
||||||
|
}
|
||||||
|
|
||||||
changeShowAll ( )
|
changeShowAll ( )
|
||||||
{
|
{
|
||||||
this.showAll = ! this.showAll;
|
this.showAll = ! this.showAll;
|
||||||
@ -694,6 +707,28 @@ class Indicator extends PanelMenu.Button {
|
|||||||
return button;
|
return button;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
_createPopupButton ( callback ) {
|
||||||
|
let size = 48;
|
||||||
|
let sizeName = 'big';
|
||||||
|
|
||||||
|
let button = new St.Button({
|
||||||
|
x_align: Clutter.ActorAlign.END,
|
||||||
|
y_align: Clutter.ActorAlign.CENTER,
|
||||||
|
reactive: true,
|
||||||
|
can_focus: true,
|
||||||
|
track_hover: true,
|
||||||
|
style_class: 'button %s-button'.format(sizeName),
|
||||||
|
rotation_angle_x: 0.0,
|
||||||
|
width: 32,
|
||||||
|
height: size
|
||||||
|
});
|
||||||
|
|
||||||
|
button.child = PopupMenu.arrowIcon(St.Side.BOTTOM);
|
||||||
|
|
||||||
|
button.connect('clicked', Lang.bind(this, callback ) );
|
||||||
|
return button;
|
||||||
|
}
|
||||||
|
|
||||||
});
|
});
|
||||||
|
|
||||||
class Extension {
|
class Extension {
|
||||||
|
33
prefs.js
33
prefs.js
@ -53,7 +53,7 @@ const column_definitions = {
|
|||||||
next_check: { label: _('Next check'), width: 200, expand: false, type: 'date' },
|
next_check: { label: _('Next check'), width: 200, expand: false, type: 'date' },
|
||||||
last_state_change: { label: _('Last state changed'), width: 200, expand: false, type: 'date' },
|
last_state_change: { label: _('Last state changed'), width: 200, expand: false, type: 'date' },
|
||||||
attempts: { label: _('Attempts'), width: 50, expand: false, },
|
attempts: { label: _('Attempts'), width: 50, expand: false, },
|
||||||
status_information: { label: _('Information'), width: 600, expand: false, },
|
status_information: { label: _('Test result'), width: 600, expand: false, },
|
||||||
output: { label: _('Output'), width: 600, expand: false, },
|
output: { label: _('Output'), width: 600, expand: false, },
|
||||||
actions: { label: 'Actions', width: 50, expand: false, special: 'actions' },
|
actions: { label: 'Actions', width: 50, expand: false, special: 'actions' },
|
||||||
};
|
};
|
||||||
@ -100,7 +100,7 @@ function init() {
|
|||||||
this.settings = ExtensionUtils.getSettings(SETTINGS_SCHEMA);
|
this.settings = ExtensionUtils.getSettings(SETTINGS_SCHEMA);
|
||||||
|
|
||||||
this.gtkVersion = Gtk.get_major_version();
|
this.gtkVersion = Gtk.get_major_version();
|
||||||
monitoLog ( 'GTK version is ' + this.gtkVersion );
|
// monitoLog ( 'GTK version is ' + this.gtkVersion );
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
||||||
@ -377,7 +377,7 @@ function createColumnsPrefTab ( noteBook, type, isActive )
|
|||||||
{
|
{
|
||||||
let grid = new Gtk.Grid ( {
|
let grid = new Gtk.Grid ( {
|
||||||
halign: Gtk.Align.FILL,
|
halign: Gtk.Align.FILL,
|
||||||
// margin: 18,
|
margin: 18,
|
||||||
column_spacing: 12,
|
column_spacing: 12,
|
||||||
row_spacing: 12,
|
row_spacing: 12,
|
||||||
visible: true,
|
visible: true,
|
||||||
@ -395,13 +395,10 @@ function createColumnsPrefTab ( noteBook, type, isActive )
|
|||||||
let columnNumbers = new Gtk.TreeViewColumn ( { title: _("Column") } );
|
let columnNumbers = new Gtk.TreeViewColumn ( { title: _("Column") } );
|
||||||
this.ColumnNameRenderer = new Gtk.CellRendererCombo ( { editable: true,
|
this.ColumnNameRenderer = new Gtk.CellRendererCombo ( { editable: true,
|
||||||
has_entry: false,
|
has_entry: false,
|
||||||
text_column: 1 } );
|
text_column: 0 } );
|
||||||
this.ColumnNameRenderer.connect("edited", onComboChanged)
|
this.ColumnNameRenderer.connect("edited", onComboChanged)
|
||||||
this.ColumnNameRenderer.col = 0;
|
this.ColumnNameRenderer.col = 0;
|
||||||
if ( this.gtkVersion == 4 )
|
columnNumbers.pack_start(this.ColumnNameRenderer, true);
|
||||||
columnNumbers.pack_start(this.ColumnNameRenderer, true);
|
|
||||||
else
|
|
||||||
columnNumbers.append(this.ColumnNameRenderer, true);
|
|
||||||
columnNumbers.add_attribute(this.ColumnNameRenderer, 'text', 0);
|
columnNumbers.add_attribute(this.ColumnNameRenderer, 'text', 0);
|
||||||
this.treeView.append_column(columnNumbers);
|
this.treeView.append_column(columnNumbers);
|
||||||
this.ColumnNameRenderer.connect('edited', Lang.bind ( this, this.editColumn ) );
|
this.ColumnNameRenderer.connect('edited', Lang.bind ( this, this.editColumn ) );
|
||||||
@ -482,7 +479,7 @@ function activateAccountRow ( ) {
|
|||||||
for ( var i in _columns )
|
for ( var i in _columns )
|
||||||
{
|
{
|
||||||
let _iter = this.store.append();
|
let _iter = this.store.append();
|
||||||
this.store.set_value(_iter, 0, _columns [ i ] );
|
this.store.set_value(_iter, 0, getEntryLabel ( _columns [ i ] ) );
|
||||||
this.store.set_value(_iter, 1, parseInt(_columnsSizes [ i ]) );
|
this.store.set_value(_iter, 1, parseInt(_columnsSizes [ i ]) );
|
||||||
}
|
}
|
||||||
|
|
||||||
@ -642,6 +639,21 @@ function removeColumnRow ( widget ) {
|
|||||||
}
|
}
|
||||||
|
|
||||||
|
|
||||||
|
function getEntryName ( text )
|
||||||
|
{
|
||||||
|
for ( let [ _colName, _colDef ] of Object.entries(column_definitions) )
|
||||||
|
if ( _colDef.label == text )
|
||||||
|
return _colName;
|
||||||
|
return 'N/A';
|
||||||
|
}
|
||||||
|
|
||||||
|
|
||||||
|
function getEntryLabel ( text )
|
||||||
|
{
|
||||||
|
return column_definitions[text].label;
|
||||||
|
}
|
||||||
|
|
||||||
|
|
||||||
function editColumn ( widget, path, text )
|
function editColumn ( widget, path, text )
|
||||||
{
|
{
|
||||||
let _row = this.accountsChooser.get_selected_row();
|
let _row = this.accountsChooser.get_selected_row();
|
||||||
@ -656,7 +668,8 @@ function editColumn ( widget, path, text )
|
|||||||
}
|
}
|
||||||
else
|
else
|
||||||
{
|
{
|
||||||
this.store.set_value(_iter[1], widget.col, text );
|
this.store.set_value ( _iter[1], widget.col, text );
|
||||||
|
text = getEntryName ( text );
|
||||||
prefKey = 'columns';
|
prefKey = 'columns';
|
||||||
}
|
}
|
||||||
|
|
||||||
|
Loading…
Reference in New Issue
Block a user