Implement spinners
This commit is contained in:
parent
c344c31d4c
commit
f18d8bbd61
53
extension.js
53
extension.js
@ -39,7 +39,7 @@ const PopupMenu = imports.ui.popupMenu;
|
|||||||
const Gettext = imports.gettext.domain(GETTEXT_DOMAIN);
|
const Gettext = imports.gettext.domain(GETTEXT_DOMAIN);
|
||||||
const _ = Gettext.gettext;
|
const _ = Gettext.gettext;
|
||||||
|
|
||||||
const { GObject, St, Clutter, Gio } = imports.gi;
|
const { GObject, St, Clutter, Gio, GLib } = imports.gi;
|
||||||
|
|
||||||
const SETTINGS_SCHEMA = "org.gnome.shell.extensions.monito";
|
const SETTINGS_SCHEMA = "org.gnome.shell.extensions.monito";
|
||||||
const SETTINGS_SCHEMA_ACCOUNT = "org.gnome.shell.extensions.monito.account";
|
const SETTINGS_SCHEMA_ACCOUNT = "org.gnome.shell.extensions.monito.account";
|
||||||
@ -85,11 +85,11 @@ class Indicator extends PanelMenu.Button {
|
|||||||
|
|
||||||
let type = this.account_settings.get_string ( "type" );
|
let type = this.account_settings.get_string ( "type" );
|
||||||
if ( type == 'Icinga' )
|
if ( type == 'Icinga' )
|
||||||
this.serverLogic = new Icinga ( this.server );
|
this.serverLogic = new Icinga ( this.server, this );
|
||||||
else if ( type == 'Icinga2' )
|
else if ( type == 'Icinga2' )
|
||||||
this.serverLogic = new Icinga2 ( this.server );
|
this.serverLogic = new Icinga2 ( this.server, this );
|
||||||
else if ( type == 'Icinga2API' )
|
else if ( type == 'Icinga2API' )
|
||||||
this.serverLogic = new Icinga2API ( this.server );
|
this.serverLogic = new Icinga2API ( this.server, this );
|
||||||
|
|
||||||
this.initUI ( );
|
this.initUI ( );
|
||||||
}
|
}
|
||||||
@ -196,10 +196,45 @@ class Indicator extends PanelMenu.Button {
|
|||||||
|
|
||||||
updateStatus ( )
|
updateStatus ( )
|
||||||
{
|
{
|
||||||
this.serverLogic.refresh ( this );
|
this.spinChildOf ( this._reloadButton );
|
||||||
|
this.serverLogic.refresh ( );
|
||||||
this.setupTimeout ( );
|
this.setupTimeout ( );
|
||||||
}
|
}
|
||||||
|
|
||||||
|
spinChildOf ( widget )
|
||||||
|
{
|
||||||
|
if ( ! widget )
|
||||||
|
return;
|
||||||
|
|
||||||
|
widget.prevChild = widget.get_child ( );
|
||||||
|
let _size = widget.prevChild.width;
|
||||||
|
|
||||||
|
let _child = new St.Icon({
|
||||||
|
style_class: 'monito-button-icon',
|
||||||
|
icon_name: 'process-working-symbolic',
|
||||||
|
icon_size: _size,
|
||||||
|
width: _size,
|
||||||
|
height: _size,
|
||||||
|
});
|
||||||
|
|
||||||
|
let _transition = new Clutter.PropertyTransition ( { property_name: 'rotation_angle_z',
|
||||||
|
repeat_count: -1,
|
||||||
|
duration: 1000 } );
|
||||||
|
_transition.set_from ( 0 );
|
||||||
|
_transition.set_to ( 360 );
|
||||||
|
|
||||||
|
_child.set_pivot_point ( .5, .5 );
|
||||||
|
_child.add_transition ( 'rotation', _transition );
|
||||||
|
|
||||||
|
widget.set_child ( _child );
|
||||||
|
}
|
||||||
|
|
||||||
|
stopChildSpin ( widget )
|
||||||
|
{
|
||||||
|
widget.remove_all_children ( );
|
||||||
|
widget.set_child ( widget.prevChild );
|
||||||
|
}
|
||||||
|
|
||||||
createHeaderBin ( colName ) {
|
createHeaderBin ( colName ) {
|
||||||
let col = column_definitions [ colName ];
|
let col = column_definitions [ colName ];
|
||||||
|
|
||||||
@ -442,6 +477,8 @@ class Indicator extends PanelMenu.Button {
|
|||||||
monitoLog ( e.stack );
|
monitoLog ( e.stack );
|
||||||
}
|
}
|
||||||
|
|
||||||
|
this.stopChildSpin ( this._reloadButton );
|
||||||
|
|
||||||
return;
|
return;
|
||||||
}
|
}
|
||||||
|
|
||||||
@ -478,7 +515,10 @@ class Indicator extends PanelMenu.Button {
|
|||||||
|
|
||||||
_onRecheckButtonClick ( e )
|
_onRecheckButtonClick ( e )
|
||||||
{
|
{
|
||||||
monitoLog ( JSON.stringify ( e.service ) );
|
this.spinChildOf ( e );
|
||||||
|
// monitoLog ( JSON.stringify ( e.service ) );
|
||||||
|
e.service.button = e;
|
||||||
|
|
||||||
this.serverLogic.recheck ( e.service );
|
this.serverLogic.recheck ( e.service );
|
||||||
}
|
}
|
||||||
|
|
||||||
@ -491,6 +531,7 @@ class Indicator extends PanelMenu.Button {
|
|||||||
track_hover: true,
|
track_hover: true,
|
||||||
accessible_name: text,
|
accessible_name: text,
|
||||||
style_class: 'button big-button',
|
style_class: 'button big-button',
|
||||||
|
rotation_angle_x: 0.0,
|
||||||
});
|
});
|
||||||
|
|
||||||
button.child = new St.Icon({
|
button.child = new St.Icon({
|
||||||
|
@ -31,7 +31,7 @@ const Preferences = Me.imports.prefs;
|
|||||||
|
|
||||||
class GenericServer {
|
class GenericServer {
|
||||||
|
|
||||||
constructor ( _server, _serverType = 'Generic' )
|
constructor ( _server, _extension, _serverType = 'Generic' )
|
||||||
{
|
{
|
||||||
log ( '>>> New %s server #%s'.format ( _serverType, _server ) );
|
log ( '>>> New %s server #%s'.format ( _serverType, _server ) );
|
||||||
|
|
||||||
@ -40,6 +40,8 @@ class GenericServer {
|
|||||||
this._httpSession = null;
|
this._httpSession = null;
|
||||||
this._url = null;
|
this._url = null;
|
||||||
|
|
||||||
|
this.extension = _extension;
|
||||||
|
|
||||||
this.canRecheck = true;
|
this.canRecheck = true;
|
||||||
}
|
}
|
||||||
|
|
||||||
@ -128,6 +130,10 @@ class GenericServer {
|
|||||||
log ( e );
|
log ( e );
|
||||||
log ( _data );
|
log ( _data );
|
||||||
}
|
}
|
||||||
|
|
||||||
|
if ( message.button )
|
||||||
|
this.extension.stopChildSpin ( message.button );
|
||||||
|
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
||||||
|
@ -33,13 +33,11 @@ let _httpSession;
|
|||||||
|
|
||||||
|
|
||||||
class Icinga extends GenericServer {
|
class Icinga extends GenericServer {
|
||||||
constructor ( _server ) {
|
constructor ( _server, extension ) {
|
||||||
super(_server, 'Icinga');
|
super(_server, extension, 'Icinga');
|
||||||
}
|
}
|
||||||
|
|
||||||
refresh ( extension ) {
|
refresh ( ) {
|
||||||
this.extension = extension;
|
|
||||||
|
|
||||||
this.buildURL ( );
|
this.buildURL ( );
|
||||||
this.prepareHttp ( );
|
this.prepareHttp ( );
|
||||||
}
|
}
|
||||||
@ -75,8 +73,7 @@ class Icinga extends GenericServer {
|
|||||||
message.request_body.truncate();
|
message.request_body.truncate();
|
||||||
message.request_body.append ( params );
|
message.request_body.append ( params );
|
||||||
message.request_body.flatten();
|
message.request_body.flatten();
|
||||||
|
message.button = entry.button;
|
||||||
// TODO: change button to spinner
|
|
||||||
|
|
||||||
this.authenticateAndSend ( message, this.handleCMDMessage );
|
this.authenticateAndSend ( message, this.handleCMDMessage );
|
||||||
}
|
}
|
||||||
|
@ -31,15 +31,13 @@ const GenericServer = Me.imports.servers.genericserver.GenericServer;
|
|||||||
|
|
||||||
|
|
||||||
class Icinga2 extends GenericServer {
|
class Icinga2 extends GenericServer {
|
||||||
constructor ( _server ) {
|
constructor ( _server, extension ) {
|
||||||
super(_server, 'Icinga2');
|
super(_server, extension, 'Icinga2');
|
||||||
|
|
||||||
this.canRecheck = false;
|
this.canRecheck = false;
|
||||||
}
|
}
|
||||||
|
|
||||||
refresh ( extension ) {
|
refresh ( ) {
|
||||||
this.extension = extension;
|
|
||||||
|
|
||||||
this.buildURL ( );
|
this.buildURL ( );
|
||||||
this.prepareHttp ( );
|
this.prepareHttp ( );
|
||||||
}
|
}
|
||||||
|
@ -32,13 +32,11 @@ const GenericServer = Me.imports.servers.genericserver.GenericServer;
|
|||||||
|
|
||||||
class Icinga2API extends GenericServer {
|
class Icinga2API extends GenericServer {
|
||||||
|
|
||||||
constructor ( _server ) {
|
constructor ( _server, extension ) {
|
||||||
super(_server, 'Icinga2 API');
|
super(_server, extension, 'Icinga2 API');
|
||||||
}
|
}
|
||||||
|
|
||||||
refresh ( extension ) {
|
|
||||||
this.extension = extension;
|
|
||||||
|
|
||||||
|
refresh ( ) {
|
||||||
this.buildURL ( );
|
this.buildURL ( );
|
||||||
this.prepareHttp ( );
|
this.prepareHttp ( );
|
||||||
}
|
}
|
||||||
@ -62,8 +60,9 @@ class Icinga2API extends GenericServer {
|
|||||||
message.request_body.truncate();
|
message.request_body.truncate();
|
||||||
message.request_body.append ( params );
|
message.request_body.append ( params );
|
||||||
message.request_body.flatten();
|
message.request_body.flatten();
|
||||||
|
message.button = entry.button;
|
||||||
|
|
||||||
log ( '> Body: ' + message.request_body.data );
|
// log ( '> Body: ' + message.request_body.data );
|
||||||
|
|
||||||
message.request_headers.append ( 'Accept', 'application/json' );
|
message.request_headers.append ( 'Accept', 'application/json' );
|
||||||
log ( message.request_headers );
|
log ( message.request_headers );
|
||||||
|
Loading…
x
Reference in New Issue
Block a user